Lightweight tools for experimenting with Quantum Singular Value Transformation (QSVT) using PennyLane.
PyPI package: https://pypi.org/project/qsvt-pennylane/
This repository combines:
- a notebook-first introduction to QSVT
- a reusable Python package for bounded polynomial transforms
The focus is on spectral intuition:
how bounded polynomials transform singular values or eigenvalues via block encodings.
Install from PyPI:
pip install qsvt-pennylaneInstall from source:
git clone https://github.com/SidRichardsQuantum/Quantum_Singular_Value_Transformation.git
cd Quantum_Singular_Value_Transformation
pip install -e .Requirements:
- Python ≥ 3.10
- PennyLane ≥ 0.36
- NumPy ≥ 1.23
- Matplotlib ≥ 3.7
Scalar polynomial transform:
from qsvt.qsvt import qsvt_scalar_output
qsvt_scalar_output(
x=0.5,
poly=[0,0,1], ## x²
encoding_wires=[0],
)Diagonal transform:
from qsvt.qsvt import qsvt_diagonal_transform
qsvt_diagonal_transform(
values=[1.0, 0.7, 0.3, 0.1],
poly=[0,0,1],
encoding_wires=[0,1,2],
)Design a bounded sign polynomial:
from qsvt.design import design_sign_polynomial
coeffs = design_sign_polynomial(
gamma=0.25,
degree=13,
)The package provides small, composable utilities for constructing and applying bounded polynomial transforms.
qsvt.polynomials
- Chebyshev polynomials
- polynomial degree and parity
- boundedness checks
- coefficient normalisation
qsvt.approximation
- Chebyshev fitting
- approximation error metrics
- polynomial evaluation helpers
qsvt.templates
Ready-to-use bounded polynomial families:
- inverse-like polynomials
- sign approximations
- soft threshold filters
- sqrt approximations
- exponential weighting functions
- approximation-quality reports
Useful for quick experiments.
qsvt.design
Task-oriented polynomial builders:
- inverse-like transforms
- sign polynomials
- projector polynomials
- sqrt approximations
- power-law transforms
- smooth spectral filters
- approximation-quality reports
Designed for reusable QSVT workflows.
qsvt.reports
- convert diagnostics reports to JSON-safe containers
- save and load report JSON files
- plot target, polynomial, and error curves
Useful for recording approximation quality and making report output reusable outside notebooks.
qsvt.matrices
Small Hermitian test matrices:
- diagonal matrices
- rotated diagonal matrices
- involutory matrices
qsvt.spectral
Reference matrix-function utilities:
- matrix powers
- matrix square roots
- matrix sign
- spectral projectors
Useful for validating polynomial transforms.
qsvt.qsvt
Thin wrappers around PennyLane QSVT:
- scalar QSVT transforms
- diagonal transforms
- block extraction
- classical vs QSVT comparisons
- QSVT transform reports
Full documentation:
- Theory: THEORY.md
- Usage guide: USAGE.md
- API reference: docs/qsvt/api_reference.md
- Package index: docs/qsvt/index.md
- Changelog: CHANGELOG.md
Current release: 0.1.6
The notebooks provide a guided introduction to QSVT as polynomial functional calculus.
- scalar intuition
- singular value filtering
- QSP polynomials
- exact linear solvers
- approximate inverse behaviour
- polynomial design and approximation
- matrix powers and roots
- sign function and projectors
- reusable polynomial workflows
The examples emphasise:
- bounded polynomial structure
- spectral interpretation
- simple matrices
- reproducible results
After installation:
qsvt scalar --x 0.5 --poly "0,0,1"
qsvt diag \
--values "1.0,0.7,0.3,0.1" \
--poly "0,0,1" \
--wires 3
qsvt cheb --degree 3 --x 0.5
qsvt design-report --kind sign --gamma 0.2 --degree 13 \
--output sign-report.json \
--plot sign-report.png
qsvt template-report --kind inverse --degree 7 --mu 0.3 \
--output inverse-report.json
qsvt compatibility-report --poly "0,0,1"
qsvt design-compatibility \
--kind sign \
--degree 13 \
--gamma 0.2
qsvt compare-report \
--values "1.0,0.7,0.3,0.1" \
--poly "0,0,1" \
--wires 3 \
--output qsvt-report.json
qsvt apply-design \
--kind sign \
--values="-0.8,-0.3,0.3,0.8" \
--degree 13 \
--gamma 0.2 \
--wires 3The report commands print the same JSON diagnostics used by the Python
helpers, including fit error and boundedness information. --output writes the
report to JSON, and --plot writes a target-vs-polynomial plot for
approximation reports.
Compatibility reports distinguish bounded polynomial approximation from PennyLane QSVT synthesis compatibility.
This repository is intentionally:
- educational
- explicit
- simulator-friendly
- polynomial-focused
The goal is to make QSVT easier to experiment with and understand.
Topics intentionally outside scope:
- circuit optimisation
- resource estimation
- fault tolerance
- amplitude amplification
- state preparation methods
The emphasis is understanding how polynomial transforms act on spectra.
If this repository is useful for research, learning, or experimentation, you can support continued development via GitHub Sponsors:
https://github.com/sponsors/SidRichardsQuantum
Sponsorship supports continued work on open-source implementations of quantum algorithms, including polynomial-based quantum signal processing, spectral transforms, and reproducible research tooling.
Support helps maintain accessible reference implementations for experimenting with QSVT, QSP, and matrix functional calculus workflows.
Sid Richards
GitHub: https://github.com/SidRichardsQuantum
LinkedIn: https://www.linkedin.com/in/sid-richards-21374b30b/
MIT License — see LICENSE