laesy#

Functions

void claesy(
    const c64  a,
    const c64  b,
    const c64  c,
          c64* rt1,
          c64* rt2,
          c64* evscal,
          c64* cs1,
          c64* sn1
);
void claesy(const c64 a, const c64 b, const c64 c, c64 *rt1, c64 *rt2, c64 *evscal, c64 *cs1, c64 *sn1)#

CLAESY computes the eigendecomposition of a 2-by-2 symmetric matrix ( ( A, B );( B, C ) ) provided the norm of the matrix of eigenvectors is larger than some threshold value.

RT1 is the eigenvalue of larger absolute value, and RT2 of smaller absolute value. If the eigenvectors are computed, then on return ( CS1, SN1 ) is the unit eigenvector for RT1, hence

[ CS1 SN1 ] . [ A B ] . [ CS1 -SN1 ] = [ RT1 0 ] [ -SN1 CS1 ] [ B C ] [ SN1 CS1 ] [ 0 RT2 ]

Parameters

in
a

The ( 1, 1 ) element of input matrix.

in
b

The ( 1, 2 ) element of input matrix. The ( 2, 1 ) element is also given by B, since the 2-by-2 matrix is symmetric.

in
c

The ( 2, 2 ) element of input matrix.

out
rt1

The eigenvalue of larger modulus.

out
rt2

The eigenvalue of smaller modulus.

out
evscal

The complex value by which the eigenvector matrix was scaled to make it orthonormal. If EVSCAL is zero, the eigenvectors were not computed. This means one of two things: the 2-by-2 matrix could not be diagonalized, or the norm of the matrix of eigenvectors before scaling was larger than the threshold value THRESH (set below).

out
cs1

If EVSCAL .NE. 0, ( CS1, SN1 ) is the unit right eigenvector for RT1.

out
sn1

If EVSCAL .NE. 0, ( CS1, SN1 ) is the unit right eigenvector for RT1.

Functions

void zlaesy(
    const c128  a,
    const c128  b,
    const c128  c,
          c128* rt1,
          c128* rt2,
          c128* evscal,
          c128* cs1,
          c128* sn1
);
void zlaesy(const c128 a, const c128 b, const c128 c, c128 *rt1, c128 *rt2, c128 *evscal, c128 *cs1, c128 *sn1)#

ZLAESY computes the eigendecomposition of a 2-by-2 symmetric matrix ( ( A, B );( B, C ) ) provided the norm of the matrix of eigenvectors is larger than some threshold value.

RT1 is the eigenvalue of larger absolute value, and RT2 of smaller absolute value. If the eigenvectors are computed, then on return ( CS1, SN1 ) is the unit eigenvector for RT1, hence

[ CS1 SN1 ] . [ A B ] . [ CS1 -SN1 ] = [ RT1 0 ] [ -SN1 CS1 ] [ B C ] [ SN1 CS1 ] [ 0 RT2 ]

Parameters

in
a

The ( 1, 1 ) element of input matrix.

in
b

The ( 1, 2 ) element of input matrix. The ( 2, 1 ) element is also given by B, since the 2-by-2 matrix is symmetric.

in
c

The ( 2, 2 ) element of input matrix.

out
rt1

The eigenvalue of larger modulus.

out
rt2

The eigenvalue of smaller modulus.

out
evscal

The complex value by which the eigenvector matrix was scaled to make it orthonormal. If EVSCAL is zero, the eigenvectors were not computed. This means one of two things: the 2-by-2 matrix could not be diagonalized, or the norm of the matrix of eigenvectors before scaling was larger than the threshold value THRESH (set below).

out
cs1

If EVSCAL .NE. 0, ( CS1, SN1 ) is the unit right eigenvector for RT1.

out
sn1

If EVSCAL .NE. 0, ( CS1, SN1 ) is the unit right eigenvector for RT1.