openfermion.linalg.givens_decomposition_square
Decompose a square matrix into a sequence of Givens rotations.
openfermion.linalg.givens_decomposition_square(
unitary_matrix, always_insert=False
)
Used in the notebooks
The input is a square \(n \times n\) matrix \(Q\).
\(Q\) can be decomposed as follows:
\[
Q = DU
\]
where \(U\) is unitary and \(D\) is diagonal.
Furthermore, we can decompose \(U\) as
\[
U = G_k ... G_1
\]
where \(G_1, \ldots, G_k\) are complex Givens rotations.
A Givens rotation is a rotation within the two-dimensional subspace
spanned by two coordinate axes. Within the two relevant coordinate
axes, a Givens rotation has the form
\[
\begin{pmatrix}
\cos(\theta) & -e^{i \varphi} \sin(\theta) \\
\sin(\theta) & e^{i \varphi} \cos(\theta)
\end{pmatrix}.
\]
Args |
unitary_matrix
|
A numpy array with orthonormal rows,
representing the matrix Q.
|
Returns |
decomposition
|
list[tuple]
A list of tuples of objects describing Givens
rotations. The list looks like [(G_1, ), (G_2, G_3), ... ].
The Givens rotations within a tuple can be implemented in parallel.
The description of a Givens rotation is itself a tuple of the
form \((i, j, \theta, \varphi)\), which represents a
Givens rotation of coordinates
\(i\) and \(j\) by angles \(\theta\) and
\(\varphi\).
|
diagonal
|
ndarray
A list of the nonzero entries of \(D\).
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-07-14 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-07-14 UTC."],[],[]]