diff options
author | julie <julielangou@users.noreply.github.com> | 2009-01-02 21:57:02 +0000 |
---|---|---|
committer | julie <julielangou@users.noreply.github.com> | 2009-01-02 21:57:02 +0000 |
commit | a0d64643e4c994d1b84f870d40df7de8924e4d7f (patch) | |
tree | 399ab29aa00e23d5028c5f42d6d5b362562b63da | |
parent | 61e82a389d6bdbdb610d200153937c38c6f6051a (diff) | |
download | lapack-a0d64643e4c994d1b84f870d40df7de8924e4d7f.tar.gz lapack-a0d64643e4c994d1b84f870d40df7de8924e4d7f.tar.bz2 lapack-a0d64643e4c994d1b84f870d40df7de8924e4d7f.zip |
Last round of modifications to the comments for the generation of the manpages
192 files changed, 1234 insertions, 498 deletions
diff --git a/BLAS/SRC/caxpy.f b/BLAS/SRC/caxpy.f index ece603c6..763236d7 100644 --- a/BLAS/SRC/caxpy.f +++ b/BLAS/SRC/caxpy.f @@ -18,6 +18,8 @@ * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== +* * .. Local Scalars .. INTEGER I,IX,IY * .. diff --git a/BLAS/SRC/ccopy.f b/BLAS/SRC/ccopy.f index 97e6a235..89503807 100644 --- a/BLAS/SRC/ccopy.f +++ b/BLAS/SRC/ccopy.f @@ -17,6 +17,8 @@ * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== +* * .. Local Scalars .. INTEGER I,IX,IY * .. diff --git a/BLAS/SRC/cdotc.f b/BLAS/SRC/cdotc.f index 40b7748c..0c121dd8 100644 --- a/BLAS/SRC/cdotc.f +++ b/BLAS/SRC/cdotc.f @@ -18,6 +18,8 @@ * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== +* * .. Local Scalars .. COMPLEX CTEMP INTEGER I,IX,IY diff --git a/BLAS/SRC/cdotu.f b/BLAS/SRC/cdotu.f index 529c0e26..01d6beac 100644 --- a/BLAS/SRC/cdotu.f +++ b/BLAS/SRC/cdotu.f @@ -17,6 +17,8 @@ * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== +* * .. Local Scalars .. COMPLEX CTEMP INTEGER I,IX,IY diff --git a/BLAS/SRC/cgbmv.f b/BLAS/SRC/cgbmv.f index fcec7325..2a837dba 100644 --- a/BLAS/SRC/cgbmv.f +++ b/BLAS/SRC/cgbmv.f @@ -118,6 +118,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -127,6 +129,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ONE diff --git a/BLAS/SRC/cgemm.f b/BLAS/SRC/cgemm.f index 68b3cf4b..9eb7c6a2 100644 --- a/BLAS/SRC/cgemm.f +++ b/BLAS/SRC/cgemm.f @@ -118,6 +118,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -127,6 +129,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/cgemv.f b/BLAS/SRC/cgemv.f index 18e1bbeb..96e625e1 100644 --- a/BLAS/SRC/cgemv.f +++ b/BLAS/SRC/cgemv.f @@ -91,6 +91,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -100,6 +102,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ONE diff --git a/BLAS/SRC/cgerc.f b/BLAS/SRC/cgerc.f index 02e4bd10..3860871b 100644 --- a/BLAS/SRC/cgerc.f +++ b/BLAS/SRC/cgerc.f @@ -67,6 +67,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -76,6 +78,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/cgeru.f b/BLAS/SRC/cgeru.f index 13735489..f9715b6b 100644 --- a/BLAS/SRC/cgeru.f +++ b/BLAS/SRC/cgeru.f @@ -67,6 +67,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -76,6 +78,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/chbmv.f b/BLAS/SRC/chbmv.f index f58532c3..1b1c330e 100644 --- a/BLAS/SRC/chbmv.f +++ b/BLAS/SRC/chbmv.f @@ -120,6 +120,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -129,6 +131,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ONE diff --git a/BLAS/SRC/chemm.f b/BLAS/SRC/chemm.f index 2e4492be..f5cb17a5 100644 --- a/BLAS/SRC/chemm.f +++ b/BLAS/SRC/chemm.f @@ -124,6 +124,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -133,6 +135,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/chemv.f b/BLAS/SRC/chemv.f index 9c03c6ea..7026f5b1 100644 --- a/BLAS/SRC/chemv.f +++ b/BLAS/SRC/chemv.f @@ -89,6 +89,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -98,6 +100,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ONE diff --git a/BLAS/SRC/cher.f b/BLAS/SRC/cher.f index 054ea688..1ef7154e 100644 --- a/BLAS/SRC/cher.f +++ b/BLAS/SRC/cher.f @@ -77,6 +77,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -86,6 +88,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/cher2.f b/BLAS/SRC/cher2.f index fd43c3d6..861cd94e 100644 --- a/BLAS/SRC/cher2.f +++ b/BLAS/SRC/cher2.f @@ -88,6 +88,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -97,6 +99,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/cher2k.f b/BLAS/SRC/cher2k.f index b2d2c32c..328fcce1 100644 --- a/BLAS/SRC/cher2k.f +++ b/BLAS/SRC/cher2k.f @@ -127,6 +127,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -139,6 +141,7 @@ * -- Modified 8-Nov-93 to set C(J,J) to REAL( C(J,J) ) when BETA = 1. * Ed Anderson, Cray Research Inc. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/cherk.f b/BLAS/SRC/cherk.f index 79cf90d7..d957e578 100644 --- a/BLAS/SRC/cherk.f +++ b/BLAS/SRC/cherk.f @@ -107,6 +107,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -119,6 +121,7 @@ * -- Modified 8-Nov-93 to set C(J,J) to REAL( C(J,J) ) when BETA = 1. * Ed Anderson, Cray Research Inc. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/chpmv.f b/BLAS/SRC/chpmv.f index adefd583..158be5a7 100644 --- a/BLAS/SRC/chpmv.f +++ b/BLAS/SRC/chpmv.f @@ -86,6 +86,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -95,6 +97,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ONE diff --git a/BLAS/SRC/chpr.f b/BLAS/SRC/chpr.f index 083a4c4d..11bd5c6e 100644 --- a/BLAS/SRC/chpr.f +++ b/BLAS/SRC/chpr.f @@ -74,6 +74,8 @@ * not be set, they are assumed to be zero, and on exit they * are set to zero. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -83,6 +85,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/chpr2.f b/BLAS/SRC/chpr2.f index 8a2f9b66..a0020ef3 100644 --- a/BLAS/SRC/chpr2.f +++ b/BLAS/SRC/chpr2.f @@ -85,6 +85,8 @@ * not be set, they are assumed to be zero, and on exit they * are set to zero. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -94,6 +96,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/crotg.f b/BLAS/SRC/crotg.f index 2057a298..e9095454 100644 --- a/BLAS/SRC/crotg.f +++ b/BLAS/SRC/crotg.f @@ -9,6 +9,8 @@ * * CROTG determines a complex Givens rotation. * +* ===================================================================== +* * .. Local Scalars .. COMPLEX ALPHA REAL NORM,SCALE diff --git a/BLAS/SRC/cscal.f b/BLAS/SRC/cscal.f index 3bcdff67..fdba3599 100644 --- a/BLAS/SRC/cscal.f +++ b/BLAS/SRC/cscal.f @@ -10,11 +10,16 @@ * Purpose * ======= * -* scales a vector by a constant. +* CSCAL scales a vector by a constant. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. INTEGER I,NINCX diff --git a/BLAS/SRC/csrot.f b/BLAS/SRC/csrot.f index d4132889..09e72b27 100644 --- a/BLAS/SRC/csrot.f +++ b/BLAS/SRC/csrot.f @@ -11,7 +11,7 @@ * Purpose * ======= * -* Applies a plane rotation, where the cos and sin (c and s) are real +* CSROT applies a plane rotation, where the cos and sin (c and s) are real * and the vectors cx and cy are complex. * jack dongarra, linpack, 3/11/78. * diff --git a/BLAS/SRC/csscal.f b/BLAS/SRC/csscal.f index 1bc2b609..338f6296 100644 --- a/BLAS/SRC/csscal.f +++ b/BLAS/SRC/csscal.f @@ -10,11 +10,16 @@ * Purpose * ======= * -* scales a complex vector by a real constant. +* CSSCAL scales a complex vector by a real constant. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. INTEGER I,NINCX diff --git a/BLAS/SRC/cswap.f b/BLAS/SRC/cswap.f index 4a2b33bf..40dd71f1 100644 --- a/BLAS/SRC/cswap.f +++ b/BLAS/SRC/cswap.f @@ -9,10 +9,15 @@ * Purpose * ======= * -* interchanges two vectors. +* CSWAP interchanges two vectors. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. COMPLEX CTEMP diff --git a/BLAS/SRC/csymm.f b/BLAS/SRC/csymm.f index a2c36c15..c925a778 100644 --- a/BLAS/SRC/csymm.f +++ b/BLAS/SRC/csymm.f @@ -122,6 +122,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -131,6 +133,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/csyr2k.f b/BLAS/SRC/csyr2k.f index b48d5171..fa1f6022 100644 --- a/BLAS/SRC/csyr2k.f +++ b/BLAS/SRC/csyr2k.f @@ -121,6 +121,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -130,6 +132,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/csyrk.f b/BLAS/SRC/csyrk.f index ebed80d1..3846631d 100644 --- a/BLAS/SRC/csyrk.f +++ b/BLAS/SRC/csyrk.f @@ -104,6 +104,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -113,6 +115,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/ctbmv.f b/BLAS/SRC/ctbmv.f index e0580016..5a879fa0 100644 --- a/BLAS/SRC/ctbmv.f +++ b/BLAS/SRC/ctbmv.f @@ -125,6 +125,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -134,6 +136,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/ctbsv.f b/BLAS/SRC/ctbsv.f index 5dfd849b..853b9d75 100644 --- a/BLAS/SRC/ctbsv.f +++ b/BLAS/SRC/ctbsv.f @@ -129,6 +129,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -138,6 +140,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/ctpmv.f b/BLAS/SRC/ctpmv.f index c0dcd31e..b63742cc 100644 --- a/BLAS/SRC/ctpmv.f +++ b/BLAS/SRC/ctpmv.f @@ -85,6 +85,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -94,6 +96,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/ctpsv.f b/BLAS/SRC/ctpsv.f index a8b9755a..1804797e 100644 --- a/BLAS/SRC/ctpsv.f +++ b/BLAS/SRC/ctpsv.f @@ -88,6 +88,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -97,6 +99,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/ctrmm.f b/BLAS/SRC/ctrmm.f index 5a3552ea..4f599b29 100644 --- a/BLAS/SRC/ctrmm.f +++ b/BLAS/SRC/ctrmm.f @@ -114,6 +114,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -123,6 +125,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/ctrmv.f b/BLAS/SRC/ctrmv.f index a7c7aa77..9aef3c0d 100644 --- a/BLAS/SRC/ctrmv.f +++ b/BLAS/SRC/ctrmv.f @@ -88,6 +88,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -97,6 +99,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/ctrsm.f b/BLAS/SRC/ctrsm.f index 1f73ef74..96ff19d5 100644 --- a/BLAS/SRC/ctrsm.f +++ b/BLAS/SRC/ctrsm.f @@ -116,6 +116,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -125,6 +127,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/ctrsv.f b/BLAS/SRC/ctrsv.f index 280a7bc6..97e150a6 100644 --- a/BLAS/SRC/ctrsv.f +++ b/BLAS/SRC/ctrsv.f @@ -91,6 +91,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -100,6 +102,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. COMPLEX ZERO diff --git a/BLAS/SRC/dasum.f b/BLAS/SRC/dasum.f index def066cc..8705ecd9 100644 --- a/BLAS/SRC/dasum.f +++ b/BLAS/SRC/dasum.f @@ -9,11 +9,16 @@ * Purpose * ======= * -* takes the sum of the absolute values. +* DASUM takes the sum of the absolute values. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION DTEMP diff --git a/BLAS/SRC/daxpy.f b/BLAS/SRC/daxpy.f index ceac8cc5..4f92db2f 100644 --- a/BLAS/SRC/daxpy.f +++ b/BLAS/SRC/daxpy.f @@ -10,11 +10,16 @@ * Purpose * ======= * -* constant times a vector plus a vector. +* DAXPY constant times a vector plus a vector. * uses unrolled loops for increments equal to one. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. INTEGER I,IX,IY,M,MP1 diff --git a/BLAS/SRC/dcabs1.f b/BLAS/SRC/dcabs1.f index c4acbeb5..4d5fb697 100644 --- a/BLAS/SRC/dcabs1.f +++ b/BLAS/SRC/dcabs1.f @@ -8,6 +8,8 @@ * * DCABS1 computes absolute value of a double complex number * +* ===================================================================== +* * .. Intrinsic Functions .. INTRINSIC ABS,DBLE,DIMAG * diff --git a/BLAS/SRC/dcopy.f b/BLAS/SRC/dcopy.f index f2305ebc..dcc8a0c1 100644 --- a/BLAS/SRC/dcopy.f +++ b/BLAS/SRC/dcopy.f @@ -9,11 +9,16 @@ * Purpose * ======= * -* copies a vector, x, to a vector, y. +* DCOPY copies a vector, x, to a vector, y. * uses unrolled loops for increments equal to one. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. INTEGER I,IX,IY,M,MP1 diff --git a/BLAS/SRC/ddot.f b/BLAS/SRC/ddot.f index 582ae649..3df03aec 100644 --- a/BLAS/SRC/ddot.f +++ b/BLAS/SRC/ddot.f @@ -9,11 +9,16 @@ * Purpose * ======= * -* forms the dot product of two vectors. +* DDOT forms the dot product of two vectors. * uses unrolled loops for increments equal to one. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION DTEMP diff --git a/BLAS/SRC/dgbmv.f b/BLAS/SRC/dgbmv.f index 39505b72..c3dc64aa 100644 --- a/BLAS/SRC/dgbmv.f +++ b/BLAS/SRC/dgbmv.f @@ -115,6 +115,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -124,6 +126,8 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== +* * .. Parameters .. DOUBLE PRECISION ONE,ZERO PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) diff --git a/BLAS/SRC/dgemm.f b/BLAS/SRC/dgemm.f index a154c125..4afccb16 100644 --- a/BLAS/SRC/dgemm.f +++ b/BLAS/SRC/dgemm.f @@ -118,6 +118,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -127,6 +129,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/dgemv.f b/BLAS/SRC/dgemv.f index 3cac04ad..59e11b88 100644 --- a/BLAS/SRC/dgemv.f +++ b/BLAS/SRC/dgemv.f @@ -89,6 +89,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -98,6 +100,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE,ZERO diff --git a/BLAS/SRC/dger.f b/BLAS/SRC/dger.f index eefcdba7..0a9dcf2a 100644 --- a/BLAS/SRC/dger.f +++ b/BLAS/SRC/dger.f @@ -67,6 +67,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -76,6 +78,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO diff --git a/BLAS/SRC/dnrm2.f b/BLAS/SRC/dnrm2.f index 6102c3e4..480c912a 100644 --- a/BLAS/SRC/dnrm2.f +++ b/BLAS/SRC/dnrm2.f @@ -14,11 +14,14 @@ * * DNRM2 := sqrt( x'*x ) * +* Further Details +* =============== * * -- This version written on 25-October-1982. * Modified on 14-October-1993 to inline the call to DLASSQ. * Sven Hammarling, Nag Ltd. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE,ZERO diff --git a/BLAS/SRC/drot.f b/BLAS/SRC/drot.f index adaa88f6..2075314b 100644 --- a/BLAS/SRC/drot.f +++ b/BLAS/SRC/drot.f @@ -10,10 +10,15 @@ * Purpose * ======= * -* applies a plane rotation. +* DROT applies a plane rotation. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION DTEMP diff --git a/BLAS/SRC/drotg.f b/BLAS/SRC/drotg.f index e50dd648..a6ba96ab 100644 --- a/BLAS/SRC/drotg.f +++ b/BLAS/SRC/drotg.f @@ -6,9 +6,14 @@ * Purpose * ======= * -* construct givens plane rotation. +* DROTG construct givens plane rotation. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * +* ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION R,ROE,SCALE,Z diff --git a/BLAS/SRC/dsbmv.f b/BLAS/SRC/dsbmv.f index b571a4ad..8c82d1fa 100644 --- a/BLAS/SRC/dsbmv.f +++ b/BLAS/SRC/dsbmv.f @@ -127,6 +127,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE,ZERO diff --git a/BLAS/SRC/dscal.f b/BLAS/SRC/dscal.f index 0b423cf2..81425a94 100644 --- a/BLAS/SRC/dscal.f +++ b/BLAS/SRC/dscal.f @@ -9,13 +9,18 @@ * * Purpose * ======= -** -* scales a vector by a constant. +* +* DSCAL scales a vector by a constant. * uses unrolled loops for increment equal to one. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. INTEGER I,M,MP1,NINCX diff --git a/BLAS/SRC/dsdot.f b/BLAS/SRC/dsdot.f index 4845123b..457873b5 100644 --- a/BLAS/SRC/dsdot.f +++ b/BLAS/SRC/dsdot.f @@ -42,8 +42,10 @@ * DSDOT (output) DOUBLE PRECISION * DSDOT double precision dot product (zero if N.LE.0) * +* Further Details +* =============== +* * REFERENCES -* ========== * * C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T. * Krogh, Basic linear algebra subprograms for Fortran @@ -51,7 +53,6 @@ * Software 5, 3 (September 1979), pp. 308-323. * * REVISION HISTORY (YYMMDD) -* ========================== * * 791001 DATE WRITTEN * 890831 Modified array declarations. (WRB) diff --git a/BLAS/SRC/dspmv.f b/BLAS/SRC/dspmv.f index 1549939e..f6e121e7 100644 --- a/BLAS/SRC/dspmv.f +++ b/BLAS/SRC/dspmv.f @@ -84,6 +84,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -93,6 +95,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE,ZERO diff --git a/BLAS/SRC/dspr.f b/BLAS/SRC/dspr.f index 4ec524e0..538e4f76 100644 --- a/BLAS/SRC/dspr.f +++ b/BLAS/SRC/dspr.f @@ -71,6 +71,8 @@ * AP is overwritten by the lower triangular part of the * updated matrix. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -80,6 +82,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO diff --git a/BLAS/SRC/dspr2.f b/BLAS/SRC/dspr2.f index 9a86ca16..6f6b54a8 100644 --- a/BLAS/SRC/dspr2.f +++ b/BLAS/SRC/dspr2.f @@ -82,6 +82,8 @@ * AP is overwritten by the lower triangular part of the * updated matrix. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -91,6 +93,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO diff --git a/BLAS/SRC/dswap.f b/BLAS/SRC/dswap.f index 79c123b6..3595fd8c 100644 --- a/BLAS/SRC/dswap.f +++ b/BLAS/SRC/dswap.f @@ -11,9 +11,14 @@ * * interchanges two vectors. * uses unrolled loops for increments equal one. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION DTEMP diff --git a/BLAS/SRC/dsymm.f b/BLAS/SRC/dsymm.f index 6556777e..d9d3c96a 100644 --- a/BLAS/SRC/dsymm.f +++ b/BLAS/SRC/dsymm.f @@ -122,6 +122,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -131,6 +133,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/dsymv.f b/BLAS/SRC/dsymv.f index c659669a..fa552f28 100644 --- a/BLAS/SRC/dsymv.f +++ b/BLAS/SRC/dsymv.f @@ -87,6 +87,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -96,6 +98,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE,ZERO diff --git a/BLAS/SRC/dsyr.f b/BLAS/SRC/dsyr.f index e7bad3d4..b418d3c3 100644 --- a/BLAS/SRC/dsyr.f +++ b/BLAS/SRC/dsyr.f @@ -74,6 +74,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -83,6 +85,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO diff --git a/BLAS/SRC/dsyr2.f b/BLAS/SRC/dsyr2.f index a46f35ef..387969d4 100644 --- a/BLAS/SRC/dsyr2.f +++ b/BLAS/SRC/dsyr2.f @@ -85,6 +85,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -94,6 +96,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO diff --git a/BLAS/SRC/dsyr2k.f b/BLAS/SRC/dsyr2k.f index 0a7cc877..588e71c1 100644 --- a/BLAS/SRC/dsyr2k.f +++ b/BLAS/SRC/dsyr2k.f @@ -124,6 +124,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -134,6 +136,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/dsyrk.f b/BLAS/SRC/dsyrk.f index 8d461fe9..05e1f5b0 100644 --- a/BLAS/SRC/dsyrk.f +++ b/BLAS/SRC/dsyrk.f @@ -106,6 +106,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -115,6 +117,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/dtbmv.f b/BLAS/SRC/dtbmv.f index 864a122d..a87ffdea 100644 --- a/BLAS/SRC/dtbmv.f +++ b/BLAS/SRC/dtbmv.f @@ -125,6 +125,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -134,6 +136,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO diff --git a/BLAS/SRC/dtbsv.f b/BLAS/SRC/dtbsv.f index 951f5684..cfeb0b82 100644 --- a/BLAS/SRC/dtbsv.f +++ b/BLAS/SRC/dtbsv.f @@ -129,6 +129,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -138,6 +140,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO diff --git a/BLAS/SRC/dtpmv.f b/BLAS/SRC/dtpmv.f index 8a9332e3..c5bc112d 100644 --- a/BLAS/SRC/dtpmv.f +++ b/BLAS/SRC/dtpmv.f @@ -85,6 +85,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -94,6 +96,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO diff --git a/BLAS/SRC/dtpsv.f b/BLAS/SRC/dtpsv.f index fbd73f0f..c7e58d32 100644 --- a/BLAS/SRC/dtpsv.f +++ b/BLAS/SRC/dtpsv.f @@ -88,6 +88,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -97,6 +99,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO diff --git a/BLAS/SRC/dtrmm.f b/BLAS/SRC/dtrmm.f index 1ae449ab..931748db 100644 --- a/BLAS/SRC/dtrmm.f +++ b/BLAS/SRC/dtrmm.f @@ -114,6 +114,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -123,6 +125,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/dtrmv.f b/BLAS/SRC/dtrmv.f index 1648d9b1..b1ca93a4 100644 --- a/BLAS/SRC/dtrmv.f +++ b/BLAS/SRC/dtrmv.f @@ -88,6 +88,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -97,6 +99,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO diff --git a/BLAS/SRC/dtrsm.f b/BLAS/SRC/dtrsm.f index 75295b49..88811104 100644 --- a/BLAS/SRC/dtrsm.f +++ b/BLAS/SRC/dtrsm.f @@ -116,6 +116,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -126,6 +128,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/dtrsv.f b/BLAS/SRC/dtrsv.f index d3bc6f1a..847fd391 100644 --- a/BLAS/SRC/dtrsv.f +++ b/BLAS/SRC/dtrsv.f @@ -100,6 +100,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO diff --git a/BLAS/SRC/dzasum.f b/BLAS/SRC/dzasum.f index 5baa6526..5eabc60f 100644 --- a/BLAS/SRC/dzasum.f +++ b/BLAS/SRC/dzasum.f @@ -9,11 +9,16 @@ * Purpose * ======= * -* takes the sum of the absolute values. +* DZASUM takes the sum of the absolute values. +* +* Further Details +* =============== +* * jack dongarra, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION STEMP diff --git a/BLAS/SRC/dznrm2.f b/BLAS/SRC/dznrm2.f index d65015f6..d5e76c54 100644 --- a/BLAS/SRC/dznrm2.f +++ b/BLAS/SRC/dznrm2.f @@ -14,11 +14,14 @@ * * DZNRM2 := sqrt( conjg( x' )*x ) * +* Further Details +* =============== * * -- This version written on 25-October-1982. * Modified on 14-October-1993 to inline the call to ZLASSQ. * Sven Hammarling, Nag Ltd. * +* ===================================================================== * * .. Parameters .. DOUBLE PRECISION ONE,ZERO diff --git a/BLAS/SRC/icamax.f b/BLAS/SRC/icamax.f index 9a6afc17..4fd4b920 100644 --- a/BLAS/SRC/icamax.f +++ b/BLAS/SRC/icamax.f @@ -9,11 +9,16 @@ * Purpose * ======= * -* finds the index of element having max. absolute value. +* ICAMAX finds the index of element having max. absolute value. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. REAL SMAX diff --git a/BLAS/SRC/idamax.f b/BLAS/SRC/idamax.f index 44729fe4..fa45c1d6 100644 --- a/BLAS/SRC/idamax.f +++ b/BLAS/SRC/idamax.f @@ -9,11 +9,16 @@ * Purpose * ======= * -* finds the index of element having max. absolute value. +* IDAMAX finds the index of element having max. absolute value. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION DMAX diff --git a/BLAS/SRC/isamax.f b/BLAS/SRC/isamax.f index f6fd3121..88741e7e 100644 --- a/BLAS/SRC/isamax.f +++ b/BLAS/SRC/isamax.f @@ -9,11 +9,16 @@ * Purpose * ======= * -* finds the index of element having max. absolute value. +* ISAMAX finds the index of element having max. absolute value. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. REAL SMAX diff --git a/BLAS/SRC/izamax.f b/BLAS/SRC/izamax.f index e99af9ba..27c56874 100644 --- a/BLAS/SRC/izamax.f +++ b/BLAS/SRC/izamax.f @@ -9,11 +9,16 @@ * Purpose * ======= * -* finds the index of element having max. absolute value. +* IZAMAX finds the index of element having max. absolute value. +* +* Further Details +* =============== +* * jack dongarra, 1/15/85. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION SMAX diff --git a/BLAS/SRC/sasum.f b/BLAS/SRC/sasum.f index 0677ba47..83513335 100644 --- a/BLAS/SRC/sasum.f +++ b/BLAS/SRC/sasum.f @@ -9,14 +9,18 @@ * Purpose * ======= * -* takes the sum of the absolute values. +* SASUM takes the sum of the absolute values. * uses unrolled loops for increment equal to one. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * - * .. Local Scalars .. REAL STEMP INTEGER I,M,MP1,NINCX diff --git a/BLAS/SRC/saxpy.f b/BLAS/SRC/saxpy.f index 6241a71d..00fc145d 100644 --- a/BLAS/SRC/saxpy.f +++ b/BLAS/SRC/saxpy.f @@ -12,9 +12,14 @@ * * SAXPY constant times a vector plus a vector. * uses unrolled loop for increments equal to one. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. INTEGER I,IX,IY,M,MP1 diff --git a/BLAS/SRC/scabs1.f b/BLAS/SRC/scabs1.f index ce6b63ff..eccb9f61 100644 --- a/BLAS/SRC/scabs1.f +++ b/BLAS/SRC/scabs1.f @@ -8,6 +8,8 @@ * * SCABS1 computes absolute value of a complex number * +* ===================================================================== +* * .. Intrinsic Functions .. INTRINSIC ABS,AIMAG,REAL * .. diff --git a/BLAS/SRC/scasum.f b/BLAS/SRC/scasum.f index 5a4abfa9..2fa01859 100644 --- a/BLAS/SRC/scasum.f +++ b/BLAS/SRC/scasum.f @@ -9,12 +9,17 @@ * Purpose * ======= * -* takes the sum of the absolute values of a complex vector and +* SCASUM takes the sum of the absolute values of a complex vector and * returns a single precision result. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. REAL STEMP diff --git a/BLAS/SRC/scnrm2.f b/BLAS/SRC/scnrm2.f index 160e2c41..f8288026 100644 --- a/BLAS/SRC/scnrm2.f +++ b/BLAS/SRC/scnrm2.f @@ -14,12 +14,14 @@ * * SCNRM2 := sqrt( conjg( x' )*x ) * -* +* Further Details +* =============== * * -- This version written on 25-October-1982. * Modified on 14-October-1993 to inline the call to CLASSQ. * Sven Hammarling, Nag Ltd. * +* ===================================================================== * * .. Parameters .. REAL ONE,ZERO diff --git a/BLAS/SRC/scopy.f b/BLAS/SRC/scopy.f index ad04ee69..e0f41fe8 100644 --- a/BLAS/SRC/scopy.f +++ b/BLAS/SRC/scopy.f @@ -9,11 +9,16 @@ * Purpose * ======= * -* copies a vector, x, to a vector, y. +* SCOPY copies a vector, x, to a vector, y. * uses unrolled loops for increments equal to 1. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. INTEGER I,IX,IY,M,MP1 diff --git a/BLAS/SRC/sdot.f b/BLAS/SRC/sdot.f index deebc348..e0df5700 100644 --- a/BLAS/SRC/sdot.f +++ b/BLAS/SRC/sdot.f @@ -9,13 +9,17 @@ * Purpose * ======= * -* forms the dot product of two vectors. +* SDOT forms the dot product of two vectors. * uses unrolled loops for increments equal to one. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * - * .. Local Scalars .. REAL STEMP INTEGER I,IX,IY,M,MP1 diff --git a/BLAS/SRC/sdsdot.f b/BLAS/SRC/sdsdot.f index f6349a14..5b9e6c41 100644 --- a/BLAS/SRC/sdsdot.f +++ b/BLAS/SRC/sdsdot.f @@ -47,8 +47,10 @@ * SDSDOT (output) REAL * single precision dot product (SB if N .LE. 0) * +* Further Details +* =============== +* * REFERENCES -* ========== * * C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T. * Krogh, Basic linear algebra subprograms for Fortran @@ -56,7 +58,6 @@ * Software 5, 3 (September 1979), pp. 308-323. * * REVISION HISTORY (YYMMDD) -* ========================== * * 791001 DATE WRITTEN * 890531 Changed all specific intrinsics to generic. (WRB) diff --git a/BLAS/SRC/sgbmv.f b/BLAS/SRC/sgbmv.f index 6a79a039..aaa8b1a1 100644 --- a/BLAS/SRC/sgbmv.f +++ b/BLAS/SRC/sgbmv.f @@ -115,6 +115,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -124,6 +126,8 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== +* * .. Parameters .. REAL ONE,ZERO PARAMETER (ONE=1.0E+0,ZERO=0.0E+0) diff --git a/BLAS/SRC/sgemm.f b/BLAS/SRC/sgemm.f index 06e33c09..caafaba0 100644 --- a/BLAS/SRC/sgemm.f +++ b/BLAS/SRC/sgemm.f @@ -118,6 +118,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -127,6 +129,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/sgemv.f b/BLAS/SRC/sgemv.f index 494cfc9e..2f2cbb0c 100644 --- a/BLAS/SRC/sgemv.f +++ b/BLAS/SRC/sgemv.f @@ -89,6 +89,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -98,6 +100,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ONE,ZERO diff --git a/BLAS/SRC/sger.f b/BLAS/SRC/sger.f index 5f94cf6d..3ddd10c7 100644 --- a/BLAS/SRC/sger.f +++ b/BLAS/SRC/sger.f @@ -67,6 +67,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -76,6 +78,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ZERO diff --git a/BLAS/SRC/snrm2.f b/BLAS/SRC/snrm2.f index fa54ba10..1c336dac 100644 --- a/BLAS/SRC/snrm2.f +++ b/BLAS/SRC/snrm2.f @@ -21,6 +21,7 @@ * Modified on 14-October-1993 to inline the call to SLASSQ. * Sven Hammarling, Nag Ltd. * +* ===================================================================== * * .. Parameters .. REAL ONE,ZERO diff --git a/BLAS/SRC/srot.f b/BLAS/SRC/srot.f index e9f1cf71..5903b561 100644 --- a/BLAS/SRC/srot.f +++ b/BLAS/SRC/srot.f @@ -18,8 +18,8 @@ * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * - * .. Local Scalars .. REAL STEMP INTEGER I,IX,IY diff --git a/BLAS/SRC/srotg.f b/BLAS/SRC/srotg.f index 2625bd58..4f2a8411 100644 --- a/BLAS/SRC/srotg.f +++ b/BLAS/SRC/srotg.f @@ -6,9 +6,14 @@ * Purpose * ======= * -* construct givens plane rotation. +* SROTG construct givens plane rotation. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * +* ===================================================================== * * .. Local Scalars .. REAL R,ROE,SCALE,Z diff --git a/BLAS/SRC/ssbmv.f b/BLAS/SRC/ssbmv.f index c08b501b..16893a29 100644 --- a/BLAS/SRC/ssbmv.f +++ b/BLAS/SRC/ssbmv.f @@ -118,6 +118,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -127,6 +129,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ONE,ZERO diff --git a/BLAS/SRC/sscal.f b/BLAS/SRC/sscal.f index b900be9a..312aeaf1 100644 --- a/BLAS/SRC/sscal.f +++ b/BLAS/SRC/sscal.f @@ -12,10 +12,15 @@ * * scales a vector by a constant. * uses unrolled loops for increment equal to 1. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. INTEGER I,M,MP1,NINCX diff --git a/BLAS/SRC/sspmv.f b/BLAS/SRC/sspmv.f index 813738ed..0b844982 100644 --- a/BLAS/SRC/sspmv.f +++ b/BLAS/SRC/sspmv.f @@ -84,6 +84,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -93,6 +95,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ONE,ZERO diff --git a/BLAS/SRC/sspr.f b/BLAS/SRC/sspr.f index 02e46673..bae92612 100644 --- a/BLAS/SRC/sspr.f +++ b/BLAS/SRC/sspr.f @@ -71,6 +71,8 @@ * AP is overwritten by the lower triangular part of the * updated matrix. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -80,6 +82,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ZERO diff --git a/BLAS/SRC/sspr2.f b/BLAS/SRC/sspr2.f index e1945824..cd27c734 100644 --- a/BLAS/SRC/sspr2.f +++ b/BLAS/SRC/sspr2.f @@ -82,6 +82,8 @@ * AP is overwritten by the lower triangular part of the * updated matrix. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -91,6 +93,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ZERO diff --git a/BLAS/SRC/sswap.f b/BLAS/SRC/sswap.f index e23f3803..736d4974 100644 --- a/BLAS/SRC/sswap.f +++ b/BLAS/SRC/sswap.f @@ -11,9 +11,14 @@ * * interchanges two vectors. * uses unrolled loops for increments equal to 1. +* +* Further Details +* =============== +* * jack dongarra, linpack, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. REAL STEMP diff --git a/BLAS/SRC/ssymm.f b/BLAS/SRC/ssymm.f index 344cd35a..5182672e 100644 --- a/BLAS/SRC/ssymm.f +++ b/BLAS/SRC/ssymm.f @@ -122,6 +122,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -131,6 +133,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/ssymv.f b/BLAS/SRC/ssymv.f index 2b9bedd3..19f6e76f 100644 --- a/BLAS/SRC/ssymv.f +++ b/BLAS/SRC/ssymv.f @@ -87,6 +87,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -96,6 +98,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ONE,ZERO diff --git a/BLAS/SRC/ssyr.f b/BLAS/SRC/ssyr.f index aea091b1..6c7a8770 100644 --- a/BLAS/SRC/ssyr.f +++ b/BLAS/SRC/ssyr.f @@ -74,6 +74,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -83,6 +85,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ZERO diff --git a/BLAS/SRC/ssyr2.f b/BLAS/SRC/ssyr2.f index 4e4fcaac..cc472ccd 100644 --- a/BLAS/SRC/ssyr2.f +++ b/BLAS/SRC/ssyr2.f @@ -85,6 +85,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -94,6 +96,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ZERO diff --git a/BLAS/SRC/ssyr2k.f b/BLAS/SRC/ssyr2k.f index cc8acb6e..7f0f9875 100644 --- a/BLAS/SRC/ssyr2k.f +++ b/BLAS/SRC/ssyr2k.f @@ -124,6 +124,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -134,6 +136,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/ssyrk.f b/BLAS/SRC/ssyrk.f index 05659108..a56ba40c 100644 --- a/BLAS/SRC/ssyrk.f +++ b/BLAS/SRC/ssyrk.f @@ -106,6 +106,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -115,6 +117,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/stbmv.f b/BLAS/SRC/stbmv.f index 61dcb703..c0b8f113 100644 --- a/BLAS/SRC/stbmv.f +++ b/BLAS/SRC/stbmv.f @@ -125,6 +125,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -134,6 +136,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ZERO diff --git a/BLAS/SRC/stbsv.f b/BLAS/SRC/stbsv.f index c98cac7a..b846be85 100644 --- a/BLAS/SRC/stbsv.f +++ b/BLAS/SRC/stbsv.f @@ -129,6 +129,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -138,6 +140,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ZERO diff --git a/BLAS/SRC/stpmv.f b/BLAS/SRC/stpmv.f index 6c79edee..71ea49a3 100644 --- a/BLAS/SRC/stpmv.f +++ b/BLAS/SRC/stpmv.f @@ -85,6 +85,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -94,6 +96,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ZERO diff --git a/BLAS/SRC/stpsv.f b/BLAS/SRC/stpsv.f index ddba7783..7d95efbd 100644 --- a/BLAS/SRC/stpsv.f +++ b/BLAS/SRC/stpsv.f @@ -88,6 +88,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -97,6 +99,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ZERO diff --git a/BLAS/SRC/strmm.f b/BLAS/SRC/strmm.f index e610743d..97fcf6c4 100644 --- a/BLAS/SRC/strmm.f +++ b/BLAS/SRC/strmm.f @@ -114,6 +114,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -123,6 +125,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/strmv.f b/BLAS/SRC/strmv.f index ea31b5f3..743c0d73 100644 --- a/BLAS/SRC/strmv.f +++ b/BLAS/SRC/strmv.f @@ -88,6 +88,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -97,6 +99,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ZERO diff --git a/BLAS/SRC/strsm.f b/BLAS/SRC/strsm.f index 05606382..4572784e 100644 --- a/BLAS/SRC/strsm.f +++ b/BLAS/SRC/strsm.f @@ -116,6 +116,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -126,6 +128,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/strsv.f b/BLAS/SRC/strsv.f index 026cbc7b..0f820fe4 100644 --- a/BLAS/SRC/strsv.f +++ b/BLAS/SRC/strsv.f @@ -91,6 +91,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -100,6 +102,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. REAL ZERO diff --git a/BLAS/SRC/xerbla_array.f b/BLAS/SRC/xerbla_array.f index 57cd98a9..350b59bc 100644 --- a/BLAS/SRC/xerbla_array.f +++ b/BLAS/SRC/xerbla_array.f @@ -1,68 +1,68 @@ SUBROUTINE XERBLA_ARRAY(SRNAME_ARRAY, SRNAME_LEN, INFO) -! -! -- LAPACK auxiliary routine (version 3.0) -- -! Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., -! September 19, 2006 -! +* +* -- LAPACK auxiliary routine (version 3.0) -- +* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., +* September 19, 2006 +* IMPLICIT NONE -! .. Scalar Arguments .. +* .. Scalar Arguments .. INTEGER SRNAME_LEN, INFO -! .. -! .. Array Arguments .. +* .. +* .. Array Arguments .. CHARACTER(1) SRNAME_ARRAY(SRNAME_LEN) -! .. -! -! Purpose -! ======= -! -! XERBLA_ARRAY assists other languages in calling XERBLA, the LAPACK -! and BLAS error handler. Rather than taking a Fortran string argument -! as the function's name, XERBLA_ARRAY takes an array of single -! characters along with the array's length. XERBLA_ARRAY then copies -! up to 32 characters of that array into a Fortran string and passes -! that to XERBLA. If called with a non-positive SRNAME_LEN, -! XERBLA_ARRAY will call XERBLA with a string of all blank characters. -! -! Say some macro or other device makes XERBLA_ARRAY available to C99 -! by a name lapack_xerbla and with a common Fortran calling convention. -! Then a C99 program could invoke XERBLA via: -! { -! int flen = strlen(__func__); -! lapack_xerbla(__func__, &flen, &info); -! } -! -! Providing XERBLA_ARRAY is not necessary for intercepting LAPACK -! errors. XERBLA_ARRAY calls XERBLA. -! -! Arguments -! ========= -! -! SRNAME_ARRAY (input) CHARACTER(1) array, dimension (SRNAME_LEN) -! The name of the routine which called XERBLA_ARRAY. -! -! SRNAME_LEN (input) INTEGER -! The length of the name in SRNAME_ARRAY. -! -! INFO (input) INTEGER -! The position of the invalid parameter in the parameter list -! of the calling routine. -! -! ===================================================================== -! -! .. -! .. Local Scalars .. +* .. +* +* Purpose +* ======= +* +* XERBLA_ARRAY assists other languages in calling XERBLA, the LAPACK +* and BLAS error handler. Rather than taking a Fortran string argument +* as the function's name, XERBLA_ARRAY takes an array of single +* characters along with the array's length. XERBLA_ARRAY then copies +* up to 32 characters of that array into a Fortran string and passes +* that to XERBLA. If called with a non-positive SRNAME_LEN, +* XERBLA_ARRAY will call XERBLA with a string of all blank characters. +* +* Say some macro or other device makes XERBLA_ARRAY available to C99 +* by a name lapack_xerbla and with a common Fortran calling convention. +* Then a C99 program could invoke XERBLA via: +* { +* int flen = strlen(__func__); +* lapack_xerbla(__func__, &flen, &info); +* } +* +* Providing XERBLA_ARRAY is not necessary for intercepting LAPACK +* errors. XERBLA_ARRAY calls XERBLA. +* +* Arguments +* ========= +* +* SRNAME_ARRAY (input) CHARACTER(1) array, dimension (SRNAME_LEN) +* The name of the routine which called XERBLA_ARRAY. +* +* SRNAME_LEN (input) INTEGER +* The length of the name in SRNAME_ARRAY. +* +* INFO (input) INTEGER +* The position of the invalid parameter in the parameter list +* of the calling routine. +* +* ===================================================================== +* +* .. +* .. Local Scalars .. INTEGER I -! .. -! .. Local Arrays .. +* .. +* .. Local Arrays .. CHARACTER*32 SRNAME -! .. -! .. Intrinsic Functions .. +* .. +* .. Intrinsic Functions .. INTRINSIC MIN, LEN -! .. -! .. External Functions .. +* .. +* .. External Functions .. EXTERNAL XERBLA -! .. -! .. Executable Statements .. +* .. +* .. Executable Statements .. SRNAME = '' DO I = 1, MIN( SRNAME_LEN, LEN( SRNAME ) ) SRNAME( I:I ) = SRNAME_ARRAY( I ) diff --git a/BLAS/SRC/zaxpy.f b/BLAS/SRC/zaxpy.f index b33794c3..b05d9d2b 100644 --- a/BLAS/SRC/zaxpy.f +++ b/BLAS/SRC/zaxpy.f @@ -10,11 +10,16 @@ * Purpose * ======= * -* constant times a vector plus a vector. +* ZAXPY constant times a vector plus a vector. +* +* Further Details +* =============== +* * jack dongarra, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * - +* ===================================================================== +* * .. Local Scalars .. INTEGER I,IX,IY * .. diff --git a/BLAS/SRC/zcopy.f b/BLAS/SRC/zcopy.f index c77a8010..793be5c5 100644 --- a/BLAS/SRC/zcopy.f +++ b/BLAS/SRC/zcopy.f @@ -9,10 +9,15 @@ * Purpose * ======= * -* copies a vector, x, to a vector, y. +* ZCOPY copies a vector, x, to a vector, y. +* +* Further Details +* =============== +* * jack dongarra, linpack, 4/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. INTEGER I,IX,IY diff --git a/BLAS/SRC/zdotc.f b/BLAS/SRC/zdotc.f index 656243bd..b97cc41f 100644 --- a/BLAS/SRC/zdotc.f +++ b/BLAS/SRC/zdotc.f @@ -17,6 +17,8 @@ * jack dongarra, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== +* * .. Local Scalars .. DOUBLE COMPLEX ZTEMP INTEGER I,IX,IY diff --git a/BLAS/SRC/zdotu.f b/BLAS/SRC/zdotu.f index 11af134c..4c6dc9bc 100644 --- a/BLAS/SRC/zdotu.f +++ b/BLAS/SRC/zdotu.f @@ -17,6 +17,8 @@ * jack dongarra, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== +* * .. Local Scalars .. DOUBLE COMPLEX ZTEMP INTEGER I,IX,IY diff --git a/BLAS/SRC/zdscal.f b/BLAS/SRC/zdscal.f index 86525276..aa0fa905 100644 --- a/BLAS/SRC/zdscal.f +++ b/BLAS/SRC/zdscal.f @@ -10,11 +10,16 @@ * Purpose * ======= * -* scales a vector by a constant. +* ZDSCAL scales a vector by a constant. +* +* Further Details +* =============== +* * jack dongarra, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. INTEGER I,IX diff --git a/BLAS/SRC/zgbmv.f b/BLAS/SRC/zgbmv.f index 42704e6b..5a2228d0 100644 --- a/BLAS/SRC/zgbmv.f +++ b/BLAS/SRC/zgbmv.f @@ -118,6 +118,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -127,6 +129,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ONE diff --git a/BLAS/SRC/zgemm.f b/BLAS/SRC/zgemm.f index 4a3d4ae6..198e57f5 100644 --- a/BLAS/SRC/zgemm.f +++ b/BLAS/SRC/zgemm.f @@ -118,6 +118,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -127,6 +129,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/zgemv.f b/BLAS/SRC/zgemv.f index 2db065c8..72729603 100644 --- a/BLAS/SRC/zgemv.f +++ b/BLAS/SRC/zgemv.f @@ -91,6 +91,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -100,6 +102,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ONE diff --git a/BLAS/SRC/zgerc.f b/BLAS/SRC/zgerc.f index 6f175c11..62fed2c3 100644 --- a/BLAS/SRC/zgerc.f +++ b/BLAS/SRC/zgerc.f @@ -67,6 +67,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -76,6 +78,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/BLAS/SRC/zgeru.f b/BLAS/SRC/zgeru.f index 4293a1c2..3dd3bd46 100644 --- a/BLAS/SRC/zgeru.f +++ b/BLAS/SRC/zgeru.f @@ -67,6 +67,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -76,6 +78,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/BLAS/SRC/zhbmv.f b/BLAS/SRC/zhbmv.f index 00db9f2d..bca0da5f 100644 --- a/BLAS/SRC/zhbmv.f +++ b/BLAS/SRC/zhbmv.f @@ -120,6 +120,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -129,6 +131,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ONE diff --git a/BLAS/SRC/zhemm.f b/BLAS/SRC/zhemm.f index f22fbe9b..5c8d9500 100644 --- a/BLAS/SRC/zhemm.f +++ b/BLAS/SRC/zhemm.f @@ -124,6 +124,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -133,6 +135,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/zhemv.f b/BLAS/SRC/zhemv.f index a076b7ba..341362b4 100644 --- a/BLAS/SRC/zhemv.f +++ b/BLAS/SRC/zhemv.f @@ -89,6 +89,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -98,6 +100,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ONE diff --git a/BLAS/SRC/zher.f b/BLAS/SRC/zher.f index e1b6a5e3..848a3702 100644 --- a/BLAS/SRC/zher.f +++ b/BLAS/SRC/zher.f @@ -77,6 +77,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -86,6 +88,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/BLAS/SRC/zher2.f b/BLAS/SRC/zher2.f index aa59caf1..c0b6a306 100644 --- a/BLAS/SRC/zher2.f +++ b/BLAS/SRC/zher2.f @@ -88,6 +88,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -97,6 +99,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/BLAS/SRC/zher2k.f b/BLAS/SRC/zher2k.f index 63b5586e..0dfb32bf 100644 --- a/BLAS/SRC/zher2k.f +++ b/BLAS/SRC/zher2k.f @@ -127,6 +127,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -139,6 +141,7 @@ * -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1. * Ed Anderson, Cray Research Inc. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/zherk.f b/BLAS/SRC/zherk.f index 4fa5678e..ed51aa18 100644 --- a/BLAS/SRC/zherk.f +++ b/BLAS/SRC/zherk.f @@ -107,6 +107,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -119,6 +121,7 @@ * -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1. * Ed Anderson, Cray Research Inc. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/zhpmv.f b/BLAS/SRC/zhpmv.f index f72233fe..b686108b 100644 --- a/BLAS/SRC/zhpmv.f +++ b/BLAS/SRC/zhpmv.f @@ -86,6 +86,8 @@ * Y. INCY must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -95,6 +97,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ONE diff --git a/BLAS/SRC/zhpr.f b/BLAS/SRC/zhpr.f index 3cbfa2f0..40efbc7d 100644 --- a/BLAS/SRC/zhpr.f +++ b/BLAS/SRC/zhpr.f @@ -74,6 +74,8 @@ * not be set, they are assumed to be zero, and on exit they * are set to zero. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -83,6 +85,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/BLAS/SRC/zhpr2.f b/BLAS/SRC/zhpr2.f index 77496c0b..99977462 100644 --- a/BLAS/SRC/zhpr2.f +++ b/BLAS/SRC/zhpr2.f @@ -85,6 +85,8 @@ * not be set, they are assumed to be zero, and on exit they * are set to zero. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -94,6 +96,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/BLAS/SRC/zrotg.f b/BLAS/SRC/zrotg.f index bc67fecb..99190c37 100644 --- a/BLAS/SRC/zrotg.f +++ b/BLAS/SRC/zrotg.f @@ -7,7 +7,9 @@ * Purpose * ======= * -* determines a double complex Givens rotation. +* ZROTG determines a double complex Givens rotation. +* +* ===================================================================== * * .. Local Scalars .. DOUBLE COMPLEX ALPHA diff --git a/BLAS/SRC/zscal.f b/BLAS/SRC/zscal.f index 079f8ded..42fba167 100644 --- a/BLAS/SRC/zscal.f +++ b/BLAS/SRC/zscal.f @@ -10,11 +10,16 @@ * Purpose * ======= * -* scales a vector by a constant. +* ZSCAL scales a vector by a constant. +* +* Further Details +* =============== +* * jack dongarra, 3/11/78. * modified 3/93 to return if incx .le. 0. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. INTEGER I,IX diff --git a/BLAS/SRC/zswap.f b/BLAS/SRC/zswap.f index 0b2dcd23..6ce8c09a 100644 --- a/BLAS/SRC/zswap.f +++ b/BLAS/SRC/zswap.f @@ -9,10 +9,15 @@ * Purpose * ======= * -* interchanges two vectors. +* ZSWAP interchanges two vectors. +* +* Further Details +* =============== +* * jack dongarra, 3/11/78. * modified 12/3/93, array(1) declarations changed to array(*) * +* ===================================================================== * * .. Local Scalars .. DOUBLE COMPLEX ZTEMP diff --git a/BLAS/SRC/zsymm.f b/BLAS/SRC/zsymm.f index 1095ae10..f5d07e1c 100644 --- a/BLAS/SRC/zsymm.f +++ b/BLAS/SRC/zsymm.f @@ -122,6 +122,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -131,6 +133,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/zsyr2k.f b/BLAS/SRC/zsyr2k.f index e94734d9..94ed2e36 100644 --- a/BLAS/SRC/zsyr2k.f +++ b/BLAS/SRC/zsyr2k.f @@ -121,6 +121,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -130,6 +132,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/zsyrk.f b/BLAS/SRC/zsyrk.f index 0e0d7ced..486a1744 100644 --- a/BLAS/SRC/zsyrk.f +++ b/BLAS/SRC/zsyrk.f @@ -104,6 +104,8 @@ * max( 1, n ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -113,6 +115,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/ztbmv.f b/BLAS/SRC/ztbmv.f index ef85dbee..7c85c1b5 100644 --- a/BLAS/SRC/ztbmv.f +++ b/BLAS/SRC/ztbmv.f @@ -125,6 +125,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -134,6 +136,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/BLAS/SRC/ztbsv.f b/BLAS/SRC/ztbsv.f index ee1a90ac..42b234a7 100644 --- a/BLAS/SRC/ztbsv.f +++ b/BLAS/SRC/ztbsv.f @@ -129,6 +129,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -138,6 +140,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/BLAS/SRC/ztpmv.f b/BLAS/SRC/ztpmv.f index bb81f348..5a7b3b8b 100644 --- a/BLAS/SRC/ztpmv.f +++ b/BLAS/SRC/ztpmv.f @@ -85,6 +85,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -94,6 +96,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/BLAS/SRC/ztpsv.f b/BLAS/SRC/ztpsv.f index 5163a12d..b56e1d8c 100644 --- a/BLAS/SRC/ztpsv.f +++ b/BLAS/SRC/ztpsv.f @@ -88,6 +88,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -97,6 +99,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/BLAS/SRC/ztrmm.f b/BLAS/SRC/ztrmm.f index 3f5dc3c6..56f3360f 100644 --- a/BLAS/SRC/ztrmm.f +++ b/BLAS/SRC/ztrmm.f @@ -114,6 +114,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -123,6 +125,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/ztrmv.f b/BLAS/SRC/ztrmv.f index 1c08bc6c..43001729 100644 --- a/BLAS/SRC/ztrmv.f +++ b/BLAS/SRC/ztrmv.f @@ -88,6 +88,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -97,6 +99,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/BLAS/SRC/ztrsm.f b/BLAS/SRC/ztrsm.f index 844c7247..7d81de51 100644 --- a/BLAS/SRC/ztrsm.f +++ b/BLAS/SRC/ztrsm.f @@ -116,6 +116,8 @@ * max( 1, m ). * Unchanged on exit. * +* Further Details +* =============== * * Level 3 Blas routine. * @@ -125,6 +127,7 @@ * Jeremy Du Croz, Numerical Algorithms Group Ltd. * Sven Hammarling, Numerical Algorithms Group Ltd. * +* ===================================================================== * * .. External Functions .. LOGICAL LSAME diff --git a/BLAS/SRC/ztrsv.f b/BLAS/SRC/ztrsv.f index 5e92174c..c48d9945 100644 --- a/BLAS/SRC/ztrsv.f +++ b/BLAS/SRC/ztrsv.f @@ -91,6 +91,8 @@ * X. INCX must not be zero. * Unchanged on exit. * +* Further Details +* =============== * * Level 2 Blas routine. * @@ -100,6 +102,7 @@ * Sven Hammarling, Nag Central Office. * Richard Hanson, Sandia National Labs. * +* ===================================================================== * * .. Parameters .. DOUBLE COMPLEX ZERO diff --git a/SRC/cla_gbrfsx_extended.f b/SRC/cla_gbrfsx_extended.f index e1a4e3e9..04d59475 100644 --- a/SRC/cla_gbrfsx_extended.f +++ b/SRC/cla_gbrfsx_extended.f @@ -1,4 +1,4 @@ - SUBROUTINE CLA_GBRFSX_EXTENDED( PREC_TYPE, TRANS_TYPE, N, KL, KU, + SUBROUTINE CLA_GBRFSX_EXTENDED ( PREC_TYPE, TRANS_TYPE, N, KL, KU, $ NRHS, AB, LDAB, AFB, LDAFB, IPIV, $ COLEQU, C, B, LDB, Y, LDY, $ BERR_OUT, N_NORMS, ERRS_N, ERRS_C, @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* CLA_GBRFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/cla_gbrpvgrw.f b/SRC/cla_gbrpvgrw.f index aa85d57f..0d7443c4 100644 --- a/SRC/cla_gbrpvgrw.f +++ b/SRC/cla_gbrpvgrw.f @@ -18,6 +18,14 @@ COMPLEX AB( LDAB, * ), AFB( LDAFB, * ) * .. * +* Purpose +* ======= +* +* CLA_GBRPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/cla_gerfsx_extended.f b/SRC/cla_gerfsx_extended.f index 7231f2cd..fa9c9a18 100644 --- a/SRC/cla_gerfsx_extended.f +++ b/SRC/cla_gerfsx_extended.f @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* CLA_GERFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/cla_herfsx_extended.f b/SRC/cla_herfsx_extended.f index b79d9708..dcb5e58e 100644 --- a/SRC/cla_herfsx_extended.f +++ b/SRC/cla_herfsx_extended.f @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* CLA_HERFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/cla_herpvgrw.f b/SRC/cla_herpvgrw.f index 10e82fd2..04b77e7a 100644 --- a/SRC/cla_herpvgrw.f +++ b/SRC/cla_herpvgrw.f @@ -21,6 +21,14 @@ REAL WORK( * ) * .. * +* Purpose +* ======= +* +* CLA_HERPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/cla_porfsx_extended.f b/SRC/cla_porfsx_extended.f index 8e05a6bb..7ea06a37 100644 --- a/SRC/cla_porfsx_extended.f +++ b/SRC/cla_porfsx_extended.f @@ -29,6 +29,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* CLA_PORFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/cla_porpvgrw.f b/SRC/cla_porpvgrw.f index 3f01199c..93808203 100644 --- a/SRC/cla_porpvgrw.f +++ b/SRC/cla_porpvgrw.f @@ -19,6 +19,14 @@ REAL WORK( * ) * .. * +* Purpose +* ======= +* +* CLA_PORPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/cla_rpvgrw.f b/SRC/cla_rpvgrw.f index fb481c22..3cfa3fb1 100644 --- a/SRC/cla_rpvgrw.f +++ b/SRC/cla_rpvgrw.f @@ -17,6 +17,14 @@ COMPLEX A( LDA, * ), AF( LDAF, * ) * .. * +* Purpose +* ======= +* +* CLA_RPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/cla_syrfsx_extended.f b/SRC/cla_syrfsx_extended.f index d3df3149..9bedfc55 100644 --- a/SRC/cla_syrfsx_extended.f +++ b/SRC/cla_syrfsx_extended.f @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* CLA_SYRFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/cla_syrpvgrw.f b/SRC/cla_syrpvgrw.f index 1c1a6e52..66c6adbe 100644 --- a/SRC/cla_syrpvgrw.f +++ b/SRC/cla_syrpvgrw.f @@ -21,6 +21,14 @@ INTEGER IPIV( * ) * .. * +* Purpose +* ======= +* +* CLA_SYRPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/ctgsja.f b/SRC/ctgsja.f index 8e9f9461..05c056a4 100644 --- a/SRC/ctgsja.f +++ b/SRC/ctgsja.f @@ -144,7 +144,7 @@ * K and L specify the subblocks in the input matrices A and B: * A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,,N-L+1:N) * of A and B, whose GSVD is going to be computed by CTGSJA. -* See Further details. +* See Further Details. * * A (input/output) COMPLEX array, dimension (LDA,N) * On entry, the M-by-N matrix A. diff --git a/SRC/dgejsv.f b/SRC/dgejsv.f index 28efa5f2..e0bf503c 100644 --- a/SRC/dgejsv.f +++ b/SRC/dgejsv.f @@ -16,13 +16,11 @@ * computation of SVD, PSVD, QSVD, (H,K)-SVD, and for solution of the * eigenvalue problems Hx = lambda M x, H M x = lambda x with H, M > 0. * -* -#- Scalar Arguments -#- -* +* .. Scalar Arguments .. IMPLICIT NONE INTEGER INFO, LDA, LDU, LDV, LWORK, M, N -* -* -#- Array Arguments -#- -* +* .. +* .. Array Arguments .. DOUBLE PRECISION A( LDA, * ), SVA( N ), U( LDU, * ), V( LDV, * ), & WORK( LWORK ) INTEGER IWORK( * ) @@ -30,7 +28,8 @@ * .. * * Purpose -* ~~~~~~~ +* ======= +* * DGEJSV computes the singular value decomposition (SVD) of a real M-by-N * matrix [A], where M >= N. The SVD of [A] is written as * @@ -44,181 +43,114 @@ * are computed and stored in the arrays U and V, respectively. The diagonal * of [SIGMA] is computed and stored in the array SVA. * -* Further details -* ~~~~~~~~~~~~~~~ -* DGEJSV implements a preconditioned Jacobi SVD algorithm. It uses SGEQP3, -* SGEQRF, and SGELQF as preprocessors and preconditioners. Optionally, an -* additional row pivoting can be used as a preprocessor, which in some -* cases results in much higher accuracy. An example is matrix A with the -* structure A = D1 * C * D2, where D1, D2 are arbitrarily ill-conditioned -* diagonal matrices and C is well-conditioned matrix. In that case, complete -* pivoting in the first QR factorizations provides accuracy dependent on the -* condition number of C, and independent of D1, D2. Such higher accuracy is -* not completely understood theoretically, but it works well in practice. -* Further, if A can be written as A = B*D, with well-conditioned B and some -* diagonal D, then the high accuracy is guaranteed, both theoretically and -* in software, independent of D. For more details see [1], [2]. -* The computational range for the singular values can be the full range -* ( UNDERFLOW,OVERFLOW ), provided that the machine arithmetic and the BLAS -* & LAPACK routines called by DGEJSV are implemented to work in that range. -* If that is not the case, then the restriction for safe computation with -* the singular values in the range of normalized IEEE numbers is that the -* spectral condition number kappa(A)=sigma_max(A)/sigma_min(A) does not -* overflow. This code (DGEJSV) is best used in this restricted range, -* meaning that singular values of magnitude below ||A||_2 / SLAMCH('O') are -* returned as zeros. See JOBR for details on this. -* Further, this implementation is somewhat slower than the one described -* in [1,2] due to replacement of some non-LAPACK components, and because -* the choice of some tuning parameters in the iterative part (DGESVJ) is -* left to the implementer on a particular machine. -* The rank revealing QR factorization (in this code: SGEQP3) should be -* implemented as in [3]. We have a new version of SGEQP3 under development -* that is more robust than the current one in LAPACK, with a cleaner cut in -* rank defficient cases. It will be available in the SIGMA library [4]. -* If M is much larger than N, it is obvious that the inital QRF with -* column pivoting can be preprocessed by the QRF without pivoting. That -* well known trick is not used in DGEJSV because in some cases heavy row -* weighting can be treated with complete pivoting. The overhead in cases -* M much larger than N is then only due to pivoting, but the benefits in -* terms of accuracy have prevailed. The implementer/user can incorporate -* this extra QRF step easily. The implementer can also improve data movement -* (matrix transpose, matrix copy, matrix transposed copy) - this -* implementation of DGEJSV uses only the simplest, naive data movement. -* -* Contributors -* ~~~~~~~~~~~~ -* Zlatko Drmac (Zagreb, Croatia) and Kresimir Veselic (Hagen, Germany) -* -* References -* ~~~~~~~~~~ -* [1] Z. Drmac and K. Veselic: New fast and accurate Jacobi SVD algorithm I. -* SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1322-1342. -* LAPACK Working note 169. -* [2] Z. Drmac and K. Veselic: New fast and accurate Jacobi SVD algorithm II. -* SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1343-1362. -* LAPACK Working note 170. -* [3] Z. Drmac and Z. Bujanovic: On the failure of rank-revealing QR -* factorization software - a case study. -* ACM Trans. Math. Softw. Vol. 35, No 2 (2008), pp. 1-28. -* LAPACK Working note 176. -* [4] Z. Drmac: SIGMA - mathematical software library for accurate SVD, PSV, -* QSVD, (H,K)-SVD computations. -* Department of Mathematics, University of Zagreb, 2008. -* -* Bugs, examples and comments -* ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -* Please report all bugs and send interesting examples and/or comments to -* drmac@math.hr. Thank you. -* * Arguments -* ~~~~~~~~~ -*............................................................................ -*. JOBA (input) CHARACTER*1 -*. Specifies the level of accuracy: -*. = '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 -*. B, and the procedure aims at the best theoretical accuracy. -*. The relative error max_{i=1:N}|d sigma_i| / sigma_i is -*. bounded by f(M,N)*epsilon* cond(B), independent of D. -*. The input matrix is preprocessed with the QRF with column -*. 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 -*. condition number of B. It provides a realistic error bound. -*. = '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 -*. 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 -*. 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 -*. 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 -*. 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 -*. of U. -*. = 'N': U is not computed. -*. -*. JOBV (input) CHARACTER*1 -*. Specifies whether to compute the matrix V: -*. = '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 -*. 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 -*. of V. -*. = 'N': V is not computed. -*. -*. 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 -*. value of c*A is around DSQRT(BIG), BIG=SLAMCH('O'), then JOBR issues -*. 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 -*. 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)] -*. (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 -*. 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 -*. 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. -*. 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 -*. matrices is used as workspace if the matrix A is transposed. -*. The implementer can easily remove this constraint and make the -*. code more complicated. See the descriptions of U and V. -*. -*. 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, -*. especially in cases of fast convergence (!). For details see [1,2]. -*. For the sake of simplicity, this perturbations are included only -*. 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 -*............................................................................ +* ========= +* +* JOBA (input) CHARACTER*1 +* Specifies the level of accuracy: +* = '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 +* B, and the procedure aims at the best theoretical accuracy. +* The relative error max_{i=1:N}|d sigma_i| / sigma_i is +* bounded by f(M,N)*epsilon* cond(B), independent of D. +* The input matrix is preprocessed with the QRF with column +* 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 +* condition number of B. It provides a realistic error bound. +* = '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 +* 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 +* 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 +* 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 +* 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 +* of U. +* = 'N': U is not computed. +* +* JOBV (input) CHARACTER*1 +* Specifies whether to compute the matrix V: +* = '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 +* 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 +* of V. +* = 'N': V is not computed. +* +* 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 +* value of c*A is around DSQRT(BIG), BIG=SLAMCH('O'), then JOBR issues +* 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 +* 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)] +* (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 +* 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 +* 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. +* 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 +* matrices is used as workspace if the matrix A is transposed. +* The implementer can easily remove this constraint and make the +* code more complicated. See the descriptions of U and V. +* +* 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, +* especially in cases of fast convergence (!). For details see [1,2]. +* For the sake of simplicity, this perturbations are included only +* 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 * * M (input) INTEGER * The number of rows of the input matrix A. M >= 0. @@ -365,15 +297,80 @@ * > 0 : DGEJSV did not converge in the maximal allowed number * of sweeps. The computed values may be inaccurate. * -*............................................................................ +* Further Details +* =============== * -* Local Parameters: +* DGEJSV implements a preconditioned Jacobi SVD algorithm. It uses SGEQP3, +* SGEQRF, and SGELQF as preprocessors and preconditioners. Optionally, an +* additional row pivoting can be used as a preprocessor, which in some +* cases results in much higher accuracy. An example is matrix A with the +* structure A = D1 * C * D2, where D1, D2 are arbitrarily ill-conditioned +* diagonal matrices and C is well-conditioned matrix. In that case, complete +* pivoting in the first QR factorizations provides accuracy dependent on the +* condition number of C, and independent of D1, D2. Such higher accuracy is +* not completely understood theoretically, but it works well in practice. +* Further, if A can be written as A = B*D, with well-conditioned B and some +* diagonal D, then the high accuracy is guaranteed, both theoretically and +* in software, independent of D. For more details see [1], [2]. +* The computational range for the singular values can be the full range +* ( UNDERFLOW,OVERFLOW ), provided that the machine arithmetic and the BLAS +* & LAPACK routines called by DGEJSV are implemented to work in that range. +* If that is not the case, then the restriction for safe computation with +* the singular values in the range of normalized IEEE numbers is that the +* spectral condition number kappa(A)=sigma_max(A)/sigma_min(A) does not +* overflow. This code (DGEJSV) is best used in this restricted range, +* meaning that singular values of magnitude below ||A||_2 / SLAMCH('O') are +* returned as zeros. See JOBR for details on this. +* Further, this implementation is somewhat slower than the one described +* in [1,2] due to replacement of some non-LAPACK components, and because +* the choice of some tuning parameters in the iterative part (DGESVJ) is +* left to the implementer on a particular machine. +* The rank revealing QR factorization (in this code: SGEQP3) should be +* implemented as in [3]. We have a new version of SGEQP3 under development +* that is more robust than the current one in LAPACK, with a cleaner cut in +* rank defficient cases. It will be available in the SIGMA library [4]. +* If M is much larger than N, it is obvious that the inital QRF with +* column pivoting can be preprocessed by the QRF without pivoting. That +* well known trick is not used in DGEJSV because in some cases heavy row +* weighting can be treated with complete pivoting. The overhead in cases +* M much larger than N is then only due to pivoting, but the benefits in +* terms of accuracy have prevailed. The implementer/user can incorporate +* this extra QRF step easily. The implementer can also improve data movement +* (matrix transpose, matrix copy, matrix transposed copy) - this +* implementation of DGEJSV uses only the simplest, naive data movement. * - DOUBLE PRECISION ZERO, ONE - PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) +* Contributors * -* Local Scalars: +* Zlatko Drmac (Zagreb, Croatia) and Kresimir Veselic (Hagen, Germany) * +* References +* +* [1] Z. Drmac and K. Veselic: New fast and accurate Jacobi SVD algorithm I. +* SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1322-1342. +* LAPACK Working note 169. +* [2] Z. Drmac and K. Veselic: New fast and accurate Jacobi SVD algorithm II. +* SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1343-1362. +* LAPACK Working note 170. +* [3] Z. Drmac and Z. Bujanovic: On the failure of rank-revealing QR +* factorization software - a case study. +* ACM Trans. Math. Softw. Vol. 35, No 2 (2008), pp. 1-28. +* LAPACK Working note 176. +* [4] Z. Drmac: SIGMA - mathematical software library for accurate SVD, PSV, +* QSVD, (H,K)-SVD computations. +* Department of Mathematics, University of Zagreb, 2008. +* +* Bugs, examples and comments +* +* Please report all bugs and send interesting examples and/or comments to +* drmac@math.hr. Thank you. +* +* ========================================================================== +* +* .. Local Parameters .. + DOUBLE PRECISION ZERO, ONE + PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) +* .. +* .. Local Scalars .. DOUBLE PRECISION AAPP, AAQQ, AATMAX, AATMIN, BIG, BIG1, COND_OK, & CONDR1, CONDR2, ENTRA, ENTRAT, EPSLN, MAXPRJ, SCALEM, & SCONDA, SFMIN, SMALL, TEMP1, USCAL1, USCAL2, XSC @@ -381,28 +378,24 @@ LOGICAL ALMORT, DEFR, ERREST, GOSCAL, JRACC, KILL, LSVEC, & L2ABER, L2KILL, L2PERT, L2RANK, L2TRAN, & NOSCAL, ROWPIV, RSVEC, TRANSP -* -* Intrinsic Functions: -* +* .. +* .. Intrinsic Functions .. INTRINSIC DABS, DLOG, DMAX1, DMIN1, DBLE, & MAX0, MIN0, IDNINT, DSIGN, DSQRT -* -* External Functions: -* +* .. +* .. External Functions .. DOUBLE PRECISION DLAMCH, DNRM2 INTEGER IDAMAX LOGICAL LSAME EXTERNAL IDAMAX, LSAME, DLAMCH, DNRM2 -* -* External Subroutines ( BLAS, LAPACK ): -* +* .. +* .. External Subroutines .. EXTERNAL DCOPY, DGELQF, DGEQP3, DGEQRF, DLACPY, DLASCL, & DLASET, DLASSQ, DLASWP, DORGQR, DORMLQ, & DORMQR, DPOCON, DSCAL, DSWAP, DTRSM, XERBLA * EXTERNAL DGESVJ -* -*............................................................................ +* .. * * Test the input arguments * @@ -1061,7 +1054,7 @@ * ELSE IF ( LSVEC .AND. ( .NOT. RSVEC ) ) THEN * -* -#- Singular Values and Left Singular Vectors -#- +* .. Singular Values and Left Singular Vectors .. * * .. second preconditioning step to avoid need to accumulate * Jacobi rotations in the Jacobi iterations. @@ -1108,7 +1101,7 @@ * ELSE * -* -#- Full SVD -#- +* .. Full SVD .. * IF ( .NOT. JRACC ) THEN * diff --git a/SRC/dggesx.f b/SRC/dggesx.f index d5218d36..369d32a7 100644 --- a/SRC/dggesx.f +++ b/SRC/dggesx.f @@ -229,7 +229,7 @@ * be caused due to scaling. * =N+3: reordering failed in DTGSEN. * -* Further details +* Further Details * =============== * * An approximate (asymptotic) bound on the average absolute error of diff --git a/SRC/dgsvj0.f b/SRC/dgsvj0.f index 473aa58a..4e66880b 100644 --- a/SRC/dgsvj0.f +++ b/SRC/dgsvj0.f @@ -34,7 +34,7 @@ * it does not check convergence (stopping criterion). Few tuning * parameters (marked by [TP]) are available for the implementer. * -* Further details +* Further Details * ~~~~~~~~~~~~~~~ * DGSVJ0 is used just to enable SGESVJ to call a simplified version of * itself to work on a submatrix of the original matrix. diff --git a/SRC/dgsvj1.f b/SRC/dgsvj1.f index 5f6a102c..5a49206c 100644 --- a/SRC/dgsvj1.f +++ b/SRC/dgsvj1.f @@ -36,7 +36,7 @@ * (stopping criterion). Few tunning parameters (marked by [TP]) are * available for the implementer. * -* Further details +* Further Details * ~~~~~~~~~~~~~~~ * DGSVJ1 applies few sweeps of Jacobi rotations in the column space of * the input M-by-N matrix A. The pivot pairs are taken from the (1,2) diff --git a/SRC/dla_gbrfsx_extended.f b/SRC/dla_gbrfsx_extended.f index e3bb0f1a..998af02e 100644 --- a/SRC/dla_gbrfsx_extended.f +++ b/SRC/dla_gbrfsx_extended.f @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* DLA_GBRFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/dla_gbrpvgrw.f b/SRC/dla_gbrpvgrw.f index eea53feb..e7e3fa2e 100644 --- a/SRC/dla_gbrpvgrw.f +++ b/SRC/dla_gbrpvgrw.f @@ -18,6 +18,14 @@ DOUBLE PRECISION AB( LDAB, * ), AFB( LDAFB, * ) * .. * +* Purpose +* ======= +* +* DLA_GBRPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/dla_gerfsx_extended.f b/SRC/dla_gerfsx_extended.f index 05daa969..bbb600a6 100644 --- a/SRC/dla_gerfsx_extended.f +++ b/SRC/dla_gerfsx_extended.f @@ -29,6 +29,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* DLA_GERFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/dla_porfsx_extended.f b/SRC/dla_porfsx_extended.f index 33c16119..d30fdc89 100644 --- a/SRC/dla_porfsx_extended.f +++ b/SRC/dla_porfsx_extended.f @@ -29,6 +29,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* DLA_PORFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/dla_porpvgrw.f b/SRC/dla_porpvgrw.f index 06efe3f1..05ce8f8b 100644 --- a/SRC/dla_porpvgrw.f +++ b/SRC/dla_porpvgrw.f @@ -19,6 +19,14 @@ DOUBLE PRECISION A( LDA, * ), AF( LDAF, * ), WORK( * ) * .. * +* Purpose +* ======= +* +* DLA_PORPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/dla_rpvgrw.f b/SRC/dla_rpvgrw.f index 47d7ed8b..41da7a44 100644 --- a/SRC/dla_rpvgrw.f +++ b/SRC/dla_rpvgrw.f @@ -17,6 +17,14 @@ DOUBLE PRECISION A( LDA, * ), AF( LDAF, * ) * .. * +* Purpose +* ======= +* +* DLA_RPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/dla_syrfsx_extended.f b/SRC/dla_syrfsx_extended.f index 6eee0573..82a6895d 100644 --- a/SRC/dla_syrfsx_extended.f +++ b/SRC/dla_syrfsx_extended.f @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* DLA_SYRFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/dla_syrpvgrw.f b/SRC/dla_syrpvgrw.f index 67adf069..99b5c096 100644 --- a/SRC/dla_syrpvgrw.f +++ b/SRC/dla_syrpvgrw.f @@ -20,6 +20,14 @@ DOUBLE PRECISION A( LDA, * ), AF( LDAF, * ), WORK( * ) * .. * +* Purpose +* ======= +* +* DLA_SYRPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/dtgsja.f b/SRC/dtgsja.f index 5e1c092f..1fae9c82 100644 --- a/SRC/dtgsja.f +++ b/SRC/dtgsja.f @@ -143,7 +143,7 @@ * K and L specify the subblocks in the input matrices A and B: * A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,N-L+1:N) * of A and B, whose GSVD is going to be computed by DTGSJA. -* See Further details. +* See Further Details. * * A (input/output) DOUBLE PRECISION array, dimension (LDA,N) * On entry, the M-by-N matrix A. diff --git a/SRC/sgejsv.f b/SRC/sgejsv.f index 054151fc..d85b9c05 100644 --- a/SRC/sgejsv.f +++ b/SRC/sgejsv.f @@ -16,12 +16,12 @@ * computation of SVD, PSVD, QSVD, (H,K)-SVD, and for solution of the * eigenvalue problems Hx = lambda M x, H M x = lambda x with H, M > 0. * -* -#- Scalar Arguments -#- +* .. Scalar Arguments .. * IMPLICIT NONE INTEGER INFO, LDA, LDU, LDV, LWORK, M, N * -* -#- Array Arguments -#- +* .. Array Arguments .. * REAL A( LDA, * ), SVA( N ), U( LDU, * ), V( LDV, * ), & WORK( LWORK ) @@ -30,7 +30,7 @@ * .. * * Purpose -* ~~~~~~~ +* ======= * SGEJSV computes the singular value decomposition (SVD) of a real M-by-N * matrix [A], where M >= N. The SVD of [A] is written as * @@ -44,181 +44,114 @@ * are computed and stored in the arrays U and V, respectively. The diagonal * of [SIGMA] is computed and stored in the array SVA. * -* Further details -* ~~~~~~~~~~~~~~~ -* SGEJSV implements a preconditioned Jacobi SVD algorithm. It uses SGEQP3, -* SGEQRF, and SGELQF as preprocessors and preconditioners. Optionally, an -* additional row pivoting can be used as a preprocessor, which in some -* cases results in much higher accuracy. An example is matrix A with the -* structure A = D1 * C * D2, where D1, D2 are arbitrarily ill-conditioned -* diagonal matrices and C is well-conditioned matrix. In that case, complete -* pivoting in the first QR factorizations provides accuracy dependent on the -* condition number of C, and independent of D1, D2. Such higher accuracy is -* not completely understood theoretically, but it works well in practice. -* Further, if A can be written as A = B*D, with well-conditioned B and some -* diagonal D, then the high accuracy is guaranteed, both theoretically and -* in software, independent of D. For more details see [1], [2]. -* The computational range for the singular values can be the full range -* ( UNDERFLOW,OVERFLOW ), provided that the machine arithmetic and the BLAS -* & LAPACK routines called by SGEJSV are implemented to work in that range. -* If that is not the case, then the restriction for safe computation with -* the singular values in the range of normalized IEEE numbers is that the -* spectral condition number kappa(A)=sigma_max(A)/sigma_min(A) does not -* overflow. This code (SGEJSV) is best used in this restricted range, -* meaning that singular values of magnitude below ||A||_2 / SLAMCH('O') are -* returned as zeros. See JOBR for details on this. -* Further, this implementation is somewhat slower than the one described -* in [1,2] due to replacement of some non-LAPACK components, and because -* the choice of some tuning parameters in the iterative part (SGESVJ) is -* left to the implementer on a particular machine. -* The rank revealing QR factorization (in this code: SGEQP3) should be -* implemented as in [3]. We have a new version of SGEQP3 under development -* that is more robust than the current one in LAPACK, with a cleaner cut in -* rank defficient cases. It will be available in the SIGMA library [4]. -* If M is much larger than N, it is obvious that the inital QRF with -* column pivoting can be preprocessed by the QRF without pivoting. That -* well known trick is not used in SGEJSV because in some cases heavy row -* weighting can be treated with complete pivoting. The overhead in cases -* M much larger than N is then only due to pivoting, but the benefits in -* terms of accuracy have prevailed. The implementer/user can incorporate -* this extra QRF step easily. The implementer can also improve data movement -* (matrix transpose, matrix copy, matrix transposed copy) - this -* implementation of SGEJSV uses only the simplest, naive data movement. -* -* Contributors -* ~~~~~~~~~~~~ -* Zlatko Drmac (Zagreb, Croatia) and Kresimir Veselic (Hagen, Germany) -* -* References -* ~~~~~~~~~~ -* [1] Z. Drmac and K. Veselic: New fast and accurate Jacobi SVD algorithm I. -* SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1322-1342. -* LAPACK Working note 169. -* [2] Z. Drmac and K. Veselic: New fast and accurate Jacobi SVD algorithm II. -* SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1343-1362. -* LAPACK Working note 170. -* [3] Z. Drmac and Z. Bujanovic: On the failure of rank-revealing QR -* factorization software - a case study. -* ACM Trans. math. Softw. Vol. 35, No 2 (2008), pp. 1-28. -* LAPACK Working note 176. -* [4] Z. Drmac: SIGMA - mathematical software library for accurate SVD, PSV, -* QSVD, (H,K)-SVD computations. -* Department of Mathematics, University of Zagreb, 2008. -* -* Bugs, examples and comments -* ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -* Please report all bugs and send interesting examples and/or comments to -* drmac@math.hr. Thank you. -* * Arguments -* ~~~~~~~~~ -*............................................................................ -*. JOBA (input) CHARACTER*1 -*. Specifies the level of accuracy: -*. = '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 -*. B, and the procedure aims at the best theoretical accuracy. -*. The relative error max_{i=1:N}|d sigma_i| / sigma_i is -*. bounded by f(M,N)*epsilon* cond(B), independent of D. -*. The input matrix is preprocessed with the QRF with column -*. 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 -*. condition number of B. It provides a realistic error bound. -*. = '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 -*. 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 -*. 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 -*. 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 -*. 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 -*. of U. -*. = 'N': U is not computed. -*. -*. JOBV (input) CHARACTER*1 -*. Specifies whether to compute the matrix V: -*. = '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 -*. 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 -*. of V. -*. = 'N': V is not computed. -*. -*. 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 -*. value of c*A is around SQRT(BIG), BIG=SLAMCH('O'), then JOBR issues -*. the licence to kill columns of A whose norm in c*A is less than -*. SQRT(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 -*. BLAS and QR factorizations and triangular solvers are -*. implemented to work in that range. If the condition of A -*. is greater than BIG, use SGESVJ. -*. = 'R': RESTRICTED range for sigma(c*A) is [SQRT(SFMIN), SQRT(BIG)] -*. (roughly, as described above). This option is recommended. -*. ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*. For computing the singular values in the FULL range [SFMIN,BIG] -*. use SGESVJ. -*. -*. 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 -*. 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. -*. 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 -*. matrices is used as workspace if the matrix A is transposed. -*. The implementer can easily remove this constraint and make the -*. code more complicated. See the descriptions of U and V. -*. -*. 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, -*. especially in cases of fast convergence (!). For details see [1,2]. -*. For the sake of simplicity, this perturbations are included only -*. 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 -*............................................................................ +* ========= +* +* JOBA (input) CHARACTER*1 +* Specifies the level of accuracy: +* = '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 +* B, and the procedure aims at the best theoretical accuracy. +* The relative error max_{i=1:N}|d sigma_i| / sigma_i is +* bounded by f(M,N)*epsilon* cond(B), independent of D. +* The input matrix is preprocessed with the QRF with column +* 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 +* condition number of B. It provides a realistic error bound. +* = '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 +* 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 +* 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 +* 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 +* 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 +* of U. +* = 'N': U is not computed. +* +* JOBV (input) CHARACTER*1 +* Specifies whether to compute the matrix V: +* = '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 +* 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 +* of V. +* = 'N': V is not computed. +* +* 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 +* value of c*A is around SQRT(BIG), BIG=SLAMCH('O'), then JOBR issues +* the licence to kill columns of A whose norm in c*A is less than +* SQRT(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 +* BLAS and QR factorizations and triangular solvers are +* implemented to work in that range. If the condition of A +* is greater than BIG, use SGESVJ. +* = 'R': RESTRICTED range for sigma(c*A) is [SQRT(SFMIN), SQRT(BIG)] +* (roughly, as described above). This option is recommended. +* =========================== +* For computing the singular values in the FULL range [SFMIN,BIG] +* use SGESVJ. +* +* 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 +* 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. +* 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 +* matrices is used as workspace if the matrix A is transposed. +* The implementer can easily remove this constraint and make the +* code more complicated. See the descriptions of U and V. +* +* 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, +* especially in cases of fast convergence (!). For details see [1,2]. +* For the sake of simplicity, this perturbations are included only +* 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 * * M (input) INTEGER * The number of rows of the input matrix A. M >= 0. @@ -365,15 +298,80 @@ * > 0 : SGEJSV did not converge in the maximal allowed number * of sweeps. The computed values may be inaccurate. * -*............................................................................ +* Further Details +* =============== * -* Local Parameters: +* SGEJSV implements a preconditioned Jacobi SVD algorithm. It uses SGEQP3, +* SGEQRF, and SGELQF as preprocessors and preconditioners. Optionally, an +* additional row pivoting can be used as a preprocessor, which in some +* cases results in much higher accuracy. An example is matrix A with the +* structure A = D1 * C * D2, where D1, D2 are arbitrarily ill-conditioned +* diagonal matrices and C is well-conditioned matrix. In that case, complete +* pivoting in the first QR factorizations provides accuracy dependent on the +* condition number of C, and independent of D1, D2. Such higher accuracy is +* not completely understood theoretically, but it works well in practice. +* Further, if A can be written as A = B*D, with well-conditioned B and some +* diagonal D, then the high accuracy is guaranteed, both theoretically and +* in software, independent of D. For more details see [1], [2]. +* The computational range for the singular values can be the full range +* ( UNDERFLOW,OVERFLOW ), provided that the machine arithmetic and the BLAS +* & LAPACK routines called by SGEJSV are implemented to work in that range. +* If that is not the case, then the restriction for safe computation with +* the singular values in the range of normalized IEEE numbers is that the +* spectral condition number kappa(A)=sigma_max(A)/sigma_min(A) does not +* overflow. This code (SGEJSV) is best used in this restricted range, +* meaning that singular values of magnitude below ||A||_2 / SLAMCH('O') are +* returned as zeros. See JOBR for details on this. +* Further, this implementation is somewhat slower than the one described +* in [1,2] due to replacement of some non-LAPACK components, and because +* the choice of some tuning parameters in the iterative part (SGESVJ) is +* left to the implementer on a particular machine. +* The rank revealing QR factorization (in this code: SGEQP3) should be +* implemented as in [3]. We have a new version of SGEQP3 under development +* that is more robust than the current one in LAPACK, with a cleaner cut in +* rank defficient cases. It will be available in the SIGMA library [4]. +* If M is much larger than N, it is obvious that the inital QRF with +* column pivoting can be preprocessed by the QRF without pivoting. That +* well known trick is not used in SGEJSV because in some cases heavy row +* weighting can be treated with complete pivoting. The overhead in cases +* M much larger than N is then only due to pivoting, but the benefits in +* terms of accuracy have prevailed. The implementer/user can incorporate +* this extra QRF step easily. The implementer can also improve data movement +* (matrix transpose, matrix copy, matrix transposed copy) - this +* implementation of SGEJSV uses only the simplest, naive data movement. * - REAL ZERO, ONE - PARAMETER ( ZERO = 0.0E0, ONE = 1.0E0 ) +* Contributors +* +* Zlatko Drmac (Zagreb, Croatia) and Kresimir Veselic (Hagen, Germany) * -* Local Scalars: +* References * +* [1] Z. Drmac and K. Veselic: New fast and accurate Jacobi SVD algorithm I. +* SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1322-1342. +* LAPACK Working note 169. +* [2] Z. Drmac and K. Veselic: New fast and accurate Jacobi SVD algorithm II. +* SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1343-1362. +* LAPACK Working note 170. +* [3] Z. Drmac and Z. Bujanovic: On the failure of rank-revealing QR +* factorization software - a case study. +* ACM Trans. math. Softw. Vol. 35, No 2 (2008), pp. 1-28. +* LAPACK Working note 176. +* [4] Z. Drmac: SIGMA - mathematical software library for accurate SVD, PSV, +* QSVD, (H,K)-SVD computations. +* Department of Mathematics, University of Zagreb, 2008. +* +* Bugs, examples and comments +* +* Please report all bugs and send interesting examples and/or comments to +* drmac@math.hr. Thank you. +* +* =========================================================================== +* +* .. Local Parameters .. + REAL ZERO, ONE + PARAMETER ( ZERO = 0.0E0, ONE = 1.0E0 ) +* .. +* .. Local Scalars .. REAL AAPP, AAQQ, AATMAX, AATMIN, BIG, BIG1, COND_OK, & CONDR1, CONDR2, ENTRA, ENTRAT, EPSLN, MAXPRJ, SCALEM, & SCONDA, SFMIN, SMALL, TEMP1, USCAL1, USCAL2, XSC @@ -381,28 +379,24 @@ LOGICAL ALMORT, DEFR, ERREST, GOSCAL, JRACC, KILL, LSVEC, & L2ABER, L2KILL, L2PERT, L2RANK, L2TRAN, & NOSCAL, ROWPIV, RSVEC, TRANSP -* -* Intrinsic Functions: -* +* .. +* .. Intrinsic Functions .. INTRINSIC ABS, ALOG, AMAX1, AMIN1, FLOAT, & MAX0, MIN0, NINT, SIGN, SQRT -* -* External Functions: -* +* .. +* .. External Functions .. REAL SLAMCH, SNRM2 INTEGER ISAMAX LOGICAL LSAME EXTERNAL ISAMAX, LSAME, SLAMCH, SNRM2 -* -* External Subroutines ( BLAS, LAPACK ): -* +* .. +* .. External Subroutines .. EXTERNAL SCOPY, SGELQF, SGEQP3, SGEQRF, SLACPY, SLASCL, & SLASET, SLASSQ, SLASWP, SORGQR, SORMLQ, & SORMQR, SPOCON, SSCAL, SSWAP, STRSM, XERBLA * EXTERNAL SGESVJ -* -*............................................................................ +* .. * * Test the input arguments * @@ -1058,7 +1052,7 @@ * ELSE IF ( LSVEC .AND. ( .NOT. RSVEC ) ) THEN * -* -#- Singular Values and Left Singular Vectors -#- +* .. Singular Values and Left Singular Vectors .. * * .. second preconditioning step to avoid need to accumulate * Jacobi rotations in the Jacobi iterations. @@ -1105,7 +1099,7 @@ * ELSE * -* -#- Full SVD -#- +* .. Full SVD .. * IF ( .NOT. JRACC ) THEN * diff --git a/SRC/sggesx.f b/SRC/sggesx.f index 55c12b68..ebc26688 100644 --- a/SRC/sggesx.f +++ b/SRC/sggesx.f @@ -229,7 +229,7 @@ * be caused due to scaling. * =N+3: reordering failed in STGSEN. * -* Further details +* Further Details * =============== * * An approximate (asymptotic) bound on the average absolute error of diff --git a/SRC/sgsvj0.f b/SRC/sgsvj0.f index a7cb80b9..bf293aad 100644 --- a/SRC/sgsvj0.f +++ b/SRC/sgsvj0.f @@ -35,7 +35,7 @@ * it does not check convergence (stopping criterion). Few tuning * parameters (marked by [TP]) are available for the implementer. * -* Further details +* Further Details * ~~~~~~~~~~~~~~~ * SGSVJ0 is used just to enable SGESVJ to call a simplified version of * itself to work on a submatrix of the original matrix. diff --git a/SRC/sgsvj1.f b/SRC/sgsvj1.f index aa965f29..a3a077aa 100644 --- a/SRC/sgsvj1.f +++ b/SRC/sgsvj1.f @@ -36,7 +36,7 @@ * (stopping criterion). Few tunning parameters (marked by [TP]) are * available for the implementer. * -* Further details +* Further Details * ~~~~~~~~~~~~~~~ * SGSVJ1 applies few sweeps of Jacobi rotations in the column space of * the input M-by-N matrix A. The pivot pairs are taken from the (1,2) diff --git a/SRC/sla_gbrfsx_extended.f b/SRC/sla_gbrfsx_extended.f index 93261517..fa2a8a06 100644 --- a/SRC/sla_gbrfsx_extended.f +++ b/SRC/sla_gbrfsx_extended.f @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* SLA_GBRFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/sla_gbrpvgrw.f b/SRC/sla_gbrpvgrw.f index 67985e0e..a1fdffdf 100644 --- a/SRC/sla_gbrpvgrw.f +++ b/SRC/sla_gbrpvgrw.f @@ -18,6 +18,14 @@ REAL AB( LDAB, * ), AFB( LDAFB, * ) * .. * +* Purpose +* ======= +* +* SLA_GBRPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/sla_gerfsx_extended.f b/SRC/sla_gerfsx_extended.f index 8d2c8419..c5882bf6 100644 --- a/SRC/sla_gerfsx_extended.f +++ b/SRC/sla_gerfsx_extended.f @@ -29,6 +29,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* SLA_GERFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/sla_porfsx_extended.f b/SRC/sla_porfsx_extended.f index 2d1a1244..0fe4a74b 100644 --- a/SRC/sla_porfsx_extended.f +++ b/SRC/sla_porfsx_extended.f @@ -29,6 +29,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* SLA_PORFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/sla_porpvgrw.f b/SRC/sla_porpvgrw.f index 9174aa5e..05b89df0 100644 --- a/SRC/sla_porpvgrw.f +++ b/SRC/sla_porpvgrw.f @@ -18,6 +18,14 @@ REAL A( LDA, * ), AF( LDAF, * ), WORK( * ) * .. * +* Purpose +* ======= +* +* SLA_PORPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/sla_rpvgrw.f b/SRC/sla_rpvgrw.f index e58f582c..1eba009f 100644 --- a/SRC/sla_rpvgrw.f +++ b/SRC/sla_rpvgrw.f @@ -17,6 +17,14 @@ REAL A( LDA, * ), AF( LDAF, * ) * .. * +* Purpose +* ======= +* +* SLA_RPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/sla_syrfsx_extended.f b/SRC/sla_syrfsx_extended.f index ce0911d5..9e7c97f9 100644 --- a/SRC/sla_syrfsx_extended.f +++ b/SRC/sla_syrfsx_extended.f @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* SLA_SYRFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/sla_syrpvgrw.f b/SRC/sla_syrpvgrw.f index a56cfd17..a61e6e4a 100644 --- a/SRC/sla_syrpvgrw.f +++ b/SRC/sla_syrpvgrw.f @@ -20,6 +20,14 @@ REAL A( LDA, * ), AF( LDAF, * ), WORK( * ) * .. * +* Purpose +* ======= +* +* SLA_SYRPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/stgsja.f b/SRC/stgsja.f index d090cf91..5acf5077 100644 --- a/SRC/stgsja.f +++ b/SRC/stgsja.f @@ -143,7 +143,7 @@ * K and L specify the subblocks in the input matrices A and B: * A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,N-L+1:N) * of A and B, whose GSVD is going to be computed by STGSJA. -* See Further details. +* See Further Details. * * A (input/output) REAL array, dimension (LDA,N) * On entry, the M-by-N matrix A. diff --git a/SRC/zla_gbrfsx_extended.f b/SRC/zla_gbrfsx_extended.f index a3096707..6ec24a7d 100644 --- a/SRC/zla_gbrfsx_extended.f +++ b/SRC/zla_gbrfsx_extended.f @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* ZLA_GBRFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/zla_gbrpvgrw.f b/SRC/zla_gbrpvgrw.f index 49d50f1b..c0c74477 100644 --- a/SRC/zla_gbrpvgrw.f +++ b/SRC/zla_gbrpvgrw.f @@ -18,6 +18,14 @@ COMPLEX*16 AB( LDAB, * ), AFB( LDAFB, * ) * .. * +* Purpose +* ======= +* +* ZLA_GBRPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/zla_gerfsx_extended.f b/SRC/zla_gerfsx_extended.f index d1848e15..718f3ca9 100644 --- a/SRC/zla_gerfsx_extended.f +++ b/SRC/zla_gerfsx_extended.f @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* ZLA_GERFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/zla_herfsx_extended.f b/SRC/zla_herfsx_extended.f index 84a71c1c..2d1646bc 100644 --- a/SRC/zla_herfsx_extended.f +++ b/SRC/zla_herfsx_extended.f @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* ZLA_HERFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/zla_herpvgrw.f b/SRC/zla_herpvgrw.f index 35dc69bf..42525831 100644 --- a/SRC/zla_herpvgrw.f +++ b/SRC/zla_herpvgrw.f @@ -21,6 +21,14 @@ DOUBLE PRECISION WORK( * ) * .. * +* Purpose +* ======= +* +* ZLA_HERPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/zla_porfsx_extended.f b/SRC/zla_porfsx_extended.f index b9afd66e..f39c31ef 100644 --- a/SRC/zla_porfsx_extended.f +++ b/SRC/zla_porfsx_extended.f @@ -29,6 +29,15 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* ZLA_PORFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* + * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/zla_porpvgrw.f b/SRC/zla_porpvgrw.f index c6a06023..0c000881 100644 --- a/SRC/zla_porpvgrw.f +++ b/SRC/zla_porpvgrw.f @@ -20,6 +20,14 @@ DOUBLE PRECISION WORK( * ) * .. * +* Purpose +* ======= +* +* ZLA_PORPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/zla_rpvgrw.f b/SRC/zla_rpvgrw.f index 1d5546e8..7bd5420e 100644 --- a/SRC/zla_rpvgrw.f +++ b/SRC/zla_rpvgrw.f @@ -17,6 +17,14 @@ COMPLEX*16 A( LDA, * ), AF( LDAF, * ) * .. * +* Purpose +* ======= +* +* ZLA_RPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/zla_syrfsx_extended.f b/SRC/zla_syrfsx_extended.f index 2621ddff..1841b7f8 100644 --- a/SRC/zla_syrfsx_extended.f +++ b/SRC/zla_syrfsx_extended.f @@ -30,6 +30,14 @@ $ ERRS_N( NRHS, * ), ERRS_C( NRHS, * ) * .. * +* Purpose +* ======= +* +* ZLA_SYRFSX_EXTENDED computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/zla_syrpvgrw.f b/SRC/zla_syrpvgrw.f index 892d216b..bbcd01b3 100644 --- a/SRC/zla_syrpvgrw.f +++ b/SRC/zla_syrpvgrw.f @@ -21,6 +21,14 @@ INTEGER IPIV( * ) * .. * +* Purpose +* ======= +* +* ZLA_SYRPVGRW computes ... . +* +* Arguments +* ========= +* * ===================================================================== * * .. Local Scalars .. diff --git a/SRC/ztgsja.f b/SRC/ztgsja.f index 895aaaf7..1156e3cb 100644 --- a/SRC/ztgsja.f +++ b/SRC/ztgsja.f @@ -144,7 +144,7 @@ * K and L specify the subblocks in the input matrices A and B: * A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,,N-L+1:N) * of A and B, whose GSVD is going to be computed by ZTGSJA. -* See Further details. +* See Further Details. * * A (input/output) COMPLEX*16 array, dimension (LDA,N) * On entry, the M-by-N matrix A. |