Skip to content

Improve tolerance in cosine-sine decomposition #14422

@ShellyGarion

Description

@ShellyGarion

Environment

  • Qiskit version: 2.1
  • Python version:
  • Operating system:

What is happening?

Need to improve the tolerance of the cosine-sine decomposition in cos_sin_decomp.rs, which is used in the Quantum Shannon Decomposition (QSD).
As QSD is using the cosine-sine recursively, the tolerance errors are getting accumulated, especially when handling multi-controlled unitary operators, see the discussion in #13688, so in certain cases we should use the Isometry synthesis which requires more CX gates.
The current code for the cosine-sine decomposition is based on rust nalgebra SVD function.

How can we reproduce the issue?

see the discussion in #13688, call:
Operator(qsd.qs_decomposition(mat)) for certain matrices gives a matrix way different than the original mat

What should happen?

Operator(qsd.qs_decomposition(mat)) should give back mat up to a reasonable tolerance level

Any suggestions?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions