NAME dlags2 - compute 2-by-2 orthogonal matrices U, V and Q, such that if ( UPPER ) then U'*A*Q = U'*( A1 A2 )*Q = ( x 0 ) ( 0 A3 ) ( x x ) and V'*B*Q = V'*( B1 B2 )*Q = ( x 0 ) ( 0 B3 ) ( x x ) or if ( .NOT.UPPER ) then U'*A*Q = U'*( A1 0 )*Q = ( x x ) ( A2 A3 ) ( 0 x ) and V'*B*Q = V'*( B1 0 )*Q = ( x x ) ( B2 B3 ) ( 0 x ) The rows of the transformed A and B are parallel, where U = ( CSU SNU ), V = ( CSV SNV ), Q = ( CSQ SNQ ) (-SNU CSU ) (-SNV CSV ) (-SNQ CSQ ) Z' denotes the transpose of Z SYNOPSIS SUBROUTINE DLAGS2( UPPER, A1, A2, A3, B1, B2, B3, CSU, SNU, CSV, SNV, CSQ, SNQ ) LOGICAL UPPER DOUBLE PRECISION A1, A2, A3, B1, B2, B3, CSQ, CSU, CSV, SNQ, SNU, SNV #include <sunperf.h> void dlags2(int upper, double a1, double a2, double a3, dou- ble b1, double b2, double b3, double *csu, double *snu, double *csv, double *snv, double *csq, dou- ble *snq); PURPOSE DLAGS2 computes 2-by-2 orthogonal matrices U, V and Q, such that if ( UPPER ) then ARGUMENTS UPPER (input) LOGICAL = .TRUE.: the input matrices A and B are upper triangular. = .FALSE.: the input matrices A and B are lower triangular. A1 (input) DOUBLE PRECISION A2 (input) DOUBLE PRECISION A3 (input) DOUBLE PRECISION On entry, A1, A2 and A3 are ele- ments of the input 2-by-2 upper (lower) triangular matrix A. B1 (input) DOUBLE PRECISION B2 (input) DOUBLE PRECISION B3 (input) DOUBLE PRECISION On entry, B1, B2 and B3 are ele- ments of the input 2-by-2 upper (lower) triangular matrix B. CSU (output) DOUBLE PRECISION SNU (output) DOUBLE PRECISION The desired orthogonal matrix U. CSV (output) DOUBLE PRECISION SNV (output) DOUBLE PRECISION The desired orthogonal matrix V. CSQ (output) DOUBLE PRECISION SNQ (output) DOUBLE PRECISION The desired orthogonal matrix Q.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |