dlasq2 - inite tridiagonal matrix (high relative accuracy)
SUBROUTINE DLASQ2( N, Z, INFO ) INTEGER INFO, N DOUBLE PRECISION Z(*) SUBROUTINE DLASQ2_64( N, Z, INFO ) INTEGER*8 INFO, N DOUBLE PRECISION Z(*) F95 INTERFACE SUBROUTINE LASQ2( N, Z, INFO ) INTEGER :: N, INFO REAL(8), DIMENSION(:) :: Z SUBROUTINE LASQ2_64( N, Z, INFO ) INTEGER(8) :: N, INFO REAL(8), DIMENSION(:) :: Z C INTERFACE #include <sunperf.h> void dlasq2 (int n, double *z, int *info); void dlasq2_64 (long n, double *z, long *info);
Oracle Solaris Studio Performance Library dlasq2(3P) NAME dlasq2 - compute all the eigenvalues of a real symmetric positive def- inite tridiagonal matrix (high relative accuracy) SYNOPSIS SUBROUTINE DLASQ2( N, Z, INFO ) INTEGER INFO, N DOUBLE PRECISION Z(*) SUBROUTINE DLASQ2_64( N, Z, INFO ) INTEGER*8 INFO, N DOUBLE PRECISION Z(*) F95 INTERFACE SUBROUTINE LASQ2( N, Z, INFO ) INTEGER :: N, INFO REAL(8), DIMENSION(:) :: Z SUBROUTINE LASQ2_64( N, Z, INFO ) INTEGER(8) :: N, INFO REAL(8), DIMENSION(:) :: Z C INTERFACE #include <sunperf.h> void dlasq2 (int n, double *z, int *info); void dlasq2_64 (long n, double *z, long *info); PURPOSE dlasq2 computes all the eigenvalues of the symmetric positive definite tridiagonal matrix associated with the qd array Z to high relative accuracy are computed to high relative accuracy, in the absence of denormalization, underflow and overflow. To see the relation of Z to the tridiagonal matrix, let L be a unit lower bidiagonal matrix with subdiagonals Z(2,4,6,,..) and let U be an upper bidiagonal matrix with 1's above and diagonal Z(1,3,5,,..). The tridiagonal is L*U or, if you prefer, the symmetric tridiagonal to which it is similar. Note : DLASQ2 defines a logical variable, IEEE, which is true on machines which follow ieee-754 floating-point standard in their han- dling of infinities and NaNs, and false otherwise. This variable is passed to DLASQ3. ARGUMENTS N (input) N is INTEGER The number of rows and columns in the matrix. N >= 0. Z (input/output) Z is DOUBLE PRECISION array, dimension ( 4*N ) On entry Z holds the qd array. On exit, entries 1 to N hold the eigenvalues in decreasing order, Z( 2*N+1 ) holds the trace, and Z( 2*N+2 ) holds the sum of the eigenvalues. If N > 2, then Z( 2*N+3 ) holds the iteration count, Z( 2*N+4 ) holds NDIVS/NIN^2, and Z( 2*N+5 ) holds the percentage of shifts that failed. INFO (output) INFO is INTEGER = 0: successful exit < 0: if the i-th argument is a scalar and had an illegal value, then INFO = -i, if the i-th argument is an array and the j-entry had an illegal value, then INFO = -(i*100+j). > 0: the algorithm failed. = 1, a split was marked by a positive value in E. = 2, current block of Z not diagonalized after 100*N itera- tions (in inner while loop). On exit Z holds a qd array with the same eigenvalues as the given Z. = 3, termination criterion of outer while loop not met (pro- gram created more than N unreduced blocks). 7 Nov 2015 dlasq2(3P)