Skip to content

Conversation

@MatP1337
Copy link
Contributor

@MatP1337 MatP1337 commented Nov 14, 2025

This PR implements Quantum Singular Value Transformation (QSVT). Additionally, it implements specialized function for matrix inversion, acting as a QLSP solver. QSP angles are obtained by utilizing the pyqsp library.

QSVT:
  • inner_QSVT: Core QSVT circuit construction applying alternating phase modulated reflection and block-encoding unitaries according to the QSVT framework.
  • inner_QSVT_wrapper: A repeat-until-success (RUS) decorated wrapper.
  • QSVT: Simplified user-facing function wrapping the entire QSVT inversion workflow, supporting input matrix or it block-encoding tuple.
QSVT for matrix inversion and solving QLSP:
  • inner_QSVT_inversion: Constructs QSVT circuits approximating matrix inversion with polynomial phase angles generated by the pyqsp library, supporting both Hermitian matrix input and explicit block-encoding tuples.
  • inner_QSVT_inversion_wrapper: A repeat-until-success (RUS) decorated wrapper.
  • QSVT_inversion: Simplified user-facing function wrapping the entire QSVT inversion workflow, supporting input matrix or it block-encoding tuple.

To-do:

  • inner_QSVT:
    • make it possible to pass either the QSVT angles, or the desired polynomial (and compute angles within using pyqsp).
    • example with post-selection, without RUS (see inner_CKS)
  • inner_QSVT_wrapper
  • QSVT:
    • test if it works for matrix inversion
    • test if it works with QSVT angles for another matrix function
    • make it possible to pass either the QSVT angles, or the desired polynomial (and compute angles within using pyqsp).
    • docstring
      • examples
  • tests

MatP1337 and others added 20 commits November 6, 2025 19:25
…opriate angles and scaling will be added to examples since it requires pyqsp as a dependancy.
…. Examples also show how to solve two QLSP problems, and how to rescale the matrix with scale factor s
…ead of an if statement. phi_qsvt gets flipped because jrange (a,b,-1) was buggy
…ow need only A, b, eps, and optionally kappa (if A is passed as a block encoding tuple)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants