https://sourceforge.net/tracker/?func=d ... oup_id=612
I made this code very picky on right formatting of comments.
Thus, I noticed a couple of (mostly whitespace) inconsistencies.
I have added them below (as I could not find a right extension for an attachment)
I can also upload the updated source files, if this is more convenient.
Could these changes be included in a next release ?
(Updated the code below on sept 8, 2009.)
Note that I have not parsed the single precision libraries nor the complex, and thus similar notes will apply to similar files
- Code: Select all
--- dgbrfsx.f 2009/04/16 19:09:59 1.1
+++ dgbrfsx.f 2009/06/04 19:25:24
@@ -263,7 +263,7 @@
* Specifies the number of parameters set in PARAMS. If .LE. 0, the
* PARAMS array is never referenced and default values are used.
*
-* PARAMS (input / output) DOUBLE PRECISION array, dimension NPARAMS
+* PARAMS (input / output) DOUBLE PRECISION array, dimension (NPARAMS)
* Specifies algorithm parameters. If an entry is .LT. 0.0, then
* that entry will be filled with default value used for that
* parameter. Only positions up to NPARAMS are accessed; defaults
--- dgbsvxx.f 2008/11/17 08:10:08 1.1
+++ dgbsvxx.f 2009/06/04 19:25:56
@@ -17,7 +17,7 @@
* .. Scalar Arguments ..
CHARACTER EQUED, FACT, TRANS
INTEGER INFO, LDAB, LDAFB, LDB, LDX, N, NRHS, NPARAMS,
- $ N_ERR_BNDS
+ $ N_ERR_BNDS, KL, KU
DOUBLE PRECISION RCOND, RPVGRW
* ..
* .. Array Arguments ..
@@ -377,7 +377,7 @@
* Specifies the number of parameters set in PARAMS. If .LE. 0, the
* PARAMS array is never referenced and default values are used.
*
-* PARAMS (input / output) DOUBLE PRECISION array, dimension NPARAMS
+* PARAMS (input/output) DOUBLE PRECISION array, dimension (NPARAMS)
* Specifies algorithm parameters. If an entry is .LT. 0.0, then
* that entry will be filled with default value used for that
* parameter. Only positions up to NPARAMS are accessed; defaults
--- dgejsv.f 2009/04/16 19:09:59 1.1
+++ dgejsv.f 2009/06/03 22:31:14
@@ -46,9 +46,9 @@
* Arguments
* =========
*
-* JOBA (input) CHARACTER*1
+* JOBA (input) CHARACTER*1
* Specifies the level of accuracy:
-* = 'C': This option works well (high relative accuracy) if A = B * D,
+* = 'C': This option works well (high relative accuracy) if A = B * D,
* with well-conditioned B and arbitrary diagonal matrix D.
* The accuracy cannot be spoiled by COLUMN scaling. The
* accuracy of the computed output depends on the condition of
@@ -59,52 +59,52 @@
* pivoting. This initial preprocessing and preconditioning by
* a rank revealing QR factorization is common for all values of
* JOBA. Additional actions are specified as follows:
-* = 'E': Computation as with 'C' with an additional estimate of the
+* = 'E': Computation as with 'C' with an additional estimate of the
* condition number of B. It provides a realistic error bound.
-* = 'F': If A = D1 * C * D2 with ill-conditioned diagonal scalings
+* = 'F': If A = D1 * C * D2 with ill-conditioned diagonal scalings
* D1, D2, and well-conditioned matrix C, this option gives
* higher accuracy than the 'C' option. If the structure of the
* input matrix is not known, and relative accuracy is
* desirable, then this option is advisable. The input matrix A
* is preprocessed with QR factorization with FULL (row and
* column) pivoting.
-* = 'G' Computation as with 'F' with an additional estimate of the
+* = 'G' Computation as with 'F' with an additional estimate of the
* condition number of B, where A=D*B. If A has heavily weighted
* rows, then using this condition number gives too pessimistic
* error bound.
-* = 'A': Small singular values are the noise and the matrix is treated
+* = 'A': Small singular values are the noise and the matrix is treated
* as numerically rank defficient. The error in the computed
* singular values is bounded by f(m,n)*epsilon*||A||.
* The computed SVD A = U * S * V^t restores A up to
* f(m,n)*epsilon*||A||.
* This gives the procedure the licence to discard (set to zero)
* all singular values below N*epsilon*||A||.
-* = 'R': Similar as in 'A'. Rank revealing property of the initial
+* = 'R': Similar as in 'A'. Rank revealing property of the initial
* QR factorization is used do reveal (using triangular factor)
* a gap sigma_{r+1} < epsilon * sigma_r in which case the
* numerical RANK is declared to be r. The SVD is computed with
* absolute error bounds, but more accurately than with 'A'.
*
-* JOBU (input) CHARACTER*1
+* JOBU (input) CHARACTER*1
* Specifies whether to compute the columns of U:
-* = 'U': N columns of U are returned in the array U.
-* = 'F': full set of M left sing. vectors is returned in the array U.
-* = 'W': U may be used as workspace of length M*N. See the description
+* = 'U': N columns of U are returned in the array U.
+* = 'F': full set of M left sing. vectors is returned in the array U.
+* = 'W': U may be used as workspace of length M*N. See the description
* of U.
-* = 'N': U is not computed.
+* = 'N': U is not computed.
*
-* JOBV (input) CHARACTER*1
+* JOBV (input) CHARACTER*1
* Specifies whether to compute the matrix V:
-* = 'V': N columns of V are returned in the array V; Jacobi rotations
+* = 'V': N columns of V are returned in the array V; Jacobi rotations
* are not explicitly accumulated.
-* = 'J': N columns of V are returned in the array V, but they are
+* = 'J': N columns of V are returned in the array V, but they are
* computed as the product of Jacobi rotations. This option is
* allowed only if JOBU .NE. 'N', i.e. in computing the full SVD.
-* = 'W': V may be used as workspace of length N*N. See the description
+* = 'W': V may be used as workspace of length N*N. See the description
* of V.
-* = 'N': V is not computed.
+* = 'N': V is not computed.
*
-* JOBR (input) CHARACTER*1
+* JOBR (input) CHARACTER*1
* Specifies the RANGE for the singular values. Issues the licence to
* set to zero small positive singular values if they are outside
* specified range. If A .NE. 0 is scaled so that the largest singular
@@ -112,27 +112,27 @@
* the licence to kill columns of A whose norm in c*A is less than
* DSQRT(SFMIN) (for JOBR.EQ.'R'), or less than SMALL=SFMIN/EPSLN,
* where SFMIN=SLAMCH('S'), EPSLN=SLAMCH('E').
-* = 'N': Do not kill small columns of c*A. This option assumes that
+* = 'N': Do not kill small columns of c*A. This option assumes that
* BLAS and QR factorizations and triangular solvers are
* implemented to work in that range. If the condition of A
* is greater than BIG, use DGESVJ.
-* = 'R': RESTRICTED range for sigma(c*A) is [DSQRT(SFMIN), DSQRT(BIG)]
+* = 'R': RESTRICTED range for sigma(c*A) is [DSQRT(SFMIN), DSQRT(BIG)]
* (roughly, as described above). This option is recommended.
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~
* For computing the singular values in the FULL range [SFMIN,BIG]
* use DGESVJ.
*
-* JOBT (input) CHARACTER*1
+* JOBT (input) CHARACTER*1
* If the matrix is square then the procedure may determine to use
* transposed A if A^t seems to be better with respect to convergence.
* If the matrix is not square, JOBT is ignored. This is subject to
* changes in the future.
* The decision is based on two values of entropy over the adjoint
* orbit of A^t * A. See the descriptions of WORK(6) and WORK(7).
-* = 'T': transpose if entropy test indicates possibly faster
+* = 'T': transpose if entropy test indicates possibly faster
* convergence of Jacobi process if A^t is taken as input. If A is
* replaced with A^t, then the row pivoting is included automatically.
-* = 'N': do not speculate.
+* = 'N': do not speculate.
* This option can be used to compute only the singular values, or the
* full SVD (U, SIGMA and V). For only one set of singular vectors
* (U or V), the caller should provide both U and V, as one of the
@@ -140,7 +140,7 @@
* The implementer can easily remove this constraint and make the
* code more complicated. See the descriptions of U and V.
*
-* JOBP (input) CHARACTER*1
+* JOBP (input) CHARACTER*1
* Issues the licence to introduce structured perturbations to drown
* denormalized numbers. This licence should be active if the
* denormals are poorly implemented, causing slow computation,
@@ -149,22 +149,22 @@
* when the full SVD or only the singular values are requested. The
* implementer/user can easily add the perturbation for the cases of
* computing one set of singular vectors.
-* = 'P': introduce perturbation
-* = 'N': do not perturb
+* = 'P': introduce perturbation
+* = 'N': do not perturb
*
-* M (input) INTEGER
-* The number of rows of the input matrix A. M >= 0.
+* M (input) INTEGER
+* The number of rows of the input matrix A. M >= 0.
*
-* N (input) INTEGER
-* The number of columns of the input matrix A. M >= N >= 0.
+* N (input) INTEGER
+* The number of columns of the input matrix A. M >= N >= 0.
*
-* A (input/workspace) REAL array, dimension (LDA,N)
+* A (input/workspace) DOUBLE PRECISION array, dimension (LDA,N)
* On entry, the M-by-N matrix A.
*
* LDA (input) INTEGER
* The leading dimension of the array A. LDA >= max(1,M).
*
-* SVA (workspace/output) REAL array, dimension (N)
+* SVA (workspace/output) DOUBLE PRECISION array, dimension (N)
* On exit,
* - For WORK(1)/WORK(2) = ONE: The singular values of A. During the
* computation SVA contains Euclidean column norms of the
@@ -177,7 +177,7 @@
* as exact zeros obtained by "set to zero" because they are
* below the numerical rank threshold or are denormalized numbers.
*
-* U (workspace/output) REAL array, dimension ( LDU, N )
+* U (workspace/output) DOUBLE PRECISION array, dimension ( LDU, N )
* If JOBU = 'U', then U contains on exit the M-by-N matrix of
* the left singular vectors.
* If JOBU = 'F', then U contains on exit the M-by-M matrix of
@@ -192,11 +192,11 @@
* reserved as workspace of length N*N.
* If JOBU = 'N' U is not referenced.
*
-* LDU (input) INTEGER
+* LDU (input) INTEGER
* The leading dimension of the array U, LDU >= 1.
* IF JOBU = 'U' or 'F' or 'W', then LDU >= M.
*
-* V (workspace/output) REAL array, dimension ( LDV, N )
+* V (workspace/output) DOUBLE PRECISION array, dimension ( LDV, N )
* If JOBV = 'V', 'J' then V contains on exit the N-by-N matrix of
* the right singular vectors;
* If JOBV = 'W', AND (JOBU.EQ.'U' AND JOBT.EQ.'T' AND M.EQ.N),
@@ -212,7 +212,7 @@
* The leading dimension of the array V, LDV >= 1.
* If JOBV = 'V' or 'J' or 'W', then LDV >= N.
*
-* WORK (workspace/output) REAL array, dimension at least LWORK.
+* WORK (workspace/output) DOUBLE PRECISION array, dimension at least LWORK.
* On exit,
* WORK(1) = SCALE = WORK(2) / WORK(1) is the scaling factor such
* that SCALE*SVA(1:N) are the computed singular values
--- dgerfsx.f 2009/04/16 19:09:59 1.1
+++ dgerfsx.f 2009/06/04 19:33:42
@@ -250,7 +250,7 @@
* Specifies the number of parameters set in PARAMS. If .LE. 0, the
* PARAMS array is never referenced and default values are used.
*
-* PARAMS (input / output) DOUBLE PRECISION array, dimension NPARAMS
+* PARAMS (input/output) DOUBLE PRECISION array, dimension (NPARAMS)
* Specifies algorithm parameters. If an entry is .LT. 0.0, then
* that entry will be filled with default value used for that
* parameter. Only positions up to NPARAMS are accessed; defaults
--- dgesc2.f 2009/04/16 19:09:59 1.1
+++ dgesc2.f 2009/06/02 18:18:41
@@ -49,9 +49,9 @@
* The pivot indices; for 1 <= j <= N, column j of the
* matrix has been interchanged with column JPIV(j).
*
-* SCALE (output) DOUBLE PRECISION
-* On exit, SCALE contains the scale factor. SCALE is chosen
-* 0 <= SCALE <= 1 to prevent owerflow in the solution.
+* SCALE (output) DOUBLE PRECISION
+* On exit, SCALE contains the scale factor. SCALE is chosen
+* 0 <= SCALE <= 1 to prevent owerflow in the solution.
*
* Further Details
* ===============
--- dgesvj.f 2009/04/16 19:09:59 1.1
+++ dgesvj.f 2009/06/03 21:58:30
@@ -139,7 +139,7 @@
* The number of columns of the input matrix A.
* M >= N >= 0.
*
-* A (input/output) REAL array, dimension (LDA,N)
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
* On entry, the M-by-N matrix A.
* On exit :
* If JOBU .EQ. 'U' .OR. JOBU .EQ. 'C' :
@@ -181,7 +181,7 @@
* LDA (input) INTEGER
* The leading dimension of the array A. LDA >= max(1,M).
*
-* SVA (workspace/output) REAL array, dimension (N)
+* SVA (workspace/output) DOUBLE PRECISION array, dimension (N)
* On exit :
* If INFO .EQ. 0 :
* depending on the value SCALE = WORK(1), we have:
@@ -201,7 +201,7 @@
* If JOBV .EQ. 'A', then the product of Jacobi rotations in DGESVJ
* is applied to the first MV rows of V. See the description of JOBV.
*
-* V (input/output) REAL array, dimension (LDV,N)
+* V (input/output) DOUBLE PRECISION array, dimension (LDV,N)
* If JOBV = 'V', then V contains on exit the N-by-N matrix of
* the right singular vectors;
* If JOBV = 'A', then V contains the product of the computed right
@@ -214,7 +214,7 @@
* If JOBV .EQ. 'V', then LDV .GE. max(1,N).
* If JOBV .EQ. 'A', then LDV .GE. max(1,MV) .
*
-* WORK (input/workspace/output) REAL array, dimension max(4,M+N).
+* WORK (input/workspace/output) DOUBLE PRECISION array, dimension (LWORK)
* On entry :
* If JOBU .EQ. 'C' :
* WORK(1) = CTOL, where CTOL defines the threshold for convergence.
@@ -241,7 +241,8 @@
* Jacobi rotation angles in the last sweep. It can be
* useful for a post festum analysis.
*
-* LWORK length of WORK, WORK >= MAX(6,M+N)
+* LWORK (input) INTEGER
+* length of WORK, WORK >= MAX(6,M+N)
*
* INFO (output) INTEGER
* = 0 : successful exit.
--- dgesvxx.f 2008/11/17 08:10:08 1.1
+++ dgesvxx.f 2009/06/04 19:34:04
@@ -363,7 +363,7 @@
* Specifies the number of parameters set in PARAMS. If .LE. 0, the
* PARAMS array is never referenced and default values are used.
*
-* PARAMS (input / output) DOUBLE PRECISION array, dimension NPARAMS
+* PARAMS (input/output) DOUBLE PRECISION array, dimension (NPARAMS)
* Specifies algorithm parameters. If an entry is .LT. 0.0, then
* that entry will be filled with default value used for that
* parameter. Only positions up to NPARAMS are accessed; defaults
--- dggbal.f 2009/04/16 19:09:59 1.1
+++ dggbal.f 2009/06/03 21:15:26
@@ -88,7 +88,7 @@
* The order in which the interchanges are made is N to IHI+1,
* then 1 to ILO-1.
*
-* WORK (workspace) REAL array, dimension (lwork)
+* WORK (workspace) DOUBLE PRECISION array, dimension (lwork)
* lwork must be at least max(1,6*N) when JOB = 'S' or 'B', and
* at least 1 when JOB = 'N' or 'P'.
*
--- dgsvj0.f 2009/04/16 19:09:59 1.1
+++ dgsvj0.f 2009/06/04 19:20:56
@@ -69,7 +69,7 @@
* The number of columns of the input matrix A.
* M >= N >= 0.
*
-* A (input/output) REAL array, dimension (LDA,N)
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
* On entry, M-by-N matrix A, such that A*diag(D) represents
* the input matrix.
* On exit,
@@ -82,7 +82,7 @@
* LDA (input) INTEGER
* The leading dimension of the array A. LDA >= max(1,M).
*
-* D (input/workspace/output) REAL array, dimension (N)
+* D (input/workspace/output) DOUBLE PRECISION array, dimension (N)
* The array D accumulates the scaling factors from the fast scaled
* Jacobi rotations.
* On entry, A*diag(D) represents the input matrix.
@@ -92,7 +92,7 @@
* TOL and NSWEEP, respectively.
* (See the descriptions of A, TOL and NSWEEP.)
*
-* SVA (input/workspace/output) REAL array, dimension (N)
+* SVA (input/workspace/output) DOUBLE PRECISION array, dimension (N)
* On entry, SVA contains the Euclidean norms of the columns of
* the matrix A*diag(D).
* On exit, SVA contains the Euclidean norms of the columns of
@@ -103,7 +103,7 @@
* sequence of Jacobi rotations.
* If JOBV = 'N', then MV is not referenced.
*
-* V (input/output) REAL array, dimension (LDV,N)
+* V (input/output) DOUBLE PRECISION array, dimension (LDV,N)
* If JOBV .EQ. 'V' then N rows of V are post-multipled by a
* sequence of Jacobi rotations.
* If JOBV .EQ. 'A' then MV rows of V are post-multipled by a
@@ -115,13 +115,13 @@
* If JOBV = 'V', LDV .GE. N.
* If JOBV = 'A', LDV .GE. MV.
*
-* EPS (input) INTEGER
+* EPS (input) DOUBLE PRECISION
* EPS = SLAMCH('Epsilon')
*
-* SFMIN (input) INTEGER
+* SFMIN (input) DOUBLE PRECISION
* SFMIN = SLAMCH('Safe Minimum')
*
-* TOL (input) REAL
+* TOL (input) DOUBLE PRECISION
* TOL is the threshold for Jacobi rotations. For a pair
* A(:,p), A(:,q) of pivot columns, the Jacobi rotation is
* applied only if DABS(COS(angle(A(:,p),A(:,q)))) .GT. TOL.
@@ -130,7 +130,7 @@
* NSWEEP is the number of sweeps of Jacobi rotations to be
* performed.
*
-* WORK (workspace) REAL array, dimension LWORK.
+* WORK (workspace) DOUBLE PRECISION array, dimension (LWORK)
*
* LWORK (input) INTEGER
* LWORK is the dimension of WORK. LWORK .GE. M.
--- dgsvj1.f 2009/04/16 19:09:59 1.1
+++ dgsvj1.f 2009/06/04 19:21:45
@@ -87,7 +87,7 @@
* N1 specifies the 2 x 2 block partition, the first N1 columns are
* rotated 'against' the remaining N-N1 columns of A.
*
-* A (input/output) REAL array, dimension (LDA,N)
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
* On entry, M-by-N matrix A, such that A*diag(D) represents
* the input matrix.
* On exit,
@@ -100,7 +100,7 @@
* LDA (input) INTEGER
* The leading dimension of the array A. LDA >= max(1,M).
*
-* D (input/workspace/output) REAL array, dimension (N)
+* D (input/workspace/output) DOUBLE PRECISION array, dimension (N)
* The array D accumulates the scaling factors from the fast scaled
* Jacobi rotations.
* On entry, A*diag(D) represents the input matrix.
@@ -110,7 +110,7 @@
* TOL and NSWEEP, respectively.
* (See the descriptions of N1, A, TOL and NSWEEP.)
*
-* SVA (input/workspace/output) REAL array, dimension (N)
+* SVA (input/workspace/output) DOUBLE PRECISION array, dimension (N)
* On entry, SVA contains the Euclidean norms of the columns of
* the matrix A*diag(D).
* On exit, SVA contains the Euclidean norms of the columns of
@@ -121,7 +121,7 @@
* sequence of Jacobi rotations.
* If JOBV = 'N', then MV is not referenced.
*
-* V (input/output) REAL array, dimension (LDV,N)
+* V (input/output) DOUBLE PRECISION array, dimension (LDV,N)
* If JOBV .EQ. 'V' then N rows of V are post-multipled by a
* sequence of Jacobi rotations.
* If JOBV .EQ. 'A' then MV rows of V are post-multipled by a
@@ -133,13 +133,13 @@
* If JOBV = 'V', LDV .GE. N.
* If JOBV = 'A', LDV .GE. MV.
*
-* EPS (input) INTEGER
+* EPS (input) DOUBLE PRECISION
* EPS = SLAMCH('Epsilon')
*
-* SFMIN (input) INTEGER
+* SFMIN (input) DOUBLE PRECISION
* SFMIN = SLAMCH('Safe Minimum')
*
-* TOL (input) REAL
+* TOL (input) DOUBLE PRECISION
* TOL is the threshold for Jacobi rotations. For a pair
* A(:,p), A(:,q) of pivot columns, the Jacobi rotation is
* applied only if DABS(COS(angle(A(:,p),A(:,q)))) .GT. TOL.
@@ -148,7 +148,7 @@
* NSWEEP is the number of sweeps of Jacobi rotations to be
* performed.
*
-* WORK (workspace) REAL array, dimension LWORK.
+* WORK (workspace) DOUBLE PRECISION array, dimension (LWORK)
*
* LWORK (input) INTEGER
* LWORK is the dimension of WORK. LWORK .GE. M.
--- disnan.f 2009/04/16 19:09:59 1.1
+++ disnan.f 2009/06/02 18:20:25
@@ -19,7 +19,7 @@
* Arguments
* =========
*
-* DIN (input) DOUBLE PRECISION
+* DIN (input) DOUBLE PRECISION
* Input to test for NaN.
*
* =====================================================================
--- dlaein.f 2009/04/16 19:09:59 1.1
+++ dlaein.f 2009/06/02 18:34:33
@@ -26,11 +26,11 @@
* Arguments
* =========
*
-* RIGHTV (input) LOGICAL
+* RIGHTV (input) LOGICAL
* = .TRUE. : compute right eigenvector;
* = .FALSE.: compute left eigenvector.
*
-* NOINIT (input) LOGICAL
+* NOINIT (input) LOGICAL
* = .TRUE. : no initial vector supplied in (VR,VI).
* = .FALSE.: initial vector supplied in (VR,VI).
*
@@ -70,7 +70,7 @@
* LDB (input) INTEGER
* The leading dimension of the array B. LDB >= N+1.
*
-* WORK (workspace) DOUBLE PRECISION array, dimension (N)
+* WORK (workspace) DOUBLE PRECISION array, dimension (N)
*
* EPS3 (input) DOUBLE PRECISION
* A small machine-dependent value which is used to perturb
--- dlaexc.f 2009/04/16 19:09:59 1.1
+++ dlaexc.f 2009/06/02 18:28:48
@@ -41,7 +41,7 @@
* canonical form.
* On exit, the updated matrix T, again in Schur canonical form.
*
-* LDT (input) INTEGER
+* LDT (input) INTEGER
* The leading dimension of the array T. LDT >= max(1,N).
*
* Q (input/output) DOUBLE PRECISION array, dimension (LDQ,N)
--- dlaisnan.f 2009/04/16 19:09:59 1.1
+++ dlaisnan.f 2009/06/03 14:54:06
@@ -29,8 +29,8 @@
* Arguments
* =========
*
-* DIN1 (input) DOUBLE PRECISION
-* DIN2 (input) DOUBLE PRECISION
+* DIN1 (input) DOUBLE PRECISION
+* DIN2 (input) DOUBLE PRECISION
* Two numbers to compare for inequality.
*
* =====================================================================
--- dla_lin_berr.f 2009/04/16 19:09:59 1.1
+++ dla_lin_berr.f 2009/06/03 20:26:38
@@ -42,16 +42,16 @@
* The number of right hand sides, i.e., the number of columns
* of the matrices AYB, RES, and BERR. NRHS >= 0.
*
-* RES (input) DOUBLE PRECISION array, dimension (N,NRHS)
+* RES (input) DOUBLE PRECISION array, dimension (N,NRHS)
* The residual matrix, i.e., the matrix R in the relative backward
* error formula above.
*
-* AYB (input) DOUBLE PRECISION array, dimension (N, NRHS)
+* AYB (input) DOUBLE PRECISION array, dimension (N, NRHS)
* The denominator in the relative backward error formula above, i.e.,
* the matrix abs(op(A_s))*abs(Y) + abs(B_s). The matrices A, Y, and B
* are from iterative refinement (see dla_gerfsx_extended.f).
*
-* RES (output) DOUBLE PRECISION array, dimension (NRHS)
+* BERR (output) DOUBLE PRECISION array, dimension (NRHS)
* The componentwise relative backward error from the formula above.
*
* =====================================================================
--- dlaneg.f 2009/04/16 19:09:59 1.1
+++ dlaneg.f 2009/06/04 04:57:11
@@ -1,6 +1,6 @@
- FUNCTION DLANEG( N, D, LLD, SIGMA, PIVMIN, R )
+ INTEGER FUNCTION DLANEG( N, D, LLD, SIGMA, PIVMIN, R )
IMPLICIT NONE
- INTEGER DLANEG
+* INTEGER DLANEG
*
* -- LAPACK auxiliary routine (version 3.2) --
* -- LAPACK is a software package provided by Univ. of Tennessee, --
--- dla_porcond.f 2009/04/16 19:09:59 1.1
+++ dla_porcond.f 2009/06/03 21:15:57
@@ -46,7 +46,7 @@
* The number of linear equations, i.e., the order of the
* matrix A. N >= 0.
*
-* A (input) REAL array, dimension (LDA,N)
+* A (input) DOUBLE PRECISION array, dimension (LDA,N)
* On entry, the N-by-N matrix A.
*
* LDA (input) INTEGER
--- dlaqr2.f 2009/04/16 19:09:59 1.1
+++ dlaqr2.f 2009/06/04 19:29:57
@@ -101,8 +101,8 @@
* The number of converged eigenvalues uncovered by this
* subroutine.
*
-* SR (output) DOUBLE PRECISION array, dimension KBOT
-* SI (output) DOUBLE PRECISION array, dimension KBOT
+* SR (output) DOUBLE PRECISION array, dimension (KBOT)
+* SI (output) DOUBLE PRECISION array, dimension (KBOT)
* On output, the real and imaginary parts of approximate
* eigenvalues that may be used for shifts are stored in
* SR(KBOT-ND-NS+1) through SR(KBOT-ND) and
@@ -137,7 +137,7 @@
* The leading dimension of W just as declared in the
* calling subroutine. NW .LE. LDV
*
-* WORK (workspace) DOUBLE PRECISION array, dimension LWORK.
+* WORK (workspace) DOUBLE PRECISION array, dimension (LWORK)
* On exit, WORK(1) is set to an estimate of the optimal value
* of LWORK for the given values of N, NW, KTOP and KBOT.
*
--- dlaqr3.f 2009/04/16 19:09:59 1.1
+++ dlaqr3.f 2009/06/04 19:30:13
@@ -97,8 +97,8 @@
* The number of converged eigenvalues uncovered by this
* subroutine.
*
-* SR (output) DOUBLE PRECISION array, dimension KBOT
-* SI (output) DOUBLE PRECISION array, dimension KBOT
+* SR (output) DOUBLE PRECISION array, dimension (KBOT)
+* SI (output) DOUBLE PRECISION array, dimension (KBOT)
* On output, the real and imaginary parts of approximate
* eigenvalues that may be used for shifts are stored in
* SR(KBOT-ND-NS+1) through SR(KBOT-ND) and
@@ -133,7 +133,7 @@
* The leading dimension of W just as declared in the
* calling subroutine. NW .LE. LDV
*
-* WORK (workspace) DOUBLE PRECISION array, dimension LWORK.
+* WORK (workspace) DOUBLE PRECISION array, dimension (LWORK)
* On exit, WORK(1) is set to an estimate of the optimal value
* of LWORK for the given values of N, NW, KTOP and KBOT.
*
--- dlarra.f 2009/04/16 19:09:59 1.1
+++ dlarra.f 2009/06/02 18:29:38
@@ -45,12 +45,12 @@
* On exit, the entries E2( ISPLIT( I ) ),
* 1 <= I <= NSPLIT, have been set to zero
*
-* SPLTOL (input) DOUBLE PRECISION
+* SPLTOL (input) DOUBLE PRECISION
* The threshold for splitting. Two criteria can be used:
* SPLTOL<0 : criterion based on absolute off-diagonal value
* SPLTOL>0 : criterion that preserves relative accuracy
*
-* TNRM (input) DOUBLE PRECISION
+* TNRM (input) DOUBLE PRECISION
* The norm of the matrix.
*
* NSPLIT (output) INTEGER
--- dlarre.f 2009/04/16 19:09:59 1.1
+++ dlarre.f 2009/06/02 18:30:03
@@ -91,7 +91,7 @@
* An interval [LEFT,RIGHT] has converged if
* RIGHT-LEFT.LT.MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) )
*
-* SPLTOL (input) DOUBLE PRECISION
+* SPLTOL (input) DOUBLE PRECISION
* The threshold for splitting.
*
* NSPLIT (output) INTEGER
--- dlarrf.f 2009/04/16 19:09:59 1.1
+++ dlarrf.f 2009/06/02 18:56:24
@@ -60,10 +60,13 @@
* WERR contain the semiwidth of the uncertainty
* interval of the corresponding eigenvalue APPROXIMATION in W
*
-* SPDIAM (input) estimate of the spectral diameter obtained from the
+* SPDIAM (input) DOUBLE PRECISION
+* estimate of the spectral diameter obtained from the
* Gerschgorin intervals
*
-* CLGAPL, CLGAPR (input) absolute gap on each end of the cluster.
+* CLGAPL (input) DOUBLE PRECISION
+* CLGAPR (input) DOUBLE PRECISION
+* absolute gap on each end of the cluster.
* Set by the calling routine to protect against shifts too close
* to eigenvalues outside the cluster.
*
@@ -83,6 +86,9 @@
* WORK (workspace) DOUBLE PRECISION array, dimension (2*N)
* Workspace.
*
+* INFO (output) INTEGER
+* Signals processing OK (=0) or failure (=1)
+*
* Further Details
* ===============
*
--- dlarrj.f 2009/04/16 19:09:59 1.1
+++ dlarrj.f 2009/06/02 18:35:20
@@ -46,7 +46,7 @@
* ILAST (input) INTEGER
* The index of the last eigenvalue to be computed.
*
-* RTOL (input) DOUBLE PRECISION
+* RTOL (input) DOUBLE PRECISION
* Tolerance for the convergence of the bisection intervals.
* An interval [LEFT,RIGHT] has converged if
* RIGHT-LEFT.LT.RTOL*MAX(|LEFT|,|RIGHT|).
--- dlarrv.f 2009/04/16 19:09:59 1.1
+++ dlarrv.f 2009/06/02 07:50:17
@@ -51,7 +51,7 @@
* is stored the corresponding shift as given by DLARRE.
* On exit, L is overwritten.
*
-* PIVMIN (in) DOUBLE PRECISION
+* PIVMIN (input) DOUBLE PRECISION
* The minimum pivot allowed in the Sturm sequence.
*
* ISPLIT (input) INTEGER array, dimension (N)
--- dlarscl2.f 2009/04/16 19:09:59 1.1
+++ dlarscl2.f 2009/06/04 19:23:40
@@ -36,7 +36,7 @@
* N (input) INTEGER
* The number of columns of D and X. N >= 0.
*
-* D (input) DOUBLE PRECISION array, length M
+* D (input) DOUBLE PRECISION array, dimension (M)
* Diagonal matrix D, stored as a vector of length M.
*
* X (input/output) DOUBLE PRECISION array, dimension (LDX,N)
--- dlascl2.f 2009/04/16 19:09:59 1.1
+++ dlascl2.f 2009/06/04 19:24:31
@@ -36,7 +36,7 @@
* N (input) INTEGER
* The number of columns of D and X. N >= 0.
*
-* D (input) DOUBLE PRECISION array, length M
+* D (input) DOUBLE PRECISION array, dimension (M)
* Diagonal matrix D, stored as a vector of length M.
*
* X (input/output) DOUBLE PRECISION array, dimension (LDX,N)
--- dlatdf.f 2009/04/16 19:09:59 1.1
+++ dlatdf.f 2009/06/04 19:24:47
@@ -49,7 +49,7 @@
* LDZ (input) INTEGER
* The leading dimension of the array Z. LDA >= max(1, N).
*
-* RHS (input/output) DOUBLE PRECISION array, dimension N.
+* RHS (input/output) DOUBLE PRECISION array, dimension (N)
* On entry, RHS contains contributions from other subsystems.
* On exit, RHS contains the solution of the subsystem with
* entries acoording to the value of IJOB (see above).
--- dpbequ.f 2009/04/16 19:09:59 1.1
+++ dpbequ.f 2009/06/02 18:35:55
@@ -47,7 +47,7 @@
* if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
* if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
*
-* LDAB (input) INTEGER
+* LDAB (input) INTEGER
* The leading dimension of the array A. LDAB >= KD+1.
*
* S (output) DOUBLE PRECISION array, dimension (N)
--- dpftrf.f 2009/04/16 19:09:59 1.1
+++ dpftrf.f 2009/06/02 18:44:06
@@ -32,7 +32,7 @@
* Arguments
* =========
*
-* TRANSR (input) CHARACTER
+* TRANSR (input) CHARACTER
* = 'N': The Normal TRANSR of RFP A is stored;
* = 'T': The Transpose TRANSR of RFP A is stored.
*
--- dpftri.f 2009/04/16 19:09:59 1.1
+++ dpftri.f 2009/06/02 18:44:20
@@ -25,7 +25,7 @@
* Arguments
* =========
*
-* TRANSR (input) CHARACTER
+* TRANSR (input) CHARACTER
* = 'N': The Normal TRANSR of RFP A is stored;
* = 'T': The Transpose TRANSR of RFP A is stored.
*
--- dpftrs.f 2009/04/16 19:09:59 1.1
+++ dpftrs.f 2009/06/02 18:44:31
@@ -26,7 +26,7 @@
* Arguments
* =========
*
-* TRANSR (input) CHARACTER
+* TRANSR (input) CHARACTER
* = 'N': The Normal TRANSR of RFP A is stored;
* = 'T': The Transpose TRANSR of RFP A is stored.
*
--- dporfsx.f 2009/04/16 19:09:59 1.1
+++ dporfsx.f 2009/06/04 19:34:27
@@ -230,7 +230,7 @@
* Specifies the number of parameters set in PARAMS. If .LE. 0, the
* PARAMS array is never referenced and default values are used.
*
-* PARAMS (input / output) DOUBLE PRECISION array, dimension NPARAMS
+* PARAMS (input/output) DOUBLE PRECISION array, dimension (NPARAMS)
* Specifies algorithm parameters. If an entry is .LT. 0.0, then
* that entry will be filled with default value used for that
* parameter. Only positions up to NPARAMS are accessed; defaults
--- dposvxx.f 2008/11/17 08:10:08 1.1
+++ dposvxx.f 2009/06/04 19:34:43
@@ -324,7 +324,7 @@
* Specifies the number of parameters set in PARAMS. If .LE. 0, the
* PARAMS array is never referenced and default values are used.
*
-* PARAMS (input / output) DOUBLE PRECISION array, dimension NPARAMS
+* PARAMS (input/output) DOUBLE PRECISION array, dimension (NPARAMS)
* Specifies algorithm parameters. If an entry is .LT. 0.0, then
* that entry will be filled with default value used for that
* parameter. Only positions up to NPARAMS are accessed; defaults
--- dpstf2.f 2008/11/19 04:38:02 1.1
+++ dpstf2.f 2009/06/02 18:45:05
@@ -68,7 +68,7 @@
* LDA (input) INTEGER
* The leading dimension of the array A. LDA >= max(1,N).
*
-* WORK DOUBLE PRECISION array, dimension (2*N)
+* WORK (workspace) DOUBLE PRECISION array, dimension (2*N)
* Work space.
*
* INFO (output) INTEGER
--- dpstrf.f 2009/04/16 19:09:59 1.1
+++ dpstrf.f 2009/06/02 18:45:27
@@ -68,7 +68,7 @@
* will be used. The algorithm terminates at the (K-1)st step
* if the pivot <= TOL.
*
-* WORK DOUBLE PRECISION array, dimension (2*N)
+* WORK (workspace) DOUBLE PRECISION array, dimension (2*N)
* Work space.
*
* INFO (output) INTEGER
--- dsgesv.f 2009/04/16 19:09:59 1.1
+++ dsgesv.f 2009/06/03 22:21:52
@@ -94,7 +94,7 @@
* LDX (input) INTEGER
* The leading dimension of the array X. LDX >= max(1,N).
*
-* WORK (workspace) DOUBLE PRECISION array, dimension (N*NRHS)
+* WORK (workspace) DOUBLE PRECISION array, dimension (N,NRHS)
* This array is used to hold the residual vectors.
*
* SWORK (workspace) REAL array, dimension (N*(N+NRHS))
--- dspcon.f 2009/04/16 19:09:59 1.1
+++ dspcon.f 2009/06/02 18:45:52
@@ -59,7 +59,7 @@
*
* WORK (workspace) DOUBLE PRECISION array, dimension (2*N)
*
-* IWORK (workspace) INTEGER array, dimension (N)
+* IWORK (workspace) INTEGER array, dimension (N)
*
* INFO (output) INTEGER
* = 0: successful exit
--- dsposv.f 2008/11/19 04:17:30 1.1
+++ dsposv.f 2009/06/03 22:22:36
@@ -98,7 +98,7 @@
* LDX (input) INTEGER
* The leading dimension of the array X. LDX >= max(1,N).
*
-* WORK (workspace) DOUBLE PRECISION array, dimension (N*NRHS)
+* WORK (workspace) DOUBLE PRECISION array, dimension (N,NRHS)
* This array is used to hold the residual vectors.
*
* SWORK (workspace) REAL array, dimension (N*(N+NRHS))
--- dsycon.f 2009/04/16 19:09:59 1.1
+++ dsycon.f 2009/06/02 18:46:15
@@ -61,7 +61,7 @@
*
* WORK (workspace) DOUBLE PRECISION array, dimension (2*N)
*
-* IWORK (workspace) INTEGER array, dimension (N)
+* IWORK (workspace) INTEGER array, dimension (N)
*
* INFO (output) INTEGER
* = 0: successful exit
--- dsyequb.f 2009/04/16 19:09:59 1.1
+++ dsyequb.f 2009/06/02 18:50:46
@@ -34,6 +34,12 @@
* Arguments
* =========
*
+* UPLO (input) CHARACTER*1
+* Specifies whether the details of the factorization are stored
+* as an upper or lower triangular matrix.
+* = 'U': Upper triangular, form is A = U*D*U**T;
+* = 'L': Lower triangular, form is A = L*D*L**T.
+*
* N (input) INTEGER
* The order of the matrix A. N >= 0.
*
@@ -57,6 +63,9 @@
* Absolute value of largest matrix element. If AMAX is very
* close to overflow or very close to underflow, the matrix
* should be scaled.
+*
+* WORK (workspace) DOUBLE PRECISION array, dimension (3*N)
+*
* INFO (output) INTEGER
* = 0: successful exit
* < 0: if INFO = -i, the i-th argument had an illegal value
--- dsygvx.f 2009/04/16 19:09:59 1.1
+++ dsygvx.f 2009/06/03 22:23:15
@@ -68,7 +68,7 @@
* LDA (input) INTEGER
* The leading dimension of the array A. LDA >= max(1,N).
*
-* B (input/output) DOUBLE PRECISION array, dimension (LDA, N)
+* B (input/output) DOUBLE PRECISION array, dimension (LDB, N)
* On entry, the symmetric matrix B. If UPLO = 'U', the
* leading N-by-N upper triangular part of B contains the
* upper triangular part of the matrix B. If UPLO = 'L',
--- dsyrfsx.f 2009/04/16 19:09:59 1.1
+++ dsyrfsx.f 2009/06/04 19:35:01
@@ -235,7 +235,7 @@
* Specifies the number of parameters set in PARAMS. If .LE. 0, the
* PARAMS array is never referenced and default values are used.
*
-* PARAMS (input / output) DOUBLE PRECISION array, dimension NPARAMS
+* PARAMS (input/output) DOUBLE PRECISION array, dimension (NPARAMS)
* Specifies algorithm parameters. If an entry is .LT. 0.0, then
* that entry will be filled with default value used for that
* parameter. Only positions up to NPARAMS are accessed; defaults
--- dsysvxx.f 2009/04/16 19:09:59 1.1
+++ dsysvxx.f 2009/06/04 19:35:18
@@ -332,7 +332,7 @@
* Specifies the number of parameters set in PARAMS. If .LE. 0, the
* PARAMS array is never referenced and default values are used.
*
-* PARAMS (input / output) DOUBLE PRECISION array, dimension NPARAMS
+* PARAMS (input/output) DOUBLE PRECISION array, dimension (NPARAMS)
* Specifies algorithm parameters. If an entry is .LT. 0.0, then
* that entry will be filled with default value used for that
* parameter. Only positions up to NPARAMS are accessed; defaults
--- dtftri.f 2009/04/16 19:09:59 1.1
+++ dtftri.f 2009/06/02 18:51:23
@@ -27,7 +27,7 @@
* Arguments
* =========
*
-* TRANSR (input) CHARACTER
+* TRANSR (input) CHARACTER
* = 'N': The Normal TRANSR of RFP A is stored;
* = 'T': The Transpose TRANSR of RFP A is stored.
*
--- dtfttp.f 2009/04/16 19:09:59 1.1
+++ dtfttp.f 2009/06/02 18:51:42
@@ -26,7 +26,7 @@
* Arguments
* =========
*
-* TRANSR (input) CHARACTER
+* TRANSR (input) CHARACTER
* = 'N': ARF is in Normal format;
* = 'T': ARF is in Transpose format;
*
--- dtfttr.f 2009/04/16 19:09:59 1.1
+++ dtfttr.f 2009/06/02 18:51:58
@@ -25,7 +25,7 @@
* Arguments
* =========
*
-* TRANSR (input) CHARACTER
+* TRANSR (input) CHARACTER
* = 'N': ARF is in Normal format;
* = 'T': ARF is in Transpose format.
*
--- dtgex2.f 2009/04/16 19:09:59 1.1
+++ dtgex2.f 2009/06/04 19:06:30
@@ -47,21 +47,21 @@
* N (input) INTEGER
* The order of the matrices A and B. N >= 0.
*
-* A (input/output) DOUBLE PRECISION arrays, dimensions (LDA,N)
+* A (input/output) DOUBLE PRECISION array, dimensions (LDA,N)
* On entry, the matrix A in the pair (A, B).
* On exit, the updated matrix A.
*
-* LDA (input) INTEGER
+* LDA (input) INTEGER
* The leading dimension of the array A. LDA >= max(1,N).
*
-* B (input/output) DOUBLE PRECISION arrays, dimensions (LDB,N)
+* B (input/output) DOUBLE PRECISION array, dimensions (LDB,N)
* On entry, the matrix B in the pair (A, B).
* On exit, the updated matrix B.
*
-* LDB (input) INTEGER
+* LDB (input) INTEGER
* The leading dimension of the array B. LDB >= max(1,N).
*
-* Q (input/output) DOUBLE PRECISION array, dimension (LDZ,N)
+* Q (input/output) DOUBLE PRECISION array, dimension (LDQ,N)
* On entry, if WANTQ = .TRUE., the orthogonal matrix Q.
* On exit, the updated matrix Q.
* Not referenced if WANTQ = .FALSE..
--- dtgexc.f 2009/04/16 19:09:59 1.1
+++ dtgexc.f 2009/06/03 22:24:37
@@ -57,7 +57,7 @@
* On exit, the updated matrix A, again in generalized
* real Schur canonical form.
*
-* LDA (input) INTEGER
+* LDA (input) INTEGER
* The leading dimension of the array A. LDA >= max(1,N).
*
* B (input/output) DOUBLE PRECISION array, dimension (LDB,N)
@@ -66,10 +66,10 @@
* On exit, the updated matrix B, again in generalized
* real Schur canonical form (A,B).
*
-* LDB (input) INTEGER
+* LDB (input) INTEGER
* The leading dimension of the array B. LDB >= max(1,N).
*
-* Q (input/output) DOUBLE PRECISION array, dimension (LDZ,N)
+* Q (input/output) DOUBLE PRECISION array, dimension (LDQ,N)
* On entry, if WANTQ = .TRUE., the orthogonal matrix Q.
* On exit, the updated matrix Q.
* If WANTQ = .FALSE., Q is not referenced.
--- dtpttf.f 2009/04/16 19:09:59 1.1
+++ dtpttf.f 2009/06/02 18:53:18
@@ -25,7 +25,7 @@
* Arguments
* =========
*
-* TRANSR (input) CHARACTER
+* TRANSR (input) CHARACTER
* = 'N': ARF in Normal format is wanted;
* = 'T': ARF in Conjugate-transpose format is wanted.
*
--- dtrttf.f 2009/04/16 19:09:59 1.1
+++ dtrttf.f 2009/06/02 18:53:35
@@ -25,7 +25,7 @@
* Arguments
* =========
*
-* TRANSR (input) CHARACTER
+* TRANSR (input) CHARACTER
* = 'N': ARF in Normal form is wanted;
* = 'T': ARF in Transpose form is wanted.
*
--- ilaprec.f 2009/04/16 19:09:59 1.1
+++ ilaprec.f 2009/06/03 20:23:40
@@ -24,7 +24,7 @@
*
* Arguments
* =========
-* PREC (input) CHARACTER*1
+* PREC (input) CHARACTER*1
* Specifies the form of the system of equations:
* = 'S': Single
* = 'D': Double
--- ilaslr.f 2009/04/16 19:09:59 1.1
+++ ilaslr.f 2009/06/04 19:13:11
@@ -29,7 +29,7 @@
* N (input) INTEGER
* The number of columns of the matrix A.
*
-* A (input) REAL array, dimension (LDA,N)
+* A (input) REAL array, dimension (LDA,N)
* The m by n matrix A.
*
* LDA (input) INTEGER
--- sisnan.f 2009/04/16 19:09:59 1.1
+++ sisnan.f 2009/06/04 04:35:41
@@ -19,7 +19,7 @@
* Arguments
* =========
*
-* SIN (input) REAL
+* SIN (input) REAL
* Input to test for NaN.
*
* =====================================================================

