version 1.1.1.1, 2010/01/26 15:22:46
|
version 1.10, 2011/11/21 22:19:51
|
Line 1
|
Line 1
|
|
*> \brief \b ZLAESY |
|
* |
|
* =========== DOCUMENTATION =========== |
|
* |
|
* Online html documentation available at |
|
* http://www.netlib.org/lapack/explore-html/ |
|
* |
|
*> \htmlonly |
|
*> Download ZLAESY + dependencies |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlaesy.f"> |
|
*> [TGZ]</a> |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlaesy.f"> |
|
*> [ZIP]</a> |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlaesy.f"> |
|
*> [TXT]</a> |
|
*> \endhtmlonly |
|
* |
|
* Definition: |
|
* =========== |
|
* |
|
* SUBROUTINE ZLAESY( A, B, C, RT1, RT2, EVSCAL, CS1, SN1 ) |
|
* |
|
* .. Scalar Arguments .. |
|
* COMPLEX*16 A, B, C, CS1, EVSCAL, RT1, RT2, SN1 |
|
* .. |
|
* |
|
* |
|
*> \par Purpose: |
|
* ============= |
|
*> |
|
*> \verbatim |
|
*> |
|
*> 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 ] |
|
*> \endverbatim |
|
* |
|
* Arguments: |
|
* ========== |
|
* |
|
*> \param[in] A |
|
*> \verbatim |
|
*> A is COMPLEX*16 |
|
*> The ( 1, 1 ) element of input matrix. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] B |
|
*> \verbatim |
|
*> B is COMPLEX*16 |
|
*> The ( 1, 2 ) element of input matrix. The ( 2, 1 ) element |
|
*> is also given by B, since the 2-by-2 matrix is symmetric. |
|
*> \endverbatim |
|
*> |
|
*> \param[in] C |
|
*> \verbatim |
|
*> C is COMPLEX*16 |
|
*> The ( 2, 2 ) element of input matrix. |
|
*> \endverbatim |
|
*> |
|
*> \param[out] RT1 |
|
*> \verbatim |
|
*> RT1 is COMPLEX*16 |
|
*> The eigenvalue of larger modulus. |
|
*> \endverbatim |
|
*> |
|
*> \param[out] RT2 |
|
*> \verbatim |
|
*> RT2 is COMPLEX*16 |
|
*> The eigenvalue of smaller modulus. |
|
*> \endverbatim |
|
*> |
|
*> \param[out] EVSCAL |
|
*> \verbatim |
|
*> EVSCAL is COMPLEX*16 |
|
*> 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). |
|
*> \endverbatim |
|
*> |
|
*> \param[out] CS1 |
|
*> \verbatim |
|
*> CS1 is COMPLEX*16 |
|
*> \endverbatim |
|
*> |
|
*> \param[out] SN1 |
|
*> \verbatim |
|
*> SN1 is COMPLEX*16 |
|
*> If EVSCAL .NE. 0, ( CS1, SN1 ) is the unit right eigenvector |
|
*> for RT1. |
|
*> \endverbatim |
|
* |
|
* Authors: |
|
* ======== |
|
* |
|
*> \author Univ. of Tennessee |
|
*> \author Univ. of California Berkeley |
|
*> \author Univ. of Colorado Denver |
|
*> \author NAG Ltd. |
|
* |
|
*> \date November 2011 |
|
* |
|
*> \ingroup complex16SYauxiliary |
|
* |
|
* ===================================================================== |
SUBROUTINE ZLAESY( A, B, C, RT1, RT2, EVSCAL, CS1, SN1 ) |
SUBROUTINE ZLAESY( A, B, C, RT1, RT2, EVSCAL, CS1, SN1 ) |
* |
* |
* -- LAPACK auxiliary routine (version 3.2) -- |
* -- LAPACK auxiliary routine (version 3.4.0) -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* November 2006 |
* November 2011 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
COMPLEX*16 A, B, C, CS1, EVSCAL, RT1, RT2, SN1 |
COMPLEX*16 A, B, C, CS1, EVSCAL, RT1, RT2, SN1 |
* .. |
* .. |
* |
* |
* Purpose |
|
* ======= |
|
* |
|
* 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 ] |
|
* |
|
* Arguments |
|
* ========= |
|
* |
|
* A (input) COMPLEX*16 |
|
* The ( 1, 1 ) element of input matrix. |
|
* |
|
* B (input) COMPLEX*16 |
|
* The ( 1, 2 ) element of input matrix. The ( 2, 1 ) element |
|
* is also given by B, since the 2-by-2 matrix is symmetric. |
|
* |
|
* C (input) COMPLEX*16 |
|
* The ( 2, 2 ) element of input matrix. |
|
* |
|
* RT1 (output) COMPLEX*16 |
|
* The eigenvalue of larger modulus. |
|
* |
|
* RT2 (output) COMPLEX*16 |
|
* The eigenvalue of smaller modulus. |
|
* |
|
* EVSCAL (output) COMPLEX*16 |
|
* 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). |
|
* |
|
* CS1 (output) COMPLEX*16 |
|
* SN1 (output) COMPLEX*16 |
|
* If EVSCAL .NE. 0, ( CS1, SN1 ) is the unit right eigenvector |
|
* for RT1. |
|
* |
|
* ===================================================================== |
* ===================================================================== |
* |
* |
* .. Parameters .. |
* .. Parameters .. |
Line 127
|
Line 195
|
* |
* |
* Choose CS1 = 1 and SN1 to satisfy the first equation, then |
* Choose CS1 = 1 and SN1 to satisfy the first equation, then |
* scale the components of this eigenvector so that the matrix |
* scale the components of this eigenvector so that the matrix |
* of eigenvectors X satisfies X * X' = I . (No scaling is |
* of eigenvectors X satisfies X * X**T = I . (No scaling is |
* done if the norm of the eigenvalue matrix is less than THRESH.) |
* done if the norm of the eigenvalue matrix is less than THRESH.) |
* |
* |
SN1 = ( RT1-A ) / B |
SN1 = ( RT1-A ) / B |