1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
---
:name: dlasq2
:md5sum: dc76333ff510f8712b38bba549479bf4
:category: :subroutine
:arguments:
- n:
:type: integer
:intent: input
- z:
:type: doublereal
:intent: input/output
:dims:
- 4*n
- info:
:type: integer
:intent: output
:substitutions: {}
:fortran_help: " SUBROUTINE DLASQ2( N, Z, INFO )\n\n\
* Purpose\n\
* =======\n\
*\n\
* DLASQ2 computes all the eigenvalues of the symmetric positive \n\
* definite tridiagonal matrix associated with the qd array Z to high\n\
* relative accuracy are computed to high relative accuracy, in the\n\
* absence of denormalization, underflow and overflow.\n\
*\n\
* To see the relation of Z to the tridiagonal matrix, let L be a\n\
* unit lower bidiagonal matrix with subdiagonals Z(2,4,6,,..) and\n\
* let U be an upper bidiagonal matrix with 1's above and diagonal\n\
* Z(1,3,5,,..). The tridiagonal is L*U or, if you prefer, the\n\
* symmetric tridiagonal to which it is similar.\n\
*\n\
* Note : DLASQ2 defines a logical variable, IEEE, which is true\n\
* on machines which follow ieee-754 floating-point standard in their\n\
* handling of infinities and NaNs, and false otherwise. This variable\n\
* is passed to DLASQ3.\n\
*\n\n\
* Arguments\n\
* =========\n\
*\n\
* N (input) INTEGER\n\
* The number of rows and columns in the matrix. N >= 0.\n\
*\n\
* Z (input/output) DOUBLE PRECISION array, dimension ( 4*N )\n\
* On entry Z holds the qd array. On exit, entries 1 to N hold\n\
* the eigenvalues in decreasing order, Z( 2*N+1 ) holds the\n\
* trace, and Z( 2*N+2 ) holds the sum of the eigenvalues. If\n\
* N > 2, then Z( 2*N+3 ) holds the iteration count, Z( 2*N+4 )\n\
* holds NDIVS/NIN^2, and Z( 2*N+5 ) holds the percentage of\n\
* shifts that failed.\n\
*\n\
* INFO (output) INTEGER\n\
* = 0: successful exit\n\
* < 0: if the i-th argument is a scalar and had an illegal\n\
* value, then INFO = -i, if the i-th argument is an\n\
* array and the j-entry had an illegal value, then\n\
* INFO = -(i*100+j)\n\
* > 0: the algorithm failed\n\
* = 1, a split was marked by a positive value in E\n\
* = 2, current block of Z not diagonalized after 30*N\n\
* iterations (in inner while loop)\n\
* = 3, termination criterion of outer while loop not met \n\
* (program created more than N unreduced blocks)\n\
*\n\n\
* Further Details\n\
* ===============\n\
* Local Variables: I0:N0 defines a current unreduced segment of Z.\n\
* The shifts are accumulated in SIGMA. Iteration count is in ITER.\n\
* Ping-pong is controlled by PP (alternates between 0 and 1).\n\
*\n\
* =====================================================================\n\
*\n"
|