unitaria.QSVT

class unitaria.QSVT(A: Node, polynomial: ndarray | Chebyshev | Polynomial)[source]

Bases: Node

Quantum Singular Value Transformation

The polynomial transformation can be either specified through phase angles in R convention or a polynomial. If angles are given, the resulting block encoding will have normalization 1, and the phase angles of the circuit will exactly correspond to those angles. If a polynomial P is given, the resulting block encoding will encode P(A). The normalization of the block encoding will be roughly the sup-norm $$ max_{x in [-gamma_A, gamma_A]} |P(x)| $$ though it may be slightly larger.

If a polynomial is given, it should best be specified using the np.polynomial.Chebyshev class, and the domain attribute should correspond to [-\gamma_A, \gamma_A] for reasons of numerical stability.

Parameters:
  • A – The matrix to be transformed

  • polynomial – Either a np.ndarray, indicating phase angles, or an instance of a class in np.polynomial, preferrably np.polynomial.Chebyshev.