diff options
author | julie <julielangou@users.noreply.github.com> | 2011-10-31 22:21:11 +0000 |
---|---|---|
committer | julie <julielangou@users.noreply.github.com> | 2011-10-31 22:21:11 +0000 |
commit | 0d9e213c670ab0e68f17d68251412d53250108e1 (patch) | |
tree | 2bcab1c08b84e327b9be345385e2c31e8a26905a | |
parent | 82901cd3e7bb75c73fc3a17fe7bf922289337f97 (diff) | |
download | lapack-0d9e213c670ab0e68f17d68251412d53250108e1.tar.gz lapack-0d9e213c670ab0e68f17d68251412d53250108e1.tar.bz2 lapack-0d9e213c670ab0e68f17d68251412d53250108e1.zip |
Correct Warning detected during Doxygen Generation.
Now each routine should have the correct list of arguments.
This allowed to detect and fix problems in parameter description of many routines.
468 files changed, 9903 insertions, 5486 deletions
diff --git a/BLAS/SRC/cgbmv.f b/BLAS/SRC/cgbmv.f index aa8d9d8c..01690bb7 100644 --- a/BLAS/SRC/cgbmv.f +++ b/BLAS/SRC/cgbmv.f @@ -44,14 +44,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' y := alpha*A*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y. *> \endverbatim *> @@ -103,8 +100,7 @@ *> are not referenced. *> The following program segment will transfer a band matrix *> from conventional full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> K = KU + 1 - J *> DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL ) diff --git a/BLAS/SRC/cgemm.f b/BLAS/SRC/cgemm.f index daf642d0..b1ba4c58 100644 --- a/BLAS/SRC/cgemm.f +++ b/BLAS/SRC/cgemm.f @@ -46,14 +46,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n', op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't', op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c', op( A ) = A**H. *> \endverbatim *> @@ -62,14 +59,11 @@ *> TRANSB is CHARACTER*1 *> On entry, TRANSB specifies the form of op( B ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'N' or 'n', op( B ) = B. -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'T' or 't', op( B ) = B**T. -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'C' or 'c', op( B ) = B**H. *> \endverbatim *> diff --git a/BLAS/SRC/cgemv.f b/BLAS/SRC/cgemv.f index a341b454..db0564c1 100644 --- a/BLAS/SRC/cgemv.f +++ b/BLAS/SRC/cgemv.f @@ -44,14 +44,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' y := alpha*A*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y. *> \endverbatim *> diff --git a/BLAS/SRC/chbmv.f b/BLAS/SRC/chbmv.f index bd3b69c5..bafb5f12 100644 --- a/BLAS/SRC/chbmv.f +++ b/BLAS/SRC/chbmv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the band matrix A is being supplied as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> being supplied. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> being supplied. *> \endverbatim @@ -86,16 +84,14 @@ *> The following program segment will transfer the upper *> triangular part of a hermitian band matrix from conventional *> full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the hermitian matrix, supplied column by @@ -106,16 +102,14 @@ *> The following program segment will transfer the lower *> triangular part of a hermitian band matrix from conventional *> full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Note that the imaginary parts of the diagonal elements need *> not be set and are assumed to be zero. *> \endverbatim diff --git a/BLAS/SRC/chemm.f b/BLAS/SRC/chemm.f index 9947cb28..2944c649 100644 --- a/BLAS/SRC/chemm.f +++ b/BLAS/SRC/chemm.f @@ -46,11 +46,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether the hermitian matrix A *> appears on the left or right in the operation as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' C := alpha*A*B + beta*C, -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' C := alpha*B*A + beta*C, *> \endverbatim *> @@ -60,12 +58,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the hermitian matrix A is to be *> referenced as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of the *> hermitian matrix is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of the *> hermitian matrix is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/chemv.f b/BLAS/SRC/chemv.f index 85de0631..f93e0c4f 100644 --- a/BLAS/SRC/chemv.f +++ b/BLAS/SRC/chemv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/cher.f b/BLAS/SRC/cher.f index b7ccc0b6..1e74428c 100644 --- a/BLAS/SRC/cher.f +++ b/BLAS/SRC/cher.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim @@ -65,8 +63,10 @@ *> ALPHA is REAL *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim +*> +*> \param[in] X *> \verbatim -*> X COMPLEX array of dimension at least +*> X is COMPLEX array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. diff --git a/BLAS/SRC/cher2.f b/BLAS/SRC/cher2.f index ee6e3a44..9324e3af 100644 --- a/BLAS/SRC/cher2.f +++ b/BLAS/SRC/cher2.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim @@ -65,8 +63,10 @@ *> ALPHA is COMPLEX *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim +*> +*> \param[in] X *> \verbatim -*> X COMPLEX array of dimension at least +*> X is COMPLEX array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. @@ -78,8 +78,10 @@ *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim +*> +*> \param[in] Y *> \verbatim -*> Y COMPLEX array of dimension at least +*> Y is COMPLEX array of dimension at least *> ( 1 + ( n - 1 )*abs( INCY ) ). *> Before entry, the incremented array Y must contain the n *> element vector y. diff --git a/BLAS/SRC/cher2k.f b/BLAS/SRC/cher2k.f index 3a386fc8..9ba1295d 100644 --- a/BLAS/SRC/cher2k.f +++ b/BLAS/SRC/cher2k.f @@ -49,12 +49,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -64,13 +62,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*B**H + *> conjg( alpha )*B*A**H + *> beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' C := alpha*A**H*B + *> conjg( alpha )*B**H*A + *> beta*C. diff --git a/BLAS/SRC/cherk.f b/BLAS/SRC/cherk.f index 66913b6e..addbefb4 100644 --- a/BLAS/SRC/cherk.f +++ b/BLAS/SRC/cherk.f @@ -48,12 +48,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -63,11 +61,9 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*A**H + beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' C := alpha*A**H*A + beta*C. *> \endverbatim *> diff --git a/BLAS/SRC/chpmv.f b/BLAS/SRC/chpmv.f index 857293aa..8128ca6f 100644 --- a/BLAS/SRC/chpmv.f +++ b/BLAS/SRC/chpmv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim diff --git a/BLAS/SRC/chpr.f b/BLAS/SRC/chpr.f index 1cdcf62f..3101ccdc 100644 --- a/BLAS/SRC/chpr.f +++ b/BLAS/SRC/chpr.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim diff --git a/BLAS/SRC/chpr2.f b/BLAS/SRC/chpr2.f index 2a44bb95..d3242110 100644 --- a/BLAS/SRC/chpr2.f +++ b/BLAS/SRC/chpr2.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim @@ -80,8 +78,10 @@ *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. *> \endverbatim +*> +*> \param[in] Y *> \verbatim -*> Y COMPLEX array of dimension at least +*> Y is COMPLEX array of dimension at least *> ( 1 + ( n - 1 )*abs( INCY ) ). *> Before entry, the incremented array Y must contain the n *> element vector y. diff --git a/BLAS/SRC/csymm.f b/BLAS/SRC/csymm.f index 326dcf0d..f229c489 100644 --- a/BLAS/SRC/csymm.f +++ b/BLAS/SRC/csymm.f @@ -46,11 +46,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether the symmetric matrix A *> appears on the left or right in the operation as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' C := alpha*A*B + beta*C, -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' C := alpha*B*A + beta*C, *> \endverbatim *> @@ -60,12 +58,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the symmetric matrix A is to be *> referenced as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of the *> symmetric matrix is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of the *> symmetric matrix is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/csyr2k.f b/BLAS/SRC/csyr2k.f index 0b424b45..d37e6431 100644 --- a/BLAS/SRC/csyr2k.f +++ b/BLAS/SRC/csyr2k.f @@ -48,12 +48,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -63,12 +61,10 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T + *> beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A + *> beta*C. *> \endverbatim @@ -94,8 +90,10 @@ *> ALPHA is COMPLEX *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim +*> +*> \param[in] A *> \verbatim -*> A COMPLEX array of DIMENSION ( LDA, ka ), where ka is +*> A is COMPLEX array of DIMENSION ( LDA, ka ), where ka is *> k when TRANS = 'N' or 'n', and is n otherwise. *> Before entry with TRANS = 'N' or 'n', the leading n by k *> part of the array A must contain the matrix A, otherwise diff --git a/BLAS/SRC/csyrk.f b/BLAS/SRC/csyrk.f index be0a0b93..744e7f33 100644 --- a/BLAS/SRC/csyrk.f +++ b/BLAS/SRC/csyrk.f @@ -48,12 +48,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -63,11 +61,9 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' C := alpha*A**T*A + beta*C. *> \endverbatim *> diff --git a/BLAS/SRC/ctbmv.f b/BLAS/SRC/ctbmv.f index 1a7820e2..18214c21 100644 --- a/BLAS/SRC/ctbmv.f +++ b/BLAS/SRC/ctbmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**H*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim @@ -109,16 +102,14 @@ *> The following program segment will transfer an upper *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the matrix of coefficients, supplied column by @@ -129,16 +120,14 @@ *> The following program segment will transfer a lower *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Note that when DIAG = 'U' or 'u' the elements of the array A *> corresponding to the diagonal elements of the matrix are not *> referenced, but are assumed to be unity. diff --git a/BLAS/SRC/ctbsv.f b/BLAS/SRC/ctbsv.f index f7eb02c5..8a70301d 100644 --- a/BLAS/SRC/ctbsv.f +++ b/BLAS/SRC/ctbsv.f @@ -45,11 +45,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -58,14 +56,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**H*x = b. *> \endverbatim *> @@ -74,11 +69,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim @@ -113,16 +106,14 @@ *> The following program segment will transfer an upper *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the matrix of coefficients, supplied column by @@ -133,16 +124,14 @@ *> The following program segment will transfer a lower *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Note that when DIAG = 'U' or 'u' the elements of the array A *> corresponding to the diagonal elements of the matrix are not *> referenced, but are assumed to be unity. diff --git a/BLAS/SRC/ctpmv.f b/BLAS/SRC/ctpmv.f index d20c624f..ad6e9b34 100644 --- a/BLAS/SRC/ctpmv.f +++ b/BLAS/SRC/ctpmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**H*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/ctpsv.f b/BLAS/SRC/ctpsv.f index 5fba7a90..fd2d0d1d 100644 --- a/BLAS/SRC/ctpsv.f +++ b/BLAS/SRC/ctpsv.f @@ -44,11 +44,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -57,14 +55,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**H*x = b. *> \endverbatim *> @@ -73,11 +68,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/ctrmm.f b/BLAS/SRC/ctrmm.f index 8d95a5e7..28a6d7d3 100644 --- a/BLAS/SRC/ctrmm.f +++ b/BLAS/SRC/ctrmm.f @@ -44,11 +44,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) multiplies B from *> the left or right as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' B := alpha*op( A )*B. -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' B := alpha*B*op( A ). *> \endverbatim *> @@ -57,11 +55,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -70,14 +66,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n' op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't' op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c' op( A ) = A**H. *> \endverbatim *> @@ -86,11 +79,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/ctrmv.f b/BLAS/SRC/ctrmv.f index f432c96f..734bcd0b 100644 --- a/BLAS/SRC/ctrmv.f +++ b/BLAS/SRC/ctrmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**H*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/ctrsm.f b/BLAS/SRC/ctrsm.f index 3fd4635e..93823f02 100644 --- a/BLAS/SRC/ctrsm.f +++ b/BLAS/SRC/ctrsm.f @@ -46,11 +46,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) appears on the left *> or right of X as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' op( A )*X = alpha*B. -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' X*op( A ) = alpha*B. *> \endverbatim *> @@ -59,11 +57,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -72,14 +68,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n' op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't' op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c' op( A ) = A**H. *> \endverbatim *> @@ -88,11 +81,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/ctrsv.f b/BLAS/SRC/ctrsv.f index 52fdb37b..05e7c4e9 100644 --- a/BLAS/SRC/ctrsv.f +++ b/BLAS/SRC/ctrsv.f @@ -44,11 +44,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -57,14 +55,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**H*x = b. *> \endverbatim *> @@ -73,11 +68,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/dgbmv.f b/BLAS/SRC/dgbmv.f index 92dacb42..198b0ab7 100644 --- a/BLAS/SRC/dgbmv.f +++ b/BLAS/SRC/dgbmv.f @@ -42,14 +42,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' y := alpha*A*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y. *> \endverbatim *> @@ -101,8 +98,7 @@ *> are not referenced. *> The following program segment will transfer a band matrix *> from conventional full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> K = KU + 1 - J *> DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL ) diff --git a/BLAS/SRC/dgemm.f b/BLAS/SRC/dgemm.f index 64737822..e8aa6a4b 100644 --- a/BLAS/SRC/dgemm.f +++ b/BLAS/SRC/dgemm.f @@ -46,14 +46,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n', op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't', op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c', op( A ) = A**T. *> \endverbatim *> @@ -62,14 +59,11 @@ *> TRANSB is CHARACTER*1 *> On entry, TRANSB specifies the form of op( B ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'N' or 'n', op( B ) = B. -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'T' or 't', op( B ) = B**T. -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'C' or 'c', op( B ) = B**T. *> \endverbatim *> diff --git a/BLAS/SRC/dgemv.f b/BLAS/SRC/dgemv.f index c428737a..ef42e93f 100644 --- a/BLAS/SRC/dgemv.f +++ b/BLAS/SRC/dgemv.f @@ -42,14 +42,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' y := alpha*A*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y. *> \endverbatim *> diff --git a/BLAS/SRC/dsbmv.f b/BLAS/SRC/dsbmv.f index 09c53e1f..128864f9 100644 --- a/BLAS/SRC/dsbmv.f +++ b/BLAS/SRC/dsbmv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the band matrix A is being supplied as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> being supplied. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> being supplied. *> \endverbatim @@ -86,16 +84,14 @@ *> The following program segment will transfer the upper *> triangular part of a symmetric band matrix from conventional *> full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the symmetric matrix, supplied column by @@ -106,8 +102,7 @@ *> The following program segment will transfer the lower *> triangular part of a symmetric band matrix from conventional *> full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) diff --git a/BLAS/SRC/dsdot.f b/BLAS/SRC/dsdot.f index cb8de30c..a6f4ea88 100644 --- a/BLAS/SRC/dsdot.f +++ b/BLAS/SRC/dsdot.f @@ -70,7 +70,7 @@ *> storage spacing between elements of SY *> \endverbatim *> -*> \param[out] DSDOT +*> \result DSDOT *> \verbatim *> DSDOT is DOUBLE PRECISION *> DSDOT double precision dot product (zero if N.LE.0) diff --git a/BLAS/SRC/dspmv.f b/BLAS/SRC/dspmv.f index b0c0ceda..ddebd55d 100644 --- a/BLAS/SRC/dspmv.f +++ b/BLAS/SRC/dspmv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim diff --git a/BLAS/SRC/dspr.f b/BLAS/SRC/dspr.f index 87fd3bc8..543dce9b 100644 --- a/BLAS/SRC/dspr.f +++ b/BLAS/SRC/dspr.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim diff --git a/BLAS/SRC/dspr2.f b/BLAS/SRC/dspr2.f index 54553ec1..cae156bd 100644 --- a/BLAS/SRC/dspr2.f +++ b/BLAS/SRC/dspr2.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim diff --git a/BLAS/SRC/dsymm.f b/BLAS/SRC/dsymm.f index f3537fa9..3a1710f6 100644 --- a/BLAS/SRC/dsymm.f +++ b/BLAS/SRC/dsymm.f @@ -46,11 +46,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether the symmetric matrix A *> appears on the left or right in the operation as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' C := alpha*A*B + beta*C, -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' C := alpha*B*A + beta*C, *> \endverbatim *> @@ -60,12 +58,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the symmetric matrix A is to be *> referenced as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of the *> symmetric matrix is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of the *> symmetric matrix is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/dsymv.f b/BLAS/SRC/dsymv.f index 5dfc7ea9..f919dbcd 100644 --- a/BLAS/SRC/dsymv.f +++ b/BLAS/SRC/dsymv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/dsyr.f b/BLAS/SRC/dsyr.f index 81a01078..73ed1e51 100644 --- a/BLAS/SRC/dsyr.f +++ b/BLAS/SRC/dsyr.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/dsyr2.f b/BLAS/SRC/dsyr2.f index 7b72a342..f6686944 100644 --- a/BLAS/SRC/dsyr2.f +++ b/BLAS/SRC/dsyr2.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/dsyr2k.f b/BLAS/SRC/dsyr2k.f index 3c2de59a..409f7e31 100644 --- a/BLAS/SRC/dsyr2k.f +++ b/BLAS/SRC/dsyr2k.f @@ -48,12 +48,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -63,16 +61,13 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T + *> beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A + *> beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' C := alpha*A**T*B + alpha*B**T*A + *> beta*C. *> \endverbatim diff --git a/BLAS/SRC/dsyrk.f b/BLAS/SRC/dsyrk.f index df232ff4..73f2a661 100644 --- a/BLAS/SRC/dsyrk.f +++ b/BLAS/SRC/dsyrk.f @@ -48,12 +48,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -63,14 +61,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' C := alpha*A**T*A + beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' C := alpha*A**T*A + beta*C. *> \endverbatim *> diff --git a/BLAS/SRC/dtbmv.f b/BLAS/SRC/dtbmv.f index ad062ca9..2b7ed080 100644 --- a/BLAS/SRC/dtbmv.f +++ b/BLAS/SRC/dtbmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**T*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim @@ -109,16 +102,14 @@ *> The following program segment will transfer an upper *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the matrix of coefficients, supplied column by @@ -129,16 +120,14 @@ *> The following program segment will transfer a lower *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Note that when DIAG = 'U' or 'u' the elements of the array A *> corresponding to the diagonal elements of the matrix are not *> referenced, but are assumed to be unity. diff --git a/BLAS/SRC/dtbsv.f b/BLAS/SRC/dtbsv.f index 9a2b8429..e80fe009 100644 --- a/BLAS/SRC/dtbsv.f +++ b/BLAS/SRC/dtbsv.f @@ -45,11 +45,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -58,14 +56,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**T*x = b. *> \endverbatim *> @@ -74,11 +69,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim @@ -113,16 +106,14 @@ *> The following program segment will transfer an upper *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the matrix of coefficients, supplied column by @@ -133,16 +124,14 @@ *> The following program segment will transfer a lower *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Note that when DIAG = 'U' or 'u' the elements of the array A *> corresponding to the diagonal elements of the matrix are not *> referenced, but are assumed to be unity. diff --git a/BLAS/SRC/dtpmv.f b/BLAS/SRC/dtpmv.f index b11f4dbe..9f643dc7 100644 --- a/BLAS/SRC/dtpmv.f +++ b/BLAS/SRC/dtpmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**T*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/dtpsv.f b/BLAS/SRC/dtpsv.f index bd7c5ec3..937afcca 100644 --- a/BLAS/SRC/dtpsv.f +++ b/BLAS/SRC/dtpsv.f @@ -44,11 +44,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -57,14 +55,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**T*x = b. *> \endverbatim *> @@ -73,11 +68,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/dtrmm.f b/BLAS/SRC/dtrmm.f index 9e4cc226..71a7e0d6 100644 --- a/BLAS/SRC/dtrmm.f +++ b/BLAS/SRC/dtrmm.f @@ -44,11 +44,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) multiplies B from *> the left or right as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' B := alpha*op( A )*B. -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' B := alpha*B*op( A ). *> \endverbatim *> @@ -57,11 +55,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -70,14 +66,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n' op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't' op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c' op( A ) = A**T. *> \endverbatim *> @@ -86,11 +79,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim @@ -116,8 +107,10 @@ *> zero then A is not referenced and B need not be set before *> entry. *> \endverbatim +*> +*> \param[in] A *> \verbatim -*> A DOUBLE PRECISION array of DIMENSION ( LDA, k ), where k is m +*> A is DOUBLE PRECISION array of DIMENSION ( LDA, k ), where k is m *> when SIDE = 'L' or 'l' and is n when SIDE = 'R' or 'r'. *> Before entry with UPLO = 'U' or 'u', the leading k by k *> upper triangular part of the array A must contain the upper diff --git a/BLAS/SRC/dtrmv.f b/BLAS/SRC/dtrmv.f index c4864bf5..7bb9d748 100644 --- a/BLAS/SRC/dtrmv.f +++ b/BLAS/SRC/dtrmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**T*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/dtrsm.f b/BLAS/SRC/dtrsm.f index 3a91fd43..6adb99eb 100644 --- a/BLAS/SRC/dtrsm.f +++ b/BLAS/SRC/dtrsm.f @@ -46,11 +46,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) appears on the left *> or right of X as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' op( A )*X = alpha*B. -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' X*op( A ) = alpha*B. *> \endverbatim *> @@ -59,11 +57,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -72,14 +68,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n' op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't' op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c' op( A ) = A**T. *> \endverbatim *> @@ -88,11 +81,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/dtrsv.f b/BLAS/SRC/dtrsv.f index 4a0845b7..ce82d7de 100644 --- a/BLAS/SRC/dtrsv.f +++ b/BLAS/SRC/dtrsv.f @@ -44,11 +44,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -57,14 +55,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**T*x = b. *> \endverbatim *> @@ -73,11 +68,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim @@ -126,11 +119,9 @@ *> INCX is INTEGER *> On entry, INCX specifies the increment for the elements of *> X. INCX must not be zero. -*> \endverbatim -*> \verbatim +*> *> Level 2 Blas routine. -*> \endverbatim -*> \verbatim +*> *> -- Written on 22-October-1986. *> Jack Dongarra, Argonne National Lab. *> Jeremy Du Croz, Nag Central Office. diff --git a/BLAS/SRC/sgbmv.f b/BLAS/SRC/sgbmv.f index 774dcda0..fde4e37a 100644 --- a/BLAS/SRC/sgbmv.f +++ b/BLAS/SRC/sgbmv.f @@ -42,14 +42,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' y := alpha*A*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y. *> \endverbatim *> @@ -101,8 +98,7 @@ *> are not referenced. *> The following program segment will transfer a band matrix *> from conventional full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> K = KU + 1 - J *> DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL ) diff --git a/BLAS/SRC/sgemm.f b/BLAS/SRC/sgemm.f index 8ef99eac..7708dc92 100644 --- a/BLAS/SRC/sgemm.f +++ b/BLAS/SRC/sgemm.f @@ -46,14 +46,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n', op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't', op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c', op( A ) = A**T. *> \endverbatim *> @@ -62,14 +59,11 @@ *> TRANSB is CHARACTER*1 *> On entry, TRANSB specifies the form of op( B ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'N' or 'n', op( B ) = B. -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'T' or 't', op( B ) = B**T. -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'C' or 'c', op( B ) = B**T. *> \endverbatim *> diff --git a/BLAS/SRC/sgemv.f b/BLAS/SRC/sgemv.f index 315a6822..ba1d3fac 100644 --- a/BLAS/SRC/sgemv.f +++ b/BLAS/SRC/sgemv.f @@ -42,14 +42,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' y := alpha*A*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y. *> \endverbatim *> diff --git a/BLAS/SRC/sger.f b/BLAS/SRC/sger.f index 46ff76fb..c34a2a91 100644 --- a/BLAS/SRC/sger.f +++ b/BLAS/SRC/sger.f @@ -55,8 +55,10 @@ *> ALPHA is REAL *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim +*> +*> \param[in] X *> \verbatim -*> X REAL array of dimension at least +*> X is REAL array of dimension at least *> ( 1 + ( m - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the m *> element vector x. diff --git a/BLAS/SRC/ssbmv.f b/BLAS/SRC/ssbmv.f index 82f76ceb..c91cb18d 100644 --- a/BLAS/SRC/ssbmv.f +++ b/BLAS/SRC/ssbmv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the band matrix A is being supplied as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> being supplied. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> being supplied. *> \endverbatim @@ -86,16 +84,14 @@ *> The following program segment will transfer the upper *> triangular part of a symmetric band matrix from conventional *> full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the symmetric matrix, supplied column by @@ -106,8 +102,7 @@ *> The following program segment will transfer the lower *> triangular part of a symmetric band matrix from conventional *> full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) diff --git a/BLAS/SRC/sspmv.f b/BLAS/SRC/sspmv.f index e2485a27..393700a4 100644 --- a/BLAS/SRC/sspmv.f +++ b/BLAS/SRC/sspmv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim diff --git a/BLAS/SRC/sspr.f b/BLAS/SRC/sspr.f index 55b120e8..4088b3f0 100644 --- a/BLAS/SRC/sspr.f +++ b/BLAS/SRC/sspr.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim diff --git a/BLAS/SRC/sspr2.f b/BLAS/SRC/sspr2.f index 6450dbcc..38466916 100644 --- a/BLAS/SRC/sspr2.f +++ b/BLAS/SRC/sspr2.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim @@ -65,8 +63,10 @@ *> ALPHA is REAL *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim +*> +*> \param[in] X *> \verbatim -*> X REAL array of dimension at least +*> X is REAL array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. diff --git a/BLAS/SRC/ssymm.f b/BLAS/SRC/ssymm.f index 2253c537..0fc8fc5c 100644 --- a/BLAS/SRC/ssymm.f +++ b/BLAS/SRC/ssymm.f @@ -46,11 +46,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether the symmetric matrix A *> appears on the left or right in the operation as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' C := alpha*A*B + beta*C, -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' C := alpha*B*A + beta*C, *> \endverbatim *> @@ -60,12 +58,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the symmetric matrix A is to be *> referenced as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of the *> symmetric matrix is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of the *> symmetric matrix is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/ssymv.f b/BLAS/SRC/ssymv.f index 6660a329..362a8f40 100644 --- a/BLAS/SRC/ssymv.f +++ b/BLAS/SRC/ssymv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/ssyr.f b/BLAS/SRC/ssyr.f index 05c49151..96fce78e 100644 --- a/BLAS/SRC/ssyr.f +++ b/BLAS/SRC/ssyr.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/ssyr2.f b/BLAS/SRC/ssyr2.f index b96e2184..88305522 100644 --- a/BLAS/SRC/ssyr2.f +++ b/BLAS/SRC/ssyr2.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim @@ -65,8 +63,10 @@ *> ALPHA is REAL *> On entry, ALPHA specifies the scalar alpha. *> \endverbatim +*> +*> \param[in] X *> \verbatim -*> X REAL array of dimension at least +*> X is REAL array of dimension at least *> ( 1 + ( n - 1 )*abs( INCX ) ). *> Before entry, the incremented array X must contain the n *> element vector x. diff --git a/BLAS/SRC/ssyr2k.f b/BLAS/SRC/ssyr2k.f index a0bfee72..a7968577 100644 --- a/BLAS/SRC/ssyr2k.f +++ b/BLAS/SRC/ssyr2k.f @@ -48,12 +48,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -63,16 +61,13 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T + *> beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A + *> beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' C := alpha*A**T*B + alpha*B**T*A + *> beta*C. *> \endverbatim diff --git a/BLAS/SRC/ssyrk.f b/BLAS/SRC/ssyrk.f index 9d294f13..b38025b4 100644 --- a/BLAS/SRC/ssyrk.f +++ b/BLAS/SRC/ssyrk.f @@ -48,12 +48,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -63,14 +61,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' C := alpha*A**T*A + beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' C := alpha*A**T*A + beta*C. *> \endverbatim *> diff --git a/BLAS/SRC/stbmv.f b/BLAS/SRC/stbmv.f index 5c1190a8..ebd5f6f3 100644 --- a/BLAS/SRC/stbmv.f +++ b/BLAS/SRC/stbmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**T*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim @@ -109,16 +102,14 @@ *> The following program segment will transfer an upper *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the matrix of coefficients, supplied column by @@ -129,16 +120,14 @@ *> The following program segment will transfer a lower *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Note that when DIAG = 'U' or 'u' the elements of the array A *> corresponding to the diagonal elements of the matrix are not *> referenced, but are assumed to be unity. diff --git a/BLAS/SRC/stbsv.f b/BLAS/SRC/stbsv.f index 2bdb4824..f4e2688c 100644 --- a/BLAS/SRC/stbsv.f +++ b/BLAS/SRC/stbsv.f @@ -45,11 +45,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -58,14 +56,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**T*x = b. *> \endverbatim *> @@ -74,11 +69,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim @@ -113,16 +106,14 @@ *> The following program segment will transfer an upper *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the matrix of coefficients, supplied column by @@ -133,16 +124,14 @@ *> The following program segment will transfer a lower *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Note that when DIAG = 'U' or 'u' the elements of the array A *> corresponding to the diagonal elements of the matrix are not *> referenced, but are assumed to be unity. diff --git a/BLAS/SRC/stpmv.f b/BLAS/SRC/stpmv.f index a32cf73f..5dac03aa 100644 --- a/BLAS/SRC/stpmv.f +++ b/BLAS/SRC/stpmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**T*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/stpsv.f b/BLAS/SRC/stpsv.f index d54a5da4..d615193b 100644 --- a/BLAS/SRC/stpsv.f +++ b/BLAS/SRC/stpsv.f @@ -44,11 +44,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -57,14 +55,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**T*x = b. *> \endverbatim *> @@ -73,11 +68,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/strmm.f b/BLAS/SRC/strmm.f index c366891e..2a000630 100644 --- a/BLAS/SRC/strmm.f +++ b/BLAS/SRC/strmm.f @@ -44,11 +44,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) multiplies B from *> the left or right as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' B := alpha*op( A )*B. -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' B := alpha*B*op( A ). *> \endverbatim *> @@ -57,11 +55,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -70,14 +66,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n' op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't' op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c' op( A ) = A**T. *> \endverbatim *> @@ -86,11 +79,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/strmv.f b/BLAS/SRC/strmv.f index dcfa15d1..f3581cd5 100644 --- a/BLAS/SRC/strmv.f +++ b/BLAS/SRC/strmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**T*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/strsm.f b/BLAS/SRC/strsm.f index 0568d971..48f7dcf0 100644 --- a/BLAS/SRC/strsm.f +++ b/BLAS/SRC/strsm.f @@ -46,11 +46,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) appears on the left *> or right of X as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' op( A )*X = alpha*B. -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' X*op( A ) = alpha*B. *> \endverbatim *> @@ -59,11 +57,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -72,14 +68,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n' op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't' op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c' op( A ) = A**T. *> \endverbatim *> @@ -88,11 +81,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/strsv.f b/BLAS/SRC/strsv.f index c4b3f546..61a54c63 100644 --- a/BLAS/SRC/strsv.f +++ b/BLAS/SRC/strsv.f @@ -44,11 +44,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -57,14 +55,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**T*x = b. *> \endverbatim *> @@ -73,11 +68,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/zgbmv.f b/BLAS/SRC/zgbmv.f index 216cb5b8..77aff8d0 100644 --- a/BLAS/SRC/zgbmv.f +++ b/BLAS/SRC/zgbmv.f @@ -44,14 +44,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' y := alpha*A*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y. *> \endverbatim *> @@ -103,8 +100,7 @@ *> are not referenced. *> The following program segment will transfer a band matrix *> from conventional full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> K = KU + 1 - J *> DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL ) diff --git a/BLAS/SRC/zgemm.f b/BLAS/SRC/zgemm.f index 6aaf515e..6f7fe980 100644 --- a/BLAS/SRC/zgemm.f +++ b/BLAS/SRC/zgemm.f @@ -46,14 +46,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n', op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't', op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c', op( A ) = A**H. *> \endverbatim *> @@ -62,14 +59,11 @@ *> TRANSB is CHARACTER*1 *> On entry, TRANSB specifies the form of op( B ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'N' or 'n', op( B ) = B. -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'T' or 't', op( B ) = B**T. -*> \endverbatim -*> \verbatim +*> *> TRANSB = 'C' or 'c', op( B ) = B**H. *> \endverbatim *> diff --git a/BLAS/SRC/zgemv.f b/BLAS/SRC/zgemv.f index 9eaf4450..b3ffbb84 100644 --- a/BLAS/SRC/zgemv.f +++ b/BLAS/SRC/zgemv.f @@ -44,14 +44,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' y := alpha*A*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y. *> \endverbatim *> diff --git a/BLAS/SRC/zhbmv.f b/BLAS/SRC/zhbmv.f index 0adaec41..14f4fa87 100644 --- a/BLAS/SRC/zhbmv.f +++ b/BLAS/SRC/zhbmv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the band matrix A is being supplied as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> being supplied. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> being supplied. *> \endverbatim @@ -86,16 +84,14 @@ *> The following program segment will transfer the upper *> triangular part of a hermitian band matrix from conventional *> full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the hermitian matrix, supplied column by @@ -106,16 +102,14 @@ *> The following program segment will transfer the lower *> triangular part of a hermitian band matrix from conventional *> full matrix storage to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Note that the imaginary parts of the diagonal elements need *> not be set and are assumed to be zero. *> \endverbatim diff --git a/BLAS/SRC/zhemm.f b/BLAS/SRC/zhemm.f index 8d7218c3..608138c3 100644 --- a/BLAS/SRC/zhemm.f +++ b/BLAS/SRC/zhemm.f @@ -46,11 +46,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether the hermitian matrix A *> appears on the left or right in the operation as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' C := alpha*A*B + beta*C, -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' C := alpha*B*A + beta*C, *> \endverbatim *> @@ -60,12 +58,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the hermitian matrix A is to be *> referenced as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of the *> hermitian matrix is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of the *> hermitian matrix is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/zhemv.f b/BLAS/SRC/zhemv.f index c566a1fe..baa29300 100644 --- a/BLAS/SRC/zhemv.f +++ b/BLAS/SRC/zhemv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/zher.f b/BLAS/SRC/zher.f index b2af0227..5f684821 100644 --- a/BLAS/SRC/zher.f +++ b/BLAS/SRC/zher.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/zher2.f b/BLAS/SRC/zher2.f index 0c4f94d9..1b98c63a 100644 --- a/BLAS/SRC/zher2.f +++ b/BLAS/SRC/zher2.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array A is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of A *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of A *> is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/zher2k.f b/BLAS/SRC/zher2k.f index bfcf27fd..b577e1b9 100644 --- a/BLAS/SRC/zher2k.f +++ b/BLAS/SRC/zher2k.f @@ -49,12 +49,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -64,13 +62,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*B**H + *> conjg( alpha )*B*A**H + *> beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' C := alpha*A**H*B + *> conjg( alpha )*B**H*A + *> beta*C. diff --git a/BLAS/SRC/zherk.f b/BLAS/SRC/zherk.f index f1795c40..cd4fed59 100644 --- a/BLAS/SRC/zherk.f +++ b/BLAS/SRC/zherk.f @@ -48,12 +48,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -63,11 +61,9 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*A**H + beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' C := alpha*A**H*A + beta*C. *> \endverbatim *> diff --git a/BLAS/SRC/zhpmv.f b/BLAS/SRC/zhpmv.f index 2304ed87..c81456f0 100644 --- a/BLAS/SRC/zhpmv.f +++ b/BLAS/SRC/zhpmv.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim diff --git a/BLAS/SRC/zhpr.f b/BLAS/SRC/zhpr.f index d80e359f..0b0bd68c 100644 --- a/BLAS/SRC/zhpr.f +++ b/BLAS/SRC/zhpr.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim diff --git a/BLAS/SRC/zhpr2.f b/BLAS/SRC/zhpr2.f index 0d0c4ea5..f160418b 100644 --- a/BLAS/SRC/zhpr2.f +++ b/BLAS/SRC/zhpr2.f @@ -43,12 +43,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the matrix A is supplied in the packed *> array AP as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' The upper triangular part of A is *> supplied in AP. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' The lower triangular part of A is *> supplied in AP. *> \endverbatim diff --git a/BLAS/SRC/zsymm.f b/BLAS/SRC/zsymm.f index 6ceda01d..57e70208 100644 --- a/BLAS/SRC/zsymm.f +++ b/BLAS/SRC/zsymm.f @@ -46,11 +46,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether the symmetric matrix A *> appears on the left or right in the operation as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' C := alpha*A*B + beta*C, -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' C := alpha*B*A + beta*C, *> \endverbatim *> @@ -60,12 +58,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the symmetric matrix A is to be *> referenced as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of the *> symmetric matrix is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of the *> symmetric matrix is to be referenced. *> \endverbatim diff --git a/BLAS/SRC/zsyr2k.f b/BLAS/SRC/zsyr2k.f index 898febce..5f88db42 100644 --- a/BLAS/SRC/zsyr2k.f +++ b/BLAS/SRC/zsyr2k.f @@ -48,12 +48,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -63,12 +61,10 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T + *> beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A + *> beta*C. *> \endverbatim diff --git a/BLAS/SRC/zsyrk.f b/BLAS/SRC/zsyrk.f index db6d567a..8508988b 100644 --- a/BLAS/SRC/zsyrk.f +++ b/BLAS/SRC/zsyrk.f @@ -48,12 +48,10 @@ *> On entry, UPLO specifies whether the upper or lower *> triangular part of the array C is to be referenced as *> follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' Only the upper triangular part of C *> is to be referenced. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' Only the lower triangular part of C *> is to be referenced. *> \endverbatim @@ -63,11 +61,9 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' C := alpha*A**T*A + beta*C. *> \endverbatim *> diff --git a/BLAS/SRC/ztbmv.f b/BLAS/SRC/ztbmv.f index 781ac531..690af3c6 100644 --- a/BLAS/SRC/ztbmv.f +++ b/BLAS/SRC/ztbmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**H*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim @@ -109,16 +102,14 @@ *> The following program segment will transfer an upper *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the matrix of coefficients, supplied column by @@ -129,16 +120,14 @@ *> The following program segment will transfer a lower *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Note that when DIAG = 'U' or 'u' the elements of the array A *> corresponding to the diagonal elements of the matrix are not *> referenced, but are assumed to be unity. diff --git a/BLAS/SRC/ztbsv.f b/BLAS/SRC/ztbsv.f index b4828146..7a7b02c2 100644 --- a/BLAS/SRC/ztbsv.f +++ b/BLAS/SRC/ztbsv.f @@ -45,11 +45,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -58,14 +56,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**H*x = b. *> \endverbatim *> @@ -74,11 +69,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim @@ -113,16 +106,14 @@ *> The following program segment will transfer an upper *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = K + 1 - J *> DO 10, I = MAX( 1, J - K ), J *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 ) *> by n part of the array A must contain the lower triangular *> band part of the matrix of coefficients, supplied column by @@ -133,16 +124,14 @@ *> The following program segment will transfer a lower *> triangular band matrix from conventional full matrix storage *> to band storage: -*> \endverbatim -*> \verbatim +*> *> DO 20, J = 1, N *> M = 1 - J *> DO 10, I = J, MIN( N, J + K ) *> A( M + I, J ) = matrix( I, J ) *> 10 CONTINUE *> 20 CONTINUE -*> \endverbatim -*> \verbatim +*> *> Note that when DIAG = 'U' or 'u' the elements of the array A *> corresponding to the diagonal elements of the matrix are not *> referenced, but are assumed to be unity. diff --git a/BLAS/SRC/ztpmv.f b/BLAS/SRC/ztpmv.f index d4f71a47..d5d8da90 100644 --- a/BLAS/SRC/ztpmv.f +++ b/BLAS/SRC/ztpmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**H*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/ztpsv.f b/BLAS/SRC/ztpsv.f index e12c1e9c..94463428 100644 --- a/BLAS/SRC/ztpsv.f +++ b/BLAS/SRC/ztpsv.f @@ -44,11 +44,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -57,14 +55,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**H*x = b. *> \endverbatim *> @@ -73,11 +68,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/ztrmm.f b/BLAS/SRC/ztrmm.f index a54a53c1..16d6c95d 100644 --- a/BLAS/SRC/ztrmm.f +++ b/BLAS/SRC/ztrmm.f @@ -44,11 +44,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) multiplies B from *> the left or right as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' B := alpha*op( A )*B. -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' B := alpha*B*op( A ). *> \endverbatim *> @@ -57,11 +55,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -70,14 +66,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n' op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't' op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c' op( A ) = A**H. *> \endverbatim *> @@ -86,11 +79,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/ztrmv.f b/BLAS/SRC/ztrmv.f index 2c491498..ae8c40f6 100644 --- a/BLAS/SRC/ztrmv.f +++ b/BLAS/SRC/ztrmv.f @@ -41,11 +41,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -54,14 +52,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the operation to be performed as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' x := A*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' x := A**T*x. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' x := A**H*x. *> \endverbatim *> @@ -70,11 +65,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/ztrsm.f b/BLAS/SRC/ztrsm.f index fae9928a..f51fd2ab 100644 --- a/BLAS/SRC/ztrsm.f +++ b/BLAS/SRC/ztrsm.f @@ -46,11 +46,9 @@ *> SIDE is CHARACTER*1 *> On entry, SIDE specifies whether op( A ) appears on the left *> or right of X as follows: -*> \endverbatim -*> \verbatim +*> *> SIDE = 'L' or 'l' op( A )*X = alpha*B. -*> \endverbatim -*> \verbatim +*> *> SIDE = 'R' or 'r' X*op( A ) = alpha*B. *> \endverbatim *> @@ -59,11 +57,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix A is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -72,14 +68,11 @@ *> TRANSA is CHARACTER*1 *> On entry, TRANSA specifies the form of op( A ) to be used in *> the matrix multiplication as follows: -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'N' or 'n' op( A ) = A. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'T' or 't' op( A ) = A**T. -*> \endverbatim -*> \verbatim +*> *> TRANSA = 'C' or 'c' op( A ) = A**H. *> \endverbatim *> @@ -88,11 +81,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit triangular *> as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/BLAS/SRC/ztrsv.f b/BLAS/SRC/ztrsv.f index 3696075b..8270da1d 100644 --- a/BLAS/SRC/ztrsv.f +++ b/BLAS/SRC/ztrsv.f @@ -44,11 +44,9 @@ *> UPLO is CHARACTER*1 *> On entry, UPLO specifies whether the matrix is an upper or *> lower triangular matrix as follows: -*> \endverbatim -*> \verbatim +*> *> UPLO = 'U' or 'u' A is an upper triangular matrix. -*> \endverbatim -*> \verbatim +*> *> UPLO = 'L' or 'l' A is a lower triangular matrix. *> \endverbatim *> @@ -57,14 +55,11 @@ *> TRANS is CHARACTER*1 *> On entry, TRANS specifies the equations to be solved as *> follows: -*> \endverbatim -*> \verbatim +*> *> TRANS = 'N' or 'n' A*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'T' or 't' A**T*x = b. -*> \endverbatim -*> \verbatim +*> *> TRANS = 'C' or 'c' A**H*x = b. *> \endverbatim *> @@ -73,11 +68,9 @@ *> DIAG is CHARACTER*1 *> On entry, DIAG specifies whether or not A is unit *> triangular as follows: -*> \endverbatim -*> \verbatim +*> *> DIAG = 'U' or 'u' A is assumed to be unit triangular. -*> \endverbatim -*> \verbatim +*> *> DIAG = 'N' or 'n' A is not assumed to be unit *> triangular. *> \endverbatim diff --git a/DOCS/Doxyfile b/DOCS/Doxyfile index 9eef1d8a..06c59408 100644 --- a/DOCS/Doxyfile +++ b/DOCS/Doxyfile @@ -45,7 +45,7 @@ PROJECT_BRIEF = "LAPACK: Linear Algebra PACKage" # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. -PROJECT_LOGO = +PROJECT_LOGO = DOCS/lapack.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. @@ -193,7 +193,8 @@ TAB_SIZE = 8 # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -ALIASES = +ALIASES = "purpose=\details \b Purpose" +#ALIASES += "FurtherDetails=\details \b Further \b Details" # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. @@ -617,7 +618,7 @@ WARN_FORMAT = "$file:$line: $text" # and error messages should be written. If left blank the output is written # to stderr. -WARN_LOGFILE = +WARN_LOGFILE = output_err #--------------------------------------------------------------------------- # configuration options related to the input files @@ -660,7 +661,15 @@ RECURSIVE = YES # subdirectory from a directory tree whose root is specified with the INPUT tag. # Note that relative paths are relative to directory from which doxygen is run. -EXCLUDE = CMAKE +EXCLUDE = CMAKE \ + DOCS \ + .svn \ + SRC/.svn \ + INSTALL/.svn \ + TESTING/.svn \ + TESTING/EIG/.svn \ + TESTING/MATGEN/.svn \ + TESTING/LIN/.svn \ # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded @@ -1346,7 +1355,7 @@ MAN_EXTENSION = .3 # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. -MAN_LINKS = NO +MAN_LINKS = YES #--------------------------------------------------------------------------- # configuration options related to the XML output @@ -1677,7 +1686,7 @@ DIRECTORY_GRAPH = YES # HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible in IE 9+ (other browsers do not have this requirement). -DOT_IMAGE_FORMAT = png +DOT_IMAGE_FORMAT = svg # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to # enable generation of interactive SVG images that allow zooming and panning. diff --git a/INSTALL/dlamchf77.f b/INSTALL/dlamchf77.f index 885ef1ec..5c848214 100644 --- a/INSTALL/dlamchf77.f +++ b/INSTALL/dlamchf77.f @@ -192,7 +192,7 @@ *> DLAMC1 determines the machine parameters given by BETA, T, RND, and *> IEEE1. *> -*>\verbatim +*>\endverbatim *> *> \param[out] BETA *> \verbatim @@ -417,11 +417,7 @@ *> \param[out] EPS *> \verbatim *> The smallest positive number such that -*> \endverbatim -*> \verbatim *> fl( 1.0 - EPS ) .LT. 1.0, -*> \endverbatim -*> \verbatim *> where fl denotes the computed value. *> \endverbatim *> diff --git a/INSTALL/slamchf77.f b/INSTALL/slamchf77.f index 7d3c01b2..71baea2a 100644 --- a/INSTALL/slamchf77.f +++ b/INSTALL/slamchf77.f @@ -198,7 +198,7 @@ *> SLAMC1 determines the machine parameters given by BETA, T, RND, and *> IEEE1. *> -*>\verbatim +*>\endverbatim *> *> \param[out] BETA *> \verbatim @@ -423,11 +423,7 @@ *> \param[out] EPS *> \verbatim *> The smallest positive number such that -*> \endverbatim -*> \verbatim *> fl( 1.0 - EPS ) .LT. 1.0, -*> \endverbatim -*> \verbatim *> where fl denotes the computed value. *> \endverbatim *> diff --git a/SRC/cbbcsd.f b/SRC/cbbcsd.f index 18568579..410d6d2d 100644 --- a/SRC/cbbcsd.f +++ b/SRC/cbbcsd.f @@ -236,6 +236,40 @@ *> partially reduced top-right block. *> \endverbatim *> +*> \param[out] B21D +*> \verbatim +*> B21D is REAL array, dimension (Q) +*> When CBBCSD converges, B21D contains the negative sines of +*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then +*> B21D contains the diagonal of the partially reduced bottom-left +*> block. +*> \endverbatim +*> +*> \param[out] B21E +*> \verbatim +*> B21E is REAL array, dimension (Q-1) +*> When CBBCSD converges, B21E contains zeros. If CBBCSD fails +*> to converge, then B21E contains the subdiagonal of the +*> partially reduced bottom-left block. +*> \endverbatim +*> +*> \param[out] B22D +*> \verbatim +*> B22D is REAL array, dimension (Q) +*> When CBBCSD converges, B22D contains the negative sines of +*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then +*> B22D contains the diagonal of the partially reduced bottom-right +*> block. +*> \endverbatim +*> +*> \param[out] B22E +*> \verbatim +*> B22E is REAL array, dimension (Q-1) +*> When CBBCSD converges, B22E contains zeros. If CBBCSD fails +*> to converge, then B22E contains the subdiagonal of the +*> partially reduced bottom-right block. +*> \endverbatim +*> *> \param[out] RWORK *> \verbatim *> RWORK is REAL array, dimension (MAX(1,LWORK)) diff --git a/SRC/cgbsv.f b/SRC/cgbsv.f index 3feb6765..fa558b96 100644 --- a/SRC/cgbsv.f +++ b/SRC/cgbsv.f @@ -1,4 +1,4 @@ -*> \brief <b> CGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> +*> \brief <b> CGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> (simple driver) * * =========== DOCUMENTATION =========== * diff --git a/SRC/cgebal.f b/SRC/cgebal.f index 045bd138..a684a4b3 100644 --- a/SRC/cgebal.f +++ b/SRC/cgebal.f @@ -65,37 +65,36 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the input matrix A. +*> On exit, A is overwritten by the balanced matrix. +*> If JOB = 'N', A is not referenced. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> ILO (output) INTEGER -*> -*> IHI (output) INTEGER +*> \param[out] ILO +*> \verbatim +*> ILO is INTEGER +*> \endverbatim +*> \param[out] IHI +*> \verbatim +*> IHI is INTEGER *> ILO and IHI are set to integers such that on exit *> A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I = IHI+1,...,N. *> If JOB = 'N' or 'S', ILO = 1 and IHI = N. +*> \endverbatim *> -*> SCALE (output) REAL array, dimension (N) +*> \param[out] SCALE +*> \verbatim +*> SCALE is REAL array, dimension (N) *> Details of the permutations and scaling factors applied to *> A. If P(j) is the index of the row and column interchanged *> with row and column j and D(j) is the scaling factor @@ -105,11 +104,33 @@ *> = P(j) for j = IHI+1,...,N. *> The order in which the interchanges are made is N to IHI+1, *> then 1 to ILO-1. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The permutations consist of row and column interchanges which put *> the matrix in the form diff --git a/SRC/cgebd2.f b/SRC/cgebd2.f index 1b47e91b..12453e55 100644 --- a/SRC/cgebd2.f +++ b/SRC/cgebd2.f @@ -54,52 +54,94 @@ *> The number of columns in the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the m by n general matrix to be reduced. +*> On exit, +*> if m >= n, the diagonal and the first superdiagonal are +*> overwritten with the upper bidiagonal matrix B; the +*> elements below the diagonal, with the array TAUQ, represent +*> the unitary matrix Q as a product of elementary +*> reflectors, and the elements above the first superdiagonal, +*> with the array TAUP, represent the unitary matrix P as +*> a product of elementary reflectors; +*> if m < n, the diagonal and the first subdiagonal are +*> overwritten with the lower bidiagonal matrix B; the +*> elements below the first subdiagonal, with the array TAUQ, +*> represent the unitary matrix Q as a product of +*> elementary reflectors, and the elements above the diagonal, +*> with the array TAUP, represent the unitary matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) REAL array, dimension (min(M,N)) +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (min(M,N)) *> The diagonal elements of the bidiagonal matrix B: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) REAL array, dimension (min(M,N)-1) +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (min(M,N)-1) *> The off-diagonal elements of the bidiagonal matrix B: *> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1; *> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1. +*> \endverbatim *> -*> TAUQ (output) COMPLEX array dimension (min(M,N)) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is COMPLEX array dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) COMPLEX array, dimension (min(M,N)) +*> \param[out] TAUP +*> \verbatim +*> TAUP is COMPLEX array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix P. See Further Details. +*> \endverbatim *> -*> WORK (workspace) COMPLEX array, dimension (max(M,N)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (max(M,N)) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexGEcomputational +* @precisions normal c -> s d z +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/cgebrd.f b/SRC/cgebrd.f index 5368f1fd..e80f8077 100644 --- a/SRC/cgebrd.f +++ b/SRC/cgebrd.f @@ -56,50 +56,72 @@ *> The number of columns in the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the M-by-N general matrix to be reduced. +*> On exit, +*> if m >= n, the diagonal and the first superdiagonal are +*> overwritten with the upper bidiagonal matrix B; the +*> elements below the diagonal, with the array TAUQ, represent +*> the unitary matrix Q as a product of elementary +*> reflectors, and the elements above the first superdiagonal, +*> with the array TAUP, represent the unitary matrix P as +*> a product of elementary reflectors; +*> if m < n, the diagonal and the first subdiagonal are +*> overwritten with the lower bidiagonal matrix B; the +*> elements below the first subdiagonal, with the array TAUQ, +*> represent the unitary matrix Q as a product of +*> elementary reflectors, and the elements above the diagonal, +*> with the array TAUP, represent the unitary matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) REAL array, dimension (min(M,N)) +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (min(M,N)) *> The diagonal elements of the bidiagonal matrix B: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) REAL array, dimension (min(M,N)-1) +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (min(M,N)-1) *> The off-diagonal elements of the bidiagonal matrix B: *> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1; *> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1. +*> \endverbatim *> -*> TAUQ (output) COMPLEX array dimension (min(M,N)) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is COMPLEX array dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) COMPLEX array, dimension (min(M,N)) +*> \param[out] TAUP +*> \verbatim +*> TAUP is COMPLEX array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix P. See Further Details. +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,M,N). *> For optimum performance LWORK >= (M+N)*NB, where NB *> is the optimal blocksize. @@ -108,11 +130,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/cgees.f b/SRC/cgees.f index 3b5e96be..4d7de6f7 100644 --- a/SRC/cgees.f +++ b/SRC/cgees.f @@ -47,7 +47,7 @@ *> Schur form so that selected eigenvalues are at the top left. *> The leading columns of Z then form an orthonormal basis for the *> invariant subspace corresponding to the selected eigenvalues. - +*> *> A complex matrix is in Schur form if it is upper triangular. *> *>\endverbatim diff --git a/SRC/cgehd2.f b/SRC/cgehd2.f index 96ec3ca7..c6cf9e6e 100644 --- a/SRC/cgehd2.f +++ b/SRC/cgehd2.f @@ -45,48 +45,76 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] ILO +*> \verbatim +*> ILO is INTEGER +*> \endverbatim +*> +*> \param[in] IHI *> \verbatim -* set to 1 and N respectively. See Further Details. +*> IHI is INTEGER +*> +*> It is assumed that A is already upper triangular in rows +*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally +*> set by a previous call to CGEBAL; otherwise they should be +*> set to 1 and N respectively. See Further Details. *> 1 <= ILO <= IHI <= max(1,N). +*> \endverbatim *> -*> A (input/output) COMPLEX array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N) *> On entry, the n by n general matrix to be reduced. *> On exit, the upper triangle and the first subdiagonal of A *> are overwritten with the upper Hessenberg matrix H, and the *> elements below the first subdiagonal, with the array TAU, *> represent the unitary matrix Q as a product of elementary *> reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> TAU (output) COMPLEX array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace) COMPLEX array, dimension (N) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of (ihi-ilo) elementary *> reflectors diff --git a/SRC/cgehrd.f b/SRC/cgehrd.f index dcda32b4..19bcf5ad 100644 --- a/SRC/cgehrd.f +++ b/SRC/cgehrd.f @@ -45,60 +45,92 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] ILO *> \verbatim -* set to 1 and N respectively. See Further Details. +*> ILO is INTEGER +*> \endverbatim +*> +*> \param[in] IHI +*> \verbatim +*> IHI is INTEGER +*> +*> It is assumed that A is already upper triangular in rows +*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally +*> set by a previous call to CGEBAL; otherwise they should be +*> set to 1 and N respectively. See Further Details. *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. +*> \endverbatim *> -*> A (input/output) COMPLEX array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N) *> On entry, the N-by-N general matrix to be reduced. *> On exit, the upper triangle and the first subdiagonal of A *> are overwritten with the upper Hessenberg matrix H, and the *> elements below the first subdiagonal, with the array TAU, *> represent the unitary matrix Q as a product of elementary *> reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> TAU (output) COMPLEX array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to *> zero. +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX array, dimension (LWORK) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (LWORK) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. -*> +*> \endverbatim +*> \verbatim *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of (ihi-ilo) elementary *> reflectors diff --git a/SRC/cgelq2.f b/SRC/cgelq2.f index 258cfaa9..455bc6cf 100644 --- a/SRC/cgelq2.f +++ b/SRC/cgelq2.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and below the diagonal of the array +*> contain the m by min(m,n) lower trapezoidal matrix L (L is +*> lower triangular if m <= n); the elements above the diagonal, +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (M) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) COMPLEX array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) COMPLEX array, dimension (M) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/cgelqf.f b/SRC/cgelqf.f index 8aa54eba..e6addc75 100644 --- a/SRC/cgelqf.f +++ b/SRC/cgelqf.f @@ -51,50 +51,75 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* product of elementary reflectors (see Further Details). +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, the elements on and below the diagonal of the array +*> contain the m-by-min(m,n) lower trapezoidal matrix L (L is +*> lower triangular if m <= n); the elements above the diagonal, +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) COMPLEX array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,M). *> For optimum performance LWORK >= M*NB, where NB is the *> optimal blocksize. -*> +*> \endverbatim +*> \verbatim *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/cgeql2.f b/SRC/cgeql2.f index 76b2d081..bc4d5d3a 100644 --- a/SRC/cgeql2.f +++ b/SRC/cgeql2.f @@ -51,6 +51,44 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, if m >= n, the lower triangle of the subarray +*> A(m-n+1:m,1:n) contains the n by n lower triangular matrix L; +*> if m <= n, the elements on and below the (n-m)-th +*> superdiagonal contain the m by n lower trapezoidal matrix L; +*> the remaining elements, with the array TAU, represent the +*> unitary matrix Q as a product of elementary reflectors +*> (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +107,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) COMPLEX array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) COMPLEX array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/cgeqlf.f b/SRC/cgeqlf.f index 91949edc..6ae4a4f9 100644 --- a/SRC/cgeqlf.f +++ b/SRC/cgeqlf.f @@ -51,50 +51,78 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* (see Further Details). +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, +*> if m >= n, the lower triangle of the subarray +*> A(m-n+1:m,1:n) contains the N-by-N lower triangular matrix L; +*> if m <= n, the elements on and below the (n-m)-th +*> superdiagonal contain the M-by-N lower trapezoidal matrix L; +*> the remaining elements, with the array TAU, represent the +*> unitary matrix Q as a product of elementary reflectors +*> (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) COMPLEX array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is *> the optimal blocksize. -*> +*> \endverbatim +*> \verbatim *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/cgeqr2.f b/SRC/cgeqr2.f index b657981b..e2c83218 100644 --- a/SRC/cgeqr2.f +++ b/SRC/cgeqr2.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and above the diagonal of the array +*> contain the min(m,n) by n upper trapezoidal matrix R (R is +*> upper triangular if m >= n); the elements below the diagonal, +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) COMPLEX array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) COMPLEX array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/cgeqr2p.f b/SRC/cgeqr2p.f index 16acb4bc..bbe3f4cb 100644 --- a/SRC/cgeqr2p.f +++ b/SRC/cgeqr2p.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and above the diagonal of the array +*> contain the min(m,n) by n upper trapezoidal matrix R (R is +*> upper triangular if m >= n); the elements below the diagonal, +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) COMPLEX array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) COMPLEX array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/cgeqrt.f b/SRC/cgeqrt.f index 4733e2a2..23e6705b 100644 --- a/SRC/cgeqrt.f +++ b/SRC/cgeqrt.f @@ -79,13 +79,13 @@ *> The upper triangular block reflectors stored in compact form *> as a sequence of upper triangular blocks. See below *> for further details. +*> \endverbatim *> *> \param[in] LDT *> \verbatim *> LDT is INTEGER *> The leading dimension of the array T. LDT >= NB. *> \endverbatim -*> \endverbatim *> *> \param[out] WORK *> \verbatim @@ -117,7 +117,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* *> The matrix V stores the elementary reflectors H(i) in the i-th column *> below the diagonal. For example, if M=5 and N=3, the matrix V is *> diff --git a/SRC/cgeqrt2.f b/SRC/cgeqrt2.f index f28dd341..c1d922d8 100644 --- a/SRC/cgeqrt2.f +++ b/SRC/cgeqrt2.f @@ -74,8 +74,10 @@ *> reflector T; the elements below the diagonal are not used. *> See below for further details. *> \endverbatim +*> +*> \param[in] LDT *> \verbatim -*> LDT (intput) INTEGER +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N). *> \endverbatim *> diff --git a/SRC/cgeqrt3.f b/SRC/cgeqrt3.f index fea61d11..a70ea0ad 100644 --- a/SRC/cgeqrt3.f +++ b/SRC/cgeqrt3.f @@ -77,8 +77,10 @@ *> reflector T; the elements below the diagonal are not used. *> See below for further details. *> \endverbatim +*> +*> \param[in] LDT *> \verbatim -*> LDT (intput) INTEGER +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N). *> \endverbatim *> diff --git a/SRC/cgerqf.f b/SRC/cgerqf.f index a340caaa..1c9e934d 100644 --- a/SRC/cgerqf.f +++ b/SRC/cgerqf.f @@ -51,37 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* reflectors (see Further Details). +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, +*> if m <= n, the upper triangle of the subarray +*> A(1:m,n-m+1:n) contains the M-by-M upper triangular matrix R; +*> if m >= n, the elements on and above the (m-n)-th subdiagonal +*> contain the M-by-N upper trapezoidal matrix R; +*> the remaining elements, with the array TAU, represent the +*> unitary matrix Q as a product of min(m,n) elementary +*> reflectors (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) COMPLEX array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,M). *> For optimum performance LWORK >= M*NB, where NB is *> the optimal blocksize. @@ -90,11 +95,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/cgesv.f b/SRC/cgesv.f index 885028c7..a2f4a8ca 100644 --- a/SRC/cgesv.f +++ b/SRC/cgesv.f @@ -1,4 +1,4 @@ -*> \brief <b> CGESV computes the solution to system of linear equations A * X = B for GE matrices</b> +*> \brief <b> CGESV computes the solution to system of linear equations A * X = B for GE matrices</b> (simple driver) * * =========== DOCUMENTATION =========== * diff --git a/SRC/cggglm.f b/SRC/cggglm.f index 1694621c..08364d2c 100644 --- a/SRC/cggglm.f +++ b/SRC/cggglm.f @@ -123,11 +123,14 @@ *> \param[out] X *> \verbatim *> X is COMPLEX array, dimension (M) +*> \endverbatim +*> *> \param[out] Y *> \verbatim *> Y is COMPLEX array, dimension (P) -*> On exit, X and Y are the solutions of the GLM problem. *> \endverbatim +*> \verbatim +*> On exit, X and Y are the solutions of the GLM problem. *> \endverbatim *> *> \param[out] WORK diff --git a/SRC/cgghrd.f b/SRC/cgghrd.f index dbdcc05a..ea7e7eac 100644 --- a/SRC/cgghrd.f +++ b/SRC/cgghrd.f @@ -94,9 +94,13 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI mark the rows and columns of A which are to be *> reduced. It is assumed that A is already upper triangular *> in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are @@ -104,7 +108,6 @@ *> should be set to 1 and N respectively. *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim diff --git a/SRC/cggqrf.f b/SRC/cggqrf.f index 5fbd0ce3..e8719c81 100644 --- a/SRC/cggqrf.f +++ b/SRC/cggqrf.f @@ -102,27 +102,16 @@ *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[out] TAUA *> \verbatim -* represent the unitary matrix Q (see Further Details). +*> TAUA is COMPLEX array, dimension (min(N,M)) +*> The scalar factors of the elementary reflectors which +*> represent the unitary matrix Q (see Further Details). +*> \endverbatim *> -*> B (input/output) COMPLEX array, dimension (LDB,P) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX array, dimension (LDB,P) *> On entry, the N-by-P matrix B. *> On exit, if N <= P, the upper triangle of the subarray *> B(1:N,P-N+1:P) contains the N-by-N upper triangular matrix T; @@ -131,18 +120,30 @@ *> elements, with the array TAUB, represent the unitary *> matrix Z as a product of elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). +*> \endverbatim *> -*> TAUB (output) COMPLEX array, dimension (min(N,P)) +*> \param[out] TAUB +*> \verbatim +*> TAUB is COMPLEX array, dimension (min(N,P)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix Z (see Further Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N,M,P). *> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), *> where NB1 is the optimal blocksize for the QR factorization @@ -154,11 +155,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/cggrqf.f b/SRC/cggrqf.f index 60840b81..e89228a5 100644 --- a/SRC/cggrqf.f +++ b/SRC/cggrqf.f @@ -103,45 +103,46 @@ *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[out] TAUA *> \verbatim -* represent the unitary matrix Q (see Further Details). +*> TAUA is COMPLEX array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors which +*> represent the unitary matrix Q (see Further Details). +*> \endverbatim *> -*> B (input/output) COMPLEX array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX array, dimension (LDB,N) *> On entry, the P-by-N matrix B. *> On exit, the elements on and above the diagonal of the array *> contain the min(P,N)-by-N upper trapezoidal matrix T (T is *> upper triangular if P >= N); the elements below the diagonal, *> with the array TAUB, represent the unitary matrix Z as a *> product of elementary reflectors (see Further Details). +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,P). +*> \endverbatim *> -*> TAUB (output) COMPLEX array, dimension (min(P,N)) +*> \param[out] TAUB +*> \verbatim +*> TAUB is COMPLEX array, dimension (min(P,N)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix Z (see Further Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N,M,P). *> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), *> where NB1 is the optimal blocksize for the RQ factorization @@ -153,11 +154,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO=-i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/cggsvd.f b/SRC/cggsvd.f index 4bf8dfb0..0a6db168 100644 --- a/SRC/cggsvd.f +++ b/SRC/cggsvd.f @@ -163,14 +163,17 @@ *> \param[out] K *> \verbatim *> K is INTEGER +*> \endverbatim +*> *> \param[out] L *> \verbatim *> L is INTEGER +*> \endverbatim +*> \verbatim *> On exit, K and L specify the dimension of the subblocks *> described in Purpose. *> K + L = effective numerical rank of (A**H,B**H)**H. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim @@ -203,9 +206,13 @@ *> \param[out] ALPHA *> \verbatim *> ALPHA is REAL array, dimension (N) +*> \endverbatim +*> *> \param[out] BETA *> \verbatim *> BETA is REAL array, dimension (N) +*> \endverbatim +*> \verbatim *> On exit, ALPHA and BETA contain the generalized singular *> value pairs of A and B; *> ALPHA(1:K) = 1, @@ -214,13 +221,12 @@ *> ALPHA(K+1:K+L) = C, *> BETA(K+1:K+L) = S, *> or if M-K-L < 0, -*> ALPHA(K+1:M)= C, ALPHA(M+1:K+L)= 0 -*> BETA(K+1:M) = S, BETA(M+1:K+L) = 1 +*> ALPHA(K+1:M)=C, ALPHA(M+1:K+L)=0 +*> BETA(K+1:M) =S, BETA(M+1:K+L) =1 *> and *> ALPHA(K+L+1:N) = 0 *> BETA(K+L+1:N) = 0 *> \endverbatim -*> \endverbatim *> *> \param[out] U *> \verbatim diff --git a/SRC/cggsvp.f b/SRC/cggsvp.f index ba1b1005..1e74a1e0 100644 --- a/SRC/cggsvp.f +++ b/SRC/cggsvp.f @@ -137,9 +137,13 @@ *> \param[in] TOLA *> \verbatim *> TOLA is REAL +*> \endverbatim +*> *> \param[in] TOLB *> \verbatim *> TOLB is REAL +*> \endverbatim +*> \verbatim *> TOLA and TOLB are the thresholds to determine the effective *> numerical rank of matrix B and a subblock of A. Generally, *> they are set to @@ -148,19 +152,21 @@ *> The size of TOLA and TOLB may affect the size of backward *> errors of the decomposition. *> \endverbatim -*> \endverbatim *> *> \param[out] K *> \verbatim *> K is INTEGER +*> \endverbatim +*> *> \param[out] L *> \verbatim *> L is INTEGER +*> \endverbatim +*> \verbatim *> On exit, K and L specify the dimension of the subblocks *> described in Purpose section. *> K + L = effective numerical rank of (A**H,B**H)**H. *> \endverbatim -*> \endverbatim *> *> \param[out] U *> \verbatim diff --git a/SRC/chbgvx.f b/SRC/chbgvx.f index ff86dc31..45f846b1 100644 --- a/SRC/chbgvx.f +++ b/SRC/chbgvx.f @@ -154,27 +154,33 @@ *> \param[in] VL *> \verbatim *> VL is REAL +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is REAL +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/cheequb.f b/SRC/cheequb.f index 2932d91b..d1e6ceec 100644 --- a/SRC/cheequb.f +++ b/SRC/cheequb.f @@ -48,6 +48,13 @@ * Arguments * ========= * +*> \param[in] UPLO +*> \verbatim +*> UPLO is CHARACTER*1 +*> = 'U': Upper triangles of A and B are stored; +*> = 'L': Lower triangles of A and B are stored. +*> \endverbatim +*> *> \param[in] N *> \verbatim *> N is INTEGER @@ -88,6 +95,13 @@ *> Absolute value of largest matrix element. If AMAX is very *> close to overflow or very close to underflow, the matrix *> should be scaled. +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (3*N) +*> \endverbatim +*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER @@ -95,7 +109,6 @@ *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, the i-th diagonal element is nonpositive. *> \endverbatim -*> \endverbatim *> * * Authors diff --git a/SRC/chegvx.f b/SRC/chegvx.f index 2171a5a3..34e0ea7c 100644 --- a/SRC/chegvx.f +++ b/SRC/chegvx.f @@ -73,13 +73,14 @@ *> = 'V': all eigenvalues in the half-open interval (VL,VU] *> will be found. *> = 'I': the IL-th through IU-th eigenvalues will be found. +*> \endverbatim +*> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangles of A and B are stored; *> = 'L': Lower triangles of A and B are stored. *> \endverbatim -*> \endverbatim *> *> \param[in] N *> \verbatim @@ -95,8 +96,7 @@ *> upper triangular part of the matrix A. If UPLO = 'L', *> the leading N-by-N lower triangular part of A contains *> the lower triangular part of the matrix A. -*> \endverbatim -*> \verbatim +*> *> On exit, the lower triangle (if UPLO='L') or the upper *> triangle (if UPLO='U') of A, including the diagonal, is *> destroyed. @@ -116,8 +116,7 @@ *> upper triangular part of the matrix B. If UPLO = 'L', *> the leading N-by-N lower triangular part of B contains *> the lower triangular part of the matrix B. -*> \endverbatim -*> \verbatim +*> *> On exit, if INFO <= N, the part of B containing the matrix is *> overwritten by the triangular factor U or L from the Cholesky *> factorization B = U**H*U or B = L*L**H. @@ -132,27 +131,33 @@ *> \param[in] VL *> \verbatim *> VL is REAL +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is REAL +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim @@ -161,19 +166,16 @@ *> An approximate eigenvalue is accepted as converged *> when it is determined to lie in an interval [a,b] *> of width less than or equal to -*> \endverbatim -*> \verbatim +*> *> ABSTOL + EPS * max( |a|,|b| ) , -*> \endverbatim -*> \verbatim +*> *> where EPS is the machine precision. If ABSTOL is less than *> or equal to zero, then EPS*|T| will be used in its place, *> where |T| is the 1-norm of the tridiagonal matrix obtained *> by reducing C to tridiagonal form, where C is the symmetric *> matrix of the standard symmetric problem to which the *> generalized problem is transformed. -*> \endverbatim -*> \verbatim +*> *> Eigenvalues will be computed most accurately when ABSTOL is *> set to twice the underflow threshold 2*SLAMCH('S'), not zero. *> If this routine returns with INFO>0, indicating that some @@ -206,8 +208,7 @@ *> The eigenvectors are normalized as follows: *> if ITYPE = 1 or 2, Z**T*B*Z = I; *> if ITYPE = 3, Z**T*inv(B)*Z = I. -*> \endverbatim -*> \verbatim +*> *> If an eigenvector fails to converge, then that column of Z *> contains the latest approximation to the eigenvector, and the *> index of the eigenvector is returned in IFAIL. diff --git a/SRC/chesvxx.f b/SRC/chesvxx.f index 548f60fe..0d61ea76 100644 --- a/SRC/chesvxx.f +++ b/SRC/chesvxx.f @@ -133,6 +133,13 @@ *> copied to AF and factored. *> \endverbatim *> +*> \param[in] UPLO +*> \verbatim +*> UPLO is CHARACTER*1 +*> = 'U': Upper triangle of A is stored; +*> = 'L': Lower triangle of A is stored. +*> \endverbatim +*> *> \param[in] N *> \verbatim *> N is INTEGER diff --git a/SRC/chetd2.f b/SRC/chetd2.f index 2f3d5a19..0f3a3702 100644 --- a/SRC/chetd2.f +++ b/SRC/chetd2.f @@ -57,6 +57,62 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading +*> n-by-n upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading n-by-n lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the unitary +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the unitary matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (N) +*> The diagonal elements of the tridiagonal matrix T: +*> D(i) = A(i,i). +*> \endverbatim +*> +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (N-1) +*> The off-diagonal elements of the tridiagonal matrix T: +*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (N-1) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim +*> * * Authors * ======= @@ -75,27 +131,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* of elementary reflectors. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> D (output) REAL array, dimension (N) -*> The diagonal elements of the tridiagonal matrix T: -*> D(i) = A(i,i). -*> -*> E (output) REAL array, dimension (N-1) -*> The off-diagonal elements of the tridiagonal matrix T: -*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. -*> -*> TAU (output) COMPLEX array, dimension (N-1) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value. -*> *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/chetrd.f b/SRC/chetrd.f index beb0371f..4262cd9f 100644 --- a/SRC/chetrd.f +++ b/SRC/chetrd.f @@ -55,58 +55,100 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexHEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* of elementary reflectors. See Further Details. +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading +*> N-by-N upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading N-by-N lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the unitary +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the unitary matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> D (output) REAL array, dimension (N) +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (N) *> The diagonal elements of the tridiagonal matrix T: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) REAL array, dimension (N-1) +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (N-1) *> The off-diagonal elements of the tridiagonal matrix T: *> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim *> -*> TAU (output) COMPLEX array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= 1. *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. -*> +*> \endverbatim +*> \verbatim *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexHEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/chpgvx.f b/SRC/chpgvx.f index 50a49f54..c7166b96 100644 --- a/SRC/chpgvx.f +++ b/SRC/chpgvx.f @@ -119,27 +119,33 @@ *> \param[in] VL *> \verbatim *> VL is REAL +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is REAL +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/chptrd.f b/SRC/chptrd.f index 51ee5acd..78fa12c5 100644 --- a/SRC/chptrd.f +++ b/SRC/chptrd.f @@ -55,6 +55,54 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] AP +*> \verbatim +*> AP is COMPLEX array, dimension (N*(N+1)/2) +*> On entry, the upper or lower triangle of the Hermitian matrix +*> A, packed columnwise in a linear array. The j-th column of A +*> is stored in the array AP as follows: +*> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; +*> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the unitary +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the unitary matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim +*> +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (N) +*> The diagonal elements of the tridiagonal matrix T: +*> D(i) = A(i,i). +*> \endverbatim +*> +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (N-1) +*> The off-diagonal elements of the tridiagonal matrix T: +*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (N-1) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -73,24 +121,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* of elementary reflectors. See Further Details. -*> -*> D (output) REAL array, dimension (N) -*> The diagonal elements of the tridiagonal matrix T: -*> D(i) = A(i,i). -*> -*> E (output) REAL array, dimension (N-1) -*> The off-diagonal elements of the tridiagonal matrix T: -*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. -*> -*> TAU (output) COMPLEX array, dimension (N-1) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/chseqr.f b/SRC/chseqr.f index e7f48849..09d08bc3 100644 --- a/SRC/chseqr.f +++ b/SRC/chseqr.f @@ -75,18 +75,21 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> It is assumed that H is already upper triangular in rows *> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally -*> set by a previous call to CGEBAL, and then passed to CGEHRD +*> set by a previous call to CGEBAL, and then passed to ZGEHRD *> when the matrix output by CGEBAL is reduced to Hessenberg *> form. Otherwise ILO and IHI should be set to 1 and N *> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N. *> If N = 0, then ILO = 1 and IHI = 0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] H *> \verbatim diff --git a/SRC/cla_gbrfsx_extended.f b/SRC/cla_gbrfsx_extended.f index 3561f7e9..4f56170a 100644 --- a/SRC/cla_gbrfsx_extended.f +++ b/SRC/cla_gbrfsx_extended.f @@ -109,14 +109,14 @@ *> *> \param[in] AB *> \verbatim -*> AB is COMPLEX array, dimension (LDA,N) -*> On entry, the N-by-N matrix A. +*> AB is COMPLEX array, dimension (LDAB,N) +*> On entry, the N-by-N matrix AB. *> \endverbatim *> *> \param[in] LDAB *> \verbatim *> LDAB is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> The leading dimension of the array AB. LDAB >= max(1,N). *> \endverbatim *> *> \param[in] AFB @@ -212,37 +212,31 @@ *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> normwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Normwise relative error in the ith solution vector: *> max_j (abs(XTRUE(j,i) - X(j,i))) *> ------------------------------ *> max_j abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the type of error information as described *> below. There currently are up to three pieces of information *> returned. -*> \endverbatim -*> \verbatim +*> *> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim +*> *> The second index in ERR_BNDS_NORM(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated normwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -251,8 +245,7 @@ *> appropriately scaled matrix Z. *> Let Z = S*A, where S scales each row by a power of the *> radix so all absolute row sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra @@ -266,14 +259,12 @@ *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> componentwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Componentwise relative error in the ith solution vector: *> abs(XTRUE(j,i) - X(j,i)) *> max_j ---------------------- *> abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the right-hand side i (on which the *> componentwise relative error depends), and the type of error *> information as described below. There currently are up to three @@ -281,26 +272,22 @@ *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then *> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most *> the first (:,N_ERR_BNDS) entries are returned. -*> \endverbatim -*> \verbatim +*> *> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim +*> *> The second index in ERR_BNDS_COMP(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated componentwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -311,8 +298,7 @@ *> current right-hand side and S scales each row of *> A*diag(x) by a power of the radix so all absolute row *> sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra diff --git a/SRC/cla_gerfsx_extended.f b/SRC/cla_gerfsx_extended.f index 547c2e0a..12db6ba3 100644 --- a/SRC/cla_gerfsx_extended.f +++ b/SRC/cla_gerfsx_extended.f @@ -49,10 +49,10 @@ *> and provides error bounds and backward error estimates for the solution. *> This subroutine is called by CGERFSX to perform iterative refinement. *> In addition to normwise error bound, the code provides maximum -*> componentwise error bound if possible. See comments for ERR_BNDS_NORM -*> and ERR_BNDS_COMP for details of the error bounds. Note that this +*> componentwise error bound if possible. See comments for ERRS_N +*> and ERRS_C for details of the error bounds. Note that this *> subroutine is only resonsible for setting the second fields of -*> ERR_BNDS_NORM and ERR_BNDS_COMP. +*> ERRS_N and ERRS_C. *> *>\endverbatim * @@ -186,49 +186,43 @@ *> \param[in] N_NORMS *> \verbatim *> N_NORMS is INTEGER -*> Determines which error bounds to return (see ERR_BNDS_NORM -*> and ERR_BNDS_COMP). +*> Determines which error bounds to return (see ERRS_N +*> and ERRS_C). *> If N_NORMS >= 1 return normwise error bounds. *> If N_NORMS >= 2 return componentwise error bounds. *> \endverbatim *> -*> \param[in,out] ERR_BNDS_NORM +*> \param[in,out] ERRS_N *> \verbatim -*> ERR_BNDS_NORM is REAL array, dimension (NRHS, N_ERR_BNDS) +*> ERRS_N is REAL array, dimension (NRHS, N_ERR_BNDS) *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> normwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Normwise relative error in the ith solution vector: *> max_j (abs(XTRUE(j,i) - X(j,i))) *> ------------------------------ *> max_j abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the type of error information as described *> below. There currently are up to three pieces of information *> returned. -*> \endverbatim -*> \verbatim -*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith +*> +*> The first index in ERRS_N(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim -*> The second index in ERR_BNDS_NORM(:,err) contains the following +*> +*> The second index in ERRS_N(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated normwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -237,55 +231,48 @@ *> appropriately scaled matrix Z. *> Let Z = S*A, where S scales each row by a power of the *> radix so all absolute row sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra *> cautions. *> \endverbatim *> -*> \param[in,out] ERR_BNDS_COMP +*> \param[in,out] ERRS_C *> \verbatim -*> ERR_BNDS_COMP is REAL array, dimension (NRHS, N_ERR_BNDS) +*> ERRS_C is REAL array, dimension (NRHS, N_ERR_BNDS) *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> componentwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Componentwise relative error in the ith solution vector: *> abs(XTRUE(j,i) - X(j,i)) *> max_j ---------------------- *> abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the right-hand side i (on which the *> componentwise relative error depends), and the type of error *> information as described below. There currently are up to three *> pieces of information returned for each right-hand side. If *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then -*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most +*> ERRS_C is not accessed. If N_ERR_BNDS .LT. 3, then at most *> the first (:,N_ERR_BNDS) entries are returned. -*> \endverbatim -*> \verbatim -*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith +*> +*> The first index in ERRS_C(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim -*> The second index in ERR_BNDS_COMP(:,err) contains the following +*> +*> The second index in ERRS_C(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated componentwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -296,8 +283,7 @@ *> current right-hand side and S scales each row of *> A*diag(x) by a power of the radix so all absolute row *> sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra @@ -348,7 +334,7 @@ *> permit convergence using approximate factorizations or *> factorizations other than LU. If the factorization uses a *> technique other than Gaussian elimination, the guarantees in -*> ERR_BNDS_NORM and ERR_BNDS_COMP may no longer be trustworthy. +*> ERRS_N and ERRS_C may no longer be trustworthy. *> \endverbatim *> *> \param[in] RTHRESH diff --git a/SRC/cla_herpvgrw.f b/SRC/cla_herpvgrw.f index 89855238..62cf611d 100644 --- a/SRC/cla_herpvgrw.f +++ b/SRC/cla_herpvgrw.f @@ -68,12 +68,6 @@ *> column INFO is exactly 0. *> \endverbatim *> -*> \param[in] NCOLS -*> \verbatim -*> NCOLS is INTEGER -*> The number of columns of the matrix A. NCOLS >= 0. -*> \endverbatim -*> *> \param[in] A *> \verbatim *> A is COMPLEX array, dimension (LDA,N) diff --git a/SRC/cla_lin_berr.f b/SRC/cla_lin_berr.f index 6ababe1d..8d4af0fb 100644 --- a/SRC/cla_lin_berr.f +++ b/SRC/cla_lin_berr.f @@ -77,13 +77,13 @@ *> The denominator in the relative backward error formula above, i.e., *> the matrix abs(op(A_s))*abs(Y) + abs(B_s). The matrices A, Y, and B *> are from iterative refinement (see cla_gerfsx_extended.f). +*> \endverbatim *> *> \param[out] BERR *> \verbatim *> BERR is COMPLEX array, dimension (NRHS) *> The componentwise relative backward error from the formula above. *> \endverbatim -*> \endverbatim *> * * Authors diff --git a/SRC/cla_syrpvgrw.f b/SRC/cla_syrpvgrw.f index e7087e43..a3c1482f 100644 --- a/SRC/cla_syrpvgrw.f +++ b/SRC/cla_syrpvgrw.f @@ -68,12 +68,6 @@ *> column INFO is exactly 0. *> \endverbatim *> -*> \param[in] NCOLS -*> \verbatim -*> NCOLS is INTEGER -*> The number of columns of the matrix A. NCOLS >= 0. -*> \endverbatim -*> *> \param[in] A *> \verbatim *> A is COMPLEX array, dimension (LDA,N) diff --git a/SRC/clabrd.f b/SRC/clabrd.f index ab63b734..a1b725c8 100644 --- a/SRC/clabrd.f +++ b/SRC/clabrd.f @@ -67,59 +67,105 @@ *> The number of leading rows and columns of A to be reduced. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the m by n general matrix to be reduced. +*> On exit, the first NB rows and columns of the matrix are +*> overwritten; the rest of the array is unchanged. +*> If m >= n, elements on and below the diagonal in the first NB +*> columns, with the array TAUQ, represent the unitary +*> matrix Q as a product of elementary reflectors; and +*> elements above the diagonal in the first NB rows, with the +*> array TAUP, represent the unitary matrix P as a product +*> of elementary reflectors. +*> If m < n, elements below the diagonal in the first NB +*> columns, with the array TAUQ, represent the unitary +*> matrix Q as a product of elementary reflectors, and +*> elements on and above the diagonal in the first NB rows, +*> with the array TAUP, represent the unitary matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) REAL array, dimension (NB) +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (NB) *> The diagonal elements of the first NB rows and columns of *> the reduced matrix. D(i) = A(i,i). +*> \endverbatim *> -*> E (output) REAL array, dimension (NB) +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (NB) *> The off-diagonal elements of the first NB rows and columns of *> the reduced matrix. +*> \endverbatim *> -*> TAUQ (output) COMPLEX array dimension (NB) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is COMPLEX array dimension (NB) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) COMPLEX array, dimension (NB) +*> \param[out] TAUP +*> \verbatim +*> TAUP is COMPLEX array, dimension (NB) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix P. See Further Details. +*> \endverbatim *> -*> X (output) COMPLEX array, dimension (LDX,NB) +*> \param[out] X +*> \verbatim +*> X is COMPLEX array, dimension (LDX,NB) *> The m-by-nb matrix X required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDX (input) INTEGER +*> \param[in] LDX +*> \verbatim +*> LDX is INTEGER *> The leading dimension of the array X. LDX >= max(1,M). +*> \endverbatim *> -*> Y (output) COMPLEX array, dimension (LDY,NB) +*> \param[out] Y +*> \verbatim +*> Y is COMPLEX array, dimension (LDY,NB) *> The n-by-nb matrix Y required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDY (input) INTEGER +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER *> The leading dimension of the array Y. LDY >= max(1,N). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/clacn2.f b/SRC/clacn2.f index c6def601..97a50ea9 100644 --- a/SRC/clacn2.f +++ b/SRC/clacn2.f @@ -105,8 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> Contributed by Nick Higham, University of Manchester. *> Originally named CONEST, dated March 16, 1988. diff --git a/SRC/clacon.f b/SRC/clacon.f index 91662683..aead410a 100644 --- a/SRC/clacon.f +++ b/SRC/clacon.f @@ -98,8 +98,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> Contributed by Nick Higham, University of Manchester. *> Originally named CONEST, dated March 16, 1988. diff --git a/SRC/clagtm.f b/SRC/clagtm.f index c0d3f3cf..2a4d3c55 100644 --- a/SRC/clagtm.f +++ b/SRC/clagtm.f @@ -99,12 +99,13 @@ *> \verbatim *> X is COMPLEX array, dimension (LDX,NRHS) *> The N by NRHS matrix X. +*> \endverbatim +*> *> \param[in] LDX *> \verbatim *> LDX is INTEGER *> The leading dimension of the array X. LDX >= max(N,1). *> \endverbatim -*> \endverbatim *> *> \param[in] BETA *> \verbatim diff --git a/SRC/clahr2.f b/SRC/clahr2.f index 029c06c0..5d002c9a 100644 --- a/SRC/clahr2.f +++ b/SRC/clahr2.f @@ -65,6 +65,55 @@ *> The number of columns to be reduced. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N-K+1) +*> On entry, the n-by-(n-k+1) general matrix A. +*> On exit, the elements on and above the k-th subdiagonal in +*> the first NB columns are overwritten with the corresponding +*> elements of the reduced matrix; the elements below the k-th +*> subdiagonal, with the array TAU, represent the matrix Q as a +*> product of elementary reflectors. The other columns of A are +*> unchanged. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (NB) +*> The scalar factors of the elementary reflectors. See Further +*> Details. +*> \endverbatim +*> +*> \param[out] T +*> \verbatim +*> T is COMPLEX array, dimension (LDT,NB) +*> The upper triangular matrix T. +*> \endverbatim +*> +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER +*> The leading dimension of the array T. LDT >= NB. +*> \endverbatim +*> +*> \param[out] Y +*> \verbatim +*> Y is COMPLEX array, dimension (LDY,NB) +*> The n-by-nb matrix Y. +*> \endverbatim +*> +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER +*> The leading dimension of the array Y. LDY >= N. +*> \endverbatim +*> * * Authors * ======= @@ -83,27 +132,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* unchanged. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> TAU (output) COMPLEX array, dimension (NB) -*> The scalar factors of the elementary reflectors. See Further -*> Details. -*> -*> T (output) COMPLEX array, dimension (LDT,NB) -*> The upper triangular matrix T. -*> -*> LDT (input) INTEGER -*> The leading dimension of the array T. LDT >= NB. -*> -*> Y (output) COMPLEX array, dimension (LDY,NB) -*> The n-by-nb matrix Y. -*> -*> LDY (input) INTEGER -*> The leading dimension of the array Y. LDY >= N. -*> *> *> The matrix Q is represented as a product of nb elementary reflectors *> diff --git a/SRC/clahrd.f b/SRC/clahrd.f index 76f3be86..433ebf6d 100644 --- a/SRC/clahrd.f +++ b/SRC/clahrd.f @@ -66,6 +66,55 @@ *> The number of columns to be reduced. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N-K+1) +*> On entry, the n-by-(n-k+1) general matrix A. +*> On exit, the elements on and above the k-th subdiagonal in +*> the first NB columns are overwritten with the corresponding +*> elements of the reduced matrix; the elements below the k-th +*> subdiagonal, with the array TAU, represent the matrix Q as a +*> product of elementary reflectors. The other columns of A are +*> unchanged. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (NB) +*> The scalar factors of the elementary reflectors. See Further +*> Details. +*> \endverbatim +*> +*> \param[out] T +*> \verbatim +*> T is COMPLEX array, dimension (LDT,NB) +*> The upper triangular matrix T. +*> \endverbatim +*> +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER +*> The leading dimension of the array T. LDT >= NB. +*> \endverbatim +*> +*> \param[out] Y +*> \verbatim +*> Y is COMPLEX array, dimension (LDY,NB) +*> The n-by-nb matrix Y. +*> \endverbatim +*> +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER +*> The leading dimension of the array Y. LDY >= max(1,N). +*> \endverbatim +*> * * Authors * ======= @@ -84,27 +133,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* unchanged. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> TAU (output) COMPLEX array, dimension (NB) -*> The scalar factors of the elementary reflectors. See Further -*> Details. -*> -*> T (output) COMPLEX array, dimension (LDT,NB) -*> The upper triangular matrix T. -*> -*> LDT (input) INTEGER -*> The leading dimension of the array T. LDT >= NB. -*> -*> Y (output) COMPLEX array, dimension (LDY,NB) -*> The n-by-nb matrix Y. -*> -*> LDY (input) INTEGER -*> The leading dimension of the array Y. LDY >= max(1,N). -*> *> *> The matrix Q is represented as a product of nb elementary reflectors *> diff --git a/SRC/claqr0.f b/SRC/claqr0.f index d0f5d863..2405af48 100644 --- a/SRC/claqr0.f +++ b/SRC/claqr0.f @@ -117,6 +117,19 @@ *> form returned in H, with W(i) = H(i,i). *> \endverbatim *> +*> \param[in] ILOZ +*> \verbatim +*> ILOZ is INTEGER +*> \endverbatim +*> +*> \param[in] IHIZ +*> \verbatim +*> IHIZ is INTEGER +*> Specify the rows of Z to which transformations must be +*> applied if WANTZ is .TRUE.. +*> 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N. +*> \endverbatim +*> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX array, dimension (LDZ,IHI) @@ -167,37 +180,29 @@ *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANT is .FALSE., then on exit, *> the remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTT is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (*) (initial value of H)*U = U*(final value of H) -*> \endverbatim -*> \verbatim +*> *> where U is a unitary matrix. The final *> value of H is upper Hessenberg and triangular in *> rows and columns INFO+1 through IHI. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (final value of Z(ILO:IHI,ILOZ:IHIZ) *> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U -*> \endverbatim -*> \verbatim +*> *> where U is the unitary matrix in (*) (regard- *> less of the value of WANTT.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not *> accessed. *> \endverbatim diff --git a/SRC/claqr1.f b/SRC/claqr1.f index 0b0ccb6b..b6e90b58 100644 --- a/SRC/claqr1.f +++ b/SRC/claqr1.f @@ -70,8 +70,13 @@ *> \verbatim *> S1 is COMPLEX *> \endverbatim +*> +*> \param[in] S2 +*> \verbatim +*> S2 is COMPLEX +*> \endverbatim *> \verbatim -*> S2 S1 and S2 are the shifts defining K in (*) above. +*> S1 and S2 are the shifts defining K in (*) above. *> \endverbatim *> *> \param[out] V diff --git a/SRC/claqr4.f b/SRC/claqr4.f index c6bb13b4..555910e8 100644 --- a/SRC/claqr4.f +++ b/SRC/claqr4.f @@ -125,6 +125,19 @@ *> form returned in H, with W(i) = H(i,i). *> \endverbatim *> +*> \param[in] ILOZ +*> \verbatim +*> ILOZ is INTEGER +*> \endverbatim +*> +*> \param[in] IHIZ +*> \verbatim +*> IHIZ is INTEGER +*> Specify the rows of Z to which transformations must be +*> applied if WANTZ is .TRUE.. +*> 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N. +*> \endverbatim +*> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX array, dimension (LDZ,IHI) @@ -169,43 +182,36 @@ *> *> \param[out] INFO *> \verbatim +*> \verbatim *> INFO is INTEGER *> = 0: successful exit *> .GT. 0: if INFO = i, CLAQR4 failed to compute all of *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANT is .FALSE., then on exit, *> the remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTT is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (*) (initial value of H)*U = U*(final value of H) -*> \endverbatim -*> \verbatim +*> *> where U is a unitary matrix. The final *> value of H is upper Hessenberg and triangular in *> rows and columns INFO+1 through IHI. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (final value of Z(ILO:IHI,ILOZ:IHIZ) *> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U -*> \endverbatim -*> \verbatim +*> *> where U is the unitary matrix in (*) (regard- *> less of the value of WANTT.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not *> accessed. *> \endverbatim diff --git a/SRC/clarfb.f b/SRC/clarfb.f index 6c3ba588..41d2c2c2 100644 --- a/SRC/clarfb.f +++ b/SRC/clarfb.f @@ -93,53 +93,81 @@ *> reflectors whose product defines the block reflector). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] V *> \verbatim -* The matrix V. See Further Details. +*> V is COMPLEX array, dimension +*> (LDV,K) if STOREV = 'C' +*> (LDV,M) if STOREV = 'R' and SIDE = 'L' +*> (LDV,N) if STOREV = 'R' and SIDE = 'R' +*> The matrix V. See Further Details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); *> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); *> if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> T (input) COMPLEX array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is COMPLEX array, dimension (LDT,K) *> The triangular K-by-K matrix T in the representation of the *> block reflector. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> -*> C (input/output) COMPLEX array, dimension (LDC,N) +*> \param[in,out] C +*> \verbatim +*> C is COMPLEX array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by H*C or H**H*C or C*H or C*H**H. +*> \endverbatim *> -*> LDC (input) INTEGER +*> \param[in] LDC +*> \verbatim +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). +*> \endverbatim *> -*> WORK (workspace) COMPLEX array, dimension (LDWORK,K) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (LDWORK,K) +*> \endverbatim *> -*> LDWORK (input) INTEGER +*> \param[in] LDWORK +*> \verbatim +*> LDWORK is INTEGER *> The leading dimension of the array WORK. *> If SIDE = 'L', LDWORK >= max(1,N); *> if SIDE = 'R', LDWORK >= max(1,M). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and diff --git a/SRC/clarft.f b/SRC/clarft.f index fe4c6865..d4379f3c 100644 --- a/SRC/clarft.f +++ b/SRC/clarft.f @@ -63,56 +63,82 @@ *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] STOREV *> \verbatim -* reflectors are stored (see also Further Details): +*> STOREV is CHARACTER*1 +*> Specifies how the vectors which define the elementary +*> reflectors are stored (see also Further Details): *> = 'C': columnwise *> = 'R': rowwise +*> \endverbatim *> -*> N (input) INTEGER +*> \param[in] N +*> \verbatim +*> N is INTEGER *> The order of the block reflector H. N >= 0. +*> \endverbatim *> -*> K (input) INTEGER +*> \param[in] K +*> \verbatim +*> K is INTEGER *> The order of the triangular factor T (= the number of *> elementary reflectors). K >= 1. +*> \endverbatim *> -*> V (input/output) COMPLEX array, dimension +*> \param[in,out] V +*> \verbatim +*> V is COMPLEX array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,N) if STOREV = 'R' *> The matrix V. See further details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> TAU (input) COMPLEX array, dimension (K) +*> \param[in] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i). +*> \endverbatim *> -*> T (output) COMPLEX array, dimension (LDT,K) +*> \param[out] T +*> \verbatim +*> T is COMPLEX array, dimension (LDT,K) *> The k by k triangular factor T of the block reflector. *> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is *> lower triangular. The rest of the array is not used. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and diff --git a/SRC/clarrv.f b/SRC/clarrv.f index 5990c42d..2e0b17cf 100644 --- a/SRC/clarrv.f +++ b/SRC/clarrv.f @@ -84,8 +84,10 @@ *> is stored the corresponding shift as given by SLARRE. *> On exit, L is overwritten. *> \endverbatim +*> +*> \param[in] PIVMIN *> \verbatim -*> PIVMIN (in) DOUBLE PRECISION +*> PIVMIN is REAL *> The minimum pivot allowed in the Sturm sequence. *> \endverbatim *> @@ -232,14 +234,12 @@ *> \verbatim *> INFO is INTEGER *> = 0: successful exit -*> \endverbatim -*> \verbatim +*> *> > 0: A problem occured in CLARRV. *> < 0: One of the called subroutines signaled an internal problem. *> Needs inspection of the corresponding parameter IINFO *> for further information. -*> \endverbatim -*> \verbatim +*> *> =-1: Problem in SLARRB when refining a child's eigenvalues. *> =-2: Problem in SLARRF when computing the RRR of a child. *> When a child is inside a tight cluster, it can be difficult diff --git a/SRC/clartg.f b/SRC/clartg.f index c5294a34..67c02f7a 100644 --- a/SRC/clartg.f +++ b/SRC/clartg.f @@ -94,8 +94,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> 3-5-96 - Modified with a new algorithm by W. Kahan and J. Demmel *> diff --git a/SRC/clarzt.f b/SRC/clarzt.f index 8371efc2..2a5994d5 100644 --- a/SRC/clarzt.f +++ b/SRC/clarzt.f @@ -66,56 +66,82 @@ *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] STOREV *> \verbatim -* reflectors are stored (see also Further Details): +*> STOREV is CHARACTER*1 +*> Specifies how the vectors which define the elementary +*> reflectors are stored (see also Further Details): *> = 'C': columnwise (not supported yet) *> = 'R': rowwise +*> \endverbatim *> -*> N (input) INTEGER +*> \param[in] N +*> \verbatim +*> N is INTEGER *> The order of the block reflector H. N >= 0. +*> \endverbatim *> -*> K (input) INTEGER +*> \param[in] K +*> \verbatim +*> K is INTEGER *> The order of the triangular factor T (= the number of *> elementary reflectors). K >= 1. +*> \endverbatim *> -*> V (input/output) COMPLEX array, dimension +*> \param[in,out] V +*> \verbatim +*> V is COMPLEX array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,N) if STOREV = 'R' *> The matrix V. See further details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> TAU (input) COMPLEX array, dimension (K) +*> \param[in] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i). +*> \endverbatim *> -*> T (output) COMPLEX array, dimension (LDT,K) +*> \param[out] T +*> \verbatim +*> T is COMPLEX array, dimension (LDT,K) *> The k by k triangular factor T of the block reflector. *> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is *> lower triangular. The rest of the array is not used. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> Based on contributions by *> A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA diff --git a/SRC/clascl.f b/SRC/clascl.f index 64f4ef6d..3b86e312 100644 --- a/SRC/clascl.f +++ b/SRC/clascl.f @@ -79,15 +79,18 @@ *> \param[in] CFROM *> \verbatim *> CFROM is REAL +*> \endverbatim +*> *> \param[in] CTO *> \verbatim *> CTO is REAL +*> \endverbatim +*> \verbatim *> The matrix A is multiplied by CTO/CFROM. A(I,J) is computed *> without over/underflow if the final result CTO*A(I,J)/CFROM *> can be represented without over/underflow. CFROM must be *> nonzero. *> \endverbatim -*> \endverbatim *> *> \param[in] M *> \verbatim diff --git a/SRC/clatrd.f b/SRC/clatrd.f index 2c1f0992..ff4119b0 100644 --- a/SRC/clatrd.f +++ b/SRC/clatrd.f @@ -71,47 +71,84 @@ *> The number of rows and columns to be reduced. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is COMPLEX array, dimension (LDA,N) +*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading +*> n-by-n upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading n-by-n lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit: +*> if UPLO = 'U', the last NB columns have been reduced to +*> tridiagonal form, with the diagonal elements overwriting +*> the diagonal elements of A; the elements above the diagonal +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors; +*> if UPLO = 'L', the first NB columns have been reduced to +*> tridiagonal form, with the diagonal elements overwriting +*> the diagonal elements of A; the elements below the diagonal +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> E (output) REAL array, dimension (N-1) +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (N-1) *> If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal *> elements of the last NB columns of the reduced matrix; *> if UPLO = 'L', E(1:nb) contains the subdiagonal elements of *> the first NB columns of the reduced matrix. +*> \endverbatim *> -*> TAU (output) COMPLEX array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX array, dimension (N-1) *> The scalar factors of the elementary reflectors, stored in *> TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'. *> See Further Details. +*> \endverbatim *> -*> W (output) COMPLEX array, dimension (LDW,NB) +*> \param[out] W +*> \verbatim +*> W is COMPLEX array, dimension (LDW,NB) *> The n-by-nb matrix W required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDW (input) INTEGER +*> \param[in] LDW +*> \verbatim +*> LDW is INTEGER *> The leading dimension of the array W. LDW >= max(1,N). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/cpbstf.f b/SRC/cpbstf.f index 3775e179..0d38773c 100644 --- a/SRC/cpbstf.f +++ b/SRC/cpbstf.f @@ -80,6 +80,25 @@ *> as follows: *> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j; *> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd). +*> +*> On exit, if INFO = 0, the factor S from the split Cholesky +*> factorization A = S**H*S. See Further Details. +*> \endverbatim +*> +*> \param[in] LDAB +*> \verbatim +*> LDAB is INTEGER +*> The leading dimension of the array AB. LDAB >= KD+1. +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> > 0: if INFO = i, the factorization could not be completed, +*> because the updated element a(i,i) was negative; the +*> matrix A is not positive definite. *> \endverbatim *> * @@ -100,18 +119,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* factorization A = S**H*S. See Further Details. -*> -*> LDAB (input) INTEGER -*> The leading dimension of the array AB. LDAB >= KD+1. -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> > 0: if INFO = i, the factorization could not be completed, -*> because the updated element a(i,i) was negative; the -*> matrix A is not positive definite. -*> *> *> The band storage scheme is illustrated by the following example, when *> N = 7, KD = 2: @@ -76,6 +76,8 @@ *> \param[in] C *> \verbatim *> C is REAL +*> \endverbatim +*> *> \param[in] S *> \verbatim *> S is COMPLEX @@ -84,7 +86,6 @@ *> [ -conjg(S) C ] *> where C*C + S*CONJG(S) = 1.0. *> \endverbatim -*> \endverbatim *> * * Authors diff --git a/SRC/cstegr.f b/SRC/cstegr.f index 3de77471..89b4964d 100644 --- a/SRC/cstegr.f +++ b/SRC/cstegr.f @@ -104,27 +104,33 @@ *> \param[in] VL *> \verbatim *> VL is REAL +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is REAL +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/cstemr.f b/SRC/cstemr.f index 6eac5c23..2e5c80ed 100644 --- a/SRC/cstemr.f +++ b/SRC/cstemr.f @@ -152,27 +152,33 @@ *> \param[in] VL *> \verbatim *> VL is REAL +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is REAL +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[out] M *> \verbatim diff --git a/SRC/csyconv.f b/SRC/csyconv.f index c669f904..7063ce53 100644 --- a/SRC/csyconv.f +++ b/SRC/csyconv.f @@ -89,19 +89,6 @@ *> WORK is COMPLEX array, dimension (N) *> \endverbatim *> -*> \param[in] LWORK -*> \verbatim -*> LWORK is INTEGER -*> The length of WORK. LWORK >=1. -*> LWORK = N -*> \endverbatim -*> \verbatim -*> If LWORK = -1, then a workspace query is assumed; the routine -*> only calculates the optimal size of the WORK array, returns -*> this value as the first entry of the WORK array, and no error -*> message related to LWORK is issued by XERBLA. -*> \endverbatim -*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/SRC/csyequb.f b/SRC/csyequb.f index 563f136c..757ea7d9 100644 --- a/SRC/csyequb.f +++ b/SRC/csyequb.f @@ -130,8 +130,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> Reference: Livne, O.E. and Golub, G.H., "Scaling by Binormalization", *> Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004. diff --git a/SRC/ctgsen.f b/SRC/ctgsen.f index 59aac069..f8f31d3a 100644 --- a/SRC/ctgsen.f +++ b/SRC/ctgsen.f @@ -147,15 +147,18 @@ *> \param[out] ALPHA *> \verbatim *> ALPHA is COMPLEX array, dimension (N) +*> \endverbatim +*> *> \param[out] BETA *> \verbatim *> BETA is COMPLEX array, dimension (N) +*> \endverbatim +*> \verbatim *> The diagonal elements of A and B, respectively, *> when the pair (A,B) has been reduced to generalized Schur *> form. ALPHA(i)/BETA(i) i=1,...,N are the generalized *> eigenvalues. *> \endverbatim -*> \endverbatim *> *> \param[in,out] Q *> \verbatim @@ -203,9 +206,13 @@ *> \param[out] PL *> \verbatim *> PL is REAL +*> \endverbatim +*> *> \param[out] PR *> \verbatim *> PR is REAL +*> \endverbatim +*> \verbatim *> If IJOB = 1, 4 or 5, PL, PR are lower bounds on the *> reciprocal of the norm of "projections" onto left and right *> eigenspace with respect to the selected cluster. @@ -213,7 +220,6 @@ *> If M = 0 or M = N, PL = PR = 1. *> If IJOB = 0, 2 or 3 PL, PR are not referenced. *> \endverbatim -*> \endverbatim *> *> \param[out] DIF *> \verbatim diff --git a/SRC/ctgsja.f b/SRC/ctgsja.f index e0d420a7..000a9ff6 100644 --- a/SRC/ctgsja.f +++ b/SRC/ctgsja.f @@ -176,52 +176,74 @@ *> The number of columns of the matrices A and B. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] K *> \verbatim -* See Further Details. +*> K is INTEGER +*> \endverbatim *> -*> A (input/output) COMPLEX array, dimension (LDA,N) +*> \param[in] L +*> \verbatim +*> L is INTEGER +*> +*> 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. +*> \endverbatim +*> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N) *> On entry, the M-by-N matrix A. *> On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular *> matrix R or part of R. See Purpose for details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> B (input/output) COMPLEX array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX array, dimension (LDB,N) *> On entry, the P-by-N matrix B. *> On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains *> a part of R. See Purpose for details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,P). +*> \endverbatim +*> +*> \param[in] TOLA +*> \verbatim +*> TOLA is REAL +*> \endverbatim +*> +*> \param[in] TOLB +*> \verbatim +*> TOLB is REAL *> -*> TOLA (input) REAL -*> TOLB (input) REAL *> TOLA and TOLB are the convergence criteria for the Jacobi- *> Kogbetliantz iteration procedure. Generally, they are the *> same as used in the preprocessing step, say *> TOLA = MAX(M,N)*norm(A)*MACHEPS, *> TOLB = MAX(P,N)*norm(B)*MACHEPS. +*> \endverbatim +*> +*> \param[out] ALPHA +*> \verbatim +*> ALPHA is REAL array, dimension (N) +*> \endverbatim +*> +*> \param[out] BETA +*> \verbatim +*> BETA is REAL array, dimension (N) *> -*> ALPHA (output) REAL array, dimension (N) -*> BETA (output) REAL array, dimension (N) *> On exit, ALPHA and BETA contain the generalized singular *> value pairs of A and B; *> ALPHA(1:K) = 1, @@ -235,61 +257,109 @@ *> Furthermore, if K+L < N, *> ALPHA(K+L+1:N) = 0 *> BETA(K+L+1:N) = 0. +*> \endverbatim *> -*> U (input/output) COMPLEX array, dimension (LDU,M) +*> \param[in,out] U +*> \verbatim +*> U is COMPLEX array, dimension (LDU,M) *> On entry, if JOBU = 'U', U must contain a matrix U1 (usually *> the unitary matrix returned by CGGSVP). *> On exit, *> if JOBU = 'I', U contains the unitary matrix U; *> if JOBU = 'U', U contains the product U1*U. *> If JOBU = 'N', U is not referenced. +*> \endverbatim *> -*> LDU (input) INTEGER +*> \param[in] LDU +*> \verbatim +*> LDU is INTEGER *> The leading dimension of the array U. LDU >= max(1,M) if *> JOBU = 'U'; LDU >= 1 otherwise. +*> \endverbatim *> -*> V (input/output) COMPLEX array, dimension (LDV,P) +*> \param[in,out] V +*> \verbatim +*> V is COMPLEX array, dimension (LDV,P) *> On entry, if JOBV = 'V', V must contain a matrix V1 (usually *> the unitary matrix returned by CGGSVP). *> On exit, *> if JOBV = 'I', V contains the unitary matrix V; *> if JOBV = 'V', V contains the product V1*V. *> If JOBV = 'N', V is not referenced. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. LDV >= max(1,P) if *> JOBV = 'V'; LDV >= 1 otherwise. +*> \endverbatim *> -*> Q (input/output) COMPLEX array, dimension (LDQ,N) +*> \param[in,out] Q +*> \verbatim +*> Q is COMPLEX array, dimension (LDQ,N) *> On entry, if JOBQ = 'Q', Q must contain a matrix Q1 (usually *> the unitary matrix returned by CGGSVP). *> On exit, *> if JOBQ = 'I', Q contains the unitary matrix Q; *> if JOBQ = 'Q', Q contains the product Q1*Q. *> If JOBQ = 'N', Q is not referenced. +*> \endverbatim *> -*> LDQ (input) INTEGER +*> \param[in] LDQ +*> \verbatim +*> LDQ is INTEGER *> The leading dimension of the array Q. LDQ >= max(1,N) if *> JOBQ = 'Q'; LDQ >= 1 otherwise. +*> \endverbatim *> -*> WORK (workspace) COMPLEX array, dimension (2*N) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (2*N) +*> \endverbatim *> -*> NCYCLE (output) INTEGER +*> \param[out] NCYCLE +*> \verbatim +*> NCYCLE is INTEGER *> The number of cycles required for convergence. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. *> = 1: the procedure does not converge after MAXIT cycles. +*> \endverbatim *> *> Internal Parameters *> =================== -*> +*> +*> \verbatim *> MAXIT INTEGER *> MAXIT specifies the total loops that the iterative procedure *> may take. If after MAXIT cycles, the routine fails to *> converge, we return INFO = 1. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> CTGSJA essentially uses a variant of Kogbetliantz algorithm to reduce *> min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and L-by-L diff --git a/SRC/ctpmqrt.f b/SRC/ctpmqrt.f index 46bb8671..7464853a 100644 --- a/SRC/ctpmqrt.f +++ b/SRC/ctpmqrt.f @@ -67,6 +67,7 @@ *> \verbatim *> N is INTEGER *> The number of columns of the matrix B. N >= 0. +*> \endverbatim *> *> \param[in] K *> \verbatim @@ -74,78 +75,115 @@ *> The number of elementary reflectors whose product defines *> the matrix Q. *> \endverbatim -*> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* K >= L >= 0. See Further Details. +*> L is INTEGER +*> The order of the trapezoidal part of V. +*> K >= L >= 0. See Further Details. +*> \endverbatim *> -*> NB (input) INTEGER +*> \param[in] NB +*> \verbatim +*> NB is INTEGER *> The block size used for the storage of T. K >= NB >= 1. *> This must be the same value of NB used to generate T *> in CTPQRT. +*> \endverbatim *> -*> V (input) COMPLEX array, dimension (LDA,K) +*> \param[in] V +*> \verbatim +*> V is COMPLEX array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> CTPQRT in B. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER -*> The leading dimension of the array A. -*> If SIDE = 'L', LDA >= max(1,M); -*> if SIDE = 'R', LDA >= max(1,N). +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER +*> The leading dimension of the array V. +*> If SIDE = 'L', LDV >= max(1,M); +*> if SIDE = 'R', LDV >= max(1,N). +*> \endverbatim *> -*> T (input) COMPLEX array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is COMPLEX array, dimension (LDT,K) *> The upper triangular factors of the block reflectors *> as returned by CTPQRT, stored as a NB-by-K matrix. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= NB. +*> \endverbatim *> -*> A (input/output) COMPLEX array, dimension +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension *> (LDA,N) if SIDE = 'L' or *> (LDA,K) if SIDE = 'R' *> On entry, the K-by-N or M-by-K matrix A. *> On exit, A is overwritten by the corresponding block of *> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDC >= max(1,K); *> If SIDE = 'R', LDC >= max(1,M). +*> \endverbatim *> -*> B (input/output) COMPLEX array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX array, dimension (LDB,N) *> On entry, the M-by-N matrix B. *> On exit, B is overwritten by the corresponding block of *> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. *> LDB >= max(1,M). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX array. The dimension of WORK is +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array. The dimension of WORK is *> N*NB if SIDE = 'L', or M*NB if SIDE = 'R'. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The columns of the pentagonal matrix V contain the elementary reflectors *> H(1), H(2), ..., H(K); V is composed of a rectangular block V1 and a diff --git a/SRC/ctpqrt.f b/SRC/ctpqrt.f index dff156e5..48a17058 100644 --- a/SRC/ctpqrt.f +++ b/SRC/ctpqrt.f @@ -57,59 +57,90 @@ *> N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* MIN(M,N) >= L >= 0. See Further Details. +*> L is INTEGER +*> The number of rows of the upper trapezoidal part of B. +*> MIN(M,N) >= L >= 0. See Further Details. +*> \endverbatim *> -*> NB (input) INTEGER +*> \param[in] NB +*> \verbatim +*> NB is INTEGER *> The block size to be used in the blocked QR. N >= NB >= 1. +*> \endverbatim *> -*> A (input/output) COMPLEX array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N) *> On entry, the upper triangular N-by-N matrix A. *> On exit, the elements on and above the diagonal of the array *> contain the upper triangular matrix R. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> B (input/output) COMPLEX array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX array, dimension (LDB,N) *> On entry, the pentagonal M-by-N matrix B. The first M-L rows *> are rectangular, and the last L rows are upper trapezoidal. *> On exit, B contains the pentagonal matrix V. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,M). +*> \endverbatim *> -*> T (output) COMPLEX array, dimension (LDT,N) +*> \param[out] T +*> \verbatim +*> T is COMPLEX array, dimension (LDT,N) *> The upper triangular block reflectors stored in compact form *> as a sequence of upper triangular blocks. See Further Details. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= NB. +*> \endverbatim *> -*> WORK (workspace) COMPLEX array, dimension (NB*N) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension (NB*N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> -*> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> The input matrix C is a (N+M)-by-N matrix *> *> C = [ A ] diff --git a/SRC/ctpqrt2.f b/SRC/ctpqrt2.f index 6eb3cae3..b33fb41b 100644 --- a/SRC/ctpqrt2.f +++ b/SRC/ctpqrt2.f @@ -55,53 +55,79 @@ *> N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* MIN(M,N) >= L >= 0. See Further Details. +*> L is INTEGER +*> The number of rows of the upper trapezoidal part of B. +*> MIN(M,N) >= L >= 0. See Further Details. +*> \endverbatim *> -*> A (input/output) COMPLEX array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA,N) *> On entry, the upper triangular N-by-N matrix A. *> On exit, the elements on and above the diagonal of the array *> contain the upper triangular matrix R. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> B (input/output) COMPLEX array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX array, dimension (LDB,N) *> On entry, the pentagonal M-by-N matrix B. The first M-L rows *> are rectangular, and the last L rows are upper trapezoidal. *> On exit, B contains the pentagonal matrix V. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,M). +*> \endverbatim *> -*> T (output) COMPLEX array, dimension (LDT,N) +*> \param[out] T +*> \verbatim +*> T is COMPLEX array, dimension (LDT,N) *> The N-by-N upper triangular factor T of the block reflector. *> See Further Details. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The input matrix C is a (N+M)-by-N matrix *> diff --git a/SRC/ctprfb.f b/SRC/ctprfb.f index 33c0d656..e71d821e 100644 --- a/SRC/ctprfb.f +++ b/SRC/ctprfb.f @@ -97,76 +97,111 @@ *> K >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complexOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* K >= L >= 0. See Further Details. +*> L is INTEGER +*> The order of the trapezoidal part of V. +*> K >= L >= 0. See Further Details. +*> \endverbatim *> -*> V (input) COMPLEX array, dimension +*> \param[in] V +*> \verbatim +*> V is COMPLEX array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,M) if STOREV = 'R' and SIDE = 'L' *> (LDV,N) if STOREV = 'R' and SIDE = 'R' *> The pentagonal matrix V, which contains the elementary reflectors *> H(1), H(2), ..., H(K). See Further Details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); *> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); *> if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> T (input) COMPLEX array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is COMPLEX array, dimension (LDT,K) *> The triangular K-by-K matrix T in the representation of the *> block reflector. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. *> LDT >= K. +*> \endverbatim *> -*> A (input/output) COMPLEX array, dimension +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX array, dimension *> (LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R' *> On entry, the K-by-N or M-by-K matrix A. *> On exit, A is overwritten by the corresponding block of *> H*C or H**H*C or C*H or C*H**H. See Futher Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDC >= max(1,K); *> If SIDE = 'R', LDC >= max(1,M). +*> \endverbatim *> -*> B (input/output) COMPLEX array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX array, dimension (LDB,N) *> On entry, the M-by-N matrix B. *> On exit, B is overwritten by the corresponding block of *> H*C or H**H*C or C*H or C*H**H. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. *> LDB >= max(1,M). +*> \endverbatim *> -*> WORK (workspace) COMPLEX array, dimension +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX array, dimension *> (LDWORK,N) if SIDE = 'L', *> (LDWORK,K) if SIDE = 'R'. +*> \endverbatim *> -*> LDWORK (input) INTEGER +*> \param[in] LDWORK +*> \verbatim +*> LDWORK is INTEGER *> The leading dimension of the array WORK. *> If SIDE = 'L', LDWORK >= K; *> if SIDE = 'R', LDWORK >= M. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complexOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix C is a composite matrix formed from blocks A and B. *> The block B is of size M-by-N; if SIDE = 'R', A is of size M-by-K, diff --git a/SRC/ctrexc.f b/SRC/ctrexc.f index 9d305eef..e7de5acb 100644 --- a/SRC/ctrexc.f +++ b/SRC/ctrexc.f @@ -89,15 +89,18 @@ *> \param[in] IFST *> \verbatim *> IFST is INTEGER +*> \endverbatim +*> *> \param[in] ILST *> \verbatim *> ILST is INTEGER +*> \endverbatim +*> \verbatim *> Specify the reordering of the diagonal elements of T: *> The element with row index IFST is moved to row ILST by a *> sequence of transpositions between adjacent elements. *> 1 <= IFST <= N; 1 <= ILST <= N. *> \endverbatim -*> \endverbatim *> *> \param[out] INFO *> \verbatim diff --git a/SRC/cuncsd.f b/SRC/cuncsd.f index 6baec686..bc01881d 100644 --- a/SRC/cuncsd.f +++ b/SRC/cuncsd.f @@ -129,16 +129,52 @@ *> The number of columns in X11 and X21. 0 <= Q <= M. *> \endverbatim *> -*> \param[in,out] X +*> \param[in,out] X11 *> \verbatim -*> X is COMPLEX array, dimension (LDX,M) -*> On entry, the unitary matrix whose CSD is desired. +*> X11 is COMPLEX array, dimension (LDX11,Q) +*> On entry, part of the unitary matrix whose CSD is desired. *> \endverbatim *> -*> \param[in] LDX +*> \param[in] LDX11 *> \verbatim -*> LDX is INTEGER -*> The leading dimension of X. LDX >= MAX(1,M). +*> LDX11 is INTEGER +*> The leading dimension of X11. LDX11 >= MAX(1,P). +*> \endverbatim +*> +*> \param[in,out] X12 +*> \verbatim +*> X12 is COMPLEX array, dimension (LDX12,M-Q) +*> On entry, part of the unitary matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX12 +*> \verbatim +*> LDX12 is INTEGER +*> The leading dimension of X12. LDX12 >= MAX(1,P). +*> \endverbatim +*> +*> \param[in,out] X21 +*> \verbatim +*> X21 is COMPLEX array, dimension (LDX21,Q) +*> On entry, part of the unitary matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX21 +*> \verbatim +*> LDX21 is INTEGER +*> The leading dimension of X11. LDX21 >= MAX(1,M-P). +*> \endverbatim +*> +*> \param[in,out] X22 +*> \verbatim +*> X22 is COMPLEX array, dimension (LDX22,M-Q) +*> On entry, part of the unitary matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX22 +*> \verbatim +*> LDX22 is INTEGER +*> The leading dimension of X11. LDX22 >= MAX(1,M-P). *> \endverbatim *> *> \param[out] THETA diff --git a/SRC/cunghr.f b/SRC/cunghr.f index a32a1c1c..dc903191 100644 --- a/SRC/cunghr.f +++ b/SRC/cunghr.f @@ -51,15 +51,18 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI must have the same values as in the previous call *> of CGEHRD. Q is equal to the unit matrix except in the *> submatrix Q(ilo+1:ihi,ilo+1:ihi). *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim diff --git a/SRC/cunmhr.f b/SRC/cunmhr.f index cca73211..8fca77f3 100644 --- a/SRC/cunmhr.f +++ b/SRC/cunmhr.f @@ -80,9 +80,13 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI must have the same values as in the previous call *> of CGEHRD. Q is equal to the unit matrix except in the *> submatrix Q(ilo+1:ihi,ilo+1:ihi). @@ -91,7 +95,6 @@ *> if SIDE = 'R', then 1 <= ILO <= IHI <= N, if N > 0, and *> ILO = 1 and IHI = 0, if N = 0. *> \endverbatim -*> \endverbatim *> *> \param[in] A *> \verbatim diff --git a/SRC/dbbcsd.f b/SRC/dbbcsd.f index 91049d1e..4f931e75 100644 --- a/SRC/dbbcsd.f +++ b/SRC/dbbcsd.f @@ -236,6 +236,40 @@ *> partially reduced top-right block. *> \endverbatim *> +*> \param[out] B21D +*> \verbatim +*> B21D is DOUBLE PRECISION array, dimension (Q) +*> When CBBCSD converges, B21D contains the negative sines of +*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then +*> B21D contains the diagonal of the partially reduced bottom-left +*> block. +*> \endverbatim +*> +*> \param[out] B21E +*> \verbatim +*> B21E is DOUBLE PRECISION array, dimension (Q-1) +*> When CBBCSD converges, B21E contains zeros. If CBBCSD fails +*> to converge, then B21E contains the subdiagonal of the +*> partially reduced bottom-left block. +*> \endverbatim +*> +*> \param[out] B22D +*> \verbatim +*> B22D is DOUBLE PRECISION array, dimension (Q) +*> When CBBCSD converges, B22D contains the negative sines of +*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then +*> B22D contains the diagonal of the partially reduced bottom-right +*> block. +*> \endverbatim +*> +*> \param[out] B22E +*> \verbatim +*> B22E is DOUBLE PRECISION array, dimension (Q-1) +*> When CBBCSD converges, B22E contains zeros. If CBBCSD fails +*> to converge, then B22E contains the subdiagonal of the +*> partially reduced bottom-right block. +*> \endverbatim +*> *> \param[out] WORK *> \verbatim *> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) diff --git a/SRC/dgbsv.f b/SRC/dgbsv.f index 87b04e59..2e54ec91 100644 --- a/SRC/dgbsv.f +++ b/SRC/dgbsv.f @@ -1,4 +1,4 @@ -*> \brief <b> DGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> +*> \brief <b> DGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> (simple driver) * * =========== DOCUMENTATION =========== * diff --git a/SRC/dgebal.f b/SRC/dgebal.f index 08d79990..a1b20f99 100644 --- a/SRC/dgebal.f +++ b/SRC/dgebal.f @@ -64,37 +64,36 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is DOUBLE array, dimension (LDA,N) +*> On entry, the input matrix A. +*> On exit, A is overwritten by the balanced matrix. +*> If JOB = 'N', A is not referenced. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> ILO (output) INTEGER -*> -*> IHI (output) INTEGER +*> \param[out] ILO +*> \verbatim +*> ILO is INTEGER +*> \endverbatim +*> \param[out] IHI +*> \verbatim +*> IHI is INTEGER *> ILO and IHI are set to integers such that on exit *> A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I = IHI+1,...,N. *> If JOB = 'N' or 'S', ILO = 1 and IHI = N. +*> \endverbatim *> -*> SCALE (output) DOUBLE PRECISION array, dimension (N) +*> \param[out] SCALE +*> \verbatim +*> SCALE is DOUBLE array, dimension (N) *> Details of the permutations and scaling factors applied to *> A. If P(j) is the index of the row and column interchanged *> with row and column j and D(j) is the scaling factor @@ -104,11 +103,33 @@ *> = P(j) for j = IHI+1,...,N. *> The order in which the interchanges are made is N to IHI+1, *> then 1 to ILO-1. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The permutations consist of row and column interchanges which put *> the matrix in the form diff --git a/SRC/dgebd2.f b/SRC/dgebd2.f index c8d8df44..32da134b 100644 --- a/SRC/dgebd2.f +++ b/SRC/dgebd2.f @@ -54,52 +54,93 @@ *> The number of columns in the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the m by n general matrix to be reduced. +*> On exit, +*> if m >= n, the diagonal and the first superdiagonal are +*> overwritten with the upper bidiagonal matrix B; the +*> elements below the diagonal, with the array TAUQ, represent +*> the orthogonal matrix Q as a product of elementary +*> reflectors, and the elements above the first superdiagonal, +*> with the array TAUP, represent the orthogonal matrix P as +*> a product of elementary reflectors; +*> if m < n, the diagonal and the first subdiagonal are +*> overwritten with the lower bidiagonal matrix B; the +*> elements below the first subdiagonal, with the array TAUQ, +*> represent the orthogonal matrix Q as a product of +*> elementary reflectors, and the elements above the diagonal, +*> with the array TAUP, represent the orthogonal matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) DOUBLE PRECISION array, dimension (min(M,N)) +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (min(M,N)) *> The diagonal elements of the bidiagonal matrix B: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) DOUBLE PRECISION array, dimension (min(M,N)-1) +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (min(M,N)-1) *> The off-diagonal elements of the bidiagonal matrix B: *> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1; *> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1. +*> \endverbatim *> -*> TAUQ (output) DOUBLE PRECISION array dimension (min(M,N)) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is DOUBLE PRECISION array dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) DOUBLE PRECISION array, dimension (min(M,N)) +*> \param[out] TAUP +*> \verbatim +*> TAUP is DOUBLE PRECISION array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix P. See Further Details. +*> \endverbatim *> -*> WORK (workspace) DOUBLE PRECISION array, dimension (max(M,N)) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (max(M,N)) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/dgebrd.f b/SRC/dgebrd.f index 70656784..91118e37 100644 --- a/SRC/dgebrd.f +++ b/SRC/dgebrd.f @@ -55,50 +55,72 @@ *> The number of columns in the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the M-by-N general matrix to be reduced. +*> On exit, +*> if m >= n, the diagonal and the first superdiagonal are +*> overwritten with the upper bidiagonal matrix B; the +*> elements below the diagonal, with the array TAUQ, represent +*> the orthogonal matrix Q as a product of elementary +*> reflectors, and the elements above the first superdiagonal, +*> with the array TAUP, represent the orthogonal matrix P as +*> a product of elementary reflectors; +*> if m < n, the diagonal and the first subdiagonal are +*> overwritten with the lower bidiagonal matrix B; the +*> elements below the first subdiagonal, with the array TAUQ, +*> represent the orthogonal matrix Q as a product of +*> elementary reflectors, and the elements above the diagonal, +*> with the array TAUP, represent the orthogonal matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) DOUBLE PRECISION array, dimension (min(M,N)) +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (min(M,N)) *> The diagonal elements of the bidiagonal matrix B: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) DOUBLE PRECISION array, dimension (min(M,N)-1) +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (min(M,N)-1) *> The off-diagonal elements of the bidiagonal matrix B: *> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1; *> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1. +*> \endverbatim *> -*> TAUQ (output) DOUBLE PRECISION array dimension (min(M,N)) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is DOUBLE PRECISION array dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) DOUBLE PRECISION array, dimension (min(M,N)) +*> \param[out] TAUP +*> \verbatim +*> TAUP is DOUBLE PRECISION array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix P. See Further Details. +*> \endverbatim *> -*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,M,N). *> For optimum performance LWORK >= (M+N)*NB, where NB *> is the optimal blocksize. @@ -107,11 +129,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/dgees.f b/SRC/dgees.f index f00eabe7..9e2dee76 100644 --- a/SRC/dgees.f +++ b/SRC/dgees.f @@ -166,8 +166,7 @@ *> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,3*N). *> For good performance, LWORK must generally be larger. -*> \endverbatim -*> \verbatim +*> *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error diff --git a/SRC/dgehd2.f b/SRC/dgehd2.f index f6d32925..daae6cee 100644 --- a/SRC/dgehd2.f +++ b/SRC/dgehd2.f @@ -45,48 +45,77 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] ILO +*> \verbatim +*> ILO is INTEGER +*> \endverbatim +*> +*> \param[in] IHI *> \verbatim -* set to 1 and N respectively. See Further Details. +*> IHI is INTEGER +*> \endverbatim +*> \verbatim +*> It is assumed that A is already upper triangular in rows +*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally +*> set by a previous call to DGEBAL; otherwise they should be +*> set to 1 and N respectively. See Further Details. *> 1 <= ILO <= IHI <= max(1,N). +*> \endverbatim *> -*> A (input/output) DOUBLE PRECISION array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the n by n general matrix to be reduced. *> On exit, the upper triangle and the first subdiagonal of A *> are overwritten with the upper Hessenberg matrix H, and the *> elements below the first subdiagonal, with the array TAU, *> represent the orthogonal matrix Q as a product of elementary *> reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> TAU (output) DOUBLE PRECISION array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace) DOUBLE PRECISION array, dimension (N) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of (ihi-ilo) elementary *> reflectors diff --git a/SRC/dgehrd.f b/SRC/dgehrd.f index b24b2e3f..653a5fb8 100644 --- a/SRC/dgehrd.f +++ b/SRC/dgehrd.f @@ -45,47 +45,57 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] ILO *> \verbatim -* set to 1 and N respectively. See Further Details. +*> ILO is INTEGER +*> \endverbatim +*> +*> \param[in] IHI +*> \verbatim +*> IHI is INTEGER +*> \endverbatim +*> \verbatim +*> It is assumed that A is already upper triangular in rows +*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally +*> set by a previous call to DGEBAL; otherwise they should be +*> set to 1 and N respectively. See Further Details. *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. +*> \endverbatim *> -*> A (input/output) DOUBLE PRECISION array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the N-by-N general matrix to be reduced. *> On exit, the upper triangle and the first subdiagonal of A *> are overwritten with the upper Hessenberg matrix H, and the *> elements below the first subdiagonal, with the array TAU, *> represent the orthogonal matrix Q as a product of elementary *> reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> TAU (output) DOUBLE PRECISION array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to *> zero. +*> \endverbatim *> -*> WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (LWORK) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. @@ -94,11 +104,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of (ihi-ilo) elementary *> reflectors diff --git a/SRC/dgejsv.f b/SRC/dgejsv.f index 41b61d3d..d653ded2 100644 --- a/SRC/dgejsv.f +++ b/SRC/dgejsv.f @@ -284,14 +284,12 @@ *> determined to be strictly smaller than N, SCONDA is *> returned as -1, thus indicating that the smallest *> singular values might be lost. -*> \endverbatim -*> \verbatim +*> *> If full SVD is needed, the following two condition numbers are *> useful for the analysis of the algorithm. They are provied for *> a developer/implementer who is familiar with the details of *> the method. -*> \endverbatim -*> \verbatim +*> *> WORK(4) = an estimate of the scaled condition number of the *> triangular factor in the first QR factorization. *> WORK(5) = an estimate of the scaled condition number of the @@ -299,8 +297,7 @@ *> The following two parameters are computed if JOBT .EQ. 'T'. *> They are provided for a developer/implementer who is familiar *> with the details of the method. -*> \endverbatim -*> \verbatim +*> *> WORK(6) = the entropy of A^t*A :: this is the Shannon entropy *> of diag(A^t*A) / Trace(A^t*A) taken as point in the *> probability simplex. @@ -312,8 +309,7 @@ *> LWORK is INTEGER *> Length of WORK to confirm proper allocation of work space. *> LWORK depends on the job: -*> \endverbatim -*> \verbatim +*> *> If only SIGMA is needed ( JOBU.EQ.'N', JOBV.EQ.'N' ) and *> -> .. no scaled condition estimate required (JOBE.EQ.'N'): *> LWORK >= max(2*M+N,4*N+1,7). This is the minimal requirement. @@ -330,8 +326,7 @@ *> In general, the optimal length LWORK is computed as *> LWORK >= max(2*M+N,N+LWORK(DGEQP3),N+LWORK(DGEQRF), *> N+N*N+LWORK(DPOCON),7). -*> \endverbatim -*> \verbatim +*> *> If SIGMA and the right singular vectors are needed (JOBV.EQ.'V'), *> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7). *> -> For optimal performance, LWORK >= max(2*M+N,3*N+(N+1)*NB,7), @@ -339,8 +334,7 @@ *> DORMLQ. In general, the optimal length LWORK is computed as *> LWORK >= max(2*M+N,N+LWORK(DGEQP3), N+LWORK(DPOCON), *> N+LWORK(DGELQ), 2*N+LWORK(DGEQRF), N+LWORK(DORMLQ)). -*> \endverbatim -*> \verbatim +*> *> If SIGMA and the left singular vectors are needed *> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7). *> -> For optimal performance: diff --git a/SRC/dgelq2.f b/SRC/dgelq2.f index bebd22ae..095c796f 100644 --- a/SRC/dgelq2.f +++ b/SRC/dgelq2.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and below the diagonal of the array +*> contain the m by min(m,n) lower trapezoidal matrix L (L is +*> lower triangular if m <= n); the elements above the diagonal, +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (M) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) DOUBLE PRECISION array, dimension (M) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/dgelqf.f b/SRC/dgelqf.f index 9cc3f109..cc1c8906 100644 --- a/SRC/dgelqf.f +++ b/SRC/dgelqf.f @@ -51,37 +51,39 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* product of elementary reflectors (see Further Details). +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, the elements on and below the diagonal of the array +*> contain the m-by-min(m,n) lower trapezoidal matrix L (L is +*> lower triangular if m <= n); the elements above the diagonal, +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,M). *> For optimum performance LWORK >= M*NB, where NB is the *> optimal blocksize. @@ -90,11 +92,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/dgeql2.f b/SRC/dgeql2.f index 8908d546..3c3aa3df 100644 --- a/SRC/dgeql2.f +++ b/SRC/dgeql2.f @@ -51,6 +51,44 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, if m >= n, the lower triangle of the subarray +*> A(m-n+1:m,1:n) contains the n by n lower triangular matrix L; +*> if m <= n, the elements on and below the (n-m)-th +*> superdiagonal contain the m by n lower trapezoidal matrix L; +*> the remaining elements, with the array TAU, represent the +*> orthogonal matrix Q as a product of elementary reflectors +*> (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +107,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) DOUBLE PRECISION array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/dgeqlf.f b/SRC/dgeqlf.f index befdfa8e..9e7c30a8 100644 --- a/SRC/dgeqlf.f +++ b/SRC/dgeqlf.f @@ -51,37 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* (see Further Details). +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, +*> if m >= n, the lower triangle of the subarray +*> A(m-n+1:m,1:n) contains the N-by-N lower triangular matrix L; +*> if m <= n, the elements on and below the (n-m)-th +*> superdiagonal contain the M-by-N lower trapezoidal matrix L; +*> the remaining elements, with the array TAU, represent the +*> orthogonal matrix Q as a product of elementary reflectors +*> (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. @@ -90,11 +95,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/dgeqr2.f b/SRC/dgeqr2.f index 0cbc5124..27a2606e 100644 --- a/SRC/dgeqr2.f +++ b/SRC/dgeqr2.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and above the diagonal of the array +*> contain the min(m,n) by n upper trapezoidal matrix R (R is +*> upper triangular if m >= n); the elements below the diagonal, +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) DOUBLE PRECISION array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/dgeqr2p.f b/SRC/dgeqr2p.f index 66fdf276..2764d256 100644 --- a/SRC/dgeqr2p.f +++ b/SRC/dgeqr2p.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and above the diagonal of the array +*> contain the min(m,n) by n upper trapezoidal matrix R (R is +*> upper triangular if m >= n); the elements below the diagonal, +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) DOUBLE PRECISION array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/dgeqrt.f b/SRC/dgeqrt.f index add064c0..09b15f61 100644 --- a/SRC/dgeqrt.f +++ b/SRC/dgeqrt.f @@ -117,7 +117,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* *> The matrix V stores the elementary reflectors H(i) in the i-th column *> below the diagonal. For example, if M=5 and N=3, the matrix V is *> diff --git a/SRC/dgeqrt2.f b/SRC/dgeqrt2.f index 461decc9..1d3f519e 100644 --- a/SRC/dgeqrt2.f +++ b/SRC/dgeqrt2.f @@ -74,8 +74,10 @@ *> reflector T; the elements below the diagonal are not used. *> See below for further details. *> \endverbatim +*> +*> \param[in] LDT *> \verbatim -*> LDT (intput) INTEGER +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N). *> \endverbatim *> diff --git a/SRC/dgeqrt3.f b/SRC/dgeqrt3.f index 1885306f..ff048629 100644 --- a/SRC/dgeqrt3.f +++ b/SRC/dgeqrt3.f @@ -77,8 +77,10 @@ *> reflector T; the elements below the diagonal are not used. *> See below for further details. *> \endverbatim +*> +*> \param[in] LDT *> \verbatim -*> LDT (intput) INTEGER +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N). *> \endverbatim *> diff --git a/SRC/dgerqf.f b/SRC/dgerqf.f index f6ecacb5..90b8594d 100644 --- a/SRC/dgerqf.f +++ b/SRC/dgerqf.f @@ -51,37 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* reflectors (see Further Details). +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, +*> if m <= n, the upper triangle of the subarray +*> A(1:m,n-m+1:n) contains the M-by-M upper triangular matrix R; +*> if m >= n, the elements on and above the (m-n)-th subdiagonal +*> contain the M-by-N upper trapezoidal matrix R; +*> the remaining elements, with the array TAU, represent the +*> orthogonal matrix Q as a product of min(m,n) elementary +*> reflectors (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,M). *> For optimum performance LWORK >= M*NB, where NB is *> the optimal blocksize. @@ -90,11 +95,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/dgesv.f b/SRC/dgesv.f index 7e7e1ec0..9764edf2 100644 --- a/SRC/dgesv.f +++ b/SRC/dgesv.f @@ -5,13 +5,15 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * +*> \htmlonly *> Download DGESV + dependencies *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgesv.f"> *> [TGZ]</a> *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgesv.f"> *> [ZIP]</a> *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgesv.f"> -*> [TXT]</a> +*> [TXT]</a> +*> \endhtmlonly * * Definition * ========== diff --git a/SRC/dggglm.f b/SRC/dggglm.f index f31581d6..40b21222 100644 --- a/SRC/dggglm.f +++ b/SRC/dggglm.f @@ -123,11 +123,14 @@ *> \param[out] X *> \verbatim *> X is DOUBLE PRECISION array, dimension (M) +*> \endverbatim +*> *> \param[out] Y *> \verbatim *> Y is DOUBLE PRECISION array, dimension (P) -*> On exit, X and Y are the solutions of the GLM problem. *> \endverbatim +*> \verbatim +*> On exit, X and Y are the solutions of the GLM problem. *> \endverbatim *> *> \param[out] WORK diff --git a/SRC/dgghrd.f b/SRC/dgghrd.f index 7b6ad71b..ae3a3937 100644 --- a/SRC/dgghrd.f +++ b/SRC/dgghrd.f @@ -97,17 +97,20 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI mark the rows and columns of A which are to be *> reduced. It is assumed that A is already upper triangular *> in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are -*> normally set by a previous call to SGGBAL; otherwise they +*> normally set by a previous call to DGGBAL; otherwise they *> should be set to 1 and N respectively. *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim diff --git a/SRC/dggqrf.f b/SRC/dggqrf.f index e00acd6c..497afc7b 100644 --- a/SRC/dggqrf.f +++ b/SRC/dggqrf.f @@ -102,27 +102,16 @@ *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[out] TAUA *> \verbatim -* represent the orthogonal matrix Q (see Further Details). +*> TAUA is DOUBLE PRECISION array, dimension (min(N,M)) +*> The scalar factors of the elementary reflectors which +*> represent the orthogonal matrix Q (see Further Details). +*> \endverbatim *> -*> B (input/output) DOUBLE PRECISION array, dimension (LDB,P) +*> \param[in,out] B +*> \verbatim +*> B is DOUBLE PRECISION array, dimension (LDB,P) *> On entry, the N-by-P matrix B. *> On exit, if N <= P, the upper triangle of the subarray *> B(1:N,P-N+1:P) contains the N-by-N upper triangular matrix T; @@ -131,18 +120,30 @@ *> elements, with the array TAUB, represent the orthogonal *> matrix Z as a product of elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). +*> \endverbatim *> -*> TAUB (output) DOUBLE PRECISION array, dimension (min(N,P)) +*> \param[out] TAUB +*> \verbatim +*> TAUB is DOUBLE PRECISION array, dimension (min(N,P)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix Z (see Further Details). +*> \endverbatim *> -*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N,M,P). *> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), *> where NB1 is the optimal blocksize for the QR factorization @@ -154,11 +155,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/dggrqf.f b/SRC/dggrqf.f index 6a930a72..1d1a9a46 100644 --- a/SRC/dggrqf.f +++ b/SRC/dggrqf.f @@ -103,45 +103,46 @@ *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[out] TAUA *> \verbatim -* represent the orthogonal matrix Q (see Further Details). +*> TAUA is DOUBLE PRECISION array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors which +*> represent the orthogonal matrix Q (see Further Details). +*> \endverbatim *> -*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is DOUBLE PRECISION array, dimension (LDB,N) *> On entry, the P-by-N matrix B. *> On exit, the elements on and above the diagonal of the array *> contain the min(P,N)-by-N upper trapezoidal matrix T (T is *> upper triangular if P >= N); the elements below the diagonal, *> with the array TAUB, represent the orthogonal matrix Z as a *> product of elementary reflectors (see Further Details). +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,P). +*> \endverbatim *> -*> TAUB (output) DOUBLE PRECISION array, dimension (min(P,N)) +*> \param[out] TAUB +*> \verbatim +*> TAUB is DOUBLE PRECISION array, dimension (min(P,N)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix Z (see Further Details). +*> \endverbatim *> -*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N,M,P). *> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), *> where NB1 is the optimal blocksize for the RQ factorization @@ -153,11 +154,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INF0= -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/dggsvd.f b/SRC/dggsvd.f index fce2da0f..c3b31459 100644 --- a/SRC/dggsvd.f +++ b/SRC/dggsvd.f @@ -163,14 +163,17 @@ *> \param[out] K *> \verbatim *> K is INTEGER +*> \endverbatim +*> *> \param[out] L *> \verbatim *> L is INTEGER +*> \endverbatim +*> \verbatim *> On exit, K and L specify the dimension of the subblocks -*> described in the Purpose section. +*> described in Purpose. *> K + L = effective numerical rank of (A**T,B**T)**T. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim @@ -203,9 +206,13 @@ *> \param[out] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> *> \param[out] BETA *> \verbatim *> BETA is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> \verbatim *> On exit, ALPHA and BETA contain the generalized singular *> value pairs of A and B; *> ALPHA(1:K) = 1, @@ -220,7 +227,6 @@ *> ALPHA(K+L+1:N) = 0 *> BETA(K+L+1:N) = 0 *> \endverbatim -*> \endverbatim *> *> \param[out] U *> \verbatim diff --git a/SRC/dggsvp.f b/SRC/dggsvp.f index e25cb8fa..12bce973 100644 --- a/SRC/dggsvp.f +++ b/SRC/dggsvp.f @@ -136,30 +136,36 @@ *> \param[in] TOLA *> \verbatim *> TOLA is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] TOLB *> \verbatim *> TOLB is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> TOLA and TOLB are the thresholds to determine the effective *> numerical rank of matrix B and a subblock of A. Generally, *> they are set to -*> TOLA = MAX(M,N)*norm(A)*MAZHEPS, -*> TOLB = MAX(P,N)*norm(B)*MAZHEPS. +*> TOLA = MAX(M,N)*norm(A)*MACHEPS, +*> TOLB = MAX(P,N)*norm(B)*MACHEPS. *> The size of TOLA and TOLB may affect the size of backward *> errors of the decomposition. *> \endverbatim -*> \endverbatim *> *> \param[out] K *> \verbatim *> K is INTEGER +*> \endverbatim +*> *> \param[out] L *> \verbatim *> L is INTEGER +*> \endverbatim +*> \verbatim *> On exit, K and L specify the dimension of the subblocks *> described in Purpose section. *> K + L = effective numerical rank of (A**T,B**T)**T. *> \endverbatim -*> \endverbatim *> *> \param[out] U *> \verbatim diff --git a/SRC/dhsein.f b/SRC/dhsein.f index 617174b2..e86297fe 100644 --- a/SRC/dhsein.f +++ b/SRC/dhsein.f @@ -118,9 +118,13 @@ *> \param[in,out] WR *> \verbatim *> WR is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> *> \param[in] WI *> \verbatim *> WI is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> \verbatim *> On entry, the real and imaginary parts of the eigenvalues of *> H; a complex conjugate pair of eigenvalues must be stored in *> consecutive elements of WR and WI. @@ -128,7 +132,6 @@ *> are perturbed slightly in searching for independent *> eigenvectors. *> \endverbatim -*> \endverbatim *> *> \param[in,out] VL *> \verbatim diff --git a/SRC/dhseqr.f b/SRC/dhseqr.f index be264d3e..0ea3bc9e 100644 --- a/SRC/dhseqr.f +++ b/SRC/dhseqr.f @@ -76,18 +76,21 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> It is assumed that H is already upper triangular in rows *> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally -*> set by a previous call to DGEBAL, and then passed to DGEHRD +*> set by a previous call to DGEBAL, and then passed to ZGEHRD *> when the matrix output by DGEBAL is reduced to Hessenberg *> form. Otherwise ILO and IHI should be set to 1 and N *> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N. *> If N = 0, then ILO = 1 and IHI = 0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] H *> \verbatim @@ -118,9 +121,13 @@ *> \param[out] WR *> \verbatim *> WR is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> *> \param[out] WI *> \verbatim *> WI is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> \verbatim *> The real and imaginary parts, respectively, of the computed *> eigenvalues. If two eigenvalues are computed as a complex *> conjugate pair, they are stored in consecutive elements of @@ -131,7 +138,6 @@ *> diagonal block, WI(i) = sqrt(-H(i+1,i)*H(i,i+1)) and *> WI(i+1) = -WI(i). *> \endverbatim -*> \endverbatim *> *> \param[in,out] Z *> \verbatim diff --git a/SRC/dla_gbrfsx_extended.f b/SRC/dla_gbrfsx_extended.f index 36c2c57b..40f6de00 100644 --- a/SRC/dla_gbrfsx_extended.f +++ b/SRC/dla_gbrfsx_extended.f @@ -107,29 +107,29 @@ *> matrix B. *> \endverbatim *> -*> \param[in] A +*> \param[in] AB *> \verbatim -*> A is DOUBLE PRECISION array, dimension (LDA,N) -*> On entry, the N-by-N matrix A. +*> AB is DOUBLE PRECISION array, dimension (LDAB,N) +*> On entry, the N-by-N matrix AB. *> \endverbatim *> -*> \param[in] LDA +*> \param[in] LDAB *> \verbatim -*> LDA is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> LDAB is INTEGER +*> The leading dimension of the array AB. LDBA >= max(1,N). *> \endverbatim *> -*> \param[in] AF +*> \param[in] AFB *> \verbatim -*> AF is DOUBLE PRECISION array, dimension (LDAF,N) +*> AFB is DOUBLE PRECISION array, dimension (LDAFB,N) *> The factors L and U from the factorization *> A = P*L*U as computed by DGBTRF. *> \endverbatim *> -*> \param[in] LDAF +*> \param[in] LDAFB *> \verbatim -*> LDAF is INTEGER -*> The leading dimension of the array AF. LDAF >= max(1,N). +*> LDAFB is INTEGER +*> The leading dimension of the array AF. LDAFB >= max(1,N). *> \endverbatim *> *> \param[in] IPIV @@ -213,37 +213,31 @@ *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> normwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Normwise relative error in the ith solution vector: *> max_j (abs(XTRUE(j,i) - X(j,i))) *> ------------------------------ *> max_j abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the type of error information as described *> below. There currently are up to three pieces of information *> returned. -*> \endverbatim -*> \verbatim +*> *> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim +*> *> The second index in ERR_BNDS_NORM(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated normwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -252,8 +246,7 @@ *> appropriately scaled matrix Z. *> Let Z = S*A, where S scales each row by a power of the *> radix so all absolute row sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra @@ -267,14 +260,12 @@ *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> componentwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Componentwise relative error in the ith solution vector: *> abs(XTRUE(j,i) - X(j,i)) *> max_j ---------------------- *> abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the right-hand side i (on which the *> componentwise relative error depends), and the type of error *> information as described below. There currently are up to three @@ -282,26 +273,22 @@ *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then *> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most *> the first (:,N_ERR_BNDS) entries are returned. -*> \endverbatim -*> \verbatim +*> *> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim +*> *> The second index in ERR_BNDS_COMP(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated componentwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -312,8 +299,7 @@ *> current right-hand side and S scales each row of *> A*diag(x) by a power of the radix so all absolute row *> sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra diff --git a/SRC/dla_gerfsx_extended.f b/SRC/dla_gerfsx_extended.f index c9788e9e..c3e009be 100644 --- a/SRC/dla_gerfsx_extended.f +++ b/SRC/dla_gerfsx_extended.f @@ -48,10 +48,10 @@ *> and provides error bounds and backward error estimates for the solution. *> This subroutine is called by DGERFSX to perform iterative refinement. *> In addition to normwise error bound, the code provides maximum -*> componentwise error bound if possible. See comments for ERR_BNDS_NORM -*> and ERR_BNDS_COMP for details of the error bounds. Note that this +*> componentwise error bound if possible. See comments for ERRS_N +*> and ERRS_C for details of the error bounds. Note that this *> subroutine is only resonsible for setting the second fields of -*> ERR_BNDS_NORM and ERR_BNDS_COMP. +*> ERRS_N and ERRS_C. *> *>\endverbatim * @@ -186,50 +186,44 @@ *> \param[in] N_NORMS *> \verbatim *> N_NORMS is INTEGER -*> Determines which error bounds to return (see ERR_BNDS_NORM -*> and ERR_BNDS_COMP). +*> Determines which error bounds to return (see ERRS_N +*> and ERRS_C). *> If N_NORMS >= 1 return normwise error bounds. *> If N_NORMS >= 2 return componentwise error bounds. *> \endverbatim *> -*> \param[in,out] ERR_BNDS_NORM +*> \param[in,out] ERRS_N *> \verbatim -*> ERR_BNDS_NORM is DOUBLE PRECISION array, dimension +*> ERRS_N is DOUBLE PRECISION array, dimension *> (NRHS, N_ERR_BNDS) *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> normwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Normwise relative error in the ith solution vector: *> max_j (abs(XTRUE(j,i) - X(j,i))) *> ------------------------------ *> max_j abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the type of error information as described *> below. There currently are up to three pieces of information *> returned. -*> \endverbatim -*> \verbatim -*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith +*> +*> The first index in ERRS_N(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim -*> The second index in ERR_BNDS_NORM(:,err) contains the following +*> +*> The second index in ERRS_N(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated normwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -238,56 +232,49 @@ *> appropriately scaled matrix Z. *> Let Z = S*A, where S scales each row by a power of the *> radix so all absolute row sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra *> cautions. *> \endverbatim *> -*> \param[in,out] ERR_BNDS_COMP +*> \param[in,out] ERRS_C *> \verbatim -*> ERR_BNDS_COMP is DOUBLE PRECISION array, dimension +*> ERRS_C is DOUBLE PRECISION array, dimension *> (NRHS, N_ERR_BNDS) *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> componentwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Componentwise relative error in the ith solution vector: *> abs(XTRUE(j,i) - X(j,i)) *> max_j ---------------------- *> abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the right-hand side i (on which the *> componentwise relative error depends), and the type of error *> information as described below. There currently are up to three *> pieces of information returned for each right-hand side. If *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then -*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most +*> ERRS_C is not accessed. If N_ERR_BNDS .LT. 3, then at most *> the first (:,N_ERR_BNDS) entries are returned. -*> \endverbatim -*> \verbatim -*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith +*> +*> The first index in ERRS_C(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim -*> The second index in ERR_BNDS_COMP(:,err) contains the following +*> +*> The second index in ERRS_C(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated componentwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -298,8 +285,7 @@ *> current right-hand side and S scales each row of *> A*diag(x) by a power of the radix so all absolute row *> sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra @@ -350,7 +336,7 @@ *> permit convergence using approximate factorizations or *> factorizations other than LU. If the factorization uses a *> technique other than Gaussian elimination, the guarantees in -*> ERR_BNDS_NORM and ERR_BNDS_COMP may no longer be trustworthy. +*> ERRS_N and ERRS_C may no longer be trustworthy. *> \endverbatim *> *> \param[in] RTHRESH diff --git a/SRC/dla_lin_berr.f b/SRC/dla_lin_berr.f index 8fbc294e..dbf450bd 100644 --- a/SRC/dla_lin_berr.f +++ b/SRC/dla_lin_berr.f @@ -77,13 +77,13 @@ *> The denominator in the relative backward error formula above, i.e., *> the matrix abs(op(A_s))*abs(Y) + abs(B_s). The matrices A, Y, and B *> are from iterative refinement (see dla_gerfsx_extended.f). +*> \endverbatim *> *> \param[out] BERR *> \verbatim *> BERR is DOUBLE PRECISION array, dimension (NRHS) *> The component-wise relative backward error from the formula above. *> \endverbatim -*> \endverbatim *> * * Authors diff --git a/SRC/dla_syrpvgrw.f b/SRC/dla_syrpvgrw.f index c677cf9b..33a476e9 100644 --- a/SRC/dla_syrpvgrw.f +++ b/SRC/dla_syrpvgrw.f @@ -67,12 +67,6 @@ *> column INFO is exactly 0. *> \endverbatim *> -*> \param[in] NCOLS -*> \verbatim -*> NCOLS is INTEGER -*> The number of columns of the matrix A. NCOLS >= 0. -*> \endverbatim -*> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) diff --git a/SRC/dlabrd.f b/SRC/dlabrd.f index 51255d24..406a7b7f 100644 --- a/SRC/dlabrd.f +++ b/SRC/dlabrd.f @@ -66,59 +66,105 @@ *> The number of leading rows and columns of A to be reduced. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the m by n general matrix to be reduced. +*> On exit, the first NB rows and columns of the matrix are +*> overwritten; the rest of the array is unchanged. +*> If m >= n, elements on and below the diagonal in the first NB +*> columns, with the array TAUQ, represent the orthogonal +*> matrix Q as a product of elementary reflectors; and +*> elements above the diagonal in the first NB rows, with the +*> array TAUP, represent the orthogonal matrix P as a product +*> of elementary reflectors. +*> If m < n, elements below the diagonal in the first NB +*> columns, with the array TAUQ, represent the orthogonal +*> matrix Q as a product of elementary reflectors, and +*> elements on and above the diagonal in the first NB rows, +*> with the array TAUP, represent the orthogonal matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) DOUBLE PRECISION array, dimension (NB) +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (NB) *> The diagonal elements of the first NB rows and columns of *> the reduced matrix. D(i) = A(i,i). +*> \endverbatim *> -*> E (output) DOUBLE PRECISION array, dimension (NB) +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (NB) *> The off-diagonal elements of the first NB rows and columns of *> the reduced matrix. +*> \endverbatim *> -*> TAUQ (output) DOUBLE PRECISION array dimension (NB) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is DOUBLE PRECISION array dimension (NB) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) DOUBLE PRECISION array, dimension (NB) +*> \param[out] TAUP +*> \verbatim +*> TAUP is DOUBLE PRECISION array, dimension (NB) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix P. See Further Details. +*> \endverbatim *> -*> X (output) DOUBLE PRECISION array, dimension (LDX,NB) +*> \param[out] X +*> \verbatim +*> X is DOUBLE PRECISION array, dimension (LDX,NB) *> The m-by-nb matrix X required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDX (input) INTEGER +*> \param[in] LDX +*> \verbatim +*> LDX is INTEGER *> The leading dimension of the array X. LDX >= max(1,M). +*> \endverbatim *> -*> Y (output) DOUBLE PRECISION array, dimension (LDY,NB) +*> \param[out] Y +*> \verbatim +*> Y is DOUBLE PRECISION array, dimension (LDY,NB) *> The n-by-nb matrix Y required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDY (input) INTEGER +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER *> The leading dimension of the array Y. LDY >= max(1,N). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/dlacon.f b/SRC/dlacon.f index 280ab921..c2489d05 100644 --- a/SRC/dlacon.f +++ b/SRC/dlacon.f @@ -104,8 +104,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> Contributed by Nick Higham, University of Manchester. *> Originally named SONEST, dated March 16, 1988. diff --git a/SRC/dlaed3.f b/SRC/dlaed3.f index 8bf0bf9d..06a20f09 100644 --- a/SRC/dlaed3.f +++ b/SRC/dlaed3.f @@ -153,12 +153,6 @@ *> to update the system. *> \endverbatim *> -*> \param[in] LDS -*> \verbatim -*> LDS is INTEGER -*> The leading dimension of S. LDS >= max(1,K). -*> \endverbatim -*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/SRC/dlagtm.f b/SRC/dlagtm.f index 300cb2a1..bfa2b179 100644 --- a/SRC/dlagtm.f +++ b/SRC/dlagtm.f @@ -99,12 +99,13 @@ *> \verbatim *> X is DOUBLE PRECISION array, dimension (LDX,NRHS) *> The N by NRHS matrix X. +*> \endverbatim +*> *> \param[in] LDX *> \verbatim *> LDX is INTEGER *> The leading dimension of the array X. LDX >= max(N,1). *> \endverbatim -*> \endverbatim *> *> \param[in] BETA *> \verbatim diff --git a/SRC/dlahr2.f b/SRC/dlahr2.f index b3a0dcb8..81d49234 100644 --- a/SRC/dlahr2.f +++ b/SRC/dlahr2.f @@ -65,6 +65,55 @@ *> The number of columns to be reduced. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N-K+1) +*> On entry, the n-by-(n-k+1) general matrix A. +*> On exit, the elements on and above the k-th subdiagonal in +*> the first NB columns are overwritten with the corresponding +*> elements of the reduced matrix; the elements below the k-th +*> subdiagonal, with the array TAU, represent the matrix Q as a +*> product of elementary reflectors. The other columns of A are +*> unchanged. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (NB) +*> The scalar factors of the elementary reflectors. See Further +*> Details. +*> \endverbatim +*> +*> \param[out] T +*> \verbatim +*> T is DOUBLE PRECISION array, dimension (LDT,NB) +*> The upper triangular matrix T. +*> \endverbatim +*> +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER +*> The leading dimension of the array T. LDT >= NB. +*> \endverbatim +*> +*> \param[out] Y +*> \verbatim +*> Y is DOUBLE PRECISION array, dimension (LDY,NB) +*> The n-by-nb matrix Y. +*> \endverbatim +*> +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER +*> The leading dimension of the array Y. LDY >= N. +*> \endverbatim +*> * * Authors * ======= @@ -83,27 +132,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* unchanged. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> TAU (output) DOUBLE PRECISION array, dimension (NB) -*> The scalar factors of the elementary reflectors. See Further -*> Details. -*> -*> T (output) DOUBLE PRECISION array, dimension (LDT,NB) -*> The upper triangular matrix T. -*> -*> LDT (input) INTEGER -*> The leading dimension of the array T. LDT >= NB. -*> -*> Y (output) DOUBLE PRECISION array, dimension (LDY,NB) -*> The n-by-nb matrix Y. -*> -*> LDY (input) INTEGER -*> The leading dimension of the array Y. LDY >= N. -*> *> *> The matrix Q is represented as a product of nb elementary reflectors *> diff --git a/SRC/dlahrd.f b/SRC/dlahrd.f index 189e6e8c..92e709ed 100644 --- a/SRC/dlahrd.f +++ b/SRC/dlahrd.f @@ -66,6 +66,55 @@ *> The number of columns to be reduced. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N-K+1) +*> On entry, the n-by-(n-k+1) general matrix A. +*> On exit, the elements on and above the k-th subdiagonal in +*> the first NB columns are overwritten with the corresponding +*> elements of the reduced matrix; the elements below the k-th +*> subdiagonal, with the array TAU, represent the matrix Q as a +*> product of elementary reflectors. The other columns of A are +*> unchanged. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (NB) +*> The scalar factors of the elementary reflectors. See Further +*> Details. +*> \endverbatim +*> +*> \param[out] T +*> \verbatim +*> T is DOUBLE PRECISION array, dimension (LDT,NB) +*> The upper triangular matrix T. +*> \endverbatim +*> +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER +*> The leading dimension of the array T. LDT >= NB. +*> \endverbatim +*> +*> \param[out] Y +*> \verbatim +*> Y is DOUBLE PRECISION array, dimension (LDY,NB) +*> The n-by-nb matrix Y. +*> \endverbatim +*> +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER +*> The leading dimension of the array Y. LDY >= N. +*> \endverbatim +*> * * Authors * ======= @@ -84,27 +133,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* unchanged. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> TAU (output) DOUBLE PRECISION array, dimension (NB) -*> The scalar factors of the elementary reflectors. See Further -*> Details. -*> -*> T (output) DOUBLE PRECISION array, dimension (LDT,NB) -*> The upper triangular matrix T. -*> -*> LDT (input) INTEGER -*> The leading dimension of the array T. LDT >= NB. -*> -*> Y (output) DOUBLE PRECISION array, dimension (LDY,NB) -*> The n-by-nb matrix Y. -*> -*> LDY (input) INTEGER -*> The leading dimension of the array Y. LDY >= N. -*> *> *> The matrix Q is represented as a product of nb elementary reflectors *> diff --git a/SRC/dlaqr0.f b/SRC/dlaqr0.f index c15924fe..b83ef92e 100644 --- a/SRC/dlaqr0.f +++ b/SRC/dlaqr0.f @@ -196,37 +196,29 @@ *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANT is .FALSE., then on exit, *> the remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTT is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (*) (initial value of H)*U = U*(final value of H) -*> \endverbatim -*> \verbatim +*> *> where U is an orthogonal matrix. The final *> value of H is upper Hessenberg and quasi-triangular *> in rows and columns INFO+1 through IHI. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (final value of Z(ILO:IHI,ILOZ:IHIZ) *> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U -*> \endverbatim -*> \verbatim +*> *> where U is the orthogonal matrix in (*) (regard- *> less of the value of WANTT.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not *> accessed. *> \endverbatim @@ -236,15 +228,13 @@ *> Based on contributions by *> Karen Braman and Ralph Byers, Department of Mathematics, *> University of Kansas, USA -*> \endverbatim -*> \verbatim +*> *> References: *> K. Braman, R. Byers and R. Mathias, The Multi-Shift QR *> Algorithm Part I: Maintaining Well Focused Shifts, and Level 3 *> Performance, SIAM Journal of Matrix Analysis, volume 23, pages *> 929--947, 2002. -*> \endverbatim -*> \verbatim +*> *> K. Braman, R. Byers and R. Mathias, The Multi-Shift QR *> Algorithm Part II: Aggressive Early Deflation, SIAM Journal *> of Matrix Analysis, volume 23, pages 948--973, 2002. diff --git a/SRC/dlaqr4.f b/SRC/dlaqr4.f index 760f13d9..635c49b2 100644 --- a/SRC/dlaqr4.f +++ b/SRC/dlaqr4.f @@ -203,37 +203,29 @@ *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANT is .FALSE., then on exit, *> the remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTT is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (*) (initial value of H)*U = U*(final value of H) -*> \endverbatim -*> \verbatim -*> where U is an orthogonal matrix. The final -*> value of H is upper Hessenberg and quasi-triangular -*> in rows and columns INFO+1 through IHI. -*> \endverbatim -*> \verbatim +*> +*> where U is a orthogonal matrix. The final +*> value of H is upper Hessenberg and triangular in +*> rows and columns INFO+1 through IHI. +*> *> If INFO .GT. 0 and WANTZ is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (final value of Z(ILO:IHI,ILOZ:IHIZ) *> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U -*> \endverbatim -*> \verbatim +*> *> where U is the orthogonal matrix in (*) (regard- *> less of the value of WANTT.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not *> accessed. *> \endverbatim diff --git a/SRC/dlarfb.f b/SRC/dlarfb.f index d690f3d3..00e8b948 100644 --- a/SRC/dlarfb.f +++ b/SRC/dlarfb.f @@ -93,53 +93,81 @@ *> reflectors whose product defines the block reflector). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] V *> \verbatim -* The matrix V. See Further Details. +*> V is DOUBLE PRECISION array, dimension +*> (LDV,K) if STOREV = 'C' +*> (LDV,M) if STOREV = 'R' and SIDE = 'L' +*> (LDV,N) if STOREV = 'R' and SIDE = 'R' +*> The matrix V. See Further Details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); *> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); *> if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> T (input) DOUBLE PRECISION array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is DOUBLE PRECISION array, dimension (LDT,K) *> The triangular k by k matrix T in the representation of the *> block reflector. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> -*> C (input/output) DOUBLE PRECISION array, dimension (LDC,N) +*> \param[in,out] C +*> \verbatim +*> C is DOUBLE PRECISION array, dimension (LDC,N) *> On entry, the m by n matrix C. *> On exit, C is overwritten by H*C or H**T*C or C*H or C*H**T. +*> \endverbatim *> -*> LDC (input) INTEGER +*> \param[in] LDC +*> \verbatim +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). +*> \endverbatim *> -*> WORK (workspace) DOUBLE PRECISION array, dimension (LDWORK,K) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (LDWORK,K) +*> \endverbatim *> -*> LDWORK (input) INTEGER +*> \param[in] LDWORK +*> \verbatim +*> LDWORK is INTEGER *> The leading dimension of the array WORK. *> If SIDE = 'L', LDWORK >= max(1,N); *> if SIDE = 'R', LDWORK >= max(1,M). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and diff --git a/SRC/dlarft.f b/SRC/dlarft.f index 58efb595..c1314670 100644 --- a/SRC/dlarft.f +++ b/SRC/dlarft.f @@ -63,56 +63,82 @@ *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] STOREV *> \verbatim -* reflectors are stored (see also Further Details): +*> STOREV is CHARACTER*1 +*> Specifies how the vectors which define the elementary +*> reflectors are stored (see also Further Details): *> = 'C': columnwise *> = 'R': rowwise +*> \endverbatim *> -*> N (input) INTEGER +*> \param[in] N +*> \verbatim +*> N is INTEGER *> The order of the block reflector H. N >= 0. +*> \endverbatim *> -*> K (input) INTEGER +*> \param[in] K +*> \verbatim +*> K is INTEGER *> The order of the triangular factor T (= the number of *> elementary reflectors). K >= 1. +*> \endverbatim *> -*> V (input/output) DOUBLE PRECISION array, dimension +*> \param[in,out] V +*> \verbatim +*> V is DOUBLE PRECISION array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,N) if STOREV = 'R' *> The matrix V. See further details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> TAU (input) DOUBLE PRECISION array, dimension (K) +*> \param[in] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i). +*> \endverbatim *> -*> T (output) DOUBLE PRECISION array, dimension (LDT,K) +*> \param[out] T +*> \verbatim +*> T is DOUBLE PRECISION array, dimension (LDT,K) *> The k by k triangular factor T of the block reflector. *> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is *> lower triangular. The rest of the array is not used. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and diff --git a/SRC/dlarre.f b/SRC/dlarre.f index 7963159f..662adec5 100644 --- a/SRC/dlarre.f +++ b/SRC/dlarre.f @@ -278,7 +278,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details *> The base representations are required to suffer very little *> element growth and consequently define all their eigenvalues to *> high relative accuracy. diff --git a/SRC/dlarrv.f b/SRC/dlarrv.f index 98818a53..cac54ed7 100644 --- a/SRC/dlarrv.f +++ b/SRC/dlarrv.f @@ -234,14 +234,12 @@ *> \verbatim *> INFO is INTEGER *> = 0: successful exit -*> \endverbatim -*> \verbatim +*> *> > 0: A problem occured in DLARRV. *> < 0: One of the called subroutines signaled an internal problem. *> Needs inspection of the corresponding parameter IINFO *> for further information. -*> \endverbatim -*> \verbatim +*> *> =-1: Problem in DLARRB when refining a child's eigenvalues. *> =-2: Problem in DLARRF when computing the RRR of a child. *> When a child is inside a tight cluster, it can be difficult diff --git a/SRC/dlarzt.f b/SRC/dlarzt.f index a0c2b08e..a88aa5c2 100644 --- a/SRC/dlarzt.f +++ b/SRC/dlarzt.f @@ -66,56 +66,82 @@ *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] STOREV *> \verbatim -* reflectors are stored (see also Further Details): +*> STOREV is CHARACTER*1 +*> Specifies how the vectors which define the elementary +*> reflectors are stored (see also Further Details): *> = 'C': columnwise (not supported yet) *> = 'R': rowwise +*> \endverbatim *> -*> N (input) INTEGER +*> \param[in] N +*> \verbatim +*> N is INTEGER *> The order of the block reflector H. N >= 0. +*> \endverbatim *> -*> K (input) INTEGER +*> \param[in] K +*> \verbatim +*> K is INTEGER *> The order of the triangular factor T (= the number of *> elementary reflectors). K >= 1. +*> \endverbatim *> -*> V (input/output) DOUBLE PRECISION array, dimension +*> \param[in,out] V +*> \verbatim +*> V is DOUBLE PRECISION array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,N) if STOREV = 'R' *> The matrix V. See further details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> TAU (input) DOUBLE PRECISION array, dimension (K) +*> \param[in] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i). +*> \endverbatim *> -*> T (output) DOUBLE PRECISION array, dimension (LDT,K) +*> \param[out] T +*> \verbatim +*> T is DOUBLE PRECISION array, dimension (LDT,K) *> The k by k triangular factor T of the block reflector. *> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is *> lower triangular. The rest of the array is not used. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> Based on contributions by *> A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA diff --git a/SRC/dlascl.f b/SRC/dlascl.f index 63efaaef..b9f3a22e 100644 --- a/SRC/dlascl.f +++ b/SRC/dlascl.f @@ -84,6 +84,8 @@ *> \param[in] CTO *> \verbatim *> CTO is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> The matrix A is multiplied by CTO/CFROM. A(I,J) is computed *> without over/underflow if the final result CTO*A(I,J)/CFROM *> can be represented without over/underflow. CFROM must be diff --git a/SRC/dlasq4.f b/SRC/dlasq4.f index fb1f897c..efba3bc7 100644 --- a/SRC/dlasq4.f +++ b/SRC/dlasq4.f @@ -65,9 +65,9 @@ *> PP=0 for ping, PP=1 for pong. *> \endverbatim *> -*> \param[in] NOIN +*> \param[in] N0IN *> \verbatim -*> NOIN is INTEGER +*> N0IN is INTEGER *> The value of N0 at start of EIGTEST. *> \endverbatim *> diff --git a/SRC/dlatrd.f b/SRC/dlatrd.f index 259fbb71..5d06c908 100644 --- a/SRC/dlatrd.f +++ b/SRC/dlatrd.f @@ -70,47 +70,84 @@ *> The number of rows and columns to be reduced. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the symmetric matrix A. If UPLO = 'U', the leading +*> n-by-n upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading n-by-n lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit: +*> if UPLO = 'U', the last NB columns have been reduced to +*> tridiagonal form, with the diagonal elements overwriting +*> the diagonal elements of A; the elements above the diagonal +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors; +*> if UPLO = 'L', the first NB columns have been reduced to +*> tridiagonal form, with the diagonal elements overwriting +*> the diagonal elements of A; the elements below the diagonal +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= (1,N). +*> \endverbatim *> -*> E (output) DOUBLE PRECISION array, dimension (N-1) +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (N-1) *> If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal *> elements of the last NB columns of the reduced matrix; *> if UPLO = 'L', E(1:nb) contains the subdiagonal elements of *> the first NB columns of the reduced matrix. +*> \endverbatim *> -*> TAU (output) DOUBLE PRECISION array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (N-1) *> The scalar factors of the elementary reflectors, stored in *> TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'. *> See Further Details. +*> \endverbatim *> -*> W (output) DOUBLE PRECISION array, dimension (LDW,NB) +*> \param[out] W +*> \verbatim +*> W is DOUBLE PRECISION array, dimension (LDW,NB) *> The n-by-nb matrix W required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDW (input) INTEGER +*> \param[in] LDW +*> \verbatim +*> LDW is INTEGER *> The leading dimension of the array W. LDW >= max(1,N). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/dorcsd.f b/SRC/dorcsd.f index dee37dd7..71b86054 100644 --- a/SRC/dorcsd.f +++ b/SRC/dorcsd.f @@ -127,16 +127,52 @@ *> The number of columns in X11 and X21. 0 <= Q <= M. *> \endverbatim *> -*> \param[in,out] X +*> \param[in,out] X11 *> \verbatim -*> X is DOUBLE PRECISION array, dimension (LDX,M) -*> On entry, the orthogonal matrix whose CSD is desired. +*> X11 is DOUBLE PRECISION array, dimension (LDX11,Q) +*> On entry, part of the orthogonal matrix whose CSD is desired. *> \endverbatim *> -*> \param[in] LDX +*> \param[in] LDX11 *> \verbatim -*> LDX is INTEGER -*> The leading dimension of X. LDX >= MAX(1,M). +*> LDX11 is INTEGER +*> The leading dimension of X11. LDX11 >= MAX(1,P). +*> \endverbatim +*> +*> \param[in,out] X12 +*> \verbatim +*> X12 is DOUBLE PRECISION array, dimension (LDX12,M-Q) +*> On entry, part of the orthogonal matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX12 +*> \verbatim +*> LDX12 is INTEGER +*> The leading dimension of X12. LDX12 >= MAX(1,P). +*> \endverbatim +*> +*> \param[in,out] X21 +*> \verbatim +*> X21 is DOUBLE PRECISION array, dimension (LDX21,Q) +*> On entry, part of the orthogonal matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX21 +*> \verbatim +*> LDX21 is INTEGER +*> The leading dimension of X11. LDX21 >= MAX(1,M-P). +*> \endverbatim +*> +*> \param[in,out] X22 +*> \verbatim +*> X22 is DOUBLE PRECISION array, dimension (LDX22,M-Q) +*> On entry, part of the orthogonal matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX22 +*> \verbatim +*> LDX22 is INTEGER +*> The leading dimension of X11. LDX22 >= MAX(1,M-P). *> \endverbatim *> *> \param[out] THETA diff --git a/SRC/dorghr.f b/SRC/dorghr.f index 809dd9ce..4903dabe 100644 --- a/SRC/dorghr.f +++ b/SRC/dorghr.f @@ -51,15 +51,18 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI must have the same values as in the previous call *> of DGEHRD. Q is equal to the unit matrix except in the *> submatrix Q(ilo+1:ihi,ilo+1:ihi). *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim diff --git a/SRC/dormhr.f b/SRC/dormhr.f index d6368e91..0e1b4fa9 100644 --- a/SRC/dormhr.f +++ b/SRC/dormhr.f @@ -79,9 +79,13 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI must have the same values as in the previous call *> of DGEHRD. Q is equal to the unit matrix except in the *> submatrix Q(ilo+1:ihi,ilo+1:ihi). @@ -90,7 +94,6 @@ *> if SIDE = 'R', then 1 <= ILO <= IHI <= N, if N > 0, and *> ILO = 1 and IHI = 0, if N = 0. *> \endverbatim -*> \endverbatim *> *> \param[in] A *> \verbatim diff --git a/SRC/dpbstf.f b/SRC/dpbstf.f index 8266a696..69d68a40 100644 --- a/SRC/dpbstf.f +++ b/SRC/dpbstf.f @@ -81,6 +81,26 @@ *> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j; *> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd). *> \endverbatim +*> \verbatim +*> On exit, if INFO = 0, the factor S from the split Cholesky +*> factorization A = S**T*S. See Further Details. +*> \endverbatim +*> +*> \param[in] LDAB +*> \verbatim +*> LDAB is INTEGER +*> The leading dimension of the array AB. LDAB >= KD+1. +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> > 0: if INFO = i, the factorization could not be completed, +*> because the updated element a(i,i) was negative; the +*> matrix A is not positive definite. +*> \endverbatim *> * * Authors @@ -100,18 +120,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* factorization A = S**T*S. See Further Details. -*> -*> LDAB (input) INTEGER -*> The leading dimension of the array AB. LDAB >= KD+1. -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> > 0: if INFO = i, the factorization could not be completed, -*> because the updated element a(i,i) was negative; the -*> matrix A is not positive definite. -*> *> *> The band storage scheme is illustrated by the following example, when *> N = 7, KD = 2: diff --git a/SRC/dpptrf.f b/SRC/dpptrf.f index 88627c0e..54addd6d 100644 --- a/SRC/dpptrf.f +++ b/SRC/dpptrf.f @@ -102,8 +102,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> The packed storage scheme is illustrated by the following example *> when N = 4, UPLO = 'U': diff --git a/SRC/dsbgvx.f b/SRC/dsbgvx.f index 45bf4093..83c322a7 100644 --- a/SRC/dsbgvx.f +++ b/SRC/dsbgvx.f @@ -153,27 +153,33 @@ *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/dsgesv.f b/SRC/dsgesv.f index 928dcc89..43d20a24 100644 --- a/SRC/dsgesv.f +++ b/SRC/dsgesv.f @@ -1,4 +1,4 @@ -*> \brief <b> DSGESV computes the solution to system of linear equations A * X = B for GE matrices</b> +*> \brief <b> DSGESV computes the solution to system of linear equations A * X = B for GE matrices</b> (mixed precision with iterative refinement) * * =========== DOCUMENTATION =========== * diff --git a/SRC/dspgvx.f b/SRC/dspgvx.f index fb407aa5..5383aa69 100644 --- a/SRC/dspgvx.f +++ b/SRC/dspgvx.f @@ -119,27 +119,33 @@ *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/dsptrd.f b/SRC/dsptrd.f index cceacff1..e9cce8ae 100644 --- a/SRC/dsptrd.f +++ b/SRC/dsptrd.f @@ -54,6 +54,54 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] AP +*> \verbatim +*> AP is DOUBLE PRECISION array, dimension (N*(N+1)/2) +*> On entry, the upper or lower triangle of the symmetric matrix +*> A, packed columnwise in a linear array. The j-th column of A +*> is stored in the array AP as follows: +*> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; +*> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the orthogonal +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the orthogonal matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim +*> +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (N) +*> The diagonal elements of the tridiagonal matrix T: +*> D(i) = A(i,i). +*> \endverbatim +*> +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (N-1) +*> The off-diagonal elements of the tridiagonal matrix T: +*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (N-1) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -72,24 +120,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* of elementary reflectors. See Further Details. -*> -*> D (output) DOUBLE PRECISION array, dimension (N) -*> The diagonal elements of the tridiagonal matrix T: -*> D(i) = A(i,i). -*> -*> E (output) DOUBLE PRECISION array, dimension (N-1) -*> The off-diagonal elements of the tridiagonal matrix T: -*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. -*> -*> TAU (output) DOUBLE PRECISION array, dimension (N-1) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/dstebz.f b/SRC/dstebz.f index 301c4b24..d06fc028 100644 --- a/SRC/dstebz.f +++ b/SRC/dstebz.f @@ -86,28 +86,34 @@ *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. Eigenvalues less than or equal *> to VL, or greater than VU, will not be returned. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/dstegr.f b/SRC/dstegr.f index a4c965d0..5ce184d8 100644 --- a/SRC/dstegr.f +++ b/SRC/dstegr.f @@ -104,27 +104,33 @@ *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/dstemr.f b/SRC/dstemr.f index a8fd75a1..0a393606 100644 --- a/SRC/dstemr.f +++ b/SRC/dstemr.f @@ -135,27 +135,33 @@ *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[out] M *> \verbatim diff --git a/SRC/dsyconv.f b/SRC/dsyconv.f index df7bbc7c..36dadeb7 100644 --- a/SRC/dsyconv.f +++ b/SRC/dsyconv.f @@ -89,19 +89,6 @@ *> WORK is DOUBLE PRECISION array, dimension (N) *> \endverbatim *> -*> \param[in] LWORK -*> \verbatim -*> LWORK is INTEGER -*> The length of WORK. LWORK >=1. -*> LWORK = N -*> \endverbatim -*> \verbatim -*> If LWORK = -1, then a workspace query is assumed; the routine -*> only calculates the optimal size of the WORK array, returns -*> this value as the first entry of the WORK array, and no error -*> message related to LWORK is issued by XERBLA. -*> \endverbatim -*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/SRC/dsyequb.f b/SRC/dsyequb.f index 6121f219..5acf4572 100644 --- a/SRC/dsyequb.f +++ b/SRC/dsyequb.f @@ -129,8 +129,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> Reference: Livne, O.E. and Golub, G.H., "Scaling by Binormalization", *> Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004. diff --git a/SRC/dsytd2.f b/SRC/dsytd2.f index 1e5117cd..dbc20964 100644 --- a/SRC/dsytd2.f +++ b/SRC/dsytd2.f @@ -55,6 +55,62 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the symmetric matrix A. If UPLO = 'U', the leading +*> n-by-n upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading n-by-n lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the orthogonal +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the orthogonal matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (N) +*> The diagonal elements of the tridiagonal matrix T: +*> D(i) = A(i,i). +*> \endverbatim +*> +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (N-1) +*> The off-diagonal elements of the tridiagonal matrix T: +*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (N-1) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim +*> * * Authors * ======= @@ -73,27 +129,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* of elementary reflectors. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> D (output) DOUBLE PRECISION array, dimension (N) -*> The diagonal elements of the tridiagonal matrix T: -*> D(i) = A(i,i). -*> -*> E (output) DOUBLE PRECISION array, dimension (N-1) -*> The off-diagonal elements of the tridiagonal matrix T: -*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. -*> -*> TAU (output) DOUBLE PRECISION array, dimension (N-1) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value. -*> *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/dsytrd.f b/SRC/dsytrd.f index 7850c904..003beadf 100644 --- a/SRC/dsytrd.f +++ b/SRC/dsytrd.f @@ -55,45 +55,64 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleSYcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* of elementary reflectors. See Further Details. +*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> On entry, the symmetric matrix A. If UPLO = 'U', the leading +*> N-by-N upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading N-by-N lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the orthogonal +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the orthogonal matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> D (output) DOUBLE PRECISION array, dimension (N) +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (N) *> The diagonal elements of the tridiagonal matrix T: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) DOUBLE PRECISION array, dimension (N-1) +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (N-1) *> The off-diagonal elements of the tridiagonal matrix T: *> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim *> -*> TAU (output) DOUBLE PRECISION array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is DOUBLE PRECISION array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= 1. *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. @@ -102,11 +121,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleSYcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/dtgsen.f b/SRC/dtgsen.f index a6d65afc..69921db2 100644 --- a/SRC/dtgsen.f +++ b/SRC/dtgsen.f @@ -152,12 +152,18 @@ *> \param[out] ALPHAR *> \verbatim *> ALPHAR is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> *> \param[out] ALPHAI *> \verbatim *> ALPHAI is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> *> \param[out] BETA *> \verbatim *> BETA is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> \verbatim *> On exit, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N, will *> be the generalized eigenvalues. ALPHAR(j) + ALPHAI(j)*i *> and BETA(j),j=1,...,N are the diagonals of the complex Schur @@ -168,8 +174,6 @@ *> positive, then the j-th and (j+1)-st eigenvalues are a *> complex conjugate pair, with ALPHAI(j+1) negative. *> \endverbatim -*> \endverbatim -*> \endverbatim *> *> \param[in,out] Q *> \verbatim @@ -217,9 +221,13 @@ *> \param[out] PL *> \verbatim *> PL is DOUBLE PRECISION +*> \endverbatim + *> \param[out] PR *> \verbatim *> PR is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If IJOB = 1, 4 or 5, PL, PR are lower bounds on the *> reciprocal of the norm of "projections" onto left and right *> eigenspaces with respect to the selected cluster. @@ -227,7 +235,6 @@ *> If M = 0 or M = N, PL = PR = 1. *> If IJOB = 0, 2 or 3, PL and PR are not referenced. *> \endverbatim -*> \endverbatim *> *> \param[out] DIF *> \verbatim diff --git a/SRC/dtgsja.f b/SRC/dtgsja.f index 4bdbf304..3c29c3db 100644 --- a/SRC/dtgsja.f +++ b/SRC/dtgsja.f @@ -175,52 +175,77 @@ *> The number of columns of the matrices A and B. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] K +*> \verbatim +*> K is INTEGER +*> \endverbatim +*> +*> \param[in] L +*> \verbatim +*> L is INTEGER +*> \endverbatim *> \verbatim -* See Further Details. +*> 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. +*> \endverbatim *> -*> A (input/output) DOUBLE PRECISION array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the M-by-N matrix A. *> On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular *> matrix R or part of R. See Purpose for details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is DOUBLE PRECISION array, dimension (LDB,N) *> On entry, the P-by-N matrix B. *> On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains *> a part of R. See Purpose for details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,P). +*> \endverbatim *> -*> TOLA (input) DOUBLE PRECISION -*> TOLB (input) DOUBLE PRECISION +*> \param[in] TOLA +*> \verbatim +*> TOLA is DOUBLE PRECISION +*> \endverbatim +*> +*> \param[in] TOLB +*> \verbatim +*> TOLB is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> TOLA and TOLB are the convergence criteria for the Jacobi- *> Kogbetliantz iteration procedure. Generally, they are the *> same as used in the preprocessing step, say *> TOLA = max(M,N)*norm(A)*MAZHEPS, *> TOLB = max(P,N)*norm(B)*MAZHEPS. +*> \endverbatim *> -*> ALPHA (output) DOUBLE PRECISION array, dimension (N) -*> BETA (output) DOUBLE PRECISION array, dimension (N) +*> \param[out] ALPHA +*> \verbatim +*> ALPHA is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> +*> \param[out] BETA +*> \verbatim +*> BETA is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> \verbatim *> On exit, ALPHA and BETA contain the generalized singular *> value pairs of A and B; *> ALPHA(1:K) = 1, @@ -234,53 +259,82 @@ *> Furthermore, if K+L < N, *> ALPHA(K+L+1:N) = 0 and *> BETA(K+L+1:N) = 0. +*> \endverbatim *> -*> U (input/output) DOUBLE PRECISION array, dimension (LDU,M) +*> \param[in,out] U +*> \verbatim +*> U is DOUBLE PRECISION array, dimension (LDU,M) *> On entry, if JOBU = 'U', U must contain a matrix U1 (usually *> the orthogonal matrix returned by DGGSVP). *> On exit, *> if JOBU = 'I', U contains the orthogonal matrix U; *> if JOBU = 'U', U contains the product U1*U. *> If JOBU = 'N', U is not referenced. +*> \endverbatim *> -*> LDU (input) INTEGER +*> \param[in] LDU +*> \verbatim +*> LDU is INTEGER *> The leading dimension of the array U. LDU >= max(1,M) if *> JOBU = 'U'; LDU >= 1 otherwise. +*> \endverbatim *> -*> V (input/output) DOUBLE PRECISION array, dimension (LDV,P) +*> \param[in,out] V +*> \verbatim +*> V is DOUBLE PRECISION array, dimension (LDV,P) *> On entry, if JOBV = 'V', V must contain a matrix V1 (usually *> the orthogonal matrix returned by DGGSVP). *> On exit, *> if JOBV = 'I', V contains the orthogonal matrix V; *> if JOBV = 'V', V contains the product V1*V. *> If JOBV = 'N', V is not referenced. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. LDV >= max(1,P) if *> JOBV = 'V'; LDV >= 1 otherwise. +*> \endverbatim *> -*> Q (input/output) DOUBLE PRECISION array, dimension (LDQ,N) +*> \param[in,out] Q +*> \verbatim +*> Q is DOUBLE PRECISION array, dimension (LDQ,N) *> On entry, if JOBQ = 'Q', Q must contain a matrix Q1 (usually *> the orthogonal matrix returned by DGGSVP). *> On exit, *> if JOBQ = 'I', Q contains the orthogonal matrix Q; *> if JOBQ = 'Q', Q contains the product Q1*Q. *> If JOBQ = 'N', Q is not referenced. +*> \endverbatim *> -*> LDQ (input) INTEGER +*> \param[in] LDQ +*> \verbatim +*> LDQ is INTEGER *> The leading dimension of the array Q. LDQ >= max(1,N) if *> JOBQ = 'Q'; LDQ >= 1 otherwise. +*> \endverbatim *> -*> WORK (workspace) DOUBLE PRECISION array, dimension (2*N) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (2*N) +*> \endverbatim *> -*> NCYCLE (output) INTEGER +*> \param[out] NCYCLE +*> \verbatim +*> NCYCLE is INTEGER *> The number of cycles required for convergence. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. *> = 1: the procedure does not converge after MAXIT cycles. +*> \endverbatim *> +*> \verbatim *> Internal Parameters *> =================== *> @@ -288,7 +342,26 @@ *> MAXIT specifies the total loops that the iterative procedure *> may take. If after MAXIT cycles, the routine fails to *> converge, we return INFO = 1. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> DTGSJA essentially uses a variant of Kogbetliantz algorithm to reduce *> min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and L-by-L diff --git a/SRC/dtpmqrt.f b/SRC/dtpmqrt.f index ec1663de..ee109435 100644 --- a/SRC/dtpmqrt.f +++ b/SRC/dtpmqrt.f @@ -67,6 +67,7 @@ *> \verbatim *> N is INTEGER *> The number of columns of the matrix B. N >= 0. +*> \endverbatim *> *> \param[in] K *> \verbatim @@ -74,78 +75,115 @@ *> The number of elementary reflectors whose product defines *> the matrix Q. *> \endverbatim -*> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* K >= L >= 0. See Further Details. +*> L is INTEGER +*> The order of the trapezoidal part of V. +*> K >= L >= 0. See Further Details. +*> \endverbatim *> -*> NB (input) INTEGER +*> \param[in] NB +*> \verbatim +*> NB is INTEGER *> The block size used for the storage of T. K >= NB >= 1. *> This must be the same value of NB used to generate T *> in CTPQRT. +*> \endverbatim *> -*> V (input) DOUBLE PRECISION array, dimension (LDA,K) +*> \param[in] V +*> \verbatim +*> V is DOUBLE PRECISION array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> CTPQRT in B. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER -*> The leading dimension of the array A. -*> If SIDE = 'L', LDA >= max(1,M); -*> if SIDE = 'R', LDA >= max(1,N). +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER +*> The leading dimension of the array V. +*> If SIDE = 'L', LDV >= max(1,M); +*> if SIDE = 'R', LDV >= max(1,N). +*> \endverbatim *> -*> T (input) DOUBLE PRECISION array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is DOUBLE PRECISION array, dimension (LDT,K) *> The upper triangular factors of the block reflectors *> as returned by CTPQRT, stored as a NB-by-K matrix. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= NB. +*> \endverbatim *> -*> A (input/output) DOUBLE PRECISION array, dimension +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension *> (LDA,N) if SIDE = 'L' or *> (LDA,K) if SIDE = 'R' *> On entry, the K-by-N or M-by-K matrix A. *> On exit, A is overwritten by the corresponding block of *> Q*C or Q**T*C or C*Q or C*Q**T. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDC >= max(1,K); *> If SIDE = 'R', LDC >= max(1,M). +*> \endverbatim *> -*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is DOUBLE PRECISION array, dimension (LDB,N) *> On entry, the M-by-N matrix B. *> On exit, B is overwritten by the corresponding block of *> Q*C or Q**T*C or C*Q or C*Q**T. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. *> LDB >= max(1,M). +*> \endverbatim *> -*> WORK (workspace/output) DOUBLE PRECISION array. The dimension of WORK is +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array. The dimension of WORK is *> N*NB if SIDE = 'L', or M*NB if SIDE = 'R'. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The columns of the pentagonal matrix V contain the elementary reflectors *> H(1), H(2), ..., H(K); V is composed of a rectangular block V1 and a diff --git a/SRC/dtpqrt.f b/SRC/dtpqrt.f index 1b8607b7..3e889949 100644 --- a/SRC/dtpqrt.f +++ b/SRC/dtpqrt.f @@ -57,59 +57,90 @@ *> N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* MIN(M,N) >= L >= 0. See Further Details. +*> L is INTEGER +*> The number of rows of the upper trapezoidal part of B. +*> MIN(M,N) >= L >= 0. See Further Details. +*> \endverbatim *> -*> NB (input) INTEGER +*> \param[in] NB +*> \verbatim +*> NB is INTEGER *> The block size to be used in the blocked QR. N >= NB >= 1. +*> \endverbatim *> -*> A (input/output) DOUBLE PRECISION array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the upper triangular N-by-N matrix A. *> On exit, the elements on and above the diagonal of the array *> contain the upper triangular matrix R. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is DOUBLE PRECISION array, dimension (LDB,N) *> On entry, the pentagonal M-by-N matrix B. The first M-L rows *> are rectangular, and the last L rows are upper trapezoidal. *> On exit, B contains the pentagonal matrix V. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,M). +*> \endverbatim *> -*> T (output) DOUBLE PRECISION array, dimension (LDT,N) +*> \param[out] T +*> \verbatim +*> T is DOUBLE PRECISION array, dimension (LDT,N) *> The upper triangular block reflectors stored in compact form *> as a sequence of upper triangular blocks. See Further Details. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= NB. +*> \endverbatim *> -*> WORK (workspace) DOUBLE PRECISION array, dimension (NB*N) +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (NB*N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> -*> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> The input matrix C is a (N+M)-by-N matrix *> *> C = [ A ] diff --git a/SRC/dtpqrt2.f b/SRC/dtpqrt2.f index 99ba2e3b..32635cf7 100644 --- a/SRC/dtpqrt2.f +++ b/SRC/dtpqrt2.f @@ -55,53 +55,79 @@ *> N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* MIN(M,N) >= L >= 0. See Further Details. +*> L is INTEGER +*> The number of rows of the upper trapezoidal part of B. +*> MIN(M,N) >= L >= 0. See Further Details. +*> \endverbatim *> -*> A (input/output) DOUBLE PRECISION array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the upper triangular N-by-N matrix A. *> On exit, the elements on and above the diagonal of the array *> contain the upper triangular matrix R. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is DOUBLE PRECISION array, dimension (LDB,N) *> On entry, the pentagonal M-by-N matrix B. The first M-L rows *> are rectangular, and the last L rows are upper trapezoidal. *> On exit, B contains the pentagonal matrix V. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,M). +*> \endverbatim *> -*> T (output) DOUBLE PRECISION array, dimension (LDT,N) +*> \param[out] T +*> \verbatim +*> T is DOUBLE PRECISION array, dimension (LDT,N) *> The N-by-N upper triangular factor T of the block reflector. *> See Further Details. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The input matrix C is a (N+M)-by-N matrix *> diff --git a/SRC/dtprfb.f b/SRC/dtprfb.f index cad29215..f1bf71ca 100644 --- a/SRC/dtprfb.f +++ b/SRC/dtprfb.f @@ -97,76 +97,111 @@ *> K >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup doubleOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* K >= L >= 0. See Further Details. +*> L is INTEGER +*> The order of the trapezoidal part of V. +*> K >= L >= 0. See Further Details. +*> \endverbatim *> -*> V (input) DOUBLE PRECISION array, dimension +*> \param[in] V +*> \verbatim +*> V is DOUBLE PRECISION array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,M) if STOREV = 'R' and SIDE = 'L' *> (LDV,N) if STOREV = 'R' and SIDE = 'R' *> The pentagonal matrix V, which contains the elementary reflectors *> H(1), H(2), ..., H(K). See Further Details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); *> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); *> if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> T (input) DOUBLE PRECISION array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is DOUBLE PRECISION array, dimension (LDT,K) *> The triangular K-by-K matrix T in the representation of the *> block reflector. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. *> LDT >= K. +*> \endverbatim *> -*> A (input/output) DOUBLE PRECISION array, dimension +*> \param[in,out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension *> (LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R' *> On entry, the K-by-N or M-by-K matrix A. *> On exit, A is overwritten by the corresponding block of *> H*C or H**T*C or C*H or C*H**T. See Futher Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDC >= max(1,K); *> If SIDE = 'R', LDC >= max(1,M). +*> \endverbatim *> -*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is DOUBLE PRECISION array, dimension (LDB,N) *> On entry, the M-by-N matrix B. *> On exit, B is overwritten by the corresponding block of *> H*C or H**T*C or C*H or C*H**T. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. *> LDB >= max(1,M). +*> \endverbatim *> -*> WORK (workspace) DOUBLE PRECISION array, dimension +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension *> (LDWORK,N) if SIDE = 'L', *> (LDWORK,K) if SIDE = 'R'. +*> \endverbatim *> -*> LDWORK (input) INTEGER +*> \param[in] LDWORK +*> \verbatim +*> LDWORK is INTEGER *> The leading dimension of the array WORK. *> If SIDE = 'L', LDWORK >= K; *> if SIDE = 'R', LDWORK >= M. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix C is a composite matrix formed from blocks A and B. *> The block B is of size M-by-N; if SIDE = 'R', A is of size M-by-K, diff --git a/SRC/dtrexc.f b/SRC/dtrexc.f index 6a1e61e5..9ce852bc 100644 --- a/SRC/dtrexc.f +++ b/SRC/dtrexc.f @@ -97,9 +97,13 @@ *> \param[in,out] IFST *> \verbatim *> IFST is INTEGER +*> \endverbatim +*> *> \param[in,out] ILST *> \verbatim *> ILST is INTEGER +*> \endverbatim +*> \verbatim *> Specify the reordering of the diagonal blocks of T. *> The block with row index IFST is moved to row ILST, by a *> sequence of transpositions between adjacent blocks. @@ -109,7 +113,6 @@ *> position (which may differ from its input value by +1 or -1). *> 1 <= IFST <= N; 1 <= ILST <= N. *> \endverbatim -*> \endverbatim *> *> \param[out] WORK *> \verbatim diff --git a/SRC/dtrsen.f b/SRC/dtrsen.f index b5e19a9f..18ecc39c 100644 --- a/SRC/dtrsen.f +++ b/SRC/dtrsen.f @@ -130,9 +130,12 @@ *> \param[out] WR *> \verbatim *> WR is DOUBLE PRECISION array, dimension (N) +*> \endverbatim *> \param[out] WI *> \verbatim *> WI is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> \verbatim *> The real and imaginary parts, respectively, of the reordered *> eigenvalues of T. The eigenvalues are stored in the same *> order as on the diagonal of T, with WR(i) = T(i,i) and, if @@ -141,7 +144,6 @@ *> sufficiently ill-conditioned, then its value may differ *> significantly from its value before reordering. *> \endverbatim -*> \endverbatim *> *> \param[out] M *> \verbatim diff --git a/SRC/sbbcsd.f b/SRC/sbbcsd.f index c8f5118b..c82c478b 100644 --- a/SRC/sbbcsd.f +++ b/SRC/sbbcsd.f @@ -236,6 +236,40 @@ *> partially reduced top-right block. *> \endverbatim *> +*> \param[out] B21D +*> \verbatim +*> B21D is REAL array, dimension (Q) +*> When CBBCSD converges, B21D contains the negative sines of +*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then +*> B21D contains the diagonal of the partially reduced bottom-left +*> block. +*> \endverbatim +*> +*> \param[out] B21E +*> \verbatim +*> B21E is REAL array, dimension (Q-1) +*> When CBBCSD converges, B21E contains zeros. If CBBCSD fails +*> to converge, then B21E contains the subdiagonal of the +*> partially reduced bottom-left block. +*> \endverbatim +*> +*> \param[out] B22D +*> \verbatim +*> B22D is REAL array, dimension (Q) +*> When CBBCSD converges, B22D contains the negative sines of +*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then +*> B22D contains the diagonal of the partially reduced bottom-right +*> block. +*> \endverbatim +*> +*> \param[out] B22E +*> \verbatim +*> B22E is REAL array, dimension (Q-1) +*> When CBBCSD converges, B22E contains zeros. If CBBCSD fails +*> to converge, then B22E contains the subdiagonal of the +*> partially reduced bottom-right block. +*> \endverbatim +*> *> \param[out] WORK *> \verbatim *> WORK is REAL array, dimension (MAX(1,LWORK)) diff --git a/SRC/sgbsv.f b/SRC/sgbsv.f index e7b26190..4e324c00 100644 --- a/SRC/sgbsv.f +++ b/SRC/sgbsv.f @@ -1,4 +1,4 @@ -*> \brief <b> SGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> +*> \brief <b> SGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> (simple driver) * * =========== DOCUMENTATION =========== * diff --git a/SRC/sgebal.f b/SRC/sgebal.f index ca9c6edf..1f5eb377 100644 --- a/SRC/sgebal.f +++ b/SRC/sgebal.f @@ -64,37 +64,36 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is REAL array, dimension (LDA,N) +*> On entry, the input matrix A. +*> On exit, A is overwritten by the balanced matrix. +*> If JOB = 'N', A is not referenced. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> ILO (output) INTEGER -*> -*> IHI (output) INTEGER +*> \param[out] ILO +*> \verbatim +*> ILO is INTEGER +*> \endverbatim +*> \param[out] IHI +*> \verbatim +*> IHI is INTEGER *> ILO and IHI are set to integers such that on exit *> A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I = IHI+1,...,N. *> If JOB = 'N' or 'S', ILO = 1 and IHI = N. +*> \endverbatim *> -*> SCALE (output) REAL array, dimension (N) +*> \param[out] SCALE +*> \verbatim +*> SCALE is REAL array, dimension (N) *> Details of the permutations and scaling factors applied to *> A. If P(j) is the index of the row and column interchanged *> with row and column j and D(j) is the scaling factor @@ -104,11 +103,33 @@ *> = P(j) for j = IHI+1,...,N. *> The order in which the interchanges are made is N to IHI+1, *> then 1 to ILO-1. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The permutations consist of row and column interchanges which put *> the matrix in the form diff --git a/SRC/sgebd2.f b/SRC/sgebd2.f index 1b48b8ed..9e04c39e 100644 --- a/SRC/sgebd2.f +++ b/SRC/sgebd2.f @@ -54,52 +54,93 @@ *> The number of columns in the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is REAL array, dimension (LDA,N) +*> On entry, the m by n general matrix to be reduced. +*> On exit, +*> if m >= n, the diagonal and the first superdiagonal are +*> overwritten with the upper bidiagonal matrix B; the +*> elements below the diagonal, with the array TAUQ, represent +*> the orthogonal matrix Q as a product of elementary +*> reflectors, and the elements above the first superdiagonal, +*> with the array TAUP, represent the orthogonal matrix P as +*> a product of elementary reflectors; +*> if m < n, the diagonal and the first subdiagonal are +*> overwritten with the lower bidiagonal matrix B; the +*> elements below the first subdiagonal, with the array TAUQ, +*> represent the orthogonal matrix Q as a product of +*> elementary reflectors, and the elements above the diagonal, +*> with the array TAUP, represent the orthogonal matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) REAL array, dimension (min(M,N)) +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (min(M,N)) *> The diagonal elements of the bidiagonal matrix B: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) REAL array, dimension (min(M,N)-1) +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (min(M,N)-1) *> The off-diagonal elements of the bidiagonal matrix B: *> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1; *> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1. +*> \endverbatim *> -*> TAUQ (output) REAL array dimension (min(M,N)) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is REAL array dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) REAL array, dimension (min(M,N)) +*> \param[out] TAUP +*> \verbatim +*> TAUP is REAL array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix P. See Further Details. +*> \endverbatim *> -*> WORK (workspace) REAL array, dimension (max(M,N)) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (max(M,N)) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/sgebrd.f b/SRC/sgebrd.f index 3e139855..a46b6d76 100644 --- a/SRC/sgebrd.f +++ b/SRC/sgebrd.f @@ -55,50 +55,72 @@ *> The number of columns in the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is REAL array, dimension (LDA,N) +*> On entry, the M-by-N general matrix to be reduced. +*> On exit, +*> if m >= n, the diagonal and the first superdiagonal are +*> overwritten with the upper bidiagonal matrix B; the +*> elements below the diagonal, with the array TAUQ, represent +*> the orthogonal matrix Q as a product of elementary +*> reflectors, and the elements above the first superdiagonal, +*> with the array TAUP, represent the orthogonal matrix P as +*> a product of elementary reflectors; +*> if m < n, the diagonal and the first subdiagonal are +*> overwritten with the lower bidiagonal matrix B; the +*> elements below the first subdiagonal, with the array TAUQ, +*> represent the orthogonal matrix Q as a product of +*> elementary reflectors, and the elements above the diagonal, +*> with the array TAUP, represent the orthogonal matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) REAL array, dimension (min(M,N)) +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (min(M,N)) *> The diagonal elements of the bidiagonal matrix B: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) REAL array, dimension (min(M,N)-1) +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (min(M,N)-1) *> The off-diagonal elements of the bidiagonal matrix B: *> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1; *> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1. +*> \endverbatim *> -*> TAUQ (output) REAL array dimension (min(M,N)) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is REAL array dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) REAL array, dimension (min(M,N)) +*> \param[out] TAUP +*> \verbatim +*> TAUP is REAL array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix P. See Further Details. +*> \endverbatim *> -*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,M,N). *> For optimum performance LWORK >= (M+N)*NB, where NB *> is the optimal blocksize. @@ -107,11 +129,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/sgehd2.f b/SRC/sgehd2.f index 47902fc2..0c1a28f6 100644 --- a/SRC/sgehd2.f +++ b/SRC/sgehd2.f @@ -45,48 +45,77 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] ILO +*> \verbatim +*> ILO is INTEGER +*> \endverbatim +*> +*> \param[in] IHI *> \verbatim -* set to 1 and N respectively. See Further Details. +*> IHI is INTEGER +*> \endverbatim +*> \verbatim +*> It is assumed that A is already upper triangular in rows +*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally +*> set by a previous call to SGEBAL; otherwise they should be +*> set to 1 and N respectively. See Further Details. *> 1 <= ILO <= IHI <= max(1,N). +*> \endverbatim *> -*> A (input/output) REAL array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N) *> On entry, the n by n general matrix to be reduced. *> On exit, the upper triangle and the first subdiagonal of A *> are overwritten with the upper Hessenberg matrix H, and the *> elements below the first subdiagonal, with the array TAU, *> represent the orthogonal matrix Q as a product of elementary *> reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> TAU (output) REAL array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace) REAL array, dimension (N) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of (ihi-ilo) elementary *> reflectors diff --git a/SRC/sgehrd.f b/SRC/sgehrd.f index 10f7374c..2344ee9f 100644 --- a/SRC/sgehrd.f +++ b/SRC/sgehrd.f @@ -45,60 +45,93 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] ILO +*> \verbatim +*> ILO is INTEGER +*> \endverbatim +*> +*> \param[in] IHI +*> \verbatim +*> IHI is INTEGER +*> \endverbatim *> \verbatim -* set to 1 and N respectively. See Further Details. +*> It is assumed that A is already upper triangular in rows +*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally +*> set by a previous call to SGEBAL; otherwise they should be +*> set to 1 and N respectively. See Further Details. *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. +*> \endverbatim *> -*> A (input/output) REAL array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N) *> On entry, the N-by-N general matrix to be reduced. *> On exit, the upper triangle and the first subdiagonal of A *> are overwritten with the upper Hessenberg matrix H, and the *> elements below the first subdiagonal, with the array TAU, *> represent the orthogonal matrix Q as a product of elementary *> reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> TAU (output) REAL array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to *> zero. +*> \endverbatim *> -*> WORK (workspace/output) REAL array, dimension (LWORK) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (LWORK) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. -*> +*> \endverbatim +*> \verbatim *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of (ihi-ilo) elementary *> reflectors diff --git a/SRC/sgejsv.f b/SRC/sgejsv.f index 03944af6..0233e8c8 100644 --- a/SRC/sgejsv.f +++ b/SRC/sgejsv.f @@ -95,6 +95,7 @@ *> 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'. +*> \endverbatim *> *> \param[in] JOBU *> \verbatim @@ -105,6 +106,7 @@ *> = 'W': U may be used as workspace of length M*N. See the description *> of U. *> = 'N': U is not computed. +*> \endverbatim *> *> \param[in] JOBV *> \verbatim @@ -118,6 +120,7 @@ *> = 'W': V may be used as workspace of length N*N. See the description *> of V. *> = 'N': V is not computed. +*> \endverbatim *> *> \param[in] JOBR *> \verbatim @@ -138,6 +141,7 @@ *> =========================== *> For computing the singular values in the FULL range [SFMIN,BIG] *> use SGESVJ. +*> \endverbatim *> *> \param[in] JOBT *> \verbatim @@ -158,6 +162,7 @@ *> 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. +*> \endverbatim *> *> \param[in] JOBP *> \verbatim @@ -173,11 +178,6 @@ *> = 'P': introduce perturbation *> = 'N': do not perturb *> \endverbatim -*> \endverbatim -*> \endverbatim -*> \endverbatim -*> \endverbatim -*> \endverbatim *> *> \param[in] M *> \verbatim @@ -284,14 +284,12 @@ *> determined to be strictly smaller than N, SCONDA is *> returned as -1, thus indicating that the smallest *> singular values might be lost. -*> \endverbatim -*> \verbatim +*> *> If full SVD is needed, the following two condition numbers are *> useful for the analysis of the algorithm. They are provied for *> a developer/implementer who is familiar with the details of *> the method. -*> \endverbatim -*> \verbatim +*> *> WORK(4) = an estimate of the scaled condition number of the *> triangular factor in the first QR factorization. *> WORK(5) = an estimate of the scaled condition number of the @@ -299,8 +297,7 @@ *> The following two parameters are computed if JOBT .EQ. 'T'. *> They are provided for a developer/implementer who is familiar *> with the details of the method. -*> \endverbatim -*> \verbatim +*> *> WORK(6) = the entropy of A^t*A :: this is the Shannon entropy *> of diag(A^t*A) / Trace(A^t*A) taken as point in the *> probability simplex. @@ -312,8 +309,7 @@ *> LWORK is INTEGER *> Length of WORK to confirm proper allocation of work space. *> LWORK depends on the job: -*> \endverbatim -*> \verbatim +*> *> If only SIGMA is needed ( JOBU.EQ.'N', JOBV.EQ.'N' ) and *> -> .. no scaled condition estimate required (JOBE.EQ.'N'): *> LWORK >= max(2*M+N,4*N+1,7). This is the minimal requirement. @@ -330,8 +326,7 @@ *> In general, the optimal length LWORK is computed as *> LWORK >= max(2*M+N,N+LWORK(DGEQP3),N+LWORK(DGEQRF), *> N+N*N+LWORK(DPOCON),7). -*> \endverbatim -*> \verbatim +*> *> If SIGMA and the right singular vectors are needed (JOBV.EQ.'V'), *> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7). *> -> For optimal performance, LWORK >= max(2*M+N,3*N+(N+1)*NB,7), @@ -339,8 +334,7 @@ *> DORMLQ. In general, the optimal length LWORK is computed as *> LWORK >= max(2*M+N,N+LWORK(DGEQP3), N+LWORK(DPOCON), *> N+LWORK(DGELQ), 2*N+LWORK(DGEQRF), N+LWORK(DORMLQ)). -*> \endverbatim -*> \verbatim +*> *> If SIGMA and the left singular vectors are needed *> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7). *> -> For optimal performance: diff --git a/SRC/sgelq2.f b/SRC/sgelq2.f index b8ce12ba..18139bd4 100644 --- a/SRC/sgelq2.f +++ b/SRC/sgelq2.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and below the diagonal of the array +*> contain the m by min(m,n) lower trapezoidal matrix L (L is +*> lower triangular if m <= n); the elements above the diagonal, +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (M) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) REAL array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) REAL array, dimension (M) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/sgelqf.f b/SRC/sgelqf.f index 1bd205b8..47d7988a 100644 --- a/SRC/sgelqf.f +++ b/SRC/sgelqf.f @@ -51,37 +51,39 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* product of elementary reflectors (see Further Details). +*> A is REAL array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, the elements on and below the diagonal of the array +*> contain the m-by-min(m,n) lower trapezoidal matrix L (L is +*> lower triangular if m <= n); the elements above the diagonal, +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) REAL array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,M). *> For optimum performance LWORK >= M*NB, where NB is the *> optimal blocksize. @@ -90,11 +92,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/sgeql2.f b/SRC/sgeql2.f index 18872101..3d28266a 100644 --- a/SRC/sgeql2.f +++ b/SRC/sgeql2.f @@ -51,6 +51,44 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, if m >= n, the lower triangle of the subarray +*> A(m-n+1:m,1:n) contains the n by n lower triangular matrix L; +*> if m <= n, the elements on and below the (n-m)-th +*> superdiagonal contain the m by n lower trapezoidal matrix L; +*> the remaining elements, with the array TAU, represent the +*> orthogonal matrix Q as a product of elementary reflectors +*> (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +107,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) REAL array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) REAL array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/sgeqlf.f b/SRC/sgeqlf.f index 350ab848..0ce303c3 100644 --- a/SRC/sgeqlf.f +++ b/SRC/sgeqlf.f @@ -51,37 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* (see Further Details). +*> A is REAL array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, +*> if m >= n, the lower triangle of the subarray +*> A(m-n+1:m,1:n) contains the N-by-N lower triangular matrix L; +*> if m <= n, the elements on and below the (n-m)-th +*> superdiagonal contain the M-by-N lower trapezoidal matrix L; +*> the remaining elements, with the array TAU, represent the +*> orthogonal matrix Q as a product of elementary reflectors +*> (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) REAL array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. @@ -90,11 +95,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/sgeqr2.f b/SRC/sgeqr2.f index d1e94155..4f10f240 100644 --- a/SRC/sgeqr2.f +++ b/SRC/sgeqr2.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and above the diagonal of the array +*> contain the min(m,n) by n upper trapezoidal matrix R (R is +*> upper triangular if m >= n); the elements below the diagonal, +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) REAL array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) REAL array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/sgeqr2p.f b/SRC/sgeqr2p.f index 3f3b8a83..5ee107b4 100644 --- a/SRC/sgeqr2p.f +++ b/SRC/sgeqr2p.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and above the diagonal of the array +*> contain the min(m,n) by n upper trapezoidal matrix R (R is +*> upper triangular if m >= n); the elements below the diagonal, +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) REAL array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) REAL array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/sgeqrt.f b/SRC/sgeqrt.f index bd323e61..1c9259fd 100644 --- a/SRC/sgeqrt.f +++ b/SRC/sgeqrt.f @@ -117,7 +117,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* *> The matrix V stores the elementary reflectors H(i) in the i-th column *> below the diagonal. For example, if M=5 and N=3, the matrix V is *> diff --git a/SRC/sgeqrt2.f b/SRC/sgeqrt2.f index cb4d193a..99e0682e 100644 --- a/SRC/sgeqrt2.f +++ b/SRC/sgeqrt2.f @@ -74,8 +74,10 @@ *> reflector T; the elements below the diagonal are not used. *> See below for further details. *> \endverbatim +*> +*> \param[in] LDT *> \verbatim -*> LDT (intput) INTEGER +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N). *> \endverbatim *> diff --git a/SRC/sgeqrt3.f b/SRC/sgeqrt3.f index 33b3ba92..f15e880a 100644 --- a/SRC/sgeqrt3.f +++ b/SRC/sgeqrt3.f @@ -77,8 +77,10 @@ *> reflector T; the elements below the diagonal are not used. *> See below for further details. *> \endverbatim +*> +*> \param[in] LDT *> \verbatim -*> LDT (intput) INTEGER +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N). *> \endverbatim *> diff --git a/SRC/sgerqf.f b/SRC/sgerqf.f index 8f4ad73f..36945140 100644 --- a/SRC/sgerqf.f +++ b/SRC/sgerqf.f @@ -51,37 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realGEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* reflectors (see Further Details). +*> A is REAL array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, +*> if m <= n, the upper triangle of the subarray +*> A(1:m,n-m+1:n) contains the M-by-M upper triangular matrix R; +*> if m >= n, the elements on and above the (m-n)-th subdiagonal +*> contain the M-by-N upper trapezoidal matrix R; +*> the remaining elements, with the array TAU, represent the +*> orthogonal matrix Q as a product of min(m,n) elementary +*> reflectors (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) REAL array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,M). *> For optimum performance LWORK >= M*NB, where NB is *> the optimal blocksize. @@ -90,11 +95,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realGEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/sgesv.f b/SRC/sgesv.f index 2e0c0638..d413b90f 100644 --- a/SRC/sgesv.f +++ b/SRC/sgesv.f @@ -1,4 +1,4 @@ -*> \brief <b> SGESV computes the solution to system of linear equations A * X = B for GE matrices</b> +*> \brief <b> SGESV computes the solution to system of linear equations A * X = B for GE matrices</b> (simple driver) * * =========== DOCUMENTATION =========== * diff --git a/SRC/sggglm.f b/SRC/sggglm.f index 55b9534b..d4951db6 100644 --- a/SRC/sggglm.f +++ b/SRC/sggglm.f @@ -123,11 +123,14 @@ *> \param[out] X *> \verbatim *> X is REAL array, dimension (M) +*> \endverbatim +*> *> \param[out] Y *> \verbatim *> Y is REAL array, dimension (P) -*> On exit, X and Y are the solutions of the GLM problem. *> \endverbatim +*> \verbatim +*> On exit, X and Y are the solutions of the GLM problem. *> \endverbatim *> *> \param[out] WORK diff --git a/SRC/sgghrd.f b/SRC/sgghrd.f index 0ee9806d..33d327a6 100644 --- a/SRC/sgghrd.f +++ b/SRC/sgghrd.f @@ -97,9 +97,13 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI mark the rows and columns of A which are to be *> reduced. It is assumed that A is already upper triangular *> in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are @@ -107,7 +111,6 @@ *> should be set to 1 and N respectively. *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim diff --git a/SRC/sggqrf.f b/SRC/sggqrf.f index 321414e0..386c7904 100644 --- a/SRC/sggqrf.f +++ b/SRC/sggqrf.f @@ -102,27 +102,16 @@ *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[out] TAUA *> \verbatim -* represent the orthogonal matrix Q (see Further Details). +*> TAUA is REAL array, dimension (min(N,M)) +*> The scalar factors of the elementary reflectors which +*> represent the orthogonal matrix Q (see Further Details). +*> \endverbatim *> -*> B (input/output) REAL array, dimension (LDB,P) +*> \param[in,out] B +*> \verbatim +*> B is REAL array, dimension (LDB,P) *> On entry, the N-by-P matrix B. *> On exit, if N <= P, the upper triangle of the subarray *> B(1:N,P-N+1:P) contains the N-by-N upper triangular matrix T; @@ -131,18 +120,30 @@ *> elements, with the array TAUB, represent the orthogonal *> matrix Z as a product of elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). +*> \endverbatim *> -*> TAUB (output) REAL array, dimension (min(N,P)) +*> \param[out] TAUB +*> \verbatim +*> TAUB is REAL array, dimension (min(N,P)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix Z (see Further Details). +*> \endverbatim *> -*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N,M,P). *> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), *> where NB1 is the optimal blocksize for the QR factorization @@ -154,11 +155,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/sggrqf.f b/SRC/sggrqf.f index a1e7b68f..173a4ade 100644 --- a/SRC/sggrqf.f +++ b/SRC/sggrqf.f @@ -103,45 +103,46 @@ *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[out] TAUA *> \verbatim -* represent the orthogonal matrix Q (see Further Details). +*> TAUA is REAL array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors which +*> represent the orthogonal matrix Q (see Further Details). +*> \endverbatim *> -*> B (input/output) REAL array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is REAL array, dimension (LDB,N) *> On entry, the P-by-N matrix B. *> On exit, the elements on and above the diagonal of the array *> contain the min(P,N)-by-N upper trapezoidal matrix T (T is *> upper triangular if P >= N); the elements below the diagonal, *> with the array TAUB, represent the orthogonal matrix Z as a *> product of elementary reflectors (see Further Details). +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,P). +*> \endverbatim *> -*> TAUB (output) REAL array, dimension (min(P,N)) +*> \param[out] TAUB +*> \verbatim +*> TAUB is REAL array, dimension (min(P,N)) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix Z (see Further Details). +*> \endverbatim *> -*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N,M,P). *> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), *> where NB1 is the optimal blocksize for the RQ factorization @@ -153,11 +154,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INF0= -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/sggsvd.f b/SRC/sggsvd.f index 49c3896d..c61ca87d 100644 --- a/SRC/sggsvd.f +++ b/SRC/sggsvd.f @@ -163,14 +163,17 @@ *> \param[out] K *> \verbatim *> K is INTEGER +*> \endverbatim +*> *> \param[out] L *> \verbatim *> L is INTEGER +*> \endverbatim +*> \verbatim *> On exit, K and L specify the dimension of the subblocks -*> described in the Purpose section. +*> described in Purpose. *> K + L = effective numerical rank of (A**T,B**T)**T. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim @@ -203,9 +206,13 @@ *> \param[out] ALPHA *> \verbatim *> ALPHA is REAL array, dimension (N) +*> \endverbatim +*> *> \param[out] BETA *> \verbatim *> BETA is REAL array, dimension (N) +*> \endverbatim +*> \verbatim *> On exit, ALPHA and BETA contain the generalized singular *> value pairs of A and B; *> ALPHA(1:K) = 1, @@ -220,7 +227,6 @@ *> ALPHA(K+L+1:N) = 0 *> BETA(K+L+1:N) = 0 *> \endverbatim -*> \endverbatim *> *> \param[out] U *> \verbatim diff --git a/SRC/sggsvp.f b/SRC/sggsvp.f index a274816d..7d164103 100644 --- a/SRC/sggsvp.f +++ b/SRC/sggsvp.f @@ -136,9 +136,13 @@ *> \param[in] TOLA *> \verbatim *> TOLA is REAL +*> \endverbatim +*> *> \param[in] TOLB *> \verbatim *> TOLB is REAL +*> \endverbatim +*> \verbatim *> TOLA and TOLB are the thresholds to determine the effective *> numerical rank of matrix B and a subblock of A. Generally, *> they are set to @@ -147,19 +151,21 @@ *> The size of TOLA and TOLB may affect the size of backward *> errors of the decomposition. *> \endverbatim -*> \endverbatim *> *> \param[out] K *> \verbatim *> K is INTEGER +*> \endverbatim +*> *> \param[out] L *> \verbatim *> L is INTEGER +*> \endverbatim +*> \verbatim *> On exit, K and L specify the dimension of the subblocks *> described in Purpose section. *> K + L = effective numerical rank of (A**T,B**T)**T. *> \endverbatim -*> \endverbatim *> *> \param[out] U *> \verbatim diff --git a/SRC/shsein.f b/SRC/shsein.f index abc29570..83c45375 100644 --- a/SRC/shsein.f +++ b/SRC/shsein.f @@ -118,9 +118,13 @@ *> \param[in,out] WR *> \verbatim *> WR is REAL array, dimension (N) +*> \endverbatim +*> *> \param[in] WI *> \verbatim *> WI is REAL array, dimension (N) +*> \endverbatim +*> \verbatim *> On entry, the real and imaginary parts of the eigenvalues of *> H; a complex conjugate pair of eigenvalues must be stored in *> consecutive elements of WR and WI. @@ -128,7 +132,6 @@ *> are perturbed slightly in searching for independent *> eigenvectors. *> \endverbatim -*> \endverbatim *> *> \param[in,out] VL *> \verbatim diff --git a/SRC/shseqr.f b/SRC/shseqr.f index 94d280ea..1abe921f 100644 --- a/SRC/shseqr.f +++ b/SRC/shseqr.f @@ -76,18 +76,21 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> It is assumed that H is already upper triangular in rows *> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally -*> set by a previous call to SGEBAL, and then passed to SGEHRD +*> set by a previous call to SGEBAL, and then passed to ZGEHRD *> when the matrix output by SGEBAL is reduced to Hessenberg *> form. Otherwise ILO and IHI should be set to 1 and N *> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N. *> If N = 0, then ILO = 1 and IHI = 0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] H *> \verbatim @@ -118,9 +121,13 @@ *> \param[out] WR *> \verbatim *> WR is REAL array, dimension (N) +*> \endverbatim +*> *> \param[out] WI *> \verbatim *> WI is REAL array, dimension (N) +*> \endverbatim +*> \verbatim *> The real and imaginary parts, respectively, of the computed *> eigenvalues. If two eigenvalues are computed as a complex *> conjugate pair, they are stored in consecutive elements of @@ -131,7 +138,6 @@ *> diagonal block, WI(i) = sqrt(-H(i+1,i)*H(i,i+1)) and *> WI(i+1) = -WI(i). *> \endverbatim -*> \endverbatim *> *> \param[in,out] Z *> \verbatim @@ -192,42 +198,33 @@ *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and JOB = 'E', then on exit, the *> remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and JOB = 'S', then on exit -*> \endverbatim -*> \verbatim +*> *> (*) (initial value of H)*U = U*(final value of H) -*> \endverbatim -*> \verbatim +*> *> where U is an orthogonal matrix. The final *> value of H is upper Hessenberg and quasi-triangular *> in rows and columns INFO+1 through IHI. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and COMPZ = 'V', then on exit -*> \endverbatim -*> \verbatim +*> *> (final value of Z) = (initial value of Z)*U -*> \endverbatim -*> \verbatim +*> *> where U is the orthogonal matrix in (*) (regard- *> less of the value of JOB.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and COMPZ = 'I', then on exit *> (final value of Z) = U *> where U is the orthogonal matrix in (*) (regard- *> less of the value of JOB.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and COMPZ = 'N', then Z is not *> accessed. *> \endverbatim diff --git a/SRC/sla_gbrfsx_extended.f b/SRC/sla_gbrfsx_extended.f index 3f9ecf74..21e5b6f8 100644 --- a/SRC/sla_gbrfsx_extended.f +++ b/SRC/sla_gbrfsx_extended.f @@ -107,29 +107,29 @@ *> matrix B. *> \endverbatim *> -*> \param[in] A +*> \param[in] AB *> \verbatim -*> A is REAL array, dimension (LDA,N) -*> On entry, the N-by-N matrix A. +*> AB is REAL array, dimension (LDAB,N) +*> On entry, the N-by-N matrix AB. *> \endverbatim *> -*> \param[in] LDA +*> \param[in] LDAB *> \verbatim -*> LDA is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> LDAB is INTEGER +*> The leading dimension of the array AB. LDAB >= max(1,N). *> \endverbatim *> -*> \param[in] AF +*> \param[in] AFB *> \verbatim -*> AF is REAL array, dimension (LDAF,N) +*> AFB is REAL array, dimension (LDAFB,N) *> The factors L and U from the factorization *> A = P*L*U as computed by SGBTRF. *> \endverbatim *> -*> \param[in] LDAF +*> \param[in] LDAFB *> \verbatim -*> LDAF is INTEGER -*> The leading dimension of the array AF. LDAF >= max(1,N). +*> LDAFB is INTEGER +*> The leading dimension of the array AF. LDAFB >= max(1,N). *> \endverbatim *> *> \param[in] IPIV @@ -212,37 +212,31 @@ *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> normwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Normwise relative error in the ith solution vector: *> max_j (abs(XTRUE(j,i) - X(j,i))) *> ------------------------------ *> max_j abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the type of error information as described *> below. There currently are up to three pieces of information *> returned. -*> \endverbatim -*> \verbatim +*> *> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim +*> *> The second index in ERR_BNDS_NORM(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated normwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -251,8 +245,7 @@ *> appropriately scaled matrix Z. *> Let Z = S*A, where S scales each row by a power of the *> radix so all absolute row sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra @@ -266,14 +259,12 @@ *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> componentwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Componentwise relative error in the ith solution vector: *> abs(XTRUE(j,i) - X(j,i)) *> max_j ---------------------- *> abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the right-hand side i (on which the *> componentwise relative error depends), and the type of error *> information as described below. There currently are up to three @@ -281,26 +272,22 @@ *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then *> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most *> the first (:,N_ERR_BNDS) entries are returned. -*> \endverbatim -*> \verbatim +*> *> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim +*> *> The second index in ERR_BNDS_COMP(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated componentwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -311,8 +298,7 @@ *> current right-hand side and S scales each row of *> A*diag(x) by a power of the radix so all absolute row *> sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra diff --git a/SRC/sla_gerfsx_extended.f b/SRC/sla_gerfsx_extended.f index 437e15dc..16a33a98 100644 --- a/SRC/sla_gerfsx_extended.f +++ b/SRC/sla_gerfsx_extended.f @@ -19,7 +19,7 @@ * SUBROUTINE SLA_GERFSX_EXTENDED( PREC_TYPE, TRANS_TYPE, N, NRHS, A, * LDA, AF, LDAF, IPIV, COLEQU, C, B, * LDB, Y, LDY, BERR_OUT, N_NORMS, -* ERR_BNDS_NORM, ERR_BNDS_COMP, RES, +* ERRS_N, ERRS_C, RES, * AYB, DY, Y_TAIL, RCOND, ITHRESH, * RTHRESH, DZ_UB, IGNORE_CWISE, * INFO ) @@ -35,8 +35,8 @@ * REAL A( LDA, * ), AF( LDAF, * ), B( LDB, * ), * $ Y( LDY, * ), RES( * ), DY( * ), Y_TAIL( * ) * REAL C( * ), AYB( * ), RCOND, BERR_OUT( * ), -* $ ERR_BNDS_NORM( NRHS, * ), -* $ ERR_BNDS_COMP( NRHS, * ) +* $ ERRS_N( NRHS, * ), +* $ ERRS_C( NRHS, * ) * .. * * Purpose @@ -50,10 +50,10 @@ *> and provides error bounds and backward error estimates for the solution. *> This subroutine is called by SGERFSX to perform iterative refinement. *> In addition to normwise error bound, the code provides maximum -*> componentwise error bound if possible. See comments for ERR_BNDS_NORM -*> and ERR_BNDS_COMP for details of the error bounds. Note that this +*> componentwise error bound if possible. See comments for ERRS_N +*> and ERRS_C for details of the error bounds. Note that this *> subroutine is only resonsible for setting the second fields of -*> ERR_BNDS_NORM and ERR_BNDS_COMP. +*> ERRS_N and ERRS_C. *> *>\endverbatim * @@ -187,49 +187,43 @@ *> \param[in] N_NORMS *> \verbatim *> N_NORMS is INTEGER -*> Determines which error bounds to return (see ERR_BNDS_NORM -*> and ERR_BNDS_COMP). +*> Determines which error bounds to return (see ERRS_N +*> and ERRS_C). *> If N_NORMS >= 1 return normwise error bounds. *> If N_NORMS >= 2 return componentwise error bounds. *> \endverbatim *> -*> \param[in,out] ERR_BNDS_NORM +*> \param[in,out] ERRS_N *> \verbatim -*> ERR_BNDS_NORM is REAL array, dimension (NRHS, N_ERR_BNDS) +*> ERRS_N is REAL array, dimension (NRHS, N_ERR_BNDS) *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> normwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Normwise relative error in the ith solution vector: *> max_j (abs(XTRUE(j,i) - X(j,i))) *> ------------------------------ *> max_j abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the type of error information as described *> below. There currently are up to three pieces of information *> returned. -*> \endverbatim -*> \verbatim -*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith +*> +*> The first index in ERRS_N(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim -*> The second index in ERR_BNDS_NORM(:,err) contains the following +*> +*> The second index in ERRS_N(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated normwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -238,55 +232,48 @@ *> appropriately scaled matrix Z. *> Let Z = S*A, where S scales each row by a power of the *> radix so all absolute row sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra *> cautions. *> \endverbatim *> -*> \param[in,out] ERR_BNDS_COMP +*> \param[in,out] ERRS_C *> \verbatim -*> ERR_BNDS_COMP is REAL array, dimension (NRHS, N_ERR_BNDS) +*> ERRS_C is REAL array, dimension (NRHS, N_ERR_BNDS) *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> componentwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Componentwise relative error in the ith solution vector: *> abs(XTRUE(j,i) - X(j,i)) *> max_j ---------------------- *> abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the right-hand side i (on which the *> componentwise relative error depends), and the type of error *> information as described below. There currently are up to three *> pieces of information returned for each right-hand side. If *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then -*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most +*> ERRS_C is not accessed. If N_ERR_BNDS .LT. 3, then at most *> the first (:,N_ERR_BNDS) entries are returned. -*> \endverbatim -*> \verbatim -*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith +*> +*> The first index in ERRS_C(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim -*> The second index in ERR_BNDS_COMP(:,err) contains the following +*> +*> The second index in ERRS_C(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated componentwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -297,8 +284,7 @@ *> current right-hand side and S scales each row of *> A*diag(x) by a power of the radix so all absolute row *> sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra @@ -349,7 +335,7 @@ *> permit convergence using approximate factorizations or *> factorizations other than LU. If the factorization uses a *> technique other than Gaussian elimination, the guarantees in -*> ERR_BNDS_NORM and ERR_BNDS_COMP may no longer be trustworthy. +*> ERRS_N and ERRS_C may no longer be trustworthy. *> \endverbatim *> *> \param[in] RTHRESH @@ -407,7 +393,7 @@ SUBROUTINE SLA_GERFSX_EXTENDED( PREC_TYPE, TRANS_TYPE, N, NRHS, A, $ LDA, AF, LDAF, IPIV, COLEQU, C, B, $ LDB, Y, LDY, BERR_OUT, N_NORMS, - $ ERR_BNDS_NORM, ERR_BNDS_COMP, RES, + $ ERRS_N, ERRS_C, RES, $ AYB, DY, Y_TAIL, RCOND, ITHRESH, $ RTHRESH, DZ_UB, IGNORE_CWISE, $ INFO ) @@ -428,8 +414,8 @@ REAL A( LDA, * ), AF( LDAF, * ), B( LDB, * ), $ Y( LDY, * ), RES( * ), DY( * ), Y_TAIL( * ) REAL C( * ), AYB( * ), RCOND, BERR_OUT( * ), - $ ERR_BNDS_NORM( NRHS, * ), - $ ERR_BNDS_COMP( NRHS, * ) + $ ERRS_N( NRHS, * ), + $ ERRS_C( NRHS, * ) * .. * * ===================================================================== @@ -665,11 +651,11 @@ * Compute error bounds * IF (N_NORMS .GE. 1) THEN - ERR_BNDS_NORM( J, LA_LINRX_ERR_I ) = + ERRS_N( J, LA_LINRX_ERR_I ) = $ FINAL_DX_X / (1 - DXRATMAX) END IF IF ( N_NORMS .GE. 2 ) THEN - ERR_BNDS_COMP( J, LA_LINRX_ERR_I ) = + ERRS_C( J, LA_LINRX_ERR_I ) = $ FINAL_DZ_Z / (1 - DZRATMAX) END IF * diff --git a/SRC/sla_lin_berr.f b/SRC/sla_lin_berr.f index b6ff175f..04280d38 100644 --- a/SRC/sla_lin_berr.f +++ b/SRC/sla_lin_berr.f @@ -77,13 +77,13 @@ *> The denominator in the relative backward error formula above, i.e., *> the matrix abs(op(A_s))*abs(Y) + abs(B_s). The matrices A, Y, and B *> are from iterative refinement (see sla_gerfsx_extended.f). +*> \endverbatim *> *> \param[out] BERR *> \verbatim *> BERR is REAL array, dimension (NRHS) *> The componentwise relative backward error from the formula above. *> \endverbatim -*> \endverbatim *> * * Authors diff --git a/SRC/sla_syrpvgrw.f b/SRC/sla_syrpvgrw.f index 1e50587a..2f494031 100644 --- a/SRC/sla_syrpvgrw.f +++ b/SRC/sla_syrpvgrw.f @@ -67,12 +67,6 @@ *> column INFO is exactly 0. *> \endverbatim *> -*> \param[in] NCOLS -*> \verbatim -*> NCOLS is INTEGER -*> The number of columns of the matrix A. NCOLS >= 0. -*> \endverbatim -*> *> \param[in] A *> \verbatim *> A is REAL array, dimension (LDA,N) diff --git a/SRC/slabrd.f b/SRC/slabrd.f index a81da165..a92cf51a 100644 --- a/SRC/slabrd.f +++ b/SRC/slabrd.f @@ -66,59 +66,105 @@ *> The number of leading rows and columns of A to be reduced. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is REAL array, dimension (LDA,N) +*> On entry, the m by n general matrix to be reduced. +*> On exit, the first NB rows and columns of the matrix are +*> overwritten; the rest of the array is unchanged. +*> If m >= n, elements on and below the diagonal in the first NB +*> columns, with the array TAUQ, represent the orthogonal +*> matrix Q as a product of elementary reflectors; and +*> elements above the diagonal in the first NB rows, with the +*> array TAUP, represent the orthogonal matrix P as a product +*> of elementary reflectors. +*> If m < n, elements below the diagonal in the first NB +*> columns, with the array TAUQ, represent the orthogonal +*> matrix Q as a product of elementary reflectors, and +*> elements on and above the diagonal in the first NB rows, +*> with the array TAUP, represent the orthogonal matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) REAL array, dimension (NB) +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (NB) *> The diagonal elements of the first NB rows and columns of *> the reduced matrix. D(i) = A(i,i). +*> \endverbatim *> -*> E (output) REAL array, dimension (NB) +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (NB) *> The off-diagonal elements of the first NB rows and columns of *> the reduced matrix. +*> \endverbatim *> -*> TAUQ (output) REAL array dimension (NB) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is REAL array dimension (NB) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) REAL array, dimension (NB) +*> \param[out] TAUP +*> \verbatim +*> TAUP is REAL array, dimension (NB) *> The scalar factors of the elementary reflectors which *> represent the orthogonal matrix P. See Further Details. +*> \endverbatim *> -*> X (output) REAL array, dimension (LDX,NB) +*> \param[out] X +*> \verbatim +*> X is REAL array, dimension (LDX,NB) *> The m-by-nb matrix X required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDX (input) INTEGER +*> \param[in] LDX +*> \verbatim +*> LDX is INTEGER *> The leading dimension of the array X. LDX >= max(1,M). +*> \endverbatim *> -*> Y (output) REAL array, dimension (LDY,NB) +*> \param[out] Y +*> \verbatim +*> Y is REAL array, dimension (LDY,NB) *> The n-by-nb matrix Y required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDY (input) INTEGER +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER *> The leading dimension of the array Y. LDY >= max(1,N). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/slacon.f b/SRC/slacon.f index dc751746..71fbf6c8 100644 --- a/SRC/slacon.f +++ b/SRC/slacon.f @@ -104,8 +104,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> Contributed by Nick Higham, University of Manchester. *> Originally named SONEST, dated March 16, 1988. diff --git a/SRC/slaed3.f b/SRC/slaed3.f index 5e8dbc1d..00bf71f9 100644 --- a/SRC/slaed3.f +++ b/SRC/slaed3.f @@ -153,12 +153,6 @@ *> to update the system. *> \endverbatim *> -*> \param[in] LDS -*> \verbatim -*> LDS is INTEGER -*> The leading dimension of S. LDS >= max(1,K). -*> \endverbatim -*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/SRC/slagtm.f b/SRC/slagtm.f index e0edd7ec..48c26ed7 100644 --- a/SRC/slagtm.f +++ b/SRC/slagtm.f @@ -99,12 +99,13 @@ *> \verbatim *> X is REAL array, dimension (LDX,NRHS) *> The N by NRHS matrix X. +*> \endverbatim +*> *> \param[in] LDX *> \verbatim *> LDX is INTEGER *> The leading dimension of the array X. LDX >= max(N,1). *> \endverbatim -*> \endverbatim *> *> \param[in] BETA *> \verbatim diff --git a/SRC/slahr2.f b/SRC/slahr2.f index 9742d694..b04bcea4 100644 --- a/SRC/slahr2.f +++ b/SRC/slahr2.f @@ -65,6 +65,55 @@ *> The number of columns to be reduced. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N-K+1) +*> On entry, the n-by-(n-k+1) general matrix A. +*> On exit, the elements on and above the k-th subdiagonal in +*> the first NB columns are overwritten with the corresponding +*> elements of the reduced matrix; the elements below the k-th +*> subdiagonal, with the array TAU, represent the matrix Q as a +*> product of elementary reflectors. The other columns of A are +*> unchanged. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (NB) +*> The scalar factors of the elementary reflectors. See Further +*> Details. +*> \endverbatim +*> +*> \param[out] T +*> \verbatim +*> T is REAL array, dimension (LDT,NB) +*> The upper triangular matrix T. +*> \endverbatim +*> +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER +*> The leading dimension of the array T. LDT >= NB. +*> \endverbatim +*> +*> \param[out] Y +*> \verbatim +*> Y is REAL array, dimension (LDY,NB) +*> The n-by-nb matrix Y. +*> \endverbatim +*> +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER +*> The leading dimension of the array Y. LDY >= N. +*> \endverbatim +*> * * Authors * ======= @@ -83,27 +132,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* unchanged. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> TAU (output) REAL array, dimension (NB) -*> The scalar factors of the elementary reflectors. See Further -*> Details. -*> -*> T (output) REAL array, dimension (LDT,NB) -*> The upper triangular matrix T. -*> -*> LDT (input) INTEGER -*> The leading dimension of the array T. LDT >= NB. -*> -*> Y (output) REAL array, dimension (LDY,NB) -*> The n-by-nb matrix Y. -*> -*> LDY (input) INTEGER -*> The leading dimension of the array Y. LDY >= N. -*> *> *> The matrix Q is represented as a product of nb elementary reflectors *> diff --git a/SRC/slahrd.f b/SRC/slahrd.f index 05c09df8..b75a3dc4 100644 --- a/SRC/slahrd.f +++ b/SRC/slahrd.f @@ -66,6 +66,55 @@ *> The number of columns to be reduced. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N-K+1) +*> On entry, the n-by-(n-k+1) general matrix A. +*> On exit, the elements on and above the k-th subdiagonal in +*> the first NB columns are overwritten with the corresponding +*> elements of the reduced matrix; the elements below the k-th +*> subdiagonal, with the array TAU, represent the matrix Q as a +*> product of elementary reflectors. The other columns of A are +*> unchanged. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (NB) +*> The scalar factors of the elementary reflectors. See Further +*> Details. +*> \endverbatim +*> +*> \param[out] T +*> \verbatim +*> T is REAL array, dimension (LDT,NB) +*> The upper triangular matrix T. +*> \endverbatim +*> +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER +*> The leading dimension of the array T. LDT >= NB. +*> \endverbatim +*> +*> \param[out] Y +*> \verbatim +*> Y is REAL array, dimension (LDY,NB) +*> The n-by-nb matrix Y. +*> \endverbatim +*> +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER +*> The leading dimension of the array Y. LDY >= N. +*> \endverbatim +*> * * Authors * ======= @@ -84,27 +133,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* unchanged. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> TAU (output) REAL array, dimension (NB) -*> The scalar factors of the elementary reflectors. See Further -*> Details. -*> -*> T (output) REAL array, dimension (LDT,NB) -*> The upper triangular matrix T. -*> -*> LDT (input) INTEGER -*> The leading dimension of the array T. LDT >= NB. -*> -*> Y (output) REAL array, dimension (LDY,NB) -*> The n-by-nb matrix Y. -*> -*> LDY (input) INTEGER -*> The leading dimension of the array Y. LDY >= N. -*> *> *> The matrix Q is represented as a product of nb elementary reflectors *> diff --git a/SRC/slaqr0.f b/SRC/slaqr0.f index 3ad8db4d..896f199b 100644 --- a/SRC/slaqr0.f +++ b/SRC/slaqr0.f @@ -196,37 +196,29 @@ *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANT is .FALSE., then on exit, *> the remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTT is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (*) (initial value of H)*U = U*(final value of H) -*> \endverbatim -*> \verbatim +*> *> where U is an orthogonal matrix. The final *> value of H is upper Hessenberg and quasi-triangular *> in rows and columns INFO+1 through IHI. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (final value of Z(ILO:IHI,ILOZ:IHIZ) *> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U -*> \endverbatim -*> \verbatim +*> *> where U is the orthogonal matrix in (*) (regard- *> less of the value of WANTT.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not *> accessed. *> \endverbatim diff --git a/SRC/slaqr4.f b/SRC/slaqr4.f index 955c9631..0e0c1ec5 100644 --- a/SRC/slaqr4.f +++ b/SRC/slaqr4.f @@ -198,42 +198,36 @@ *> \param[out] INFO *> \verbatim *> INFO is INTEGER +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> .GT. 0: if INFO = i, SLAQR4 failed to compute all of *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANT is .FALSE., then on exit, *> the remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTT is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (*) (initial value of H)*U = U*(final value of H) -*> \endverbatim -*> \verbatim -*> where U is an orthogonal matrix. The final -*> value of H is upper Hessenberg and quasi-triangular -*> in rows and columns INFO+1 through IHI. -*> \endverbatim -*> \verbatim +*> +*> where U is a orthogonal matrix. The final +*> value of H is upper Hessenberg and triangular in +*> rows and columns INFO+1 through IHI. +*> *> If INFO .GT. 0 and WANTZ is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (final value of Z(ILO:IHI,ILOZ:IHIZ) *> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U -*> \endverbatim -*> \verbatim +*> *> where U is the orthogonal matrix in (*) (regard- *> less of the value of WANTT.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not *> accessed. *> \endverbatim diff --git a/SRC/slarfb.f b/SRC/slarfb.f index 27a47f6c..232d69e7 100644 --- a/SRC/slarfb.f +++ b/SRC/slarfb.f @@ -93,53 +93,81 @@ *> reflectors whose product defines the block reflector). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] V *> \verbatim -* The matrix V. See Further Details. +*> V is REAL array, dimension +*> (LDV,K) if STOREV = 'C' +*> (LDV,M) if STOREV = 'R' and SIDE = 'L' +*> (LDV,N) if STOREV = 'R' and SIDE = 'R' +*> The matrix V. See Further Details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); *> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); *> if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> T (input) REAL array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is REAL array, dimension (LDT,K) *> The triangular k by k matrix T in the representation of the *> block reflector. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> -*> C (input/output) REAL array, dimension (LDC,N) +*> \param[in,out] C +*> \verbatim +*> C is REAL array, dimension (LDC,N) *> On entry, the m by n matrix C. *> On exit, C is overwritten by H*C or H**T*C or C*H or C*H**T. +*> \endverbatim *> -*> LDC (input) INTEGER +*> \param[in] LDC +*> \verbatim +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). +*> \endverbatim *> -*> WORK (workspace) REAL array, dimension (LDWORK,K) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (LDWORK,K) +*> \endverbatim *> -*> LDWORK (input) INTEGER +*> \param[in] LDWORK +*> \verbatim +*> LDWORK is INTEGER *> The leading dimension of the array WORK. *> If SIDE = 'L', LDWORK >= max(1,N); *> if SIDE = 'R', LDWORK >= max(1,M). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and diff --git a/SRC/slarft.f b/SRC/slarft.f index 80b95ab6..1a76c351 100644 --- a/SRC/slarft.f +++ b/SRC/slarft.f @@ -63,56 +63,82 @@ *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] STOREV *> \verbatim -* reflectors are stored (see also Further Details): +*> STOREV is CHARACTER*1 +*> Specifies how the vectors which define the elementary +*> reflectors are stored (see also Further Details): *> = 'C': columnwise *> = 'R': rowwise +*> \endverbatim *> -*> N (input) INTEGER +*> \param[in] N +*> \verbatim +*> N is INTEGER *> The order of the block reflector H. N >= 0. +*> \endverbatim *> -*> K (input) INTEGER +*> \param[in] K +*> \verbatim +*> K is INTEGER *> The order of the triangular factor T (= the number of *> elementary reflectors). K >= 1. +*> \endverbatim *> -*> V (input/output) REAL array, dimension +*> \param[in,out] V +*> \verbatim +*> V is REAL array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,N) if STOREV = 'R' *> The matrix V. See further details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> TAU (input) REAL array, dimension (K) +*> \param[in] TAU +*> \verbatim +*> TAU is REAL array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i). +*> \endverbatim *> -*> T (output) REAL array, dimension (LDT,K) +*> \param[out] T +*> \verbatim +*> T is REAL array, dimension (LDT,K) *> The k by k triangular factor T of the block reflector. *> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is *> lower triangular. The rest of the array is not used. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and diff --git a/SRC/slarrf.f b/SRC/slarrf.f index 75987c66..f8f5d7be 100644 --- a/SRC/slarrf.f +++ b/SRC/slarrf.f @@ -159,6 +159,11 @@ *> Workspace. *> \endverbatim *> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> Signals processing OK (=0) or failure (=1) +*> \endverbatim * * Authors * ======= diff --git a/SRC/slarrv.f b/SRC/slarrv.f index c7f16c07..66500044 100644 --- a/SRC/slarrv.f +++ b/SRC/slarrv.f @@ -234,14 +234,12 @@ *> \verbatim *> INFO is INTEGER *> = 0: successful exit -*> \endverbatim -*> \verbatim +*> *> > 0: A problem occured in SLARRV. *> < 0: One of the called subroutines signaled an internal problem. *> Needs inspection of the corresponding parameter IINFO *> for further information. -*> \endverbatim -*> \verbatim +*> *> =-1: Problem in SLARRB when refining a child's eigenvalues. *> =-2: Problem in SLARRF when computing the RRR of a child. *> When a child is inside a tight cluster, it can be difficult diff --git a/SRC/slarzt.f b/SRC/slarzt.f index 4ba181ab..904e4ebf 100644 --- a/SRC/slarzt.f +++ b/SRC/slarzt.f @@ -66,56 +66,82 @@ *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] STOREV *> \verbatim -* reflectors are stored (see also Further Details): +*> STOREV is CHARACTER*1 +*> Specifies how the vectors which define the elementary +*> reflectors are stored (see also Further Details): *> = 'C': columnwise (not supported yet) *> = 'R': rowwise +*> \endverbatim *> -*> N (input) INTEGER +*> \param[in] N +*> \verbatim +*> N is INTEGER *> The order of the block reflector H. N >= 0. +*> \endverbatim *> -*> K (input) INTEGER +*> \param[in] K +*> \verbatim +*> K is INTEGER *> The order of the triangular factor T (= the number of *> elementary reflectors). K >= 1. +*> \endverbatim *> -*> V (input/output) REAL array, dimension +*> \param[in,out] V +*> \verbatim +*> V is REAL array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,N) if STOREV = 'R' *> The matrix V. See further details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> TAU (input) REAL array, dimension (K) +*> \param[in] TAU +*> \verbatim +*> TAU is REAL array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i). +*> \endverbatim *> -*> T (output) REAL array, dimension (LDT,K) +*> \param[out] T +*> \verbatim +*> T is REAL array, dimension (LDT,K) *> The k by k triangular factor T of the block reflector. *> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is *> lower triangular. The rest of the array is not used. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> Based on contributions by *> A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA diff --git a/SRC/slascl.f b/SRC/slascl.f index 6d87e7d0..c99af376 100644 --- a/SRC/slascl.f +++ b/SRC/slascl.f @@ -84,6 +84,8 @@ *> \param[in] CTO *> \verbatim *> CTO is REAL +*> \endverbatim +*> \verbatim *> The matrix A is multiplied by CTO/CFROM. A(I,J) is computed *> without over/underflow if the final result CTO*A(I,J)/CFROM *> can be represented without over/underflow. CFROM must be diff --git a/SRC/slasq2.f b/SRC/slasq2.f index 027d1c58..a4d9c540 100644 --- a/SRC/slasq2.f +++ b/SRC/slasq2.f @@ -104,7 +104,7 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Local Variables: I0:N0 defines a current unreduced segment of Z. +*> Local Variables: I0:N0 defines a current unreduced segment of Z. *> The shifts are accumulated in SIGMA. Iteration count is in ITER. *> Ping-pong is controlled by PP (alternates between 0 and 1). *> diff --git a/SRC/slasq4.f b/SRC/slasq4.f index 75884913..97fcafe9 100644 --- a/SRC/slasq4.f +++ b/SRC/slasq4.f @@ -65,9 +65,9 @@ *> PP=0 for ping, PP=1 for pong. *> \endverbatim *> -*> \param[in] NOIN +*> \param[in] N0IN *> \verbatim -*> NOIN is INTEGER +*> N0IN is INTEGER *> The value of N0 at start of EIGTEST. *> \endverbatim *> @@ -144,7 +144,7 @@ * =============== *>\details \b Further \b Details *> \verbatim -* CNST1 = 9/16 +*> CNST1 = 9/16 *> *> \endverbatim *> diff --git a/SRC/slatbs.f b/SRC/slatbs.f index 656a6153..ebec3d32 100644 --- a/SRC/slatbs.f +++ b/SRC/slatbs.f @@ -173,8 +173,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> A rough bound on x is computed; if that is less than overflow, STBSV *> is called, otherwise, specific code is used which checks for possible diff --git a/SRC/slatps.f b/SRC/slatps.f index 91480b70..09225bbe 100644 --- a/SRC/slatps.f +++ b/SRC/slatps.f @@ -160,8 +160,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> A rough bound on x is computed; if that is less than overflow, STPSV *> is called, otherwise, specific code is used which checks for possible diff --git a/SRC/slatrd.f b/SRC/slatrd.f index da02ec77..fc7e45a3 100644 --- a/SRC/slatrd.f +++ b/SRC/slatrd.f @@ -70,47 +70,84 @@ *> The number of rows and columns to be reduced. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is REAL array, dimension (LDA,N) +*> On entry, the symmetric matrix A. If UPLO = 'U', the leading +*> n-by-n upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading n-by-n lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit: +*> if UPLO = 'U', the last NB columns have been reduced to +*> tridiagonal form, with the diagonal elements overwriting +*> the diagonal elements of A; the elements above the diagonal +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors; +*> if UPLO = 'L', the first NB columns have been reduced to +*> tridiagonal form, with the diagonal elements overwriting +*> the diagonal elements of A; the elements below the diagonal +*> with the array TAU, represent the orthogonal matrix Q as a +*> product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= (1,N). +*> \endverbatim *> -*> E (output) REAL array, dimension (N-1) +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (N-1) *> If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal *> elements of the last NB columns of the reduced matrix; *> if UPLO = 'L', E(1:nb) contains the subdiagonal elements of *> the first NB columns of the reduced matrix. +*> \endverbatim *> -*> TAU (output) REAL array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (N-1) *> The scalar factors of the elementary reflectors, stored in *> TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'. *> See Further Details. +*> \endverbatim *> -*> W (output) REAL array, dimension (LDW,NB) +*> \param[out] W +*> \verbatim +*> W is REAL array, dimension (LDW,NB) *> The n-by-nb matrix W required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDW (input) INTEGER +*> \param[in] LDW +*> \verbatim +*> LDW is INTEGER *> The leading dimension of the array W. LDW >= max(1,N). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/slatrs.f b/SRC/slatrs.f index 5e3016cd..1d308365 100644 --- a/SRC/slatrs.f +++ b/SRC/slatrs.f @@ -169,8 +169,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> A rough bound on x is computed; if that is less than overflow, STRSV *> is called, otherwise, specific code is used which checks for possible diff --git a/SRC/sorcsd.f b/SRC/sorcsd.f index b732bd10..b4b5a603 100644 --- a/SRC/sorcsd.f +++ b/SRC/sorcsd.f @@ -127,16 +127,52 @@ *> The number of columns in X11 and X21. 0 <= Q <= M. *> \endverbatim *> -*> \param[in,out] X +*> \param[in,out] X11 *> \verbatim -*> X is REAL array, dimension (LDX,M) -*> On entry, the orthogonal matrix whose CSD is desired. +*> X11 is REAL array, dimension (LDX11,Q) +*> On entry, part of the orthogonal matrix whose CSD is desired. *> \endverbatim *> -*> \param[in] LDX +*> \param[in] LDX11 *> \verbatim -*> LDX is INTEGER -*> The leading dimension of X. LDX >= MAX(1,M). +*> LDX11 is INTEGER +*> The leading dimension of X11. LDX11 >= MAX(1,P). +*> \endverbatim +*> +*> \param[in,out] X12 +*> \verbatim +*> X12 is REAL array, dimension (LDX12,M-Q) +*> On entry, part of the orthogonal matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX12 +*> \verbatim +*> LDX12 is INTEGER +*> The leading dimension of X12. LDX12 >= MAX(1,P). +*> \endverbatim +*> +*> \param[in,out] X21 +*> \verbatim +*> X21 is REAL array, dimension (LDX21,Q) +*> On entry, part of the orthogonal matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX21 +*> \verbatim +*> LDX21 is INTEGER +*> The leading dimension of X11. LDX21 >= MAX(1,M-P). +*> \endverbatim +*> +*> \param[in,out] X22 +*> \verbatim +*> X22 is REAL array, dimension (LDX22,M-Q) +*> On entry, part of the orthogonal matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX22 +*> \verbatim +*> LDX22 is INTEGER +*> The leading dimension of X11. LDX22 >= MAX(1,M-P). *> \endverbatim *> *> \param[out] THETA diff --git a/SRC/sorghr.f b/SRC/sorghr.f index 8dcf15a9..c0c3c5e7 100644 --- a/SRC/sorghr.f +++ b/SRC/sorghr.f @@ -51,15 +51,18 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI must have the same values as in the previous call *> of SGEHRD. Q is equal to the unit matrix except in the *> submatrix Q(ilo+1:ihi,ilo+1:ihi). *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim diff --git a/SRC/sormhr.f b/SRC/sormhr.f index 88c3cae3..9e0920f8 100644 --- a/SRC/sormhr.f +++ b/SRC/sormhr.f @@ -80,9 +80,13 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI must have the same values as in the previous call *> of SGEHRD. Q is equal to the unit matrix except in the *> submatrix Q(ilo+1:ihi,ilo+1:ihi). @@ -91,7 +95,6 @@ *> if SIDE = 'R', then 1 <= ILO <= IHI <= N, if N > 0, and *> ILO = 1 and IHI = 0, if N = 0. *> \endverbatim -*> \endverbatim *> *> \param[in] A *> \verbatim diff --git a/SRC/spbstf.f b/SRC/spbstf.f index 307795bc..021bd44b 100644 --- a/SRC/spbstf.f +++ b/SRC/spbstf.f @@ -80,6 +80,25 @@ *> as follows: *> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j; *> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd). +*> +*> On exit, if INFO = 0, the factor S from the split Cholesky +*> factorization A = S**T*S. See Further Details. +*> \endverbatim +*> +*> \param[in] LDAB +*> \verbatim +*> LDAB is INTEGER +*> The leading dimension of the array AB. LDAB >= KD+1. +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> > 0: if INFO = i, the factorization could not be completed, +*> because the updated element a(i,i) was negative; the +*> matrix A is not positive definite. *> \endverbatim *> * @@ -100,18 +119,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* factorization A = S**T*S. See Further Details. -*> -*> LDAB (input) INTEGER -*> The leading dimension of the array AB. LDAB >= KD+1. -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> > 0: if INFO = i, the factorization could not be completed, -*> because the updated element a(i,i) was negative; the -*> matrix A is not positive definite. -*> *> *> The band storage scheme is illustrated by the following example, when *> N = 7, KD = 2: diff --git a/SRC/spptrf.f b/SRC/spptrf.f index 938f9e2b..e0a5a7ca 100644 --- a/SRC/spptrf.f +++ b/SRC/spptrf.f @@ -102,8 +102,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> The packed storage scheme is illustrated by the following example *> when N = 4, UPLO = 'U': diff --git a/SRC/ssbgvx.f b/SRC/ssbgvx.f index d59dd35b..654f0c78 100644 --- a/SRC/ssbgvx.f +++ b/SRC/ssbgvx.f @@ -153,27 +153,33 @@ *> \param[in] VL *> \verbatim *> VL is REAL +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is REAL +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/sspgvx.f b/SRC/sspgvx.f index 423f45f7..e9eca801 100644 --- a/SRC/sspgvx.f +++ b/SRC/sspgvx.f @@ -119,27 +119,33 @@ *> \param[in] VL *> \verbatim *> VL is REAL +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is REAL +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/ssptrd.f b/SRC/ssptrd.f index 3d752b5a..70dc78f9 100644 --- a/SRC/ssptrd.f +++ b/SRC/ssptrd.f @@ -54,6 +54,54 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] AP +*> \verbatim +*> AP is REAL array, dimension (N*(N+1)/2) +*> On entry, the upper or lower triangle of the symmetric matrix +*> A, packed columnwise in a linear array. The j-th column of A +*> is stored in the array AP as follows: +*> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; +*> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the orthogonal +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the orthogonal matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim +*> +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (N) +*> The diagonal elements of the tridiagonal matrix T: +*> D(i) = A(i,i). +*> \endverbatim +*> +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (N-1) +*> The off-diagonal elements of the tridiagonal matrix T: +*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (N-1) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -72,24 +120,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* of elementary reflectors. See Further Details. -*> -*> D (output) REAL array, dimension (N) -*> The diagonal elements of the tridiagonal matrix T: -*> D(i) = A(i,i). -*> -*> E (output) REAL array, dimension (N-1) -*> The off-diagonal elements of the tridiagonal matrix T: -*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. -*> -*> TAU (output) REAL array, dimension (N-1) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/sstebz.f b/SRC/sstebz.f index c9a96fe3..c1d9f5d5 100644 --- a/SRC/sstebz.f +++ b/SRC/sstebz.f @@ -86,28 +86,34 @@ *> \param[in] VL *> \verbatim *> VL is REAL +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is REAL +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. Eigenvalues less than or equal *> to VL, or greater than VU, will not be returned. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/sstegr.f b/SRC/sstegr.f index 43881320..610cee9c 100644 --- a/SRC/sstegr.f +++ b/SRC/sstegr.f @@ -104,27 +104,33 @@ *> \param[in] VL *> \verbatim *> VL is REAL +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is REAL +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/sstemr.f b/SRC/sstemr.f index 99598334..aaed5bda 100644 --- a/SRC/sstemr.f +++ b/SRC/sstemr.f @@ -135,27 +135,33 @@ *> \param[in] VL *> \verbatim *> VL is REAL +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is REAL +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[out] M *> \verbatim diff --git a/SRC/ssyconv.f b/SRC/ssyconv.f index 57b5655e..2e9a19c8 100644 --- a/SRC/ssyconv.f +++ b/SRC/ssyconv.f @@ -89,19 +89,6 @@ *> WORK is REAL array, dimension (N) *> \endverbatim *> -*> \param[in] LWORK -*> \verbatim -*> LWORK is INTEGER -*> The length of WORK. LWORK >=1. -*> LWORK = N -*> \endverbatim -*> \verbatim -*> If LWORK = -1, then a workspace query is assumed; the routine -*> only calculates the optimal size of the WORK array, returns -*> this value as the first entry of the WORK array, and no error -*> message related to LWORK is issued by XERBLA. -*> \endverbatim -*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/SRC/ssyequb.f b/SRC/ssyequb.f index dd9d2a43..d2411e9a 100644 --- a/SRC/ssyequb.f +++ b/SRC/ssyequb.f @@ -129,8 +129,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> Reference: Livne, O.E. and Golub, G.H., "Scaling by Binormalization", *> Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004. diff --git a/SRC/ssytd2.f b/SRC/ssytd2.f index e3b86f8a..7cc850c5 100644 --- a/SRC/ssytd2.f +++ b/SRC/ssytd2.f @@ -55,6 +55,62 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N) +*> On entry, the symmetric matrix A. If UPLO = 'U', the leading +*> n-by-n upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading n-by-n lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the orthogonal +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the orthogonal matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (N) +*> The diagonal elements of the tridiagonal matrix T: +*> D(i) = A(i,i). +*> \endverbatim +*> +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (N-1) +*> The off-diagonal elements of the tridiagonal matrix T: +*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (N-1) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim +*> * * Authors * ======= @@ -73,27 +129,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* of elementary reflectors. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> D (output) REAL array, dimension (N) -*> The diagonal elements of the tridiagonal matrix T: -*> D(i) = A(i,i). -*> -*> E (output) REAL array, dimension (N-1) -*> The off-diagonal elements of the tridiagonal matrix T: -*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. -*> -*> TAU (output) REAL array, dimension (N-1) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value. -*> *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/ssytrd.f b/SRC/ssytrd.f index 1a501791..104f2a53 100644 --- a/SRC/ssytrd.f +++ b/SRC/ssytrd.f @@ -55,45 +55,64 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realSYcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* of elementary reflectors. See Further Details. +*> A is REAL array, dimension (LDA,N) +*> On entry, the symmetric matrix A. If UPLO = 'U', the leading +*> N-by-N upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading N-by-N lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the orthogonal +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the orthogonal matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> D (output) REAL array, dimension (N) +*> \param[out] D +*> \verbatim +*> D is REAL array, dimension (N) *> The diagonal elements of the tridiagonal matrix T: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) REAL array, dimension (N-1) +*> \param[out] E +*> \verbatim +*> E is REAL array, dimension (N-1) *> The off-diagonal elements of the tridiagonal matrix T: *> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim *> -*> TAU (output) REAL array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is REAL array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= 1. *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. @@ -102,11 +121,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realSYcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/stgsen.f b/SRC/stgsen.f index aff63cb6..d3c65a22 100644 --- a/SRC/stgsen.f +++ b/SRC/stgsen.f @@ -152,12 +152,18 @@ *> \param[out] ALPHAR *> \verbatim *> ALPHAR is REAL array, dimension (N) +*> \endverbatim +*> *> \param[out] ALPHAI *> \verbatim *> ALPHAI is REAL array, dimension (N) +*> \endverbatim +*> *> \param[out] BETA *> \verbatim *> BETA is REAL array, dimension (N) +*> \endverbatim +*> \verbatim *> On exit, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N, will *> be the generalized eigenvalues. ALPHAR(j) + ALPHAI(j)*i *> and BETA(j),j=1,...,N are the diagonals of the complex Schur @@ -168,8 +174,6 @@ *> positive, then the j-th and (j+1)-st eigenvalues are a *> complex conjugate pair, with ALPHAI(j+1) negative. *> \endverbatim -*> \endverbatim -*> \endverbatim *> *> \param[in,out] Q *> \verbatim @@ -217,9 +221,13 @@ *> \param[out] PL *> \verbatim *> PL is REAL +*> \endverbatim +*> *> \param[out] PR *> \verbatim *> PR is REAL +*> \endverbatim +*> \verbatim *> If IJOB = 1, 4 or 5, PL, PR are lower bounds on the *> reciprocal of the norm of "projections" onto left and right *> eigenspaces with respect to the selected cluster. @@ -227,7 +235,6 @@ *> If M = 0 or M = N, PL = PR = 1. *> If IJOB = 0, 2 or 3, PL and PR are not referenced. *> \endverbatim -*> \endverbatim *> *> \param[out] DIF *> \verbatim diff --git a/SRC/stgsja.f b/SRC/stgsja.f index 44c04a9b..7f2f30a0 100644 --- a/SRC/stgsja.f +++ b/SRC/stgsja.f @@ -175,52 +175,77 @@ *> The number of columns of the matrices A and B. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] K +*> \verbatim +*> K is INTEGER +*> \endverbatim +*> +*> \param[in] L +*> \verbatim +*> L is INTEGER +*> \endverbatim *> \verbatim -* See Further Details. +*> 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. +*> \endverbatim *> -*> A (input/output) REAL array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N) *> On entry, the M-by-N matrix A. *> On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular *> matrix R or part of R. See Purpose for details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> B (input/output) REAL array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is REAL array, dimension (LDB,N) *> On entry, the P-by-N matrix B. *> On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains *> a part of R. See Purpose for details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,P). +*> \endverbatim *> -*> TOLA (input) REAL -*> TOLB (input) REAL +*> \param[in] TOLA +*> \verbatim +*> TOLA is REAL +*> \endverbatim +*> +*> \param[in] TOLB +*> \verbatim +*> TOLB is REAL +*> \endverbatim +*> \verbatim *> TOLA and TOLB are the convergence criteria for the Jacobi- *> Kogbetliantz iteration procedure. Generally, they are the *> same as used in the preprocessing step, say *> TOLA = max(M,N)*norm(A)*MACHEPS, *> TOLB = max(P,N)*norm(B)*MACHEPS. +*> \endverbatim *> -*> ALPHA (output) REAL array, dimension (N) -*> BETA (output) REAL array, dimension (N) +*> \param[out] ALPHA +*> \verbatim +*> ALPHA is REAL array, dimension (N) +*> \endverbatim +*> +*> \param[out] BETA +*> \verbatim +*> BETA is REAL array, dimension (N) +*> \endverbatim +*> \verbatim *> On exit, ALPHA and BETA contain the generalized singular *> value pairs of A and B; *> ALPHA(1:K) = 1, @@ -234,53 +259,82 @@ *> Furthermore, if K+L < N, *> ALPHA(K+L+1:N) = 0 and *> BETA(K+L+1:N) = 0. +*> \endverbatim *> -*> U (input/output) REAL array, dimension (LDU,M) +*> \param[in,out] U +*> \verbatim +*> U is REAL array, dimension (LDU,M) *> On entry, if JOBU = 'U', U must contain a matrix U1 (usually *> the orthogonal matrix returned by SGGSVP). *> On exit, *> if JOBU = 'I', U contains the orthogonal matrix U; *> if JOBU = 'U', U contains the product U1*U. *> If JOBU = 'N', U is not referenced. +*> \endverbatim *> -*> LDU (input) INTEGER +*> \param[in] LDU +*> \verbatim +*> LDU is INTEGER *> The leading dimension of the array U. LDU >= max(1,M) if *> JOBU = 'U'; LDU >= 1 otherwise. +*> \endverbatim *> -*> V (input/output) REAL array, dimension (LDV,P) +*> \param[in,out] V +*> \verbatim +*> V is REAL array, dimension (LDV,P) *> On entry, if JOBV = 'V', V must contain a matrix V1 (usually *> the orthogonal matrix returned by SGGSVP). *> On exit, *> if JOBV = 'I', V contains the orthogonal matrix V; *> if JOBV = 'V', V contains the product V1*V. *> If JOBV = 'N', V is not referenced. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. LDV >= max(1,P) if *> JOBV = 'V'; LDV >= 1 otherwise. +*> \endverbatim *> -*> Q (input/output) REAL array, dimension (LDQ,N) +*> \param[in,out] Q +*> \verbatim +*> Q is REAL array, dimension (LDQ,N) *> On entry, if JOBQ = 'Q', Q must contain a matrix Q1 (usually *> the orthogonal matrix returned by SGGSVP). *> On exit, *> if JOBQ = 'I', Q contains the orthogonal matrix Q; *> if JOBQ = 'Q', Q contains the product Q1*Q. *> If JOBQ = 'N', Q is not referenced. +*> \endverbatim *> -*> LDQ (input) INTEGER +*> \param[in] LDQ +*> \verbatim +*> LDQ is INTEGER *> The leading dimension of the array Q. LDQ >= max(1,N) if *> JOBQ = 'Q'; LDQ >= 1 otherwise. +*> \endverbatim *> -*> WORK (workspace) REAL array, dimension (2*N) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (2*N) +*> \endverbatim *> -*> NCYCLE (output) INTEGER +*> \param[out] NCYCLE +*> \verbatim +*> NCYCLE is INTEGER *> The number of cycles required for convergence. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. *> = 1: the procedure does not converge after MAXIT cycles. +*> \endverbatim *> +*> \verbatim *> Internal Parameters *> =================== *> @@ -288,7 +342,26 @@ *> MAXIT specifies the total loops that the iterative procedure *> may take. If after MAXIT cycles, the routine fails to *> converge, we return INFO = 1. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> STGSJA essentially uses a variant of Kogbetliantz algorithm to reduce *> min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and L-by-L diff --git a/SRC/stpmqrt.f b/SRC/stpmqrt.f index c032b4b3..9901dc42 100644 --- a/SRC/stpmqrt.f +++ b/SRC/stpmqrt.f @@ -67,6 +67,7 @@ *> \verbatim *> N is INTEGER *> The number of columns of the matrix B. N >= 0. +*> \endverbatim *> *> \param[in] K *> \verbatim @@ -74,78 +75,115 @@ *> The number of elementary reflectors whose product defines *> the matrix Q. *> \endverbatim -*> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* K >= L >= 0. See Further Details. +*> L is INTEGER +*> The order of the trapezoidal part of V. +*> K >= L >= 0. See Further Details. +*> \endverbatim *> -*> NB (input) INTEGER +*> \param[in] NB +*> \verbatim +*> NB is INTEGER *> The block size used for the storage of T. K >= NB >= 1. *> This must be the same value of NB used to generate T *> in CTPQRT. +*> \endverbatim *> -*> V (input) REAL array, dimension (LDA,K) +*> \param[in] V +*> \verbatim +*> V is REAL array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> CTPQRT in B. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER -*> The leading dimension of the array A. -*> If SIDE = 'L', LDA >= max(1,M); -*> if SIDE = 'R', LDA >= max(1,N). +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER +*> The leading dimension of the array V. +*> If SIDE = 'L', LDV >= max(1,M); +*> if SIDE = 'R', LDV >= max(1,N). +*> \endverbatim *> -*> T (input) REAL array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is REAL array, dimension (LDT,K) *> The upper triangular factors of the block reflectors *> as returned by CTPQRT, stored as a NB-by-K matrix. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= NB. +*> \endverbatim *> -*> A (input/output) REAL array, dimension +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension *> (LDA,N) if SIDE = 'L' or *> (LDA,K) if SIDE = 'R' *> On entry, the K-by-N or M-by-K matrix A. *> On exit, A is overwritten by the corresponding block of *> Q*C or Q^H*C or C*Q or C*Q^H. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDC >= max(1,K); *> If SIDE = 'R', LDC >= max(1,M). +*> \endverbatim *> -*> B (input/output) REAL array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is REAL array, dimension (LDB,N) *> On entry, the M-by-N matrix B. *> On exit, B is overwritten by the corresponding block of *> Q*C or Q^H*C or C*Q or C*Q^H. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. *> LDB >= max(1,M). +*> \endverbatim *> -*> WORK (workspace/output) REAL array. The dimension of WORK is +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array. The dimension of WORK is *> N*NB if SIDE = 'L', or M*NB if SIDE = 'R'. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The columns of the pentagonal matrix V contain the elementary reflectors *> H(1), H(2), ..., H(K); V is composed of a rectangular block V1 and a diff --git a/SRC/stpqrt.f b/SRC/stpqrt.f index 0c08ed1f..ec2e0a92 100644 --- a/SRC/stpqrt.f +++ b/SRC/stpqrt.f @@ -57,59 +57,90 @@ *> N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* MIN(M,N) >= L >= 0. See Further Details. +*> L is INTEGER +*> The number of rows of the upper trapezoidal part of B. +*> MIN(M,N) >= L >= 0. See Further Details. +*> \endverbatim *> -*> NB (input) INTEGER +*> \param[in] NB +*> \verbatim +*> NB is INTEGER *> The block size to be used in the blocked QR. N >= NB >= 1. +*> \endverbatim *> -*> A (input/output) REAL array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N) *> On entry, the upper triangular N-by-N matrix A. *> On exit, the elements on and above the diagonal of the array *> contain the upper triangular matrix R. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> B (input/output) REAL array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is REAL array, dimension (LDB,N) *> On entry, the pentagonal M-by-N matrix B. The first M-L rows *> are rectangular, and the last L rows are upper trapezoidal. *> On exit, B contains the pentagonal matrix V. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,M). +*> \endverbatim *> -*> T (output) REAL array, dimension (LDT,N) +*> \param[out] T +*> \verbatim +*> T is REAL array, dimension (LDT,N) *> The upper triangular block reflectors stored in compact form *> as a sequence of upper triangular blocks. See Further Details. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= NB. +*> \endverbatim *> -*> WORK (workspace) REAL array, dimension (NB*N) +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (NB*N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> -*> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> The input matrix C is a (N+M)-by-N matrix *> *> C = [ A ] diff --git a/SRC/stpqrt2.f b/SRC/stpqrt2.f index 2923b4fd..c73cf7d4 100644 --- a/SRC/stpqrt2.f +++ b/SRC/stpqrt2.f @@ -55,53 +55,79 @@ *> N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* MIN(M,N) >= L >= 0. See Further Details. +*> L is INTEGER +*> The number of rows of the upper trapezoidal part of B. +*> MIN(M,N) >= L >= 0. See Further Details. +*> \endverbatim *> -*> A (input/output) REAL array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension (LDA,N) *> On entry, the upper triangular N-by-N matrix A. *> On exit, the elements on and above the diagonal of the array *> contain the upper triangular matrix R. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> B (input/output) REAL array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is REAL array, dimension (LDB,N) *> On entry, the pentagonal M-by-N matrix B. The first M-L rows *> are rectangular, and the last L rows are upper trapezoidal. *> On exit, B contains the pentagonal matrix V. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,M). +*> \endverbatim *> -*> T (output) REAL array, dimension (LDT,N) +*> \param[out] T +*> \verbatim +*> T is REAL array, dimension (LDT,N) *> The N-by-N upper triangular factor T of the block reflector. *> See Further Details. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realOTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The input matrix C is a (N+M)-by-N matrix *> diff --git a/SRC/stprfb.f b/SRC/stprfb.f index a9943ca6..abacca82 100644 --- a/SRC/stprfb.f +++ b/SRC/stprfb.f @@ -97,76 +97,111 @@ *> K >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup realOTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* K >= L >= 0. See Further Details. +*> L is INTEGER +*> The order of the trapezoidal part of V. +*> K >= L >= 0. See Further Details. +*> \endverbatim *> -*> V (input) REAL array, dimension +*> \param[in] V +*> \verbatim +*> V is REAL array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,M) if STOREV = 'R' and SIDE = 'L' *> (LDV,N) if STOREV = 'R' and SIDE = 'R' *> The pentagonal matrix V, which contains the elementary reflectors *> H(1), H(2), ..., H(K). See Further Details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); *> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); *> if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> T (input) REAL array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is REAL array, dimension (LDT,K) *> The triangular K-by-K matrix T in the representation of the *> block reflector. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. *> LDT >= K. +*> \endverbatim *> -*> A (input/output) REAL array, dimension +*> \param[in,out] A +*> \verbatim +*> A is REAL array, dimension *> (LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R' *> On entry, the K-by-N or M-by-K matrix A. *> On exit, A is overwritten by the corresponding block of *> H*C or H^H*C or C*H or C*H^H. See Futher Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDC >= max(1,K); *> If SIDE = 'R', LDC >= max(1,M). +*> \endverbatim *> -*> B (input/output) REAL array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is REAL array, dimension (LDB,N) *> On entry, the M-by-N matrix B. *> On exit, B is overwritten by the corresponding block of *> H*C or H^H*C or C*H or C*H^H. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. *> LDB >= max(1,M). +*> \endverbatim *> -*> WORK (workspace) REAL array, dimension +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension *> (LDWORK,N) if SIDE = 'L', *> (LDWORK,K) if SIDE = 'R'. +*> \endverbatim *> -*> LDWORK (input) INTEGER +*> \param[in] LDWORK +*> \verbatim +*> LDWORK is INTEGER *> The leading dimension of the array WORK. *> If SIDE = 'L', LDWORK >= K; *> if SIDE = 'R', LDWORK >= M. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup realOTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix C is a composite matrix formed from blocks A and B. *> The block B is of size M-by-N; if SIDE = 'R', A is of size M-by-K, diff --git a/SRC/strexc.f b/SRC/strexc.f index 3b3c7f3a..56e774e9 100644 --- a/SRC/strexc.f +++ b/SRC/strexc.f @@ -97,9 +97,13 @@ *> \param[in,out] IFST *> \verbatim *> IFST is INTEGER +*> \endverbatim +*> *> \param[in,out] ILST *> \verbatim *> ILST is INTEGER +*> \endverbatim +*> \verbatim *> Specify the reordering of the diagonal blocks of T. *> The block with row index IFST is moved to row ILST, by a *> sequence of transpositions between adjacent blocks. @@ -109,7 +113,6 @@ *> position (which may differ from its input value by +1 or -1). *> 1 <= IFST <= N; 1 <= ILST <= N. *> \endverbatim -*> \endverbatim *> *> \param[out] WORK *> \verbatim diff --git a/SRC/strsen.f b/SRC/strsen.f index 632b5d01..340cb474 100644 --- a/SRC/strsen.f +++ b/SRC/strsen.f @@ -130,9 +130,13 @@ *> \param[out] WR *> \verbatim *> WR is REAL array, dimension (N) +*> \endverbatim +*> *> \param[out] WI *> \verbatim *> WI is REAL array, dimension (N) +*> \endverbatim +*> \verbatim *> The real and imaginary parts, respectively, of the reordered *> eigenvalues of T. The eigenvalues are stored in the same *> order as on the diagonal of T, with WR(i) = T(i,i) and, if @@ -141,7 +145,6 @@ *> sufficiently ill-conditioned, then its value may differ *> significantly from its value before reordering. *> \endverbatim -*> \endverbatim *> *> \param[out] M *> \verbatim diff --git a/SRC/zbbcsd.f b/SRC/zbbcsd.f index f0965fab..79f2587a 100644 --- a/SRC/zbbcsd.f +++ b/SRC/zbbcsd.f @@ -236,6 +236,40 @@ *> partially reduced top-right block. *> \endverbatim *> +*> \param[out] B21D +*> \verbatim +*> B21D is DOUBLE PRECISION array, dimension (Q) +*> When CBBCSD converges, B21D contains the negative sines of +*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then +*> B21D contains the diagonal of the partially reduced bottom-left +*> block. +*> \endverbatim +*> +*> \param[out] B21E +*> \verbatim +*> B21E is DOUBLE PRECISION array, dimension (Q-1) +*> When CBBCSD converges, B21E contains zeros. If CBBCSD fails +*> to converge, then B21E contains the subdiagonal of the +*> partially reduced bottom-left block. +*> \endverbatim +*> +*> \param[out] B22D +*> \verbatim +*> B22D is DOUBLE PRECISION array, dimension (Q) +*> When CBBCSD converges, B22D contains the negative sines of +*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then +*> B22D contains the diagonal of the partially reduced bottom-right +*> block. +*> \endverbatim +*> +*> \param[out] B22E +*> \verbatim +*> B22E is DOUBLE PRECISION array, dimension (Q-1) +*> When CBBCSD converges, B22E contains zeros. If CBBCSD fails +*> to converge, then B22E contains the subdiagonal of the +*> partially reduced bottom-right block. +*> \endverbatim +*> *> \param[out] RWORK *> \verbatim *> RWORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) diff --git a/SRC/zcgesv.f b/SRC/zcgesv.f index 0395a0ba..6939cc8c 100644 --- a/SRC/zcgesv.f +++ b/SRC/zcgesv.f @@ -1,4 +1,4 @@ -*> \brief <b> ZCGESV computes the solution to system of linear equations A * X = B for GE matrices</b> +*> \brief <b> ZCGESV computes the solution to system of linear equations A * X = B for GE matrices</b> (mixed precision with iterative refinement) * * =========== DOCUMENTATION =========== * diff --git a/SRC/zgbsv.f b/SRC/zgbsv.f index 20926314..5efd27e3 100644 --- a/SRC/zgbsv.f +++ b/SRC/zgbsv.f @@ -1,4 +1,4 @@ -*> \brief <b> ZGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> +*> \brief <b> ZGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> (simple driver) * * =========== DOCUMENTATION =========== * diff --git a/SRC/zgebal.f b/SRC/zgebal.f index f58a574f..fffc8e07 100644 --- a/SRC/zgebal.f +++ b/SRC/zgebal.f @@ -65,37 +65,35 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16GEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the input matrix A. +*> On exit, A is overwritten by the balanced matrix. +*> If JOB = 'N', A is not referenced. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> ILO (output) INTEGER +*> \param[out] ILO +*> \verbatim +*> \endverbatim *> -*> IHI (output) INTEGER -*> ILO and IHI are set to integers such that on exit +*> \param[out] IHI +*> \verbatim +*> ILO and IHI are set to INTEGER such that on exit *> A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I = IHI+1,...,N. *> If JOB = 'N' or 'S', ILO = 1 and IHI = N. +*> \endverbatim *> -*> SCALE (output) DOUBLE PRECISION array, dimension (N) +*> \param[out] SCALE +*> \verbatim +*> SCALE is DOUBLE PRECISION array, dimension (N) *> Details of the permutations and scaling factors applied to *> A. If P(j) is the index of the row and column interchanged *> with row and column j and D(j) is the scaling factor @@ -105,11 +103,32 @@ *> = P(j) for j = IHI+1,...,N. *> The order in which the interchanges are made is N to IHI+1, *> then 1 to ILO-1. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. -*> +*> \endverbatim +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16GEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The permutations consist of row and column interchanges which put *> the matrix in the form diff --git a/SRC/zgebd2.f b/SRC/zgebd2.f index c6eda5bb..54c9b4f7 100644 --- a/SRC/zgebd2.f +++ b/SRC/zgebd2.f @@ -54,52 +54,93 @@ *> The number of columns in the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16GEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the m by n general matrix to be reduced. +*> On exit, +*> if m >= n, the diagonal and the first superdiagonal are +*> overwritten with the upper bidiagonal matrix B; the +*> elements below the diagonal, with the array TAUQ, represent +*> the unitary matrix Q as a product of elementary +*> reflectors, and the elements above the first superdiagonal, +*> with the array TAUP, represent the unitary matrix P as +*> a product of elementary reflectors; +*> if m < n, the diagonal and the first subdiagonal are +*> overwritten with the lower bidiagonal matrix B; the +*> elements below the first subdiagonal, with the array TAUQ, +*> represent the unitary matrix Q as a product of +*> elementary reflectors, and the elements above the diagonal, +*> with the array TAUP, represent the unitary matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) DOUBLE PRECISION array, dimension (min(M,N)) +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (min(M,N)) *> The diagonal elements of the bidiagonal matrix B: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) DOUBLE PRECISION array, dimension (min(M,N)-1) +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (min(M,N)-1) *> The off-diagonal elements of the bidiagonal matrix B: *> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1; *> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1. +*> \endverbatim *> -*> TAUQ (output) COMPLEX*16 array dimension (min(M,N)) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is COMPLEX*16 array dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) COMPLEX*16 array, dimension (min(M,N)) +*> \param[out] TAUP +*> \verbatim +*> TAUP is COMPLEX*16 array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix P. See Further Details. +*> \endverbatim *> -*> WORK (workspace) COMPLEX*16 array, dimension (max(M,N)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (max(M,N)) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16GEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/zgebrd.f b/SRC/zgebrd.f index f8be2562..f978a8ba 100644 --- a/SRC/zgebrd.f +++ b/SRC/zgebrd.f @@ -55,63 +55,108 @@ *> The number of columns in the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16GEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the M-by-N general matrix to be reduced. +*> On exit, +*> if m >= n, the diagonal and the first superdiagonal are +*> overwritten with the upper bidiagonal matrix B; the +*> elements below the diagonal, with the array TAUQ, represent +*> the unitary matrix Q as a product of elementary +*> reflectors, and the elements above the first superdiagonal, +*> with the array TAUP, represent the unitary matrix P as +*> a product of elementary reflectors; +*> if m < n, the diagonal and the first subdiagonal are +*> overwritten with the lower bidiagonal matrix B; the +*> elements below the first subdiagonal, with the array TAUQ, +*> represent the unitary matrix Q as a product of +*> elementary reflectors, and the elements above the diagonal, +*> with the array TAUP, represent the unitary matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) DOUBLE PRECISION array, dimension (min(M,N)) +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (min(M,N)) *> The diagonal elements of the bidiagonal matrix B: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) DOUBLE PRECISION array, dimension (min(M,N)-1) +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (min(M,N)-1) *> The off-diagonal elements of the bidiagonal matrix B: *> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1; *> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1. +*> \endverbatim *> -*> TAUQ (output) COMPLEX*16 array dimension (min(M,N)) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is COMPLEX*16 array dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) COMPLEX*16 array, dimension (min(M,N)) +*> \param[out] TAUP +*> \verbatim +*> TAUP is COMPLEX*16 array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix P. See Further Details. +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,M,N). *> For optimum performance LWORK >= (M+N)*NB, where NB *> is the optimal blocksize. -*> +*> \endverbatim +*> \verbatim *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit. *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16GEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/zgehd2.f b/SRC/zgehd2.f index a804bbf1..36e156bb 100644 --- a/SRC/zgehd2.f +++ b/SRC/zgehd2.f @@ -45,48 +45,77 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16GEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] ILO +*> \verbatim +*> ILO is INTEGER +*> \endverbatim +*> +*> \param[in] IHI *> \verbatim -* set to 1 and N respectively. See Further Details. +*> IHI is INTEGER +*> \endverbatim +*> \verbatim +*> It is assumed that A is already upper triangular in rows +*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally +*> set by a previous call to ZGEBAL; otherwise they should be +*> set to 1 and N respectively. See Further Details. *> 1 <= ILO <= IHI <= max(1,N). +*> \endverbatim *> -*> A (input/output) COMPLEX*16 array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the n by n general matrix to be reduced. *> On exit, the upper triangle and the first subdiagonal of A *> are overwritten with the upper Hessenberg matrix H, and the *> elements below the first subdiagonal, with the array TAU, *> represent the unitary matrix Q as a product of elementary *> reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> TAU (output) COMPLEX*16 array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace) COMPLEX*16 array, dimension (N) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16GEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of (ihi-ilo) elementary *> reflectors diff --git a/SRC/zgehrd.f b/SRC/zgehrd.f index 2d224f58..9e1a4838 100644 --- a/SRC/zgehrd.f +++ b/SRC/zgehrd.f @@ -45,60 +45,93 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16GEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] ILO +*> \verbatim +*> ILO is INTEGER +*> \endverbatim +*> +*> \param[in] IHI +*> \verbatim +*> IHI is INTEGER +*> \endverbatim *> \verbatim -* set to 1 and N respectively. See Further Details. +*> It is assumed that A is already upper triangular in rows +*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally +*> set by a previous call to ZGEBAL; otherwise they should be +*> set to 1 and N respectively. See Further Details. *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. +*> \endverbatim *> -*> A (input/output) COMPLEX*16 array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the N-by-N general matrix to be reduced. *> On exit, the upper triangle and the first subdiagonal of A *> are overwritten with the upper Hessenberg matrix H, and the *> elements below the first subdiagonal, with the array TAU, *> represent the unitary matrix Q as a product of elementary *> reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> TAU (output) COMPLEX*16 array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to *> zero. +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX*16 array, dimension (LWORK) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (LWORK) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The length of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. -*> +*> \endverbatim +*> \verbatim *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16GEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of (ihi-ilo) elementary *> reflectors diff --git a/SRC/zgelq2.f b/SRC/zgelq2.f index cc57d722..cbc1f8d4 100644 --- a/SRC/zgelq2.f +++ b/SRC/zgelq2.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and below the diagonal of the array +*> contain the m by min(m,n) lower trapezoidal matrix L (L is +*> lower triangular if m <= n); the elements above the diagonal, +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (M) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) COMPLEX*16 array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) COMPLEX*16 array, dimension (M) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/zgelqf.f b/SRC/zgelqf.f index c72b27be..a83ea794 100644 --- a/SRC/zgelqf.f +++ b/SRC/zgelqf.f @@ -51,37 +51,39 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16GEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* product of elementary reflectors (see Further Details). +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, the elements on and below the diagonal of the array +*> contain the m-by-min(m,n) lower trapezoidal matrix L (L is +*> lower triangular if m <= n); the elements above the diagonal, +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) COMPLEX*16 array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,M). *> For optimum performance LWORK >= M*NB, where NB is the *> optimal blocksize. @@ -90,11 +92,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16GEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/zgeql2.f b/SRC/zgeql2.f index 742aad2c..416f7b86 100644 --- a/SRC/zgeql2.f +++ b/SRC/zgeql2.f @@ -51,6 +51,44 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, if m >= n, the lower triangle of the subarray +*> A(m-n+1:m,1:n) contains the n by n lower triangular matrix L; +*> if m <= n, the elements on and below the (n-m)-th +*> superdiagonal contain the m by n lower trapezoidal matrix L; +*> the remaining elements, with the array TAU, represent the +*> unitary matrix Q as a product of elementary reflectors +*> (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +107,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) COMPLEX*16 array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) COMPLEX*16 array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/zgeqlf.f b/SRC/zgeqlf.f index f48e33d3..e83e0989 100644 --- a/SRC/zgeqlf.f +++ b/SRC/zgeqlf.f @@ -51,50 +51,78 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16GEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* (see Further Details). +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, +*> if m >= n, the lower triangle of the subarray +*> A(m-n+1:m,1:n) contains the N-by-N lower triangular matrix L; +*> if m <= n, the elements on and below the (n-m)-th +*> superdiagonal contain the M-by-N lower trapezoidal matrix L; +*> the remaining elements, with the array TAU, represent the +*> unitary matrix Q as a product of elementary reflectors +*> (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) COMPLEX*16 array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N). *> For optimum performance LWORK >= N*NB, where NB is *> the optimal blocksize. -*> +*> \endverbatim +*> \verbatim *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16GEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/zgeqr2.f b/SRC/zgeqr2.f index cb8e7eda..8d6d0cb0 100644 --- a/SRC/zgeqr2.f +++ b/SRC/zgeqr2.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and above the diagonal of the array +*> contain the min(m,n) by n upper trapezoidal matrix R (R is +*> upper triangular if m >= n); the elements below the diagonal, +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) COMPLEX*16 array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) COMPLEX*16 array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/zgeqr2p.f b/SRC/zgeqr2p.f index 7721c112..d2599777 100644 --- a/SRC/zgeqr2p.f +++ b/SRC/zgeqr2p.f @@ -51,6 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the m by n matrix A. +*> On exit, the elements on and above the diagonal of the array +*> contain the min(m,n) by n upper trapezoidal matrix R (R is +*> upper triangular if m >= n); the elements below the diagonal, +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors (see Further Details). +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,21 +105,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* product of elementary reflectors (see Further Details). -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,M). -*> -*> TAU (output) COMPLEX*16 array, dimension (min(M,N)) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> WORK (workspace) COMPLEX*16 array, dimension (N) -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/zgeqrt.f b/SRC/zgeqrt.f index f990d123..6e447ac3 100644 --- a/SRC/zgeqrt.f +++ b/SRC/zgeqrt.f @@ -117,7 +117,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* *> The matrix V stores the elementary reflectors H(i) in the i-th column *> below the diagonal. For example, if M=5 and N=3, the matrix V is *> diff --git a/SRC/zgeqrt2.f b/SRC/zgeqrt2.f index d216b66c..9249d4dd 100644 --- a/SRC/zgeqrt2.f +++ b/SRC/zgeqrt2.f @@ -74,8 +74,10 @@ *> reflector T; the elements below the diagonal are not used. *> See below for further details. *> \endverbatim +*> +*> \param[in] LDT *> \verbatim -*> LDT (intput) INTEGER +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N). *> \endverbatim *> diff --git a/SRC/zgeqrt3.f b/SRC/zgeqrt3.f index b233b6b6..967cfa91 100644 --- a/SRC/zgeqrt3.f +++ b/SRC/zgeqrt3.f @@ -77,8 +77,10 @@ *> reflector T; the elements below the diagonal are not used. *> See below for further details. *> \endverbatim +*> +*> \param[in] LDT *> \verbatim -*> LDT (intput) INTEGER +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N). *> \endverbatim *> diff --git a/SRC/zgerqf.f b/SRC/zgerqf.f index 9a7ce434..f215723d 100644 --- a/SRC/zgerqf.f +++ b/SRC/zgerqf.f @@ -51,37 +51,42 @@ *> The number of columns of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16GEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* reflectors (see Further Details). +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the M-by-N matrix A. +*> On exit, +*> if m <= n, the upper triangle of the subarray +*> A(1:m,n-m+1:n) contains the M-by-M upper triangular matrix R; +*> if m >= n, the elements on and above the (m-n)-th subdiagonal +*> contain the M-by-N upper trapezoidal matrix R; +*> the remaining elements, with the array TAU, represent the +*> unitary matrix Q as a product of min(m,n) elementary +*> reflectors (see Further Details). +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> TAU (output) COMPLEX*16 array, dimension (min(M,N)) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (min(M,N)) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,M). *> For optimum performance LWORK >= M*NB, where NB is *> the optimal blocksize. @@ -90,11 +95,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16GEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/zgesv.f b/SRC/zgesv.f index 40237a03..f5e13034 100644 --- a/SRC/zgesv.f +++ b/SRC/zgesv.f @@ -1,4 +1,4 @@ -*> \brief <b> ZGESV computes the solution to system of linear equations A * X = B for GE matrices</b> +*> \brief <b> ZGESV computes the solution to system of linear equations A * X = B for GE matrices</b> (simple driver) * * =========== DOCUMENTATION =========== * diff --git a/SRC/zggglm.f b/SRC/zggglm.f index 39d9f3d2..6dcd4b86 100644 --- a/SRC/zggglm.f +++ b/SRC/zggglm.f @@ -123,11 +123,14 @@ *> \param[out] X *> \verbatim *> X is COMPLEX*16 array, dimension (M) +*> \endverbatim +*> *> \param[out] Y *> \verbatim *> Y is COMPLEX*16 array, dimension (P) -*> On exit, X and Y are the solutions of the GLM problem. *> \endverbatim +*> \verbatim +*> On exit, X and Y are the solutions of the GLM problem. *> \endverbatim *> *> \param[out] WORK diff --git a/SRC/zgghrd.f b/SRC/zgghrd.f index 37f475e6..2b0f4362 100644 --- a/SRC/zgghrd.f +++ b/SRC/zgghrd.f @@ -94,9 +94,13 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI mark the rows and columns of A which are to be *> reduced. It is assumed that A is already upper triangular *> in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are @@ -104,7 +108,6 @@ *> should be set to 1 and N respectively. *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim diff --git a/SRC/zggqrf.f b/SRC/zggqrf.f index ee653411..2eb509bb 100644 --- a/SRC/zggqrf.f +++ b/SRC/zggqrf.f @@ -102,27 +102,16 @@ *> The leading dimension of the array A. LDA >= max(1,N). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[out] TAUA *> \verbatim -* represent the unitary matrix Q (see Further Details). +*> TAUA is COMPLEX*16 array, dimension (min(N,M)) +*> The scalar factors of the elementary reflectors which +*> represent the unitary matrix Q (see Further Details). +*> \endverbatim *> -*> B (input/output) COMPLEX*16 array, dimension (LDB,P) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX*16 array, dimension (LDB,P) *> On entry, the N-by-P matrix B. *> On exit, if N <= P, the upper triangle of the subarray *> B(1:N,P-N+1:P) contains the N-by-N upper triangular matrix T; @@ -131,18 +120,30 @@ *> elements, with the array TAUB, represent the unitary *> matrix Z as a product of elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,N). +*> \endverbatim *> -*> TAUB (output) COMPLEX*16 array, dimension (min(N,P)) +*> \param[out] TAUB +*> \verbatim +*> TAUB is COMPLEX*16 array, dimension (min(N,P)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix Z (see Further Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N,M,P). *> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), *> where NB1 is the optimal blocksize for the QR factorization @@ -154,11 +155,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/zggrqf.f b/SRC/zggrqf.f index 5a2b8ca3..3c6fd3a7 100644 --- a/SRC/zggrqf.f +++ b/SRC/zggrqf.f @@ -103,45 +103,46 @@ *> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[out] TAUA *> \verbatim -* represent the unitary matrix Q (see Further Details). +*> TAUA is COMPLEX*16 array, dimension (min(M,N)) +*> The scalar factors of the elementary reflectors which +*> represent the unitary matrix Q (see Further Details). +*> \endverbatim *> -*> B (input/output) COMPLEX*16 array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX*16 array, dimension (LDB,N) *> On entry, the P-by-N matrix B. *> On exit, the elements on and above the diagonal of the array *> contain the min(P,N)-by-N upper trapezoidal matrix T (T is *> upper triangular if P >= N); the elements below the diagonal, *> with the array TAUB, represent the unitary matrix Z as a *> product of elementary reflectors (see Further Details). +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,P). +*> \endverbatim *> -*> TAUB (output) COMPLEX*16 array, dimension (min(P,N)) +*> \param[out] TAUB +*> \verbatim +*> TAUB is COMPLEX*16 array, dimension (min(P,N)) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix Z (see Further Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= max(1,N,M,P). *> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), *> where NB1 is the optimal blocksize for the RQ factorization @@ -153,11 +154,33 @@ *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO=-i, the i-th argument had an illegal value. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix Q is represented as a product of elementary reflectors *> diff --git a/SRC/zggsvd.f b/SRC/zggsvd.f index d9b359c7..1b20bb0f 100644 --- a/SRC/zggsvd.f +++ b/SRC/zggsvd.f @@ -162,14 +162,17 @@ *> \param[out] K *> \verbatim *> K is INTEGER +*> \endverbatim +*> *> \param[out] L *> \verbatim *> L is INTEGER +*> \endverbatim +*> \verbatim *> On exit, K and L specify the dimension of the subblocks *> described in Purpose. *> K + L = effective numerical rank of (A**H,B**H)**H. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim @@ -202,9 +205,13 @@ *> \param[out] ALPHA *> \verbatim *> ALPHA is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> *> \param[out] BETA *> \verbatim *> BETA is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> \verbatim *> On exit, ALPHA and BETA contain the generalized singular *> value pairs of A and B; *> ALPHA(1:K) = 1, @@ -213,13 +220,12 @@ *> ALPHA(K+1:K+L) = C, *> BETA(K+1:K+L) = S, *> or if M-K-L < 0, -*> ALPHA(K+1:M)= C, ALPHA(M+1:K+L)= 0 -*> BETA(K+1:M) = S, BETA(M+1:K+L) = 1 +*> ALPHA(K+1:M)=C, ALPHA(M+1:K+L)=0 +*> BETA(K+1:M) =S, BETA(M+1:K+L) =1 *> and *> ALPHA(K+L+1:N) = 0 *> BETA(K+L+1:N) = 0 *> \endverbatim -*> \endverbatim *> *> \param[out] U *> \verbatim diff --git a/SRC/zggsvp.f b/SRC/zggsvp.f index 0f950317..8206dc72 100644 --- a/SRC/zggsvp.f +++ b/SRC/zggsvp.f @@ -137,9 +137,13 @@ *> \param[in] TOLA *> \verbatim *> TOLA is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] TOLB *> \verbatim *> TOLB is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> TOLA and TOLB are the thresholds to determine the effective *> numerical rank of matrix B and a subblock of A. Generally, *> they are set to @@ -148,19 +152,21 @@ *> The size of TOLA and TOLB may affect the size of backward *> errors of the decomposition. *> \endverbatim -*> \endverbatim *> *> \param[out] K *> \verbatim *> K is INTEGER +*> \endverbatim +*> *> \param[out] L *> \verbatim *> L is INTEGER +*> \endverbatim +*> \verbatim *> On exit, K and L specify the dimension of the subblocks *> described in Purpose section. *> K + L = effective numerical rank of (A**H,B**H)**H. *> \endverbatim -*> \endverbatim *> *> \param[out] U *> \verbatim diff --git a/SRC/zhbgvx.f b/SRC/zhbgvx.f index 2eacc43e..a7e81dcd 100644 --- a/SRC/zhbgvx.f +++ b/SRC/zhbgvx.f @@ -154,27 +154,33 @@ *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/zheequb.f b/SRC/zheequb.f index e6d24358..ea1a2543 100644 --- a/SRC/zheequb.f +++ b/SRC/zheequb.f @@ -48,6 +48,13 @@ * Arguments * ========= * +*> \param[in] UPLO +*> \verbatim +*> UPLO is CHARACTER*1 +*> = 'U': Upper triangles of A and B are stored; +*> = 'L': Lower triangles of A and B are stored. +*> \endverbatim +*> *> \param[in] N *> \verbatim *> N is INTEGER @@ -88,6 +95,13 @@ *> Absolute value of largest matrix element. If AMAX is very *> close to overflow or very close to underflow, the matrix *> should be scaled. +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (3*N) +*> \endverbatim +*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER @@ -95,7 +109,6 @@ *> < 0: if INFO = -i, the i-th argument had an illegal value *> > 0: if INFO = i, the i-th diagonal element is nonpositive. *> \endverbatim -*> \endverbatim *> * * Authors diff --git a/SRC/zhegvx.f b/SRC/zhegvx.f index 36d94f02..a04d7cfc 100644 --- a/SRC/zhegvx.f +++ b/SRC/zhegvx.f @@ -73,13 +73,14 @@ *> = 'V': all eigenvalues in the half-open interval (VL,VU] *> will be found. *> = 'I': the IL-th through IU-th eigenvalues will be found. +*> \endverbatim +*> *> \param[in] UPLO *> \verbatim *> UPLO is CHARACTER*1 *> = 'U': Upper triangles of A and B are stored; *> = 'L': Lower triangles of A and B are stored. *> \endverbatim -*> \endverbatim *> *> \param[in] N *> \verbatim @@ -95,8 +96,7 @@ *> upper triangular part of the matrix A. If UPLO = 'L', *> the leading N-by-N lower triangular part of A contains *> the lower triangular part of the matrix A. -*> \endverbatim -*> \verbatim +*> *> On exit, the lower triangle (if UPLO='L') or the upper *> triangle (if UPLO='U') of A, including the diagonal, is *> destroyed. @@ -116,8 +116,7 @@ *> upper triangular part of the matrix B. If UPLO = 'L', *> the leading N-by-N lower triangular part of B contains *> the lower triangular part of the matrix B. -*> \endverbatim -*> \verbatim +*> *> On exit, if INFO <= N, the part of B containing the matrix is *> overwritten by the triangular factor U or L from the Cholesky *> factorization B = U**H*U or B = L*L**H. @@ -132,27 +131,33 @@ *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim @@ -161,19 +166,16 @@ *> An approximate eigenvalue is accepted as converged *> when it is determined to lie in an interval [a,b] *> of width less than or equal to -*> \endverbatim -*> \verbatim +*> *> ABSTOL + EPS * max( |a|,|b| ) , -*> \endverbatim -*> \verbatim +*> *> where EPS is the machine precision. If ABSTOL is less than *> or equal to zero, then EPS*|T| will be used in its place, *> where |T| is the 1-norm of the tridiagonal matrix obtained *> by reducing C to tridiagonal form, where C is the symmetric *> matrix of the standard symmetric problem to which the *> generalized problem is transformed. -*> \endverbatim -*> \verbatim +*> *> Eigenvalues will be computed most accurately when ABSTOL is *> set to twice the underflow threshold 2*DLAMCH('S'), not zero. *> If this routine returns with INFO>0, indicating that some @@ -206,8 +208,7 @@ *> The eigenvectors are normalized as follows: *> if ITYPE = 1 or 2, Z**T*B*Z = I; *> if ITYPE = 3, Z**T*inv(B)*Z = I. -*> \endverbatim -*> \verbatim +*> *> If an eigenvector fails to converge, then that column of Z *> contains the latest approximation to the eigenvector, and the *> index of the eigenvector is returned in IFAIL. diff --git a/SRC/zhesvxx.f b/SRC/zhesvxx.f index 2a8a4305..f7734fd7 100644 --- a/SRC/zhesvxx.f +++ b/SRC/zhesvxx.f @@ -135,6 +135,13 @@ *> copied to AF and factored. *> \endverbatim *> +*> \param[in] UPLO +*> \verbatim +*> UPLO is CHARACTER*1 +*> = 'U': Upper triangle of A is stored; +*> = 'L': Lower triangle of A is stored. +*> \endverbatim +*> *> \param[in] N *> \verbatim *> N is INTEGER diff --git a/SRC/zhetd2.f b/SRC/zhetd2.f index c9e4a119..c80744ad 100644 --- a/SRC/zhetd2.f +++ b/SRC/zhetd2.f @@ -57,6 +57,62 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading +*> n-by-n upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading n-by-n lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the unitary +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the unitary matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (N) +*> The diagonal elements of the tridiagonal matrix T: +*> D(i) = A(i,i). +*> \endverbatim +*> +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (N-1) +*> The off-diagonal elements of the tridiagonal matrix T: +*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (N-1) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value. +*> \endverbatim +*> * * Authors * ======= @@ -75,27 +131,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* of elementary reflectors. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> D (output) DOUBLE PRECISION array, dimension (N) -*> The diagonal elements of the tridiagonal matrix T: -*> D(i) = A(i,i). -*> -*> E (output) DOUBLE PRECISION array, dimension (N-1) -*> The off-diagonal elements of the tridiagonal matrix T: -*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. -*> -*> TAU (output) COMPLEX*16 array, dimension (N-1) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value. -*> *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/zhetrd.f b/SRC/zhetrd.f index ea8fdce2..dc1a4b96 100644 --- a/SRC/zhetrd.f +++ b/SRC/zhetrd.f @@ -55,58 +55,100 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16HEcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* of elementary reflectors. See Further Details. +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading +*> N-by-N upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading N-by-N lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the unitary +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the unitary matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> D (output) DOUBLE PRECISION array, dimension (N) +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (N) *> The diagonal elements of the tridiagonal matrix T: *> D(i) = A(i,i). +*> \endverbatim *> -*> E (output) DOUBLE PRECISION array, dimension (N-1) +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (N-1) *> The off-diagonal elements of the tridiagonal matrix T: *> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim *> -*> TAU (output) COMPLEX*16 array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (N-1) *> The scalar factors of the elementary reflectors (see Further *> Details). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK)) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) *> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. +*> \endverbatim *> -*> LWORK (input) INTEGER +*> \param[in] LWORK +*> \verbatim +*> LWORK is INTEGER *> The dimension of the array WORK. LWORK >= 1. *> For optimum performance LWORK >= N*NB, where NB is the *> optimal blocksize. -*> +*> \endverbatim +*> \verbatim *> If LWORK = -1, then a workspace query is assumed; the routine *> only calculates the optimal size of the WORK array, returns *> this value as the first entry of the WORK array, and no error *> message related to LWORK is issued by XERBLA. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16HEcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/zhpgvx.f b/SRC/zhpgvx.f index ff3e03d8..f0343375 100644 --- a/SRC/zhpgvx.f +++ b/SRC/zhpgvx.f @@ -119,27 +119,33 @@ *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/zhptrd.f b/SRC/zhptrd.f index dd267d5e..67b9b673 100644 --- a/SRC/zhptrd.f +++ b/SRC/zhptrd.f @@ -55,6 +55,54 @@ *> The order of the matrix A. N >= 0. *> \endverbatim *> +*> \param[in,out] AP +*> \verbatim +*> AP is COMPLEX*16 array, dimension (N*(N+1)/2) +*> On entry, the upper or lower triangle of the Hermitian matrix +*> A, packed columnwise in a linear array. The j-th column of A +*> is stored in the array AP as follows: +*> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; +*> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n. +*> On exit, if UPLO = 'U', the diagonal and first superdiagonal +*> of A are overwritten by the corresponding elements of the +*> tridiagonal matrix T, and the elements above the first +*> superdiagonal, with the array TAU, represent the unitary +*> matrix Q as a product of elementary reflectors; if UPLO +*> = 'L', the diagonal and first subdiagonal of A are over- +*> written by the corresponding elements of the tridiagonal +*> matrix T, and the elements below the first subdiagonal, with +*> the array TAU, represent the unitary matrix Q as a product +*> of elementary reflectors. See Further Details. +*> \endverbatim +*> +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (N) +*> The diagonal elements of the tridiagonal matrix T: +*> D(i) = A(i,i). +*> \endverbatim +*> +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (N-1) +*> The off-diagonal elements of the tridiagonal matrix T: +*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (N-1) +*> The scalar factors of the elementary reflectors (see Further +*> Details). +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -73,24 +121,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* of elementary reflectors. See Further Details. -*> -*> D (output) DOUBLE PRECISION array, dimension (N) -*> The diagonal elements of the tridiagonal matrix T: -*> D(i) = A(i,i). -*> -*> E (output) DOUBLE PRECISION array, dimension (N-1) -*> The off-diagonal elements of the tridiagonal matrix T: -*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'. -*> -*> TAU (output) COMPLEX*16 array, dimension (N-1) -*> The scalar factors of the elementary reflectors (see Further -*> Details). -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/zhseqr.f b/SRC/zhseqr.f index 95497e69..5cdf9545 100644 --- a/SRC/zhseqr.f +++ b/SRC/zhseqr.f @@ -75,9 +75,13 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> It is assumed that H is already upper triangular in rows *> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally *> set by a previous call to ZGEBAL, and then passed to ZGEHRD @@ -86,7 +90,6 @@ *> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N. *> If N = 0, then ILO = 1 and IHI = 0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] H *> \verbatim diff --git a/SRC/zla_gbrfsx_extended.f b/SRC/zla_gbrfsx_extended.f index 91072c51..c023b46a 100644 --- a/SRC/zla_gbrfsx_extended.f +++ b/SRC/zla_gbrfsx_extended.f @@ -109,14 +109,14 @@ *> *> \param[in] AB *> \verbatim -*> AB is COMPLEX*16 array, dimension (LDA,N) +*> AB is COMPLEX*16 array, dimension (LDAB,N) *> On entry, the N-by-N matrix A. *> \endverbatim *> *> \param[in] LDAB *> \verbatim *> LDAB is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> The leading dimension of the array A. LDAB >= max(1,N). *> \endverbatim *> *> \param[in] AFB @@ -212,37 +212,31 @@ *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> normwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Normwise relative error in the ith solution vector: *> max_j (abs(XTRUE(j,i) - X(j,i))) *> ------------------------------ *> max_j abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the type of error information as described *> below. There currently are up to three pieces of information *> returned. -*> \endverbatim -*> \verbatim +*> *> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim +*> *> The second index in ERR_BNDS_NORM(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated normwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -251,8 +245,7 @@ *> appropriately scaled matrix Z. *> Let Z = S*A, where S scales each row by a power of the *> radix so all absolute row sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra @@ -266,14 +259,12 @@ *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> componentwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Componentwise relative error in the ith solution vector: *> abs(XTRUE(j,i) - X(j,i)) *> max_j ---------------------- *> abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the right-hand side i (on which the *> componentwise relative error depends), and the type of error *> information as described below. There currently are up to three @@ -281,26 +272,22 @@ *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then *> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most *> the first (:,N_ERR_BNDS) entries are returned. -*> \endverbatim -*> \verbatim +*> *> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim +*> *> The second index in ERR_BNDS_COMP(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated componentwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -311,8 +298,7 @@ *> current right-hand side and S scales each row of *> A*diag(x) by a power of the radix so all absolute row *> sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra diff --git a/SRC/zla_gerfsx_extended.f b/SRC/zla_gerfsx_extended.f index 61b6d3be..3f2964ac 100644 --- a/SRC/zla_gerfsx_extended.f +++ b/SRC/zla_gerfsx_extended.f @@ -49,10 +49,10 @@ *> and provides error bounds and backward error estimates for the solution. *> This subroutine is called by ZGERFSX to perform iterative refinement. *> In addition to normwise error bound, the code provides maximum -*> componentwise error bound if possible. See comments for ERR_BNDS_NORM -*> and ERR_BNDS_COMP for details of the error bounds. Note that this +*> componentwise error bound if possible. See comments for ERRS_N +*> and ERRS_C for details of the error bounds. Note that this *> subroutine is only resonsible for setting the second fields of -*> ERR_BNDS_NORM and ERR_BNDS_COMP. +*> ERRS_N and ERRS_C. *> *>\endverbatim * @@ -186,50 +186,44 @@ *> \param[in] N_NORMS *> \verbatim *> N_NORMS is INTEGER -*> Determines which error bounds to return (see ERR_BNDS_NORM -*> and ERR_BNDS_COMP). +*> Determines which error bounds to return (see ERRS_N +*> and ERRS_C). *> If N_NORMS >= 1 return normwise error bounds. *> If N_NORMS >= 2 return componentwise error bounds. *> \endverbatim *> -*> \param[in,out] ERR_BNDS_NORM +*> \param[in,out] ERRS_N *> \verbatim -*> ERR_BNDS_NORM is DOUBLE PRECISION array, dimension +*> ERRS_N is DOUBLE PRECISION array, dimension *> (NRHS, N_ERR_BNDS) *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> normwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Normwise relative error in the ith solution vector: *> max_j (abs(XTRUE(j,i) - X(j,i))) *> ------------------------------ *> max_j abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the type of error information as described *> below. There currently are up to three pieces of information *> returned. -*> \endverbatim -*> \verbatim -*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith +*> +*> The first index in ERRS_N(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim -*> The second index in ERR_BNDS_NORM(:,err) contains the following +*> +*> The second index in ERRS_N(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated normwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -238,56 +232,49 @@ *> appropriately scaled matrix Z. *> Let Z = S*A, where S scales each row by a power of the *> radix so all absolute row sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra *> cautions. *> \endverbatim *> -*> \param[in,out] ERR_BNDS_COMP +*> \param[in,out] ERRS_C *> \verbatim -*> ERR_BNDS_COMP is DOUBLE PRECISION array, dimension +*> ERRS_C is DOUBLE PRECISION array, dimension *> (NRHS, N_ERR_BNDS) *> For each right-hand side, this array contains information about *> various error bounds and condition numbers corresponding to the *> componentwise relative error, which is defined as follows: -*> \endverbatim -*> \verbatim +*> *> Componentwise relative error in the ith solution vector: *> abs(XTRUE(j,i) - X(j,i)) *> max_j ---------------------- *> abs(X(j,i)) -*> \endverbatim -*> \verbatim +*> *> The array is indexed by the right-hand side i (on which the *> componentwise relative error depends), and the type of error *> information as described below. There currently are up to three *> pieces of information returned for each right-hand side. If *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then -*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most +*> ERRS_C is not accessed. If N_ERR_BNDS .LT. 3, then at most *> the first (:,N_ERR_BNDS) entries are returned. -*> \endverbatim -*> \verbatim -*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith +*> +*> The first index in ERRS_C(i,:) corresponds to the ith *> right-hand side. -*> \endverbatim -*> \verbatim -*> The second index in ERR_BNDS_COMP(:,err) contains the following +*> +*> The second index in ERRS_C(:,err) contains the following *> three fields: *> err = 1 "Trust/don't trust" boolean. Trust the answer if the *> reciprocal condition number is less than the threshold *> sqrt(n) * slamch('Epsilon'). -*> \endverbatim -*> \verbatim +*> *> err = 2 "Guaranteed" error bound: The estimated forward error, *> almost certainly within a factor of 10 of the true error *> so long as the next entry is greater than the threshold *> sqrt(n) * slamch('Epsilon'). This error bound should only *> be trusted if the previous boolean is true. -*> \endverbatim -*> \verbatim +*> *> err = 3 Reciprocal condition number: Estimated componentwise *> reciprocal condition number. Compared with the threshold *> sqrt(n) * slamch('Epsilon') to determine if the error @@ -298,8 +285,7 @@ *> current right-hand side and S scales each row of *> A*diag(x) by a power of the radix so all absolute row *> sums of Z are approximately 1. -*> \endverbatim -*> \verbatim +*> *> This subroutine is only responsible for setting the second field *> above. *> See Lapack Working Note 165 for further details and extra @@ -350,7 +336,7 @@ *> permit convergence using approximate factorizations or *> factorizations other than LU. If the factorization uses a *> technique other than Gaussian elimination, the guarantees in -*> ERR_BNDS_NORM and ERR_BNDS_COMP may no longer be trustworthy. +*> ERRS_N and ERRS_C may no longer be trustworthy. *> \endverbatim *> *> \param[in] RTHRESH diff --git a/SRC/zla_herpvgrw.f b/SRC/zla_herpvgrw.f index 5be25632..0244bd0c 100644 --- a/SRC/zla_herpvgrw.f +++ b/SRC/zla_herpvgrw.f @@ -68,12 +68,6 @@ *> column INFO is exactly 0. *> \endverbatim *> -*> \param[in] NCOLS -*> \verbatim -*> NCOLS is INTEGER -*> The number of columns of the matrix A. NCOLS >= 0. -*> \endverbatim -*> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) diff --git a/SRC/zla_lin_berr.f b/SRC/zla_lin_berr.f index 8162ede2..a796d6e0 100644 --- a/SRC/zla_lin_berr.f +++ b/SRC/zla_lin_berr.f @@ -77,13 +77,13 @@ *> The denominator in the relative backward error formula above, i.e., *> the matrix abs(op(A_s))*abs(Y) + abs(B_s). The matrices A, Y, and B *> are from iterative refinement (see zla_gerfsx_extended.f). +*> \endverbatim *> *> \param[out] BERR *> \verbatim *> BERR is COMPLEX*16 array, dimension (NRHS) *> The componentwise relative backward error from the formula above. *> \endverbatim -*> \endverbatim *> * * Authors diff --git a/SRC/zla_syrpvgrw.f b/SRC/zla_syrpvgrw.f index c9cacac6..f98a01ac 100644 --- a/SRC/zla_syrpvgrw.f +++ b/SRC/zla_syrpvgrw.f @@ -68,12 +68,6 @@ *> column INFO is exactly 0. *> \endverbatim *> -*> \param[in] NCOLS -*> \verbatim -*> NCOLS is INTEGER -*> The number of columns of the matrix A. NCOLS >= 0. -*> \endverbatim -*> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) diff --git a/SRC/zlabrd.f b/SRC/zlabrd.f index 9d818924..3f734be9 100644 --- a/SRC/zlabrd.f +++ b/SRC/zlabrd.f @@ -67,59 +67,105 @@ *> The number of leading rows and columns of A to be reduced. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the m by n general matrix to be reduced. +*> On exit, the first NB rows and columns of the matrix are +*> overwritten; the rest of the array is unchanged. +*> If m >= n, elements on and below the diagonal in the first NB +*> columns, with the array TAUQ, represent the unitary +*> matrix Q as a product of elementary reflectors; and +*> elements above the diagonal in the first NB rows, with the +*> array TAUP, represent the unitary matrix P as a product +*> of elementary reflectors. +*> If m < n, elements below the diagonal in the first NB +*> columns, with the array TAUQ, represent the unitary +*> matrix Q as a product of elementary reflectors, and +*> elements on and above the diagonal in the first NB rows, +*> with the array TAUP, represent the unitary matrix P as +*> a product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> D (output) DOUBLE PRECISION array, dimension (NB) +*> \param[out] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (NB) *> The diagonal elements of the first NB rows and columns of *> the reduced matrix. D(i) = A(i,i). +*> \endverbatim *> -*> E (output) DOUBLE PRECISION array, dimension (NB) +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (NB) *> The off-diagonal elements of the first NB rows and columns of *> the reduced matrix. +*> \endverbatim *> -*> TAUQ (output) COMPLEX*16 array dimension (NB) +*> \param[out] TAUQ +*> \verbatim +*> TAUQ is COMPLEX*16 array dimension (NB) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix Q. See Further Details. +*> \endverbatim *> -*> TAUP (output) COMPLEX*16 array, dimension (NB) +*> \param[out] TAUP +*> \verbatim +*> TAUP is COMPLEX*16 array, dimension (NB) *> The scalar factors of the elementary reflectors which *> represent the unitary matrix P. See Further Details. +*> \endverbatim *> -*> X (output) COMPLEX*16 array, dimension (LDX,NB) +*> \param[out] X +*> \verbatim +*> X is COMPLEX*16 array, dimension (LDX,NB) *> The m-by-nb matrix X required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDX (input) INTEGER +*> \param[in] LDX +*> \verbatim +*> LDX is INTEGER *> The leading dimension of the array X. LDX >= max(1,M). +*> \endverbatim *> -*> Y (output) COMPLEX*16 array, dimension (LDY,NB) +*> \param[out] Y +*> \verbatim +*> Y is COMPLEX*16 array, dimension (LDY,NB) *> The n-by-nb matrix Y required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDY (input) INTEGER +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER *> The leading dimension of the array Y. LDY >= max(1,N). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrices Q and P are represented as products of elementary *> reflectors: diff --git a/SRC/zlagtm.f b/SRC/zlagtm.f index 0dc96c24..3660b44e 100644 --- a/SRC/zlagtm.f +++ b/SRC/zlagtm.f @@ -99,12 +99,13 @@ *> \verbatim *> X is COMPLEX*16 array, dimension (LDX,NRHS) *> The N by NRHS matrix X. +*> \endverbatim +*> *> \param[in] LDX *> \verbatim *> LDX is INTEGER *> The leading dimension of the array X. LDX >= max(N,1). *> \endverbatim -*> \endverbatim *> *> \param[in] BETA *> \verbatim diff --git a/SRC/zlahr2.f b/SRC/zlahr2.f index bd6c6219..3b25e4fb 100644 --- a/SRC/zlahr2.f +++ b/SRC/zlahr2.f @@ -65,6 +65,55 @@ *> The number of columns to be reduced. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N-K+1) +*> On entry, the n-by-(n-k+1) general matrix A. +*> On exit, the elements on and above the k-th subdiagonal in +*> the first NB columns are overwritten with the corresponding +*> elements of the reduced matrix; the elements below the k-th +*> subdiagonal, with the array TAU, represent the matrix Q as a +*> product of elementary reflectors. The other columns of A are +*> unchanged. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (NB) +*> The scalar factors of the elementary reflectors. See Further +*> Details. +*> \endverbatim +*> +*> \param[out] T +*> \verbatim +*> T is COMPLEX*16 array, dimension (LDT,NB) +*> The upper triangular matrix T. +*> \endverbatim +*> +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER +*> The leading dimension of the array T. LDT >= NB. +*> \endverbatim +*> +*> \param[out] Y +*> \verbatim +*> Y is COMPLEX*16 array, dimension (LDY,NB) +*> The n-by-nb matrix Y. +*> \endverbatim +*> +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER +*> The leading dimension of the array Y. LDY >= N. +*> \endverbatim +*> * * Authors * ======= @@ -83,27 +132,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* unchanged. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> TAU (output) COMPLEX*16 array, dimension (NB) -*> The scalar factors of the elementary reflectors. See Further -*> Details. -*> -*> T (output) COMPLEX*16 array, dimension (LDT,NB) -*> The upper triangular matrix T. -*> -*> LDT (input) INTEGER -*> The leading dimension of the array T. LDT >= NB. -*> -*> Y (output) COMPLEX*16 array, dimension (LDY,NB) -*> The n-by-nb matrix Y. -*> -*> LDY (input) INTEGER -*> The leading dimension of the array Y. LDY >= N. -*> *> *> The matrix Q is represented as a product of nb elementary reflectors *> diff --git a/SRC/zlahrd.f b/SRC/zlahrd.f index b63c7f1d..f6abf38b 100644 --- a/SRC/zlahrd.f +++ b/SRC/zlahrd.f @@ -66,6 +66,55 @@ *> The number of columns to be reduced. *> \endverbatim *> +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N-K+1) +*> On entry, the n-by-(n-k+1) general matrix A. +*> On exit, the elements on and above the k-th subdiagonal in +*> the first NB columns are overwritten with the corresponding +*> elements of the reduced matrix; the elements below the k-th +*> subdiagonal, with the array TAU, represent the matrix Q as a +*> product of elementary reflectors. The other columns of A are +*> unchanged. See Further Details. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim +*> +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (NB) +*> The scalar factors of the elementary reflectors. See Further +*> Details. +*> \endverbatim +*> +*> \param[out] T +*> \verbatim +*> T is COMPLEX*16 array, dimension (LDT,NB) +*> The upper triangular matrix T. +*> \endverbatim +*> +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER +*> The leading dimension of the array T. LDT >= NB. +*> \endverbatim +*> +*> \param[out] Y +*> \verbatim +*> Y is COMPLEX*16 array, dimension (LDY,NB) +*> The n-by-nb matrix Y. +*> \endverbatim +*> +*> \param[in] LDY +*> \verbatim +*> LDY is INTEGER +*> The leading dimension of the array Y. LDY >= max(1,N). +*> \endverbatim +*> * * Authors * ======= @@ -84,27 +133,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* unchanged. See Further Details. -*> -*> LDA (input) INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). -*> -*> TAU (output) COMPLEX*16 array, dimension (NB) -*> The scalar factors of the elementary reflectors. See Further -*> Details. -*> -*> T (output) COMPLEX*16 array, dimension (LDT,NB) -*> The upper triangular matrix T. -*> -*> LDT (input) INTEGER -*> The leading dimension of the array T. LDT >= NB. -*> -*> Y (output) COMPLEX*16 array, dimension (LDY,NB) -*> The n-by-nb matrix Y. -*> -*> LDY (input) INTEGER -*> The leading dimension of the array Y. LDY >= max(1,N). -*> *> *> The matrix Q is represented as a product of nb elementary reflectors *> diff --git a/SRC/zlaqr0.f b/SRC/zlaqr0.f index 009ae42c..34edc5db 100644 --- a/SRC/zlaqr0.f +++ b/SRC/zlaqr0.f @@ -71,9 +71,13 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> It is assumed that H is already upper triangular in rows *> and columns 1:ILO-1 and IHI+1:N and, if ILO.GT.1, *> H(ILO,ILO-1) is zero. ILO and IHI are normally set by a @@ -83,7 +87,6 @@ *> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N. *> If N = 0, then ILO = 1 and IHI = 0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] H *> \verbatim @@ -116,6 +119,19 @@ *> form returned in H, with W(i) = H(i,i). *> \endverbatim *> +*> \param[in] ILOZ +*> \verbatim +*> ILOZ is INTEGER +*> \endverbatim +*> +*> \param[in] IHIZ +*> \verbatim +*> IHIZ is INTEGER +*> Specify the rows of Z to which transformations must be +*> applied if WANTZ is .TRUE.. +*> 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N. +*> \endverbatim +*> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ,IHI) @@ -166,37 +182,29 @@ *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANT is .FALSE., then on exit, *> the remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTT is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (*) (initial value of H)*U = U*(final value of H) -*> \endverbatim -*> \verbatim +*> *> where U is a unitary matrix. The final *> value of H is upper Hessenberg and triangular in *> rows and columns INFO+1 through IHI. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (final value of Z(ILO:IHI,ILOZ:IHIZ) *> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U -*> \endverbatim -*> \verbatim +*> *> where U is the unitary matrix in (*) (regard- *> less of the value of WANTT.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not *> accessed. *> \endverbatim diff --git a/SRC/zlaqr1.f b/SRC/zlaqr1.f index 6035a017..572504f2 100644 --- a/SRC/zlaqr1.f +++ b/SRC/zlaqr1.f @@ -69,7 +69,14 @@ *> \param[in] S1 *> \verbatim *> S1 is COMPLEX*16 -*> S2 S1 and S2 are the shifts defining K in (*) above. +*> \endverbatim +*> +*> \param[in] S2 +*> \verbatim +*> S2 is COMPLEX*16 +*> \endverbatim +*> \verbatim +*> S1 and S2 are the shifts defining K in (*) above. *> \endverbatim *> *> \param[out] V diff --git a/SRC/zlaqr2.f b/SRC/zlaqr2.f index 96e5eeab..f8cb278d 100644 --- a/SRC/zlaqr2.f +++ b/SRC/zlaqr2.f @@ -126,13 +126,14 @@ *> \param[in] ILOZ *> \verbatim *> ILOZ is INTEGER +*> \endverbatim +*> *> \param[in] IHIZ *> \verbatim *> IHIZ is INTEGER *> Specify the rows of Z to which transformations must be *> applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N. *> \endverbatim -*> \endverbatim *> *> \param[in,out] Z *> \verbatim diff --git a/SRC/zlaqr4.f b/SRC/zlaqr4.f index e7fabfd3..24442cfd 100644 --- a/SRC/zlaqr4.f +++ b/SRC/zlaqr4.f @@ -124,6 +124,19 @@ *> form returned in H, with W(i) = H(i,i). *> \endverbatim *> +*> \param[in] ILOZ +*> \verbatim +*> ILOZ is INTEGER +*> \endverbatim +*> +*> \param[in] IHIZ +*> \verbatim +*> IHIZ is INTEGER +*> Specify the rows of Z to which transformations must be +*> applied if WANTZ is .TRUE.. +*> 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N. +*> \endverbatim +*> *> \param[in,out] Z *> \verbatim *> Z is COMPLEX*16 array, dimension (LDZ,IHI) @@ -174,37 +187,29 @@ *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR *> and WI contain those eigenvalues which have been *> successfully computed. (Failures are rare.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANT is .FALSE., then on exit, *> the remaining unconverged eigenvalues are the eigen- *> values of the upper Hessenberg matrix rows and *> columns ILO through INFO of the final, output *> value of H. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTT is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (*) (initial value of H)*U = U*(final value of H) -*> \endverbatim -*> \verbatim +*> *> where U is a unitary matrix. The final *> value of H is upper Hessenberg and triangular in *> rows and columns INFO+1 through IHI. -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .TRUE., then on exit -*> \endverbatim -*> \verbatim +*> *> (final value of Z(ILO:IHI,ILOZ:IHIZ) *> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U -*> \endverbatim -*> \verbatim +*> *> where U is the unitary matrix in (*) (regard- *> less of the value of WANTT.) -*> \endverbatim -*> \verbatim +*> *> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not *> accessed. *> \endverbatim diff --git a/SRC/zlarfb.f b/SRC/zlarfb.f index eaa5d16b..e9647229 100644 --- a/SRC/zlarfb.f +++ b/SRC/zlarfb.f @@ -93,53 +93,81 @@ *> reflectors whose product defines the block reflector). *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] V *> \verbatim -* The matrix V. See Further Details. +*> V is COMPLEX*16 array, dimension +*> (LDV,K) if STOREV = 'C' +*> (LDV,M) if STOREV = 'R' and SIDE = 'L' +*> (LDV,N) if STOREV = 'R' and SIDE = 'R' +*> See Further Details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); *> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); *> if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> T (input) COMPLEX*16 array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is COMPLEX*16 array, dimension (LDT,K) *> The triangular K-by-K matrix T in the representation of the *> block reflector. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> -*> C (input/output) COMPLEX*16 array, dimension (LDC,N) +*> \param[in,out] C +*> \verbatim +*> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the M-by-N matrix C. *> On exit, C is overwritten by H*C or H**H*C or C*H or C*H**H. +*> \endverbatim *> -*> LDC (input) INTEGER +*> \param[in] LDC +*> \verbatim +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,M). +*> \endverbatim *> -*> WORK (workspace) COMPLEX*16 array, dimension (LDWORK,K) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (LDWORK,K) +*> \endverbatim *> -*> LDWORK (input) INTEGER +*> \param[in] LDWORK +*> \verbatim +*> LDWORK is INTEGER *> The leading dimension of the array WORK. *> If SIDE = 'L', LDWORK >= max(1,N); *> if SIDE = 'R', LDWORK >= max(1,M). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and diff --git a/SRC/zlarft.f b/SRC/zlarft.f index 99dc21a1..544e6a9b 100644 --- a/SRC/zlarft.f +++ b/SRC/zlarft.f @@ -63,56 +63,82 @@ *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] STOREV *> \verbatim -* reflectors are stored (see also Further Details): +*> STOREV is CHARACTER*1 +*> Specifies how the vectors which define the elementary +*> reflectors are stored (see also Further Details): *> = 'C': columnwise *> = 'R': rowwise +*> \endverbatim *> -*> N (input) INTEGER +*> \param[in] N +*> \verbatim +*> N is INTEGER *> The order of the block reflector H. N >= 0. +*> \endverbatim *> -*> K (input) INTEGER +*> \param[in] K +*> \verbatim +*> K is INTEGER *> The order of the triangular factor T (= the number of *> elementary reflectors). K >= 1. +*> \endverbatim *> -*> V (input/output) COMPLEX*16 array, dimension +*> \param[in,out] V +*> \verbatim +*> V is COMPLEX*16 array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,N) if STOREV = 'R' *> The matrix V. See further details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> TAU (input) COMPLEX*16 array, dimension (K) +*> \param[in] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i). +*> \endverbatim *> -*> T (output) COMPLEX*16 array, dimension (LDT,K) +*> \param[out] T +*> \verbatim +*> T is COMPLEX*16 array, dimension (LDT,K) *> The k by k triangular factor T of the block reflector. *> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is *> lower triangular. The rest of the array is not used. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The shape of the matrix V and the storage of the vectors which define *> the H(i) is best illustrated by the following example with n = 5 and diff --git a/SRC/zlarrv.f b/SRC/zlarrv.f index 978d136a..82f88490 100644 --- a/SRC/zlarrv.f +++ b/SRC/zlarrv.f @@ -84,8 +84,10 @@ *> is stored the corresponding shift as given by DLARRE. *> On exit, L is overwritten. *> \endverbatim +*> +*> \param[in] PIVMIN *> \verbatim -*> PIVMIN (in) DOUBLE PRECISION +*> PIVMIN is DOUBLE PRECISION *> The minimum pivot allowed in the Sturm sequence. *> \endverbatim *> @@ -232,14 +234,12 @@ *> \verbatim *> INFO is INTEGER *> = 0: successful exit -*> \endverbatim -*> \verbatim +*> *> > 0: A problem occured in ZLARRV. *> < 0: One of the called subroutines signaled an internal problem. *> Needs inspection of the corresponding parameter IINFO *> for further information. -*> \endverbatim -*> \verbatim +*> *> =-1: Problem in DLARRB when refining a child's eigenvalues. *> =-2: Problem in DLARRF when computing the RRR of a child. *> When a child is inside a tight cluster, it can be difficult diff --git a/SRC/zlartg.f b/SRC/zlartg.f index 294d6926..fe86c545 100644 --- a/SRC/zlartg.f +++ b/SRC/zlartg.f @@ -94,8 +94,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> 3-5-96 - Modified with a new algorithm by W. Kahan and J. Demmel *> diff --git a/SRC/zlarzt.f b/SRC/zlarzt.f index 118f9f8f..701ca1ff 100644 --- a/SRC/zlarzt.f +++ b/SRC/zlarzt.f @@ -66,56 +66,82 @@ *> = 'B': H = H(k) . . . H(2) H(1) (Backward) *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] STOREV *> \verbatim -* reflectors are stored (see also Further Details): +*> STOREV is CHARACTER*1 +*> Specifies how the vectors which define the elementary +*> reflectors are stored (see also Further Details): *> = 'C': columnwise (not supported yet) *> = 'R': rowwise +*> \endverbatim *> -*> N (input) INTEGER +*> \param[in] N +*> \verbatim +*> N is INTEGER *> The order of the block reflector H. N >= 0. +*> \endverbatim *> -*> K (input) INTEGER +*> \param[in] K +*> \verbatim +*> K is INTEGER *> The order of the triangular factor T (= the number of *> elementary reflectors). K >= 1. +*> \endverbatim *> -*> V (input/output) COMPLEX*16 array, dimension +*> \param[in,out] V +*> \verbatim +*> V is COMPLEX*16 array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,N) if STOREV = 'R' *> The matrix V. See further details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> TAU (input) COMPLEX*16 array, dimension (K) +*> \param[in] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (K) *> TAU(i) must contain the scalar factor of the elementary *> reflector H(i). +*> \endverbatim *> -*> T (output) COMPLEX*16 array, dimension (LDT,K) +*> \param[out] T +*> \verbatim +*> T is COMPLEX*16 array, dimension (LDT,K) *> The k by k triangular factor T of the block reflector. *> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is *> lower triangular. The rest of the array is not used. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= K. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> Based on contributions by *> A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA diff --git a/SRC/zlascl.f b/SRC/zlascl.f index f4784623..1c5989ed 100644 --- a/SRC/zlascl.f +++ b/SRC/zlascl.f @@ -84,6 +84,8 @@ *> \param[in] CTO *> \verbatim *> CTO is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> The matrix A is multiplied by CTO/CFROM. A(I,J) is computed *> without over/underflow if the final result CTO*A(I,J)/CFROM *> can be represented without over/underflow. CFROM must be diff --git a/SRC/zlatrd.f b/SRC/zlatrd.f index 3ac6a659..e5c63464 100644 --- a/SRC/zlatrd.f +++ b/SRC/zlatrd.f @@ -71,47 +71,84 @@ *> The number of rows and columns to be reduced. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in,out] A *> \verbatim -* See Further Details. +*> A is COMPLEX*16 array, dimension (LDA,N) +*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading +*> n-by-n upper triangular part of A contains the upper +*> triangular part of the matrix A, and the strictly lower +*> triangular part of A is not referenced. If UPLO = 'L', the +*> leading n-by-n lower triangular part of A contains the lower +*> triangular part of the matrix A, and the strictly upper +*> triangular part of A is not referenced. +*> On exit: +*> if UPLO = 'U', the last NB columns have been reduced to +*> tridiagonal form, with the diagonal elements overwriting +*> the diagonal elements of A; the elements above the diagonal +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors; +*> if UPLO = 'L', the first NB columns have been reduced to +*> tridiagonal form, with the diagonal elements overwriting +*> the diagonal elements of A; the elements below the diagonal +*> with the array TAU, represent the unitary matrix Q as a +*> product of elementary reflectors. +*> See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> E (output) DOUBLE PRECISION array, dimension (N-1) +*> \param[out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (N-1) *> If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal *> elements of the last NB columns of the reduced matrix; *> if UPLO = 'L', E(1:nb) contains the subdiagonal elements of *> the first NB columns of the reduced matrix. +*> \endverbatim *> -*> TAU (output) COMPLEX*16 array, dimension (N-1) +*> \param[out] TAU +*> \verbatim +*> TAU is COMPLEX*16 array, dimension (N-1) *> The scalar factors of the elementary reflectors, stored in *> TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'. *> See Further Details. +*> \endverbatim *> -*> W (output) COMPLEX*16 array, dimension (LDW,NB) +*> \param[out] W +*> \verbatim +*> W is COMPLEX*16 array, dimension (LDW,NB) *> The n-by-nb matrix W required to update the unreduced part *> of A. +*> \endverbatim *> -*> LDW (input) INTEGER +*> \param[in] LDW +*> \verbatim +*> LDW is INTEGER *> The leading dimension of the array W. LDW >= max(1,N). +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> If UPLO = 'U', the matrix Q is represented as a product of elementary *> reflectors diff --git a/SRC/zpbstf.f b/SRC/zpbstf.f index e77d5b43..8b248129 100644 --- a/SRC/zpbstf.f +++ b/SRC/zpbstf.f @@ -81,6 +81,26 @@ *> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j; *> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd). *> \endverbatim +*> \verbatim +*> On exit, if INFO = 0, the factor S from the split Cholesky +*> factorization A = S**H*S. See Further Details. +*> \endverbatim +*> +*> \param[in] LDAB +*> \verbatim +*> LDAB is INTEGER +*> The leading dimension of the array AB. LDAB >= KD+1. +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> > 0: if INFO = i, the factorization could not be completed, +*> because the updated element a(i,i) was negative; the +*> matrix A is not positive definite. +*> \endverbatim *> * * Authors @@ -100,18 +120,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* factorization A = S**H*S. See Further Details. -*> -*> LDAB (input) INTEGER -*> The leading dimension of the array AB. LDAB >= KD+1. -*> -*> INFO (output) INTEGER -*> = 0: successful exit -*> < 0: if INFO = -i, the i-th argument had an illegal value -*> > 0: if INFO = i, the factorization could not be completed, -*> because the updated element a(i,i) was negative; the -*> matrix A is not positive definite. -*> *> *> The band storage scheme is illustrated by the following example, when *> N = 7, KD = 2: @@ -142,7 +150,6 @@ *> *> Array elements marked * are not used by the routine; s12**H denotes *> conjg(s12); the diagonal elements of S are real. - *> *> \endverbatim *> @@ -76,6 +76,8 @@ *> \param[in] C *> \verbatim *> C is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] S *> \verbatim *> S is COMPLEX*16 @@ -84,7 +86,6 @@ *> [ -conjg(S) C ] *> where C*C + S*CONJG(S) = 1.0. *> \endverbatim -*> \endverbatim *> * * Authors diff --git a/SRC/zstegr.f b/SRC/zstegr.f index 3ddcea0d..126a08d4 100644 --- a/SRC/zstegr.f +++ b/SRC/zstegr.f @@ -104,27 +104,33 @@ *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[in] ABSTOL *> \verbatim diff --git a/SRC/zstemr.f b/SRC/zstemr.f index ef120314..4e5ff061 100644 --- a/SRC/zstemr.f +++ b/SRC/zstemr.f @@ -152,27 +152,33 @@ *> \param[in] VL *> \verbatim *> VL is DOUBLE PRECISION +*> \endverbatim +*> *> \param[in] VU *> \verbatim *> VU is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If RANGE='V', the lower and upper bounds of the interval to *> be searched for eigenvalues. VL < VU. *> Not referenced if RANGE = 'A' or 'I'. *> \endverbatim -*> \endverbatim *> *> \param[in] IL *> \verbatim *> IL is INTEGER +*> \endverbatim +*> *> \param[in] IU *> \verbatim *> IU is INTEGER +*> \endverbatim +*> \verbatim *> If RANGE='I', the indices (in ascending order) of the *> smallest and largest eigenvalues to be returned. *> 1 <= IL <= IU <= N, if N > 0. *> Not referenced if RANGE = 'A' or 'V'. *> \endverbatim -*> \endverbatim *> *> \param[out] M *> \verbatim diff --git a/SRC/zsyconv.f b/SRC/zsyconv.f index 3f3dc99e..a5e296b2 100644 --- a/SRC/zsyconv.f +++ b/SRC/zsyconv.f @@ -89,19 +89,6 @@ *> WORK is COMPLEX*16 array, dimension (N) *> \endverbatim *> -*> \param[in] LWORK -*> \verbatim -*> LWORK is INTEGER -*> The length of WORK. LWORK >=1. -*> LWORK = N -*> \endverbatim -*> \verbatim -*> If LWORK = -1, then a workspace query is assumed; the routine -*> only calculates the optimal size of the WORK array, returns -*> this value as the first entry of the WORK array, and no error -*> message related to LWORK is issued by XERBLA. -*> \endverbatim -*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/SRC/zsyequb.f b/SRC/zsyequb.f index 01773de6..96d89d2b 100644 --- a/SRC/zsyequb.f +++ b/SRC/zsyequb.f @@ -130,8 +130,6 @@ * =============== *>\details \b Further \b Details *> \verbatim -* Further Details -*> ======= ======= *> *> Reference: Livne, O.E. and Golub, G.H., "Scaling by Binormalization", *> Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004. diff --git a/SRC/ztgsen.f b/SRC/ztgsen.f index 66ddce9a..c5d8882d 100644 --- a/SRC/ztgsen.f +++ b/SRC/ztgsen.f @@ -147,15 +147,18 @@ *> \param[out] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 array, dimension (N) +*> \endverbatim +*> *> \param[out] BETA *> \verbatim *> BETA is COMPLEX*16 array, dimension (N) +*> \endverbatim +*> \verbatim *> The diagonal elements of A and B, respectively, *> when the pair (A,B) has been reduced to generalized Schur *> form. ALPHA(i)/BETA(i) i=1,...,N are the generalized *> eigenvalues. *> \endverbatim -*> \endverbatim *> *> \param[in,out] Q *> \verbatim @@ -203,9 +206,13 @@ *> \param[out] PL *> \verbatim *> PL is DOUBLE PRECISION +*> \endverbatim +*> *> \param[out] PR *> \verbatim *> PR is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> If IJOB = 1, 4 or 5, PL, PR are lower bounds on the *> reciprocal of the norm of "projections" onto left and right *> eigenspace with respect to the selected cluster. @@ -213,7 +220,6 @@ *> If M = 0 or M = N, PL = PR = 1. *> If IJOB = 0, 2 or 3 PL, PR are not referenced. *> \endverbatim -*> \endverbatim *> *> \param[out] DIF *> \verbatim diff --git a/SRC/ztgsja.f b/SRC/ztgsja.f index d40521a2..6b407edd 100644 --- a/SRC/ztgsja.f +++ b/SRC/ztgsja.f @@ -176,52 +176,77 @@ *> The number of columns of the matrices A and B. N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] K +*> \verbatim +*> K is INTEGER +*> \endverbatim +*> +*> \param[in] L +*> \verbatim +*> L is INTEGER +*> \endverbatim *> \verbatim -* See Further Details. +*> 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. +*> \endverbatim *> -*> A (input/output) COMPLEX*16 array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the M-by-N matrix A. *> On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular *> matrix R or part of R. See Purpose for details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,M). +*> \endverbatim *> -*> B (input/output) COMPLEX*16 array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX*16 array, dimension (LDB,N) *> On entry, the P-by-N matrix B. *> On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains *> a part of R. See Purpose for details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,P). +*> \endverbatim *> -*> TOLA (input) DOUBLE PRECISION -*> TOLB (input) DOUBLE PRECISION +*> \param[in] TOLA +*> \verbatim +*> TOLA is DOUBLE PRECISION +*> \endverbatim +*> +*> \param[in] TOLB +*> \verbatim +*> TOLB is DOUBLE PRECISION +*> \endverbatim +*> \verbatim *> TOLA and TOLB are the convergence criteria for the Jacobi- *> Kogbetliantz iteration procedure. Generally, they are the *> same as used in the preprocessing step, say *> TOLA = MAX(M,N)*norm(A)*MAZHEPS, *> TOLB = MAX(P,N)*norm(B)*MAZHEPS. +*> \endverbatim *> -*> ALPHA (output) DOUBLE PRECISION array, dimension (N) -*> BETA (output) DOUBLE PRECISION array, dimension (N) +*> \param[out] ALPHA +*> \verbatim +*> ALPHA is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> +*> \param[out] BETA +*> \verbatim +*> BETA is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> \verbatim *> On exit, ALPHA and BETA contain the generalized singular *> value pairs of A and B; *> ALPHA(1:K) = 1, @@ -235,53 +260,81 @@ *> Furthermore, if K+L < N, *> ALPHA(K+L+1:N) = 0 and *> BETA(K+L+1:N) = 0. +*> \endverbatim *> -*> U (input/output) COMPLEX*16 array, dimension (LDU,M) +*> \param[in,out] U +*> \verbatim +*> U is COMPLEX*16 array, dimension (LDU,M) *> On entry, if JOBU = 'U', U must contain a matrix U1 (usually *> the unitary matrix returned by ZGGSVP). *> On exit, *> if JOBU = 'I', U contains the unitary matrix U; *> if JOBU = 'U', U contains the product U1*U. *> If JOBU = 'N', U is not referenced. +*> \endverbatim *> -*> LDU (input) INTEGER +*> \param[in] LDU +*> \verbatim +*> LDU is INTEGER *> The leading dimension of the array U. LDU >= max(1,M) if *> JOBU = 'U'; LDU >= 1 otherwise. +*> \endverbatim *> -*> V (input/output) COMPLEX*16 array, dimension (LDV,P) +*> \param[in,out] V +*> \verbatim +*> V is COMPLEX*16 array, dimension (LDV,P) *> On entry, if JOBV = 'V', V must contain a matrix V1 (usually *> the unitary matrix returned by ZGGSVP). *> On exit, *> if JOBV = 'I', V contains the unitary matrix V; *> if JOBV = 'V', V contains the product V1*V. *> If JOBV = 'N', V is not referenced. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. LDV >= max(1,P) if *> JOBV = 'V'; LDV >= 1 otherwise. +*> \endverbatim *> -*> Q (input/output) COMPLEX*16 array, dimension (LDQ,N) +*> \param[in,out] Q +*> \verbatim +*> Q is COMPLEX*16 array, dimension (LDQ,N) *> On entry, if JOBQ = 'Q', Q must contain a matrix Q1 (usually *> the unitary matrix returned by ZGGSVP). *> On exit, *> if JOBQ = 'I', Q contains the unitary matrix Q; *> if JOBQ = 'Q', Q contains the product Q1*Q. *> If JOBQ = 'N', Q is not referenced. +*> \endverbatim *> -*> LDQ (input) INTEGER +*> \param[in] LDQ +*> \verbatim +*> LDQ is INTEGER *> The leading dimension of the array Q. LDQ >= max(1,N) if *> JOBQ = 'Q'; LDQ >= 1 otherwise. +*> \endverbatim *> -*> WORK (workspace) COMPLEX*16 array, dimension (2*N) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (2*N) +*> \endverbatim *> -*> NCYCLE (output) INTEGER +*> \param[out] NCYCLE +*> \verbatim +*> NCYCLE is INTEGER *> The number of cycles required for convergence. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value. *> = 1: the procedure does not converge after MAXIT cycles. -*> +*> \endverbatim +*> \verbatim *> Internal Parameters *> =================== *> @@ -289,7 +342,26 @@ *> MAXIT specifies the total loops that the iterative procedure *> may take. If after MAXIT cycles, the routine fails to *> converge, we return INFO = 1. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> ZTGSJA essentially uses a variant of Kogbetliantz algorithm to reduce *> min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and L-by-L diff --git a/SRC/ztpmqrt.f b/SRC/ztpmqrt.f index a9d792d1..49828619 100644 --- a/SRC/ztpmqrt.f +++ b/SRC/ztpmqrt.f @@ -67,6 +67,7 @@ *> \verbatim *> N is INTEGER *> The number of columns of the matrix B. N >= 0. +*> \endverbatim *> *> \param[in] K *> \verbatim @@ -74,78 +75,115 @@ *> The number of elementary reflectors whose product defines *> the matrix Q. *> \endverbatim -*> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* K >= L >= 0. See Further Details. +*> L is INTEGER +*> The order of the trapezoidal part of V. +*> K >= L >= 0. See Further Details. +*> \endverbatim *> -*> NB (input) INTEGER +*> \param[in] NB +*> \verbatim +*> NB is INTEGER *> The block size used for the storage of T. K >= NB >= 1. *> This must be the same value of NB used to generate T *> in CTPQRT. +*> \endverbatim *> -*> V (input) COMPLEX*16 array, dimension (LDA,K) +*> \param[in] V +*> \verbatim +*> V is COMPLEX*16 array, dimension (LDA,K) *> The i-th column must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> CTPQRT in B. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER -*> The leading dimension of the array A. -*> If SIDE = 'L', LDA >= max(1,M); -*> if SIDE = 'R', LDA >= max(1,N). +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER +*> The leading dimension of the array V. +*> If SIDE = 'L', LDV >= max(1,M); +*> if SIDE = 'R', LDV >= max(1,N). +*> \endverbatim *> -*> T (input) COMPLEX*16 array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is COMPLEX*16 array, dimension (LDT,K) *> The upper triangular factors of the block reflectors *> as returned by CTPQRT, stored as a NB-by-K matrix. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= NB. +*> \endverbatim *> -*> A (input/output) COMPLEX*16 array, dimension +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension *> (LDA,N) if SIDE = 'L' or *> (LDA,K) if SIDE = 'R' *> On entry, the K-by-N or M-by-K matrix A. *> On exit, A is overwritten by the corresponding block of *> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDC >= max(1,K); *> If SIDE = 'R', LDC >= max(1,M). +*> \endverbatim *> -*> B (input/output) COMPLEX*16 array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX*16 array, dimension (LDB,N) *> On entry, the M-by-N matrix B. *> On exit, B is overwritten by the corresponding block of *> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. *> LDB >= max(1,M). +*> \endverbatim *> -*> WORK (workspace/output) COMPLEX*16 array. The dimension of WORK is +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array. The dimension of WORK is *> N*NB if SIDE = 'L', or M*NB if SIDE = 'R'. +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The columns of the pentagonal matrix V contain the elementary reflectors *> H(1), H(2), ..., H(K); V is composed of a rectangular block V1 and a diff --git a/SRC/ztpqrt.f b/SRC/ztpqrt.f index d4ce4d62..8e29577c 100644 --- a/SRC/ztpqrt.f +++ b/SRC/ztpqrt.f @@ -57,59 +57,90 @@ *> N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* MIN(M,N) >= L >= 0. See Further Details. +*> L is INTEGER +*> The number of rows of the upper trapezoidal part of B. +*> MIN(M,N) >= L >= 0. See Further Details. +*> \endverbatim *> -*> NB (input) INTEGER +*> \param[in] NB +*> \verbatim +*> NB is INTEGER *> The block size to be used in the blocked QR. N >= NB >= 1. +*> \endverbatim *> -*> A (input/output) COMPLEX*16 array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the upper triangular N-by-N matrix A. *> On exit, the elements on and above the diagonal of the array *> contain the upper triangular matrix R. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> B (input/output) COMPLEX*16 array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX*16 array, dimension (LDB,N) *> On entry, the pentagonal M-by-N matrix B. The first M-L rows *> are rectangular, and the last L rows are upper trapezoidal. *> On exit, B contains the pentagonal matrix V. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,M). +*> \endverbatim *> -*> T (output) COMPLEX*16 array, dimension (LDT,N) +*> \param[out] T +*> \verbatim +*> T is COMPLEX*16 array, dimension (LDT,N) *> The upper triangular block reflectors stored in compact form *> as a sequence of upper triangular blocks. See Further Details. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= NB. +*> \endverbatim *> -*> WORK (workspace) COMPLEX*16 array, dimension (NB*N) +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension (NB*N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> -*> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> The input matrix C is a (N+M)-by-N matrix *> *> C = [ A ] diff --git a/SRC/ztpqrt2.f b/SRC/ztpqrt2.f index 04c5cd17..db8dc88a 100644 --- a/SRC/ztpqrt2.f +++ b/SRC/ztpqrt2.f @@ -55,53 +55,79 @@ *> N >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERcomputational -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* MIN(M,N) >= L >= 0. See Further Details. +*> L is INTEGER +*> The number of rows of the upper trapezoidal part of B. +*> MIN(M,N) >= L >= 0. See Further Details. +*> \endverbatim *> -*> A (input/output) COMPLEX*16 array, dimension (LDA,N) +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the upper triangular N-by-N matrix A. *> On exit, the elements on and above the diagonal of the array *> contain the upper triangular matrix R. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. LDA >= max(1,N). +*> \endverbatim *> -*> B (input/output) COMPLEX*16 array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX*16 array, dimension (LDB,N) *> On entry, the pentagonal M-by-N matrix B. The first M-L rows *> are rectangular, and the last L rows are upper trapezoidal. *> On exit, B contains the pentagonal matrix V. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. LDB >= max(1,M). +*> \endverbatim *> -*> T (output) COMPLEX*16 array, dimension (LDT,N) +*> \param[out] T +*> \verbatim +*> T is COMPLEX*16 array, dimension (LDT,N) *> The N-by-N upper triangular factor T of the block reflector. *> See Further Details. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. LDT >= max(1,N) +*> \endverbatim *> -*> INFO (output) INTEGER +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER *> = 0: successful exit *> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERcomputational +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The input matrix C is a (N+M)-by-N matrix *> diff --git a/SRC/ztprfb.f b/SRC/ztprfb.f index fc9b02a1..32c9ec8e 100644 --- a/SRC/ztprfb.f +++ b/SRC/ztprfb.f @@ -97,76 +97,111 @@ *> K >= 0. *> \endverbatim *> -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16OTHERauxiliary -* -* -* Further Details -* =============== -*>\details \b Further \b Details +*> \param[in] L *> \verbatim -* K >= L >= 0. See Further Details. +*> L is INTEGER +*> The order of the trapezoidal part of V. +*> K >= L >= 0. See Further Details. +*> \endverbatim *> -*> V (input) COMPLEX*16 array, dimension +*> \param[in] V +*> \verbatim +*> V is COMPLEX*16 array, dimension *> (LDV,K) if STOREV = 'C' *> (LDV,M) if STOREV = 'R' and SIDE = 'L' *> (LDV,N) if STOREV = 'R' and SIDE = 'R' *> The pentagonal matrix V, which contains the elementary reflectors *> H(1), H(2), ..., H(K). See Further Details. +*> \endverbatim *> -*> LDV (input) INTEGER +*> \param[in] LDV +*> \verbatim +*> LDV is INTEGER *> The leading dimension of the array V. *> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M); *> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N); *> if STOREV = 'R', LDV >= K. +*> \endverbatim *> -*> T (input) COMPLEX*16 array, dimension (LDT,K) +*> \param[in] T +*> \verbatim +*> T is COMPLEX*16 array, dimension (LDT,K) *> The triangular K-by-K matrix T in the representation of the *> block reflector. +*> \endverbatim *> -*> LDT (input) INTEGER +*> \param[in] LDT +*> \verbatim +*> LDT is INTEGER *> The leading dimension of the array T. *> LDT >= K. +*> \endverbatim *> -*> A (input/output) COMPLEX*16 array, dimension +*> \param[in,out] A +*> \verbatim +*> A is COMPLEX*16 array, dimension *> (LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R' *> On entry, the K-by-N or M-by-K matrix A. *> On exit, A is overwritten by the corresponding block of *> H*C or H**H*C or C*H or C*H**H. See Futher Details. +*> \endverbatim *> -*> LDA (input) INTEGER +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER *> The leading dimension of the array A. *> If SIDE = 'L', LDC >= max(1,K); *> If SIDE = 'R', LDC >= max(1,M). +*> \endverbatim *> -*> B (input/output) COMPLEX*16 array, dimension (LDB,N) +*> \param[in,out] B +*> \verbatim +*> B is COMPLEX*16 array, dimension (LDB,N) *> On entry, the M-by-N matrix B. *> On exit, B is overwritten by the corresponding block of *> H*C or H**H*C or C*H or C*H**H. See Further Details. +*> \endverbatim *> -*> LDB (input) INTEGER +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER *> The leading dimension of the array B. *> LDB >= max(1,M). +*> \endverbatim *> -*> WORK (workspace) COMPLEX*16 array, dimension +*> \param[out] WORK +*> \verbatim +*> WORK is COMPLEX*16 array, dimension *> (LDWORK,N) if SIDE = 'L', *> (LDWORK,K) if SIDE = 'R'. +*> \endverbatim *> -*> LDWORK (input) INTEGER +*> \param[in] LDWORK +*> \verbatim +*> LDWORK is INTEGER *> The leading dimension of the array WORK. *> If SIDE = 'L', LDWORK >= K; *> if SIDE = 'R', LDWORK >= M. +*> \endverbatim *> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16OTHERauxiliary +* +* +* Further Details +* =============== +*>\details \b Further \b Details +*> \verbatim *> *> The matrix C is a composite matrix formed from blocks A and B. *> The block B is of size M-by-N; if SIDE = 'R', A is of size M-by-K, diff --git a/SRC/ztrexc.f b/SRC/ztrexc.f index ec2a8b35..743db8cd 100644 --- a/SRC/ztrexc.f +++ b/SRC/ztrexc.f @@ -89,15 +89,18 @@ *> \param[in] IFST *> \verbatim *> IFST is INTEGER +*> \endverbatim +*> *> \param[in] ILST *> \verbatim *> ILST is INTEGER +*> \endverbatim +*> \verbatim *> Specify the reordering of the diagonal elements of T: *> The element with row index IFST is moved to row ILST by a *> sequence of transpositions between adjacent elements. *> 1 <= IFST <= N; 1 <= ILST <= N. *> \endverbatim -*> \endverbatim *> *> \param[out] INFO *> \verbatim diff --git a/SRC/zuncsd.f b/SRC/zuncsd.f index 03509349..35d0f6b2 100644 --- a/SRC/zuncsd.f +++ b/SRC/zuncsd.f @@ -129,16 +129,52 @@ *> The number of columns in X11 and X21. 0 <= Q <= M. *> \endverbatim *> -*> \param[in,out] X +*> \param[in,out] X11 *> \verbatim -*> X is COMPLEX*16 array, dimension (LDX,M) -*> On entry, the unitary matrix whose CSD is desired. +*> X11 is COMPLEX*16 array, dimension (LDX11,Q) +*> On entry, part of the unitary matrix whose CSD is desired. *> \endverbatim *> -*> \param[in] LDX +*> \param[in] LDX11 *> \verbatim -*> LDX is INTEGER -*> The leading dimension of X. LDX >= MAX(1,M). +*> LDX11 is INTEGER +*> The leading dimension of X11. LDX11 >= MAX(1,P). +*> \endverbatim +*> +*> \param[in,out] X12 +*> \verbatim +*> X12 is COMPLEX*16 array, dimension (LDX12,M-Q) +*> On entry, part of the unitary matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX12 +*> \verbatim +*> LDX12 is INTEGER +*> The leading dimension of X12. LDX12 >= MAX(1,P). +*> \endverbatim +*> +*> \param[in,out] X21 +*> \verbatim +*> X21 is COMPLEX*16 array, dimension (LDX21,Q) +*> On entry, part of the unitary matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX21 +*> \verbatim +*> LDX21 is INTEGER +*> The leading dimension of X11. LDX21 >= MAX(1,M-P). +*> \endverbatim +*> +*> \param[in,out] X22 +*> \verbatim +*> X22 is COMPLEX*16 array, dimension (LDX22,M-Q) +*> On entry, part of the unitary matrix whose CSD is desired. +*> \endverbatim +*> +*> \param[in] LDX22 +*> \verbatim +*> LDX22 is INTEGER +*> The leading dimension of X11. LDX22 >= MAX(1,M-P). *> \endverbatim *> *> \param[out] THETA diff --git a/SRC/zunghr.f b/SRC/zunghr.f index c57ba43a..abf3fe43 100644 --- a/SRC/zunghr.f +++ b/SRC/zunghr.f @@ -51,15 +51,18 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI must have the same values as in the previous call *> of ZGEHRD. Q is equal to the unit matrix except in the *> submatrix Q(ilo+1:ihi,ilo+1:ihi). *> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0. *> \endverbatim -*> \endverbatim *> *> \param[in,out] A *> \verbatim diff --git a/SRC/zunmhr.f b/SRC/zunmhr.f index 4df33a88..4ff4cbef 100644 --- a/SRC/zunmhr.f +++ b/SRC/zunmhr.f @@ -79,9 +79,13 @@ *> \param[in] ILO *> \verbatim *> ILO is INTEGER +*> \endverbatim +*> *> \param[in] IHI *> \verbatim *> IHI is INTEGER +*> \endverbatim +*> \verbatim *> ILO and IHI must have the same values as in the previous call *> of ZGEHRD. Q is equal to the unit matrix except in the *> submatrix Q(ilo+1:ihi,ilo+1:ihi). @@ -90,7 +94,6 @@ *> if SIDE = 'R', then 1 <= ILO <= IHI <= N, if N > 0, and *> ILO = 1 and IHI = 0, if N = 0. *> \endverbatim -*> \endverbatim *> *> \param[in] A *> \verbatim diff --git a/TESTING/EIG/cchkbd.f b/TESTING/EIG/cchkbd.f index c2679caf..659bbb98 100644 --- a/TESTING/EIG/cchkbd.f +++ b/TESTING/EIG/cchkbd.f @@ -317,9 +317,9 @@ *> (LDPT,max(min(MVAL(j),NVAL(j)))) *> \endverbatim *> -*> \param[out] V +*> \param[out] VT *> \verbatim -*> V is COMPLEX array, dimension +*> VT is COMPLEX array, dimension *> (LDPT,max(min(MVAL(j),NVAL(j)))) *> \endverbatim *> diff --git a/TESTING/EIG/cchkhb.f b/TESTING/EIG/cchkhb.f index f0d61d71..52d8c981 100644 --- a/TESTING/EIG/cchkhb.f +++ b/TESTING/EIG/cchkhb.f @@ -185,7 +185,7 @@ *> *> \param[in,out] A *> \verbatim -*> A is REAL array, dimension +*> A is COMPLEX array, dimension *> (LDA, max(NN)) *> Used to hold the matrix whose eigenvalues are to be *> computed. @@ -214,7 +214,7 @@ *> *> \param[out] U *> \verbatim -*> U is REAL array, dimension (LDU, max(NN)) +*> U is COMPLEX array, dimension (LDU, max(NN)) *> Used to hold the unitary matrix computed by CHBTRD. *> \endverbatim *> @@ -227,7 +227,7 @@ *> *> \param[out] WORK *> \verbatim -*> WORK is REAL array, dimension (LWORK) +*> WORK is COMPLEX array, dimension (LWORK) *> \endverbatim *> *> \param[in] LWORK @@ -237,6 +237,11 @@ *> max( LDA+1, max(NN)+1 )*max(NN). *> \endverbatim *> +*> \param[out] RWORK +*> \verbatim +*> RWORK is REAL array +*> \endverbatim +*> *> \param[out] RESULT *> \verbatim *> RESULT is REAL array, dimension (4) diff --git a/TESTING/EIG/cchkst.f b/TESTING/EIG/cchkst.f index 2d5f299d..d72c02b5 100644 --- a/TESTING/EIG/cchkst.f +++ b/TESTING/EIG/cchkst.f @@ -387,6 +387,64 @@ *> eigenvalues in D3 correspond with the matrix in A. *> \endverbatim *> +*> \param[out] D4 +*> \verbatim +*> D4 is REAL array of +*> dimension( max(NN) ) +*> The eigenvalues of A, as computed by CPTEQR(V). +*> ZPTEQR factors S as Z4 D4 Z4* +*> On exit, the eigenvalues in D4 correspond with the matrix in A. +*> \endverbatim +*> +*> \param[out] D5 +*> \verbatim +*> D5 is REAL array of +*> dimension( max(NN) ) +*> The eigenvalues of A, as computed by ZPTEQR(N) +*> when Z is not computed. On exit, the +*> eigenvalues in D4 correspond with the matrix in A. +*> \endverbatim +*> +*> \param[out] WA1 +*> \verbatim +*> WA1 is REAL array of +*> dimension( max(NN) ) +*> All eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by SSTEBZ. +*> \endverbatim +*> +*> \param[out] WA2 +*> \verbatim +*> WA2 is REAL array of +*> dimension( max(NN) ) +*> Selected eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by SSTEBZ. +*> Choose random values for IL and IU, and ask for the +*> IL-th through IU-th eigenvalues. +*> \endverbatim +*> +*> \param[out] WA3 +*> \verbatim +*> WA3 is REAL array of +*> dimension( max(NN) ) +*> Selected eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by SSTEBZ. +*> Determine the values VL and VU of the IL-th and IU-th +*> eigenvalues and ask for all eigenvalues in this range. +*> \endverbatim +*> +*> \param[out] WR +*> \verbatim +*> WR is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> All eigenvalues of A, computed to high +*> absolute accuracy, with different options. +*> as computed by DSTEBZ. +*> \endverbatim +*> *> \param[out] U *> \verbatim *> U is COMPLEX array of @@ -455,15 +513,26 @@ *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, -*> dimension (6 + 6*Nmax + 5 * Nmax * lg Nmax ) -*> where Nmax = max( NN(j), 2 ) and lg = log base 2. *> Workspace. *> \endverbatim *> +*> \param[out] LIWORK +*> \verbatim +*> LIWORK is INTEGER +*> The number of entries in IWORK. This must be at least +*> 6 + 6*Nmax + 5 * Nmax * lg Nmax +*> where Nmax = max( NN(j), 2 ) and lg = log base 2. +*> \endverbatim +*> *> \param[out] RWORK *> \verbatim -*> RWORK is REAL array of -*> dimension( ??? ) +*> RWORK is REAL array +*> \endverbatim +*> +*> \param[in] LRWORK +*> \verbatim +*> LRWORK is INTEGER +*> The number of entries in LRWORK (dimension( ??? ) *> \endverbatim *> *> \param[out] RESULT diff --git a/TESTING/EIG/cdrgvx.f b/TESTING/EIG/cdrgvx.f index 23f897fa..264b4cd1 100644 --- a/TESTING/EIG/cdrgvx.f +++ b/TESTING/EIG/cdrgvx.f @@ -222,9 +222,9 @@ *> S is REAL array, dimension (N) *> \endverbatim *> -*> \param[out] DTRU +*> \param[out] STRU *> \verbatim -*> DTRU is REAL array, dimension (N) +*> STRU is REAL array, dimension (N) *> \endverbatim *> *> \param[out] DIF diff --git a/TESTING/EIG/cdrvbd.f b/TESTING/EIG/cdrvbd.f index e7242e6b..56204768 100644 --- a/TESTING/EIG/cdrvbd.f +++ b/TESTING/EIG/cdrvbd.f @@ -181,13 +181,6 @@ *> or the size of the matrix. It must be at least zero. *> \endverbatim *> -*> \param[in] NOUNIT -*> \verbatim -*> NOUNIT is INTEGER -*> The FORTRAN unit number for printing out error messages -*> (e.g., if a routine returns IINFO not equal to 0.) -*> \endverbatim -*> *> \param[out] A *> \verbatim *> A is COMPLEX array, dimension (LDA,max(NN)) @@ -297,12 +290,11 @@ *> IWORK is INTEGER array, dimension at least 8*min(M,N) *> \endverbatim *> -*> \param[out] RESULT +*> \param[in] NOUNIT *> \verbatim -*> RESULT is REAL array, dimension (7) -*> The values computed by the 7 tests described above. -*> The values are currently limited to 1/ULP, to avoid -*> overflow. +*> NOUNIT is INTEGER +*> The FORTRAN unit number for printing out error messages +*> (e.g., if a routine returns IINFO not equal to 0.) *> \endverbatim *> *> \param[out] INFO diff --git a/TESTING/EIG/cdrves.f b/TESTING/EIG/cdrves.f index 152f97b9..a79cfe14 100644 --- a/TESTING/EIG/cdrves.f +++ b/TESTING/EIG/cdrves.f @@ -318,6 +318,11 @@ *> IWORK is INTEGER array, dimension (max(NN)) *> \endverbatim *> +*> \param[out] BWORK +*> \verbatim +*> BWORK is LOGICAL array, dimension (max(NN)) +*> \endverbatim +*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/TESTING/EIG/cdrvvx.f b/TESTING/EIG/cdrvvx.f index 97e313c4..3a15d8f6 100644 --- a/TESTING/EIG/cdrvvx.f +++ b/TESTING/EIG/cdrvvx.f @@ -361,6 +361,62 @@ *> Leading dimension of LRE. Must be at least max(1,max(NN,12)) *> \endverbatim *> +*> \param[out] RCONDV +*> \verbatim +*> RCONDV is REAL array, dimension (N) +*> RCONDV holds the computed reciprocal condition numbers +*> for eigenvectors. +*> \endverbatim +*> +*> \param[out] RCNDV1 +*> \verbatim +*> RCNDV1 is REAL array, dimension (N) +*> RCNDV1 holds more computed reciprocal condition numbers +*> for eigenvectors. +*> \endverbatim +*> +*> \param[in] RCDVIN +*> \verbatim +*> RCDVIN is REAL array, dimension (N) +*> When COMP = .TRUE. RCDVIN holds the precomputed reciprocal +*> condition numbers for eigenvectors to be compared with +*> RCONDV. +*> \endverbatim +*> +*> \param[out] RCONDE +*> \verbatim +*> RCONDE is REAL array, dimension (N) +*> RCONDE holds the computed reciprocal condition numbers +*> for eigenvalues. +*> \endverbatim +*> +*> \param[out] RCNDE1 +*> \verbatim +*> RCNDE1 is REAL array, dimension (N) +*> RCNDE1 holds more computed reciprocal condition numbers +*> for eigenvalues. +*> \endverbatim +*> +*> \param[in] RCDEIN +*> \verbatim +*> RCDEIN is REAL array, dimension (N) +*> When COMP = .TRUE. RCDEIN holds the precomputed reciprocal +*> condition numbers for eigenvalues to be compared with +*> RCONDE. +*> \endverbatim +*> +*> \param[out] SCALE +*> \verbatim +*> SCALE is REAL array, dimension (N) +*> Holds information describing balancing of matrix. +*> \endverbatim +*> +*> \param[out] SCALE1 +*> \verbatim +*> SCALE1 is REAL array, dimension (N) +*> Holds information describing balancing of matrix. +*> \endverbatim +*> *> \param[out] RESULT *> \verbatim *> RESULT is REAL array, dimension (11) diff --git a/TESTING/EIG/cget22.f b/TESTING/EIG/cget22.f index fd6f7644..267045e1 100644 --- a/TESTING/EIG/cget22.f +++ b/TESTING/EIG/cget22.f @@ -121,6 +121,12 @@ *> RWORK is REAL array, dimension (N) *> \endverbatim *> +*> \param[out] RESULT +*> \verbatim +*> RESULT is REAL array, dimension (2) +*> RESULT(1) = | A E - E W | / ( |A| |E| ulp ) +*> RESULT(2) = max | m-norm(E(j)) - 1 | / ( n ulp ) +*> \endverbatim * * Authors * ======= diff --git a/TESTING/EIG/chkxer.f b/TESTING/EIG/chkxer.f index 0a222273..15bc8b3b 100644 --- a/TESTING/EIG/chkxer.f +++ b/TESTING/EIG/chkxer.f @@ -14,25 +14,7 @@ * LOGICAL LERR, OK * CHARACTER*(*) SRNAMT * INTEGER INFOT, NOUT -* .. -* .. Intrinsic Functions .. -* INTRINSIC LEN_TRIM -* .. -* .. Executable Statements .. -* IF( .NOT.LERR ) THEN -* WRITE( NOUT, FMT = 9999 )INFOT, -* $ SRNAMT( 1:LEN_TRIM( SRNAMT ) ) -* OK = .FALSE. -* END IF -* LERR = .FALSE. -* RETURN -* -* 9999 FORMAT( ' *** Illegal value of parameter number ', I2, -* $ ' not detected by ', A6, ' ***' ) -* -* End of CHKXER. -* -* END +* * Purpose * ======= * diff --git a/TESTING/EIG/clctsx.f b/TESTING/EIG/clctsx.f index f9086aac..c2208012 100644 --- a/TESTING/EIG/clctsx.f +++ b/TESTING/EIG/clctsx.f @@ -33,13 +33,16 @@ *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX +*> \endverbatim +*> *> \param[in] BETA *> \verbatim *> BETA is COMPLEX +*> \endverbatim +*> \verbatim *> parameters to decide whether the pair (ALPHA, BETA) is *> selected. *> \endverbatim -*> \endverbatim *> * * Authors diff --git a/TESTING/EIG/dchkbd.f b/TESTING/EIG/dchkbd.f index 78c9d786..760b6bf9 100644 --- a/TESTING/EIG/dchkbd.f +++ b/TESTING/EIG/dchkbd.f @@ -339,9 +339,9 @@ *> (LDPT,max(min(MVAL(j),NVAL(j)))) *> \endverbatim *> -*> \param[out] V +*> \param[out] VT *> \verbatim -*> V is DOUBLE PRECISION array, dimension +*> VT is DOUBLE PRECISION array, dimension *> (LDPT,max(min(MVAL(j),NVAL(j)))) *> \endverbatim *> diff --git a/TESTING/EIG/dchkgg.f b/TESTING/EIG/dchkgg.f index fe030bf9..9c9202d7 100644 --- a/TESTING/EIG/dchkgg.f +++ b/TESTING/EIG/dchkgg.f @@ -453,9 +453,9 @@ *> the matrices in S1 and P1. (See DTGEVC for the format.) *> \endverbatim *> -*> \param[out] EVEZTR +*> \param[out] EVECTR *> \verbatim -*> EVEZTR is DOUBLE PRECISION array, dimension (LDU, max(NN)) +*> EVECTR is DOUBLE PRECISION array, dimension (LDU, max(NN)) *> The (block upper triangular) right eigenvector matrix for *> the matrices in S1 and P1. (See DTGEVC for the format.) *> \endverbatim diff --git a/TESTING/EIG/dchkst.f b/TESTING/EIG/dchkst.f index d40bf361..c585fe3d 100644 --- a/TESTING/EIG/dchkst.f +++ b/TESTING/EIG/dchkst.f @@ -386,6 +386,64 @@ *> eigenvalues in D3 correspond with the matrix in A. *> \endverbatim *> +*> \param[out] D4 +*> \verbatim +*> D4 is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> The eigenvalues of A, as computed by DPTEQR(V). +*> DPTEQR factors S as Z4 D4 Z4* +*> On exit, the eigenvalues in D4 correspond with the matrix in A. +*> \endverbatim +*> +*> \param[out] D5 +*> \verbatim +*> D5 is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> The eigenvalues of A, as computed by DPTEQR(N) +*> when Z is not computed. On exit, the +*> eigenvalues in D4 correspond with the matrix in A. +*> \endverbatim +*> +*> \param[out] WA1 +*> \verbatim +*> WA1 is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> All eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by DSTEBZ. +*> \endverbatim +*> +*> \param[out] WA2 +*> \verbatim +*> WA2 is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> Selected eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by DSTEBZ. +*> Choose random values for IL and IU, and ask for the +*> IL-th through IU-th eigenvalues. +*> \endverbatim +*> +*> \param[out] WA3 +*> \verbatim +*> WA3 is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> Selected eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by DSTEBZ. +*> Determine the values VL and VU of the IL-th and IU-th +*> eigenvalues and ask for all eigenvalues in this range. +*> \endverbatim +*> +*> \param[out] WR +*> \verbatim +*> WR is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> All eigenvalues of A, computed to high +*> absolute accuracy, with different options. +*> as computed by DSTEBZ. +*> \endverbatim +*> *> \param[out] U *> \verbatim *> U is DOUBLE PRECISION array of @@ -454,11 +512,17 @@ *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, -*> dimension (6 + 6*Nmax + 5 * Nmax * lg Nmax ) -*> where Nmax = max( NN(j), 2 ) and lg = log base 2. *> Workspace. *> \endverbatim *> +*> \param[out] LIWORK +*> \verbatim +*> LIWORK is INTEGER +*> The number of entries in IWORK. This must be at least +*> 6 + 6*Nmax + 5 * Nmax * lg Nmax +*> where Nmax = max( NN(j), 2 ) and lg = log base 2. +*> \endverbatim +*> *> \param[out] RESULT *> \verbatim *> RESULT is DOUBLE PRECISION array, dimension (26) diff --git a/TESTING/EIG/ddrgvx.f b/TESTING/EIG/ddrgvx.f index bebae73b..f038d75d 100644 --- a/TESTING/EIG/ddrgvx.f +++ b/TESTING/EIG/ddrgvx.f @@ -265,9 +265,9 @@ *> LIWORK is INTEGER *> Leading dimension of IWORK. Must be at least N+6. *> \endverbatim -*> \verbatim *> *> \param[out] RESULT +*> \verbatim *> RESULT is DOUBLE PRECISION array, dimension (4) *> \endverbatim *> diff --git a/TESTING/EIG/ddrves.f b/TESTING/EIG/ddrves.f index ca8be704..93fa2b6d 100644 --- a/TESTING/EIG/ddrves.f +++ b/TESTING/EIG/ddrves.f @@ -328,6 +328,11 @@ *> IWORK is INTEGER array, dimension (max(NN)) *> \endverbatim *> +*> \param[out] BWORK +*> \verbatim +*> BWORK is LOGICAL array, dimension (max(NN)) +*> \endverbatim +*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/TESTING/EIG/ddrvsx.f b/TESTING/EIG/ddrvsx.f index 6db69830..2644eba1 100644 --- a/TESTING/EIG/ddrvsx.f +++ b/TESTING/EIG/ddrvsx.f @@ -402,6 +402,11 @@ *> IWORK is INTEGER array, dimension (max(NN)*max(NN)) *> \endverbatim *> +*> \param[out] BWORK +*> \verbatim +*> BWORK is LOGICAL array, dimension (max(NN)) +*> \endverbatim +*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/TESTING/EIG/ddrvvx.f b/TESTING/EIG/ddrvvx.f index a5ec7629..230912b3 100644 --- a/TESTING/EIG/ddrvvx.f +++ b/TESTING/EIG/ddrvvx.f @@ -433,6 +433,18 @@ *> RCONDE. *> \endverbatim *> +*> \param[out] SCALE +*> \verbatim +*> SCALE is DOUBLE PRECISION array, dimension (N) +*> Holds information describing balancing of matrix. +*> \endverbatim +*> +*> \param[out] SCALE1 +*> \verbatim +*> SCALE1 is DOUBLE PRECISION array, dimension (N) +*> Holds information describing balancing of matrix. +*> \endverbatim +*> *> \param[out] RESULT *> \verbatim *> RESULT is DOUBLE PRECISION array, dimension (11) diff --git a/TESTING/EIG/dlatb9.f b/TESTING/EIG/dlatb9.f index 1ffcdc46..8a9cf15c 100644 --- a/TESTING/EIG/dlatb9.f +++ b/TESTING/EIG/dlatb9.f @@ -44,6 +44,10 @@ *> IMAT is INTEGER *> An integer key describing which matrix to generate for this *> path. +*> = 1: A: diagonal, B: upper triangular +*> = 2: A: upper triangular, B: upper triangular +*> = 3: A: lower triangular, B: upper triangular +*> Else: A: general dense, B: general dense *> \endverbatim *> *> \param[in] M @@ -52,6 +56,11 @@ *> The number of rows in the matrix to be generated. *> \endverbatim *> +*> \param[in] P +*> \verbatim +*> P is INTEGER +*> \endverbatim +*> *> \param[in] N *> \verbatim *> N is INTEGER @@ -67,15 +76,27 @@ *> = 'N': nonsymmetric matrix. *> \endverbatim *> -*> \param[out] KL +*> \param[out] KLA *> \verbatim -*> KL is INTEGER +*> KLA is INTEGER *> The lower band width of the matrix to be generated. *> \endverbatim *> -*> \param[out] KU +*> \param[out] KUA *> \verbatim -*> KU is INTEGER +*> KUA is INTEGER +*> The upper band width of the matrix to be generated. +*> \endverbatim +*> +*> \param[out] KLB +*> \verbatim +*> KLB is INTEGER +*> The lower band width of the matrix to be generated. +*> \endverbatim +*> +*> \param[out] KUB +*> \verbatim +*> KUA is INTEGER *> The upper band width of the matrix to be generated. *> \endverbatim *> @@ -87,21 +108,48 @@ *> value. *> \endverbatim *> -*> \param[out] MODE +*> \param[out] BNORM +*> \verbatim +*> BNORM is DOUBLE PRECISION +*> The desired norm of the matrix to be generated. The diagonal +*> matrix of singular values or eigenvalues is scaled by this +*> value. +*> \endverbatim +*> +*> \param[out] MODEA +*> \verbatim +*> MODEA is INTEGER +*> A key indicating how to choose the vector of eigenvalues. +*> \endverbatim +*> +*> \param[out] MODEB *> \verbatim -*> MODE is INTEGER +*> MODEB is INTEGER *> A key indicating how to choose the vector of eigenvalues. *> \endverbatim *> -*> \param[out] CNDNUM +*> \param[out] CNDNMA *> \verbatim -*> CNDNUM is DOUBLE PRECISION +*> CNDNMA is DOUBLE PRECISION *> The desired condition number. *> \endverbatim *> -*> \param[out] DIST +*> \param[out] CNDNMB +*> \verbatim +*> CNDNMB is DOUBLE PRECISION +*> The desired condition number. +*> \endverbatim +*> +*> \param[out] DISTA +*> \verbatim +*> DISTA is CHARACTER*1 +*> The type of distribution to be used by the random number +*> generator. +*> \endverbatim +*> +*> \param[out] DISTB *> \verbatim -*> DIST is CHARACTER*1 +*> DISTB is CHARACTER*1 *> The type of distribution to be used by the random number *> generator. *> \endverbatim diff --git a/TESTING/EIG/dsxt1.f b/TESTING/EIG/dsxt1.f index 256fcfb5..61815162 100644 --- a/TESTING/EIG/dsxt1.f +++ b/TESTING/EIG/dsxt1.f @@ -40,9 +40,9 @@ * Arguments * ========= * -*> \param[in] ITYPE +*> \param[in] IJOB *> \verbatim -*> ITYPE is INTEGER +*> IJOB is INTEGER *> Specifies the type of tests to be performed. (See above.) *> \endverbatim *> diff --git a/TESTING/EIG/ilaenv.f b/TESTING/EIG/ilaenv.f index edbd030d..442a0e36 100644 --- a/TESTING/EIG/ilaenv.f +++ b/TESTING/EIG/ilaenv.f @@ -110,9 +110,9 @@ *> be required. *> \endverbatim *> -*> \param[out] (ILAENV) +*> \result ILAENV *> \verbatim -*> (ILAENV) is INTEGER +*> ILAENV is INTEGER *> >= 0: the value of the parameter specified by ISPEC *> < 0: if ILAENV = -k, the k-th argument had an illegal value. *> \endverbatim diff --git a/TESTING/EIG/schkbd.f b/TESTING/EIG/schkbd.f index e20d44ef..59d6edeb 100644 --- a/TESTING/EIG/schkbd.f +++ b/TESTING/EIG/schkbd.f @@ -339,9 +339,9 @@ *> (LDPT,max(min(MVAL(j),NVAL(j)))) *> \endverbatim *> -*> \param[out] V +*> \param[out] VT *> \verbatim -*> V is REAL array, dimension +*> VT is REAL array, dimension *> (LDPT,max(min(MVAL(j),NVAL(j)))) *> \endverbatim *> diff --git a/TESTING/EIG/schkst.f b/TESTING/EIG/schkst.f index 5933e850..c937cbae 100644 --- a/TESTING/EIG/schkst.f +++ b/TESTING/EIG/schkst.f @@ -386,6 +386,64 @@ *> eigenvalues in D3 correspond with the matrix in A. *> \endverbatim *> +*> \param[out] D4 +*> \verbatim +*> D4 is REAL array of +*> dimension( max(NN) ) +*> The eigenvalues of A, as computed by SPTEQR(V). +*> ZPTEQR factors S as Z4 D4 Z4* +*> On exit, the eigenvalues in D4 correspond with the matrix in A. +*> \endverbatim +*> +*> \param[out] D5 +*> \verbatim +*> D5 is REAL array of +*> dimension( max(NN) ) +*> The eigenvalues of A, as computed by SPTEQR(N) +*> when Z is not computed. On exit, the +*> eigenvalues in D4 correspond with the matrix in A. +*> \endverbatim +*> +*> \param[out] WA1 +*> \verbatim +*> WA1 is REAL array of +*> dimension( max(NN) ) +*> All eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by SSTEBZ. +*> \endverbatim +*> +*> \param[out] WA2 +*> \verbatim +*> WA2 is REAL array of +*> dimension( max(NN) ) +*> Selected eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by SSTEBZ. +*> Choose random values for IL and IU, and ask for the +*> IL-th through IU-th eigenvalues. +*> \endverbatim +*> +*> \param[out] WA3 +*> \verbatim +*> WA3 is REAL array of +*> dimension( max(NN) ) +*> Selected eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by SSTEBZ. +*> Determine the values VL and VU of the IL-th and IU-th +*> eigenvalues and ask for all eigenvalues in this range. +*> \endverbatim +*> +*> \param[out] WR +*> \verbatim +*> WR is REAL array of +*> dimension( max(NN) ) +*> All eigenvalues of A, computed to high +*> absolute accuracy, with different options. +*> as computed by SSTEBZ. +*> \endverbatim +*> *> \param[out] U *> \verbatim *> U is REAL array of @@ -454,11 +512,17 @@ *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, -*> dimension (6 + 6*Nmax + 5 * Nmax * lg Nmax ) -*> where Nmax = max( NN(j), 2 ) and lg = log base 2. *> Workspace. *> \endverbatim *> +*> \param[out] LIWORK +*> \verbatim +*> LIWORK is INTEGER +*> The number of entries in IWORK. This must be at least +*> 6 + 6*Nmax + 5 * Nmax * lg Nmax +*> where Nmax = max( NN(j), 2 ) and lg = log base 2. +*> \endverbatim +*> *> \param[out] RESULT *> \verbatim *> RESULT is REAL array, dimension (26) diff --git a/TESTING/EIG/sdrgvx.f b/TESTING/EIG/sdrgvx.f index d6ffb42a..d214e4ce 100644 --- a/TESTING/EIG/sdrgvx.f +++ b/TESTING/EIG/sdrgvx.f @@ -230,9 +230,9 @@ *> S is REAL array, dimension (N) *> \endverbatim *> -*> \param[out] DTRU +*> \param[out] STRU *> \verbatim -*> DTRU is REAL array, dimension (N) +*> STRU is REAL array, dimension (N) *> \endverbatim *> *> \param[out] DIF diff --git a/TESTING/EIG/sdrves.f b/TESTING/EIG/sdrves.f index e17ec3a4..ad3d1784 100644 --- a/TESTING/EIG/sdrves.f +++ b/TESTING/EIG/sdrves.f @@ -328,6 +328,11 @@ *> IWORK is INTEGER array, dimension (max(NN)) *> \endverbatim *> +*> \param[out] BWORK +*> \verbatim +*> BWORK is LOGICAL array, dimension (max(NN)) +*> \endverbatim +*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/TESTING/EIG/sdrvsx.f b/TESTING/EIG/sdrvsx.f index 52db48d0..ad9355a3 100644 --- a/TESTING/EIG/sdrvsx.f +++ b/TESTING/EIG/sdrvsx.f @@ -402,6 +402,11 @@ *> IWORK is INTEGER array, dimension (max(NN)*max(NN)) *> \endverbatim *> +*> \param[out] BWORK +*> \verbatim +*> BWORK is LOGICAL array, dimension (max(NN)) +*> \endverbatim +*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/TESTING/EIG/sdrvvx.f b/TESTING/EIG/sdrvvx.f index 0a54ebe9..28b8b7bd 100644 --- a/TESTING/EIG/sdrvvx.f +++ b/TESTING/EIG/sdrvvx.f @@ -431,6 +431,18 @@ *> RCONDE. *> \endverbatim *> +*> \param[out] SCALE +*> \verbatim +*> SCALE is REAL array, dimension (N) +*> Holds information describing balancing of matrix. +*> \endverbatim +*> +*> \param[out] SCALE1 +*> \verbatim +*> SCALE1 is REAL array, dimension (N) +*> Holds information describing balancing of matrix. +*> \endverbatim +*> *> \param[out] RESULT *> \verbatim *> RESULT is REAL array, dimension (11) diff --git a/TESTING/EIG/slatb9.f b/TESTING/EIG/slatb9.f index db2f8307..7e6f2818 100644 --- a/TESTING/EIG/slatb9.f +++ b/TESTING/EIG/slatb9.f @@ -44,6 +44,10 @@ *> IMAT is INTEGER *> An integer key describing which matrix to generate for this *> path. +*> = 1: A: diagonal, B: upper triangular +*> = 2: A: upper triangular, B: upper triangular +*> = 3: A: lower triangular, B: upper triangular +*> Else: A: general dense, B: general dense *> \endverbatim *> *> \param[in] M @@ -52,6 +56,11 @@ *> The number of rows in the matrix to be generated. *> \endverbatim *> +*> \param[in] P +*> \verbatim +*> P is INTEGER +*> \endverbatim +*> *> \param[in] N *> \verbatim *> N is INTEGER @@ -67,15 +76,27 @@ *> = 'N': nonsymmetric matrix. *> \endverbatim *> -*> \param[out] KL +*> \param[out] KLA *> \verbatim -*> KL is INTEGER +*> KLA is INTEGER *> The lower band width of the matrix to be generated. *> \endverbatim *> -*> \param[out] KU +*> \param[out] KUA *> \verbatim -*> KU is INTEGER +*> KUA is INTEGER +*> The upper band width of the matrix to be generated. +*> \endverbatim +*> +*> \param[out] KLB +*> \verbatim +*> KLB is INTEGER +*> The lower band width of the matrix to be generated. +*> \endverbatim +*> +*> \param[out] KUB +*> \verbatim +*> KUA is INTEGER *> The upper band width of the matrix to be generated. *> \endverbatim *> @@ -87,21 +108,48 @@ *> value. *> \endverbatim *> -*> \param[out] MODE +*> \param[out] BNORM +*> \verbatim +*> BNORM is REAL +*> The desired norm of the matrix to be generated. The diagonal +*> matrix of singular values or eigenvalues is scaled by this +*> value. +*> \endverbatim +*> +*> \param[out] MODEA +*> \verbatim +*> MODEA is INTEGER +*> A key indicating how to choose the vector of eigenvalues. +*> \endverbatim +*> +*> \param[out] MODEB *> \verbatim -*> MODE is INTEGER +*> MODEB is INTEGER *> A key indicating how to choose the vector of eigenvalues. *> \endverbatim *> -*> \param[out] CNDNUM +*> \param[out] CNDNMA *> \verbatim -*> CNDNUM is REAL +*> CNDNMA is REAL *> The desired condition number. *> \endverbatim *> -*> \param[out] DIST +*> \param[out] CNDNMB +*> \verbatim +*> CNDNMB is REAL +*> The desired condition number. +*> \endverbatim +*> +*> \param[out] DISTA +*> \verbatim +*> DISTA is CHARACTER*1 +*> The type of distribution to be used by the random number +*> generator. +*> \endverbatim +*> +*> \param[out] DISTB *> \verbatim -*> DIST is CHARACTER*1 +*> DISTB is CHARACTER*1 *> The type of distribution to be used by the random number *> generator. *> \endverbatim diff --git a/TESTING/EIG/ssxt1.f b/TESTING/EIG/ssxt1.f index edbc641d..853d30b1 100644 --- a/TESTING/EIG/ssxt1.f +++ b/TESTING/EIG/ssxt1.f @@ -40,9 +40,9 @@ * Arguments * ========= * -*> \param[in] ITYPE +*> \param[in] IJOB *> \verbatim -*> ITYPE is INTEGER +*> IJOB is INTEGER *> Specifies the type of tests to be performed. (See above.) *> \endverbatim *> diff --git a/TESTING/EIG/zchkbd.f b/TESTING/EIG/zchkbd.f index 297540f2..f38e29e5 100644 --- a/TESTING/EIG/zchkbd.f +++ b/TESTING/EIG/zchkbd.f @@ -317,9 +317,9 @@ *> (LDPT,max(min(MVAL(j),NVAL(j)))) *> \endverbatim *> -*> \param[out] V +*> \param[out] VT *> \verbatim -*> V is COMPLEX*16 array, dimension +*> VT is COMPLEX*16 array, dimension *> (LDPT,max(min(MVAL(j),NVAL(j)))) *> \endverbatim *> diff --git a/TESTING/EIG/zchkgg.f b/TESTING/EIG/zchkgg.f index f919ee74..3ea100f0 100644 --- a/TESTING/EIG/zchkgg.f +++ b/TESTING/EIG/zchkgg.f @@ -439,9 +439,9 @@ *> matrices in S1 and P1. *> \endverbatim *> -*> \param[out] EVEZTR +*> \param[out] EVECTR *> \verbatim -*> EVEZTR is COMPLEX*16 array, dimension (LDU, max(NN)) +*> EVECTR is COMPLEX*16 array, dimension (LDU, max(NN)) *> The (upper triangular) right eigenvector matrix for the *> matrices in S1 and P1. *> \endverbatim diff --git a/TESTING/EIG/zchkhb.f b/TESTING/EIG/zchkhb.f index 3e37f7cf..72103636 100644 --- a/TESTING/EIG/zchkhb.f +++ b/TESTING/EIG/zchkhb.f @@ -185,7 +185,7 @@ *> *> \param[in,out] A *> \verbatim -*> A is DOUBLE PRECISION array, dimension +*> A is COMPLEX*16 array, dimension *> (LDA, max(NN)) *> Used to hold the matrix whose eigenvalues are to be *> computed. @@ -214,7 +214,7 @@ *> *> \param[out] U *> \verbatim -*> U is DOUBLE PRECISION array, dimension (LDU, max(NN)) +*> U is COMPLEX*16 array, dimension (LDU, max(NN)) *> Used to hold the unitary matrix computed by ZHBTRD. *> \endverbatim *> @@ -227,7 +227,7 @@ *> *> \param[out] WORK *> \verbatim -*> WORK is DOUBLE PRECISION array, dimension (LWORK) +*> WORK is COMPLEX*16 array, dimension (LWORK) *> \endverbatim *> *> \param[in] LWORK @@ -237,6 +237,11 @@ *> max( LDA+1, max(NN)+1 )*max(NN). *> \endverbatim *> +*> \param[out] RWORK +*> \verbatim +*> RWORK is DOUBLE PRECISION array +*> \endverbatim +*> *> \param[out] RESULT *> \verbatim *> RESULT is DOUBLE PRECISION array, dimension (4) diff --git a/TESTING/EIG/zchkst.f b/TESTING/EIG/zchkst.f index 00d7271e..0e0b8dbb 100644 --- a/TESTING/EIG/zchkst.f +++ b/TESTING/EIG/zchkst.f @@ -387,6 +387,64 @@ *> eigenvalues in D3 correspond with the matrix in A. *> \endverbatim *> +*> \param[out] D4 +*> \verbatim +*> D4 is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> The eigenvalues of A, as computed by ZPTEQR(V). +*> ZPTEQR factors S as Z4 D4 Z4* +*> On exit, the eigenvalues in D4 correspond with the matrix in A. +*> \endverbatim +*> +*> \param[out] D5 +*> \verbatim +*> D5 is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> The eigenvalues of A, as computed by ZPTEQR(N) +*> when Z is not computed. On exit, the +*> eigenvalues in D4 correspond with the matrix in A. +*> \endverbatim +*> +*> \param[out] WA1 +*> \verbatim +*> WA1 is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> All eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by DSTEBZ. +*> \endverbatim +*> +*> \param[out] WA2 +*> \verbatim +*> WA2 is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> Selected eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by DSTEBZ. +*> Choose random values for IL and IU, and ask for the +*> IL-th through IU-th eigenvalues. +*> \endverbatim +*> +*> \param[out] WA3 +*> \verbatim +*> WA3 is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> Selected eigenvalues of A, computed to high +*> absolute accuracy, with different range options. +*> as computed by DSTEBZ. +*> Determine the values VL and VU of the IL-th and IU-th +*> eigenvalues and ask for all eigenvalues in this range. +*> \endverbatim +*> +*> \param[out] WR +*> \verbatim +*> WR is DOUBLE PRECISION array of +*> dimension( max(NN) ) +*> All eigenvalues of A, computed to high +*> absolute accuracy, with different options. +*> as computed by DSTEBZ. +*> \endverbatim +*> *> \param[out] U *> \verbatim *> U is COMPLEX*16 array of @@ -455,15 +513,26 @@ *> \param[out] IWORK *> \verbatim *> IWORK is INTEGER array, -*> dimension (6 + 6*Nmax + 5 * Nmax * lg Nmax ) -*> where Nmax = max( NN(j), 2 ) and lg = log base 2. *> Workspace. *> \endverbatim *> +*> \param[out] LIWORK +*> \verbatim +*> LIWORK is INTEGER +*> The number of entries in IWORK. This must be at least +*> 6 + 6*Nmax + 5 * Nmax * lg Nmax +*> where Nmax = max( NN(j), 2 ) and lg = log base 2. +*> \endverbatim +*> *> \param[out] RWORK *> \verbatim -*> RWORK is DOUBLE PRECISION array of -*> dimension( ??? ) +*> RWORK is DOUBLE PRECISION array +*> \endverbatim +*> +*> \param[in] LRWORK +*> \verbatim +*> LRWORK is INTEGER +*> The number of entries in LRWORK (dimension( ??? ) *> \endverbatim *> *> \param[out] RESULT diff --git a/TESTING/EIG/zdrgvx.f b/TESTING/EIG/zdrgvx.f index 86e32712..99fe8597 100644 --- a/TESTING/EIG/zdrgvx.f +++ b/TESTING/EIG/zdrgvx.f @@ -262,9 +262,9 @@ *> LIWORK is INTEGER *> Leading dimension of IWORK. LIWORK >= N+2. *> \endverbatim -*> \verbatim *> *> \param[out] RESULT +*> \verbatim *> RESULT is DOUBLE PRECISION array, dimension (4) *> \endverbatim *> diff --git a/TESTING/EIG/zdrvbd.f b/TESTING/EIG/zdrvbd.f index fa6b8e04..d88ceb0b 100644 --- a/TESTING/EIG/zdrvbd.f +++ b/TESTING/EIG/zdrvbd.f @@ -181,13 +181,6 @@ *> or the size of the matrix. It must be at least zero. *> \endverbatim *> -*> \param[in] NOUNIT -*> \verbatim -*> NOUNIT is INTEGER -*> The FORTRAN unit number for printing out error messages -*> (e.g., if a routine returns IINFO not equal to 0.) -*> \endverbatim -*> *> \param[out] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,max(NN)) @@ -297,12 +290,11 @@ *> IWORK is INTEGER array, dimension at least 8*min(M,N) *> \endverbatim *> -*> \param[out] RESULT +*> \param[in] NOUNIT *> \verbatim -*> RESULT is DOUBLE PRECISION array, dimension (7) -*> The values computed by the 7 tests described above. -*> The values are currently limited to 1/ULP, to avoid -*> overflow. +*> NOUNIT is INTEGER +*> The FORTRAN unit number for printing out error messages +*> (e.g., if a routine returns IINFO not equal to 0.) *> \endverbatim *> *> \param[out] INFO diff --git a/TESTING/EIG/zdrves.f b/TESTING/EIG/zdrves.f index ab14b840..9f6f1423 100644 --- a/TESTING/EIG/zdrves.f +++ b/TESTING/EIG/zdrves.f @@ -318,6 +318,11 @@ *> IWORK is INTEGER array, dimension (max(NN)) *> \endverbatim *> +*> \param[out] BWORK +*> \verbatim +*> BWORK is LOGICAL array, dimension (max(NN)) +*> \endverbatim +*> *> \param[out] INFO *> \verbatim *> INFO is INTEGER diff --git a/TESTING/EIG/zdrvvx.f b/TESTING/EIG/zdrvvx.f index e1125b7a..e9794cf2 100644 --- a/TESTING/EIG/zdrvvx.f +++ b/TESTING/EIG/zdrvvx.f @@ -361,12 +361,60 @@ *> Leading dimension of LRE. Must be at least max(1,max(NN,12)) *> \endverbatim *> -*> \param[out] RESULT +*> \param[out] RCONDV *> \verbatim -*> RESULT is DOUBLE PRECISION array, dimension (11) -*> The values computed by the seven tests described above. -*> The values are currently limited to 1/ulp, to avoid -*> overflow. +*> RCONDV is DOUBLE PRECISION array, dimension (N) +*> RCONDV holds the computed reciprocal condition numbers +*> for eigenvectors. +*> \endverbatim +*> +*> \param[out] RCNDV1 +*> \verbatim +*> RCNDV1 is DOUBLE PRECISION array, dimension (N) +*> RCNDV1 holds more computed reciprocal condition numbers +*> for eigenvectors. +*> \endverbatim +*> +*> \param[in] RCDVIN +*> \verbatim +*> RCDVIN is DOUBLE PRECISION array, dimension (N) +*> When COMP = .TRUE. RCDVIN holds the precomputed reciprocal +*> condition numbers for eigenvectors to be compared with +*> RCONDV. +*> \endverbatim +*> +*> \param[out] RCONDE +*> \verbatim +*> RCONDE is DOUBLE PRECISION array, dimension (N) +*> RCONDE holds the computed reciprocal condition numbers +*> for eigenvalues. +*> \endverbatim +*> +*> \param[out] RCNDE1 +*> \verbatim +*> RCNDE1 is DOUBLE PRECISION array, dimension (N) +*> RCNDE1 holds more computed reciprocal condition numbers +*> for eigenvalues. +*> \endverbatim +*> +*> \param[in] RCDEIN +*> \verbatim +*> RCDEIN is DOUBLE PRECISION array, dimension (N) +*> When COMP = .TRUE. RCDEIN holds the precomputed reciprocal +*> condition numbers for eigenvalues to be compared with +*> RCONDE. +*> \endverbatim +*> +*> \param[out] SCALE +*> \verbatim +*> SCALE is DOUBLE PRECISION array, dimension (N) +*> Holds information describing balancing of matrix. +*> \endverbatim +*> +*> \param[out] SCALE1 +*> \verbatim +*> SCALE1 is DOUBLE PRECISION array, dimension (N) +*> Holds information describing balancing of matrix. *> \endverbatim *> *> \param[out] WORK @@ -374,6 +422,14 @@ *> WORK is COMPLEX*16 array, dimension (NWORK) *> \endverbatim *> +*> \param[out] RESULT +*> \verbatim +*> RESULT is DOUBLE PRECISION array, dimension (11) +*> The values computed by the seven tests described above. +*> The values are currently limited to 1/ulp, to avoid +*> overflow. +*> \endverbatim +*> *> \param[in] NWORK *> \verbatim *> NWORK is INTEGER diff --git a/TESTING/EIG/zget22.f b/TESTING/EIG/zget22.f index 804b9352..9f2f1cb7 100644 --- a/TESTING/EIG/zget22.f +++ b/TESTING/EIG/zget22.f @@ -121,6 +121,13 @@ *> RWORK is DOUBLE PRECISION array, dimension (N) *> \endverbatim *> +*> \param[out] RESULT +*> \verbatim +*> RESULT is DOUBLE PRECISION array, dimension (2) +*> RESULT(1) = | A E - E W | / ( |A| |E| ulp ) +*> RESULT(2) = max | m-norm(E(j)) - 1 | / ( n ulp ) +*> \endverbatim +*> * * Authors * ======= diff --git a/TESTING/EIG/zlctsx.f b/TESTING/EIG/zlctsx.f index 756e79e0..7624ed5f 100644 --- a/TESTING/EIG/zlctsx.f +++ b/TESTING/EIG/zlctsx.f @@ -33,13 +33,16 @@ *> \param[in] ALPHA *> \verbatim *> ALPHA is COMPLEX*16 +*> \endverbatim +*> *> \param[in] BETA *> \verbatim *> BETA is COMPLEX*16 +*> \endverbatim +*> \verbatim *> parameters to decide whether the pair (ALPHA, BETA) is *> selected. *> \endverbatim -*> \endverbatim *> * * Authors diff --git a/TESTING/LIN/Makefile b/TESTING/LIN/Makefile index 4e531708..7c10bb2c 100644 --- a/TESTING/LIN/Makefile +++ b/TESTING/LIN/Makefile @@ -241,46 +241,76 @@ proto-double: ../xlintstds ../xlintstrfd proto-complex: ../xlintstrfc proto-complex16: ../xlintstzc ../xlintstrfz -../xlintsts : $(ALINTST) $(SLINTST) $(SCLNTST) ../../$(LAPACKLIB) +xlintsts : $(ALINTST) $(SLINTST) $(SCLNTST) ../../$(LAPACKLIB) $(LOADER) $(LOADOPTS) $(ALINTST) $(SCLNTST) $(SLINTST) \ - ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o xlintsts && mv xlintsts $@ + ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o $@ -../xlintstc : $(ALINTST) $(CLINTST) $(SCLNTST) ../../$(LAPACKLIB) +xlintstc : $(ALINTST) $(CLINTST) $(SCLNTST) ../../$(LAPACKLIB) $(LOADER) $(LOADOPTS) $(ALINTST) $(SCLNTST) $(CLINTST) \ - ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o xlintstc && mv xlintstc $@ + ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o $@ -../xlintstd : $(ALINTST) $(DLINTST) $(DZLNTST) ../../$(LAPACKLIB) +xlintstd : $(ALINTST) $(DLINTST) $(DZLNTST) ../../$(LAPACKLIB) $(LOADER) $(LOADOPTS) $^ \ - ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o xlintstd && mv xlintstd $@ + ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o $@ -../xlintstz : $(ALINTST) $(ZLINTST) $(DZLNTST) ../../$(LAPACKLIB) +xlintstz : $(ALINTST) $(ZLINTST) $(DZLNTST) ../../$(LAPACKLIB) $(LOADER) $(LOADOPTS) $(ALINTST) $(DZLNTST) $(ZLINTST) \ - ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o xlintstz && mv xlintstz $@ + ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o $@ -../xlintstds : $(DSLINTST) ../../$(LAPACKLIB) +xlintstds : $(DSLINTST) ../../$(LAPACKLIB) $(LOADER) $(LOADOPTS) $(DSLINTST) \ - ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstds && mv xlintstds $@ + ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@ -../xlintstzc : $(ZCLINTST) ../../$(LAPACKLIB) +xlintstzc : $(ZCLINTST) ../../$(LAPACKLIB) $(LOADER) $(LOADOPTS) $(ZCLINTST) \ - ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstzc && mv xlintstzc $@ + ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@ -../xlintstrfs : $(SLINTSTRFP) ../../$(LAPACKLIB) +xlintstrfs : $(SLINTSTRFP) ../../$(LAPACKLIB) $(LOADER) $(LOADOPTS) $(SLINTSTRFP) \ - ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstrfs && mv xlintstrfs $@ + ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@ -../xlintstrfd : $(DLINTSTRFP) ../../$(LAPACKLIB) +xlintstrfd : $(DLINTSTRFP) ../../$(LAPACKLIB) $(LOADER) $(LOADOPTS) $(DLINTSTRFP) \ - ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstrfd && mv xlintstrfd $@ + ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@ -../xlintstrfc : $(CLINTSTRFP) ../../$(LAPACKLIB) +xlintstrfc : $(CLINTSTRFP) ../../$(LAPACKLIB) $(LOADER) $(LOADOPTS) $(CLINTSTRFP) \ - ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstrfc && mv xlintstrfc $@ + ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@ -../xlintstrfz : $(ZLINTSTRFP) ../../$(LAPACKLIB) +xlintstrfz : $(ZLINTSTRFP) ../../$(LAPACKLIB) $(LOADER) $(LOADOPTS) $(ZLINTSTRFP) \ - ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstrfz && mv xlintstrfz $@ + ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@ +../xlintsts: xlintsts + mv xlintsts $@ + +../xlintstc: xlintstc + mv xlintstc $@ + +../xlintstz: xlintstz + mv xlintstz $@ + +../xlintstd: xlintstd + mv xlintstd $@ + +../xlintstds: xlintstds + mv xlintstds $@ + +../xlintstzc: xlintstzc + mv xlintstzc $@ + +../xlintstrfs: xlintstrfs + mv xlintstrfs $@ + +../xlintstrfc: xlintstrfc + mv xlintstrfc $@ + +../xlintstrfd: xlintstrfd + mv xlintstrfd $@ + +../xlintstrfz: xlintstrfz + mv xlintstrfz $@ + $(ALINTST): $(FRC) $(SCLNTST): $(FRC) $(DZLNTST): $(FRC) diff --git a/TESTING/LIN/cchkge.f b/TESTING/LIN/cchkge.f index 926339cd..679e133e 100644 --- a/TESTING/LIN/cchkge.f +++ b/TESTING/LIN/cchkge.f @@ -95,13 +95,6 @@ *> The values of the number of right hand sides NRHS. *> \endverbatim *> -*> \param[in] NRHS -*> \verbatim -*> NRHS is INTEGER -*> The number of right hand side vectors to be generated for -*> each linear system. -*> \endverbatim -*> *> \param[in] THRESH *> \verbatim *> THRESH is REAL diff --git a/TESTING/LIN/cdrvgt.f b/TESTING/LIN/cdrvgt.f index 044f0520..7b671f41 100644 --- a/TESTING/LIN/cdrvgt.f +++ b/TESTING/LIN/cdrvgt.f @@ -57,6 +57,12 @@ *> The values of the matrix dimension N. *> \endverbatim *> +*> \param[in] NRHS +*> \verbatim +*> NRHS is INTEGER +*> The number of right hand sides, NRHS >= 0. +*> \endverbatim +*> *> \param[in] THRESH *> \verbatim *> THRESH is REAL diff --git a/TESTING/LIN/cdrvrf2.f b/TESTING/LIN/cdrvrf2.f index 542bb85c..92942e7a 100644 --- a/TESTING/LIN/cdrvrf2.f +++ b/TESTING/LIN/cdrvrf2.f @@ -70,9 +70,9 @@ *> AP is COMPLEX array, dimension ((NMAX*(NMAX+1))/2). *> \endverbatim *> -*> \param[out] A2 +*> \param[out] ASAV *> \verbatim -*> A2 is COMPLEX6 array, dimension (LDA,NMAX) +*> ASAV is COMPLEX6 array, dimension (LDA,NMAX) *> \endverbatim *> * diff --git a/TESTING/LIN/cebchvxx.f b/TESTING/LIN/cebchvxx.f index 91002573..4c2096f4 100644 --- a/TESTING/LIN/cebchvxx.f +++ b/TESTING/LIN/cebchvxx.f @@ -8,84 +8,103 @@ * Definition * ========== * -* SUBROUTINE CEBCHVXX( THRESH, PATH ) -* -* .. Scalar Arguments .. -* REAL THRESH -* CHARACTER*3 PATH -* +* SUBROUTINE CEBCHVXX( THRESH, PATH ) +* +* .. Scalar Arguments .. +* REAL THRESH +* CHARACTER*3 PATH +* .. +* * Purpose -* ======= +* ====== * *>\details \b Purpose: *>\verbatim -*> Purpose -*> ====== +*> CEBCHVXX will run CGESVXX on a series of Hilbert matrices and then +*> compare the error bounds returned by CGESVXX to see if the returned +*> answer indeed falls within those bounds. *> -*> CEBCHVXX will run CGESVXX on a series of Hilbert matrices and then -*> compare the error bounds returned by CGESVXX to see if the returned -*> answer indeed falls within those bounds. +*> Eight test ratios will be computed. The tests will pass if they are .LT. +*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS). +*> If that value is .LE. to the component wise reciprocal condition number, +*> it uses the guaranteed case, other wise it uses the unguaranteed case. *> -*> Eight test ratios will be computed. The tests will pass if they are .LT. -*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS). -*> If that value is .LE. to the component wise reciprocal condition number, -*> it uses the guaranteed case, other wise it uses the unguaranteed case. +*> Test ratios: +*> Let Xc be X_computed and Xt be X_truth. +*> The norm used is the infinity norm. *> -*> Test ratios: -*> Let Xc be X_computed and Xt be X_truth. -*> The norm used is the infinity norm. - -*> Let A be the guaranteed case and B be the unguaranteed case. +*> Let A be the guaranteed case and B be the unguaranteed case. +*> +*> 1. Normwise guaranteed forward error bound. +*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and +*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS. +*> If these conditions are met, the test ratio is set to be +*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. +*> B: For this case, CGESVXX should just return 1. If it is less than +*> one, treat it the same as in 1A. Otherwise it fails. (Set test +*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?) *> -*> 1. Normwise guaranteed forward error bound. -*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and -*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS. -*> If these conditions are met, the test ratio is set to be -*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. -*> B: For this case, CGESVXX should just return 1. If it is less than -*> one, treat it the same as in 1A. Otherwise it fails. (Set test -*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?) +*> 2. Componentwise guaranteed forward error bound. +*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i ) +*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS. +*> If these conditions are met, the test ratio is set to be +*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. +*> B: Same as normwise test ratio. *> -*> 2. Componentwise guaranteed forward error bound. -*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i ) -*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS. -*> If these conditions are met, the test ratio is set to be -*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. -*> B: Same as normwise test ratio. +*> 3. Backwards error. +*> A: The test ratio is set to BERR/EPS. +*> B: Same test ratio. *> -*> 3. Backwards error. -*> A: The test ratio is set to BERR/EPS. -*> B: Same test ratio. +*> 4. Reciprocal condition number. +*> A: A condition number is computed with Xt and compared with the one +*> returned from CGESVXX. Let RCONDc be the RCOND returned by CGESVXX +*> and RCONDt be the RCOND from the truth value. Test ratio is set to +*> MAX(RCONDc/RCONDt, RCONDt/RCONDc). +*> B: Test ratio is set to 1 / (EPS * RCONDc). *> -*> 4. Reciprocal condition number. -*> A: A condition number is computed with Xt and compared with the one -*> returned from CGESVXX. Let RCONDc be the RCOND returned by CGESVXX -*> and RCONDt be the RCOND from the truth value. Test ratio is set to -*> MAX(RCONDc/RCONDt, RCONDt/RCONDc). -*> B: Test ratio is set to 1 / (EPS * RCONDc). +*> 5. Reciprocal normwise condition number. +*> A: The test ratio is set to +*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )). +*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )). *> -*> 5. Reciprocal normwise condition number. -*> A: The test ratio is set to -*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )). -*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )). +*> 6. Reciprocal componentwise condition number. +*> A: Test ratio is set to +*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )). +*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )). *> -*> 6. Reciprocal componentwise condition number. -*> A: Test ratio is set to -*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )). -*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )). +*> .. Parameters .. +*> NMAX is determined by the largest number in the inverse of the hilbert +*> matrix. Precision is exhausted when the largest entry in it is greater +*> than 2 to the power of the number of bits in the fraction of the data +*> type used plus one, which is 24 for single precision. +*> NMAX should be 6 for single and 11 for double. +*> \endverbatim *> -*> .. Parameters .. -*> NMAX is determined by the largest number in the inverse of the hilbert -*> matrix. Precision is exhausted when the largest entry in it is greater -*> than 2 to the power of the number of bits in the fraction of the data -*> type used plus one, which is 24 for single precision. -*> NMAX should be 6 for single and 11 for double. +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex_lin +* +* ===================================================================== + SUBROUTINE CEBCHVXX( THRESH, PATH ) + IMPLICIT NONE +* .. Scalar Arguments .. + REAL THRESH + CHARACTER*3 PATH INTEGER NMAX, NPARAMS, NERRBND, NTESTS, KL, KU PARAMETER (NMAX = 6, NPARAMS = 2, NERRBND = 3, $ NTESTS = 6) -*> .. Local Scalars .. +* .. Local Scalars .. INTEGER N, NRHS, INFO, I ,J, k, NFAIL, LDA, $ N_AUX_TESTS, LDAB, LDAFB CHARACTER FACT, TRANS, UPLO, EQUED @@ -100,7 +119,7 @@ $ CONDTHRESH, ERRTHRESH COMPLEX ZDUM -*> .. Local Arrays .. +* .. Local Arrays .. REAL TSTRAT(NTESTS), RINV(NMAX), PARAMS(NPARAMS), $ S(NMAX), R(NMAX),C(NMAX),RWORK(3*NMAX), $ DIFF(NMAX, NMAX), @@ -113,30 +132,30 @@ $ ABCOPY( (NMAX-1)+(NMAX-1)+1, NMAX ), $ AFB( 2*(NMAX-1)+(NMAX-1)+1, NMAX ) -*> .. External Functions .. +* .. External Functions .. REAL SLAMCH -*> .. External Subroutines .. +* .. External Subroutines .. EXTERNAL CLAHILB, CGESVXX, CSYSVXX, CPOSVXX, $ CGBSVXX, CLACPY, LSAMEN LOGICAL LSAMEN -*> .. Intrinsic Functions .. +* .. Intrinsic Functions .. INTRINSIC SQRT, MAX, ABS, REAL, AIMAG -*> .. Statement Functions .. +* .. Statement Functions .. REAL CABS1 -*> .. -*> .. Statement Function Definitions .. +* .. +* .. Statement Function Definitions .. CABS1( ZDUM ) = ABS( REAL( ZDUM ) ) + ABS( AIMAG( ZDUM ) ) -*> .. Parameters .. +* .. Parameters .. INTEGER NWISE_I, CWISE_I PARAMETER (NWISE_I = 1, CWISE_I = 1) INTEGER BND_I, COND_I PARAMETER (BND_I = 2, COND_I = 3) -*> Create the loop to test out the Hilbert matrices +* Create the loop to test out the Hilbert matrices FACT = 'E' UPLO = 'U' @@ -150,7 +169,7 @@ LDAFB = 2*(NMAX-1)+(NMAX-1)+1 C2 = PATH( 2: 3 ) -*> Main loop to test the different Hilbert Matrices. +* Main loop to test the different Hilbert Matrices. printed_guide = .false. @@ -163,15 +182,15 @@ NRHS = n M = MAX(SQRT(REAL(N)), 10.0) -*> Generate the Hilbert matrix, its inverse, and the -*> right hand side, all scaled by the LCM(1,..,2N-1). +* Generate the Hilbert matrix, its inverse, and the +* right hand side, all scaled by the LCM(1,..,2N-1). CALL CLAHILB(N, N, A, LDA, INVHILB, LDA, B, $ LDA, WORK, INFO, PATH) -*> Copy A into ACOPY. +* Copy A into ACOPY. CALL CLACPY('ALL', N, N, A, NMAX, ACOPY, NMAX) -*> Store A in band format for GB tests +* Store A in band format for GB tests DO J = 1, N DO I = 1, KL+KU+1 AB( I, J ) = (0.0E+0,0.0E+0) @@ -183,7 +202,7 @@ END DO END DO -*> Copy AB into ABCOPY. +* Copy AB into ABCOPY. DO J = 1, N DO I = 1, KL+KU+1 ABCOPY( I, J ) = (0.0E+0,0.0E+0) @@ -191,7 +210,7 @@ END DO CALL CLACPY('ALL', KL+KU+1, N, AB, LDAB, ABCOPY, LDAB) -*> Call C**SVXX with default PARAMS and N_ERR_BND = 3. +* Call C**SVXX with default PARAMS and N_ERR_BND = 3. IF ( LSAMEN( 2, C2, 'SY' ) ) THEN CALL CSYSVXX(FACT, UPLO, N, NRHS, ACOPY, LDA, AF, LDA, $ IPIV, EQUED, S, B, LDA, X, LDA, ORCOND, @@ -237,14 +256,14 @@ END IF END IF -*> Calculating the difference between C**SVXX's X and the true X. +* Calculating the difference between C**SVXX's X and the true X. DO I = 1,N DO J =1,NRHS DIFF(I,J) = X(I,J) - INVHILB(I,J) END DO END DO -*> Calculating the RCOND +* Calculating the RCOND RNORM = 0 RINORM = 0 IF ( LSAMEN( 2, C2, 'PO' ) .OR. LSAMEN( 2, C2, 'SY' ) .OR. @@ -276,7 +295,7 @@ RNORM = RNORM / CABS1(A(1, 1)) RCOND = 1.0/(RNORM * RINORM) -*> Calculating the R for normwise rcond. +* Calculating the R for normwise rcond. DO I = 1, N RINV(I) = 0.0 END DO @@ -286,7 +305,7 @@ END DO END DO -*> Calculating the Normwise rcond. +* Calculating the Normwise rcond. RINORM = 0.0 DO I = 1, N SUMRI = 0.0 @@ -453,7 +472,7 @@ c$$$ WRITE(*,*) 'Reciprocal condition number: ',ERRBND(NRHS,cwise_i,cond c$$$ WRITE(*,*) 'Raw error estimate: ',ERRBND(NRHS,cwise_i,rawbnd_i) c$$$ print *, 'Info: ', info c$$$ WRITE(*,*) -*> WRITE(*,*) 'TSTRAT: ',TSTRAT +* WRITE(*,*) 'TSTRAT: ',TSTRAT END DO @@ -469,7 +488,7 @@ c$$$ WRITE(*,*) 9998 FORMAT( ' C', A2, 'SVXX: ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9997 FORMAT( ' C', A2, 'SVXX passed the tests of error bounds' ) -*> Test ratios. +* Test ratios. 9996 FORMAT( 3X, I2, ': Normwise guaranteed forward error', / 5X, $ 'Guaranteed case: if norm ( abs( Xc - Xt )', $ ' / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ), then', @@ -487,33 +506,3 @@ c$$$ WRITE(*,*) $ ', ORCOND = ', G12.5, ', real RCOND = ', G12.5 ) END -*>\endverbatim -* -* Arguments -* ========= -* -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex_lin -* -* ===================================================================== - SUBROUTINE CEBCHVXX( THRESH, PATH ) -* -* -- LAPACK test routine (input) -- -* -- LAPACK is a software package provided by Univ. of Tennessee, -- -* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2011 -* -* .. Scalar Arguments .. - REAL THRESH - CHARACTER*3 PATH -* diff --git a/TESTING/LIN/chet01.f b/TESTING/LIN/chet01.f index 4f7d4fb2..8725f6f0 100644 --- a/TESTING/LIN/chet01.f +++ b/TESTING/LIN/chet01.f @@ -92,8 +92,10 @@ *> \verbatim *> C is COMPLEX array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/LIN/chpt01.f b/TESTING/LIN/chpt01.f index d1eddf0f..d3ae6e0a 100644 --- a/TESTING/LIN/chpt01.f +++ b/TESTING/LIN/chpt01.f @@ -80,8 +80,10 @@ *> \verbatim *> C is COMPLEX array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/LIN/clahilb.f b/TESTING/LIN/clahilb.f index d0f2e162..d140b3b0 100644 --- a/TESTING/LIN/clahilb.f +++ b/TESTING/LIN/clahilb.f @@ -11,46 +11,114 @@ * SUBROUTINE CLAHILB(N, NRHS, A, LDA, X, LDX, B, LDB, WORK, * INFO, PATH) * -* ! .. Scalar Arguments .. +* .. Scalar Arguments .. * INTEGER T, N, NRHS, LDA, LDX, LDB, INFO -* ! .. Array Arguments .. +* .. Array Arguments .. * REAL WORK(N) * COMPLEX A(LDA,N), X(LDX, NRHS), B(LDB, NRHS) * CHARACTER*3 PATH -* ! .. -* ! +* .. +* * Purpose * ======= * *>\details \b Purpose: *>\verbatim -! Purpose -! ======= -! -! CLAHILB generates an N by N scaled Hilbert matrix in A along with -! NRHS right-hand sides in B and solutions in X such that A*X=B. -! -! The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all -! entries are integers. The right-hand sides are the first NRHS -! columns of M * the identity matrix, and the solutions are the -! first NRHS columns of the inverse Hilbert matrix. -! -! The condition number of the Hilbert matrix grows exponentially with -! its size, roughly as O(e ** (3.5*N)). Additionally, the inverse -! Hilbert matrices beyond a relatively small dimension cannot be -! generated exactly without extra precision. Precision is exhausted -! when the largest entry in the inverse Hilbert matrix is greater than -! 2 to the power of the number of bits in the fraction of the data type -! used plus one, which is 24 for single precision. -! -! In single, the generated solution is exact for N <= 6 and has -! small componentwise error for 7 <= N <= 11. -! +*> +*> CLAHILB generates an N by N scaled Hilbert matrix in A along with +*> NRHS right-hand sides in B and solutions in X such that A*X=B. +*> +*> The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all +*> entries are integers. The right-hand sides are the first NRHS +*> columns of M * the identity matrix, and the solutions are the +*> first NRHS columns of the inverse Hilbert matrix. +*> +*> The condition number of the Hilbert matrix grows exponentially with +*> its size, roughly as O(e ** (3.5*N)). Additionally, the inverse +*> Hilbert matrices beyond a relatively small dimension cannot be +*> generated exactly without extra precision. Precision is exhausted +*> when the largest entry in the inverse Hilbert matrix is greater than +*> 2 to the power of the number of bits in the fraction of the data type +*> used plus one, which is 24 for single precision. +*> +*> In single, the generated solution is exact for N <= 6 and has +*> small componentwise error for 7 <= N <= 11. +*> *>\endverbatim * * Arguments * ========= * +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The dimension of the matrix A. +*> \endverbatim +*> +*> \param[in] NRHS +*> \verbatim +*> NRHS is NRHS +*> The requested number of right-hand sides. +*> \endverbatim +*> +*> \param[out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA, N) +*> The generated scaled Hilbert matrix. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= N. +*> \endverbatim +*> +*> \param[out] X +*> \verbatim +*> X is COMPLEX array, dimension (LDX, NRHS) +*> The generated exact solutions. Currently, the first NRHS +*> columns of the inverse Hilbert matrix. +*> \endverbatim +*> +*> \param[in] LDX +*> \verbatim +*> LDX is INTEGER +*> The leading dimension of the array X. LDX >= N. +*> \endverbatim +*> +*> \param[out] B +*> \verbatim +*> B is REAL array, dimension (LDB, NRHS) +*> The generated right-hand sides. Currently, the first NRHS +*> columns of LCM(1, 2, ..., 2*N-1) * the identity matrix. +*> \endverbatim +*> +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER +*> The leading dimension of the array B. LDB >= N. +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> = 1: N is too large; the data is still generated but may not +*> be not exact. +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> +*> \param[in] PATH +*> \verbatim +*> PATH is CHARACTER*3 +*> The LAPACK path name. +*> \endverbatim +*> * * Authors * ======= @@ -73,33 +141,32 @@ * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * -! .. Scalar Arguments .. +* .. Scalar Arguments .. INTEGER T, N, NRHS, LDA, LDX, LDB, INFO -! .. Array Arguments .. +* .. Array Arguments .. REAL WORK(N) COMPLEX A(LDA,N), X(LDX, NRHS), B(LDB, NRHS) CHARACTER*3 PATH -! .. -! -! ===================================================================== - -! .. Local Scalars .. +* .. +* +* ===================================================================== +* .. Local Scalars .. INTEGER TM, TI, R INTEGER M INTEGER I, J COMPLEX TMP CHARACTER*2 C2 - -! .. Parameters .. -! NMAX_EXACT the largest dimension where the generated data is -! exact. -! NMAX_APPROX the largest dimension where the generated data has -! a small componentwise relative error. -! ??? complex uses how many bits ??? +* .. +* .. Parameters .. +* NMAX_EXACT the largest dimension where the generated data is +* exact. +* NMAX_APPROX the largest dimension where the generated data has +* a small componentwise relative error. +* ??? complex uses how many bits ??? INTEGER NMAX_EXACT, NMAX_APPROX, SIZE_D PARAMETER (NMAX_EXACT = 6, NMAX_APPROX = 11, SIZE_D = 8) - -! d's are generated from random permuation of those eight elements. +* +* d's are generated from random permuation of those eight elements. COMPLEX D1(8), D2(8), INVD1(8), INVD2(8) DATA D1 /(-1,0),(0,1),(-1,-1),(0,-1),(1,0),(-1,1),(1,1),(1,-1)/ DATA D2 /(-1,0),(0,-1),(-1,1),(0,1),(1,0),(-1,-1),(1,-1),(1,1)/ @@ -108,18 +175,17 @@ $ (-.5,-.5),(.5,-.5),(.5,.5)/ DATA INVD2 /(-1,0),(0,1),(-.5,-.5),(0,-1),(1,0), $ (-.5,.5),(.5,.5),(.5,-.5)/ - -! .. -! .. External Functions +* .. +* .. External Functions EXTERNAL CLASET, LSAMEN INTRINSIC REAL LOGICAL LSAMEN -! .. -! .. Executable Statements .. +* .. +* .. Executable Statements .. C2 = PATH( 2: 3 ) -! -! Test the input arguments -! +* +* Test the input arguments +* INFO = 0 IF (N .LT. 0 .OR. N .GT. NMAX_APPROX) THEN INFO = -1 @@ -139,9 +205,9 @@ IF (N .GT. NMAX_EXACT) THEN INFO = 1 END IF - -! Compute M = the LCM of the integers [1, 2*N-1]. The largest -! reasonable N is small enough that integers suffice (up to N = 11). +* +* Compute M = the LCM of the integers [1, 2*N-1]. The largest +* reasonable N is small enough that integers suffice (up to N = 11). M = 1 DO I = 2, (2*N-1) TM = M @@ -154,9 +220,9 @@ END DO M = (M / TI) * I END DO - -! Generate the scaled Hilbert matrix in A -! If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i* +* +* Generate the scaled Hilbert matrix in A +* If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i* IF ( LSAMEN( 2, C2, 'SY' ) ) THEN DO J = 1, N DO I = 1, N @@ -172,22 +238,22 @@ END DO END DO END IF - -! Generate matrix B as simply the first NRHS columns of M * the -! identity. +* +* Generate matrix B as simply the first NRHS columns of M * the +* identity. TMP = REAL(M) CALL CLASET('Full', N, NRHS, (0.0,0.0), TMP, B, LDB) - -! Generate the true solutions in X. Because B = the first NRHS -! columns of M*I, the true solutions are just the first NRHS columns -! of the inverse Hilbert matrix. +* +* Generate the true solutions in X. Because B = the first NRHS +* columns of M*I, the true solutions are just the first NRHS columns +* of the inverse Hilbert matrix. WORK(1) = N DO J = 2, N WORK(J) = ( ( (WORK(J-1)/(J-1)) * (J-1 - N) ) /(J-1) ) $ * (N +J -1) END DO - -! If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i* +* +* If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i* IF ( LSAMEN( 2, C2, 'SY' ) ) THEN DO J = 1, NRHS DO I = 1, N @@ -208,4 +274,4 @@ END DO END IF END - +
\ No newline at end of file diff --git a/TESTING/LIN/cpbt02.f b/TESTING/LIN/cpbt02.f index 0e3b3445..de13ff0a 100644 --- a/TESTING/LIN/cpbt02.f +++ b/TESTING/LIN/cpbt02.f @@ -59,6 +59,12 @@ *> or the number of sub-diagonals if UPLO = 'L'. KD >= 0. *> \endverbatim *> +*> \param[in] NRHS +*> \verbatim +*> NRHS is INTEGER +*> The number of right hand sides. NRHS >= 0. +*> \endverbatim +*> *> \param[in] A *> \verbatim *> A is COMPLEX array, dimension (LDA,N) diff --git a/TESTING/LIN/cpst01.f b/TESTING/LIN/cpst01.f index 5ffe51b3..7bef530b 100644 --- a/TESTING/LIN/cpst01.f +++ b/TESTING/LIN/cpst01.f @@ -115,6 +115,12 @@ *> If UPLO = 'U', norm(U'*U - A) / ( N * norm(A) * EPS ) *> \endverbatim *> +*> \param[in] RANK +*> \verbatim +*> RANK is INTEGER +*> number of nonzero singular values of A. +*> \endverbatim +*> * * Authors * ======= diff --git a/TESTING/LIN/cspt01.f b/TESTING/LIN/cspt01.f index 9a250f09..41ae25ad 100644 --- a/TESTING/LIN/cspt01.f +++ b/TESTING/LIN/cspt01.f @@ -79,8 +79,10 @@ *> \verbatim *> C is COMPLEX array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/LIN/cspt03.f b/TESTING/LIN/cspt03.f index 41096806..bd3d727e 100644 --- a/TESTING/LIN/cspt03.f +++ b/TESTING/LIN/cspt03.f @@ -68,13 +68,13 @@ *> *> \param[out] WORK *> \verbatim -*> WORK is COMPLEX array, dimension (LDWORK,N) +*> WORK is COMPLEX array, dimension (LDW,N) *> \endverbatim *> -*> \param[in] LDWORK +*> \param[in] LDW *> \verbatim -*> LDWORK is INTEGER -*> The leading dimension of the array WORK. LDWORK >= max(1,N). +*> LDW is INTEGER +*> The leading dimension of the array WORK. LDW >= max(1,N). *> \endverbatim *> *> \param[out] RWORK diff --git a/TESTING/LIN/csyt01.f b/TESTING/LIN/csyt01.f index c959c186..f5d314a9 100644 --- a/TESTING/LIN/csyt01.f +++ b/TESTING/LIN/csyt01.f @@ -91,8 +91,10 @@ *> \verbatim *> C is COMPLEX array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/LIN/ddrvgt.f b/TESTING/LIN/ddrvgt.f index ca2204a5..4820cb6d 100644 --- a/TESTING/LIN/ddrvgt.f +++ b/TESTING/LIN/ddrvgt.f @@ -56,6 +56,12 @@ *> The values of the matrix dimension N. *> \endverbatim *> +*> \param[in] NRHS +*> \verbatim +*> NRHS is INTEGER +*> The number of right hand sides, NRHS >= 0. +*> \endverbatim +*> *> \param[in] THRESH *> \verbatim *> THRESH is DOUBLE PRECISION diff --git a/TESTING/LIN/ddrvrf2.f b/TESTING/LIN/ddrvrf2.f index 0838733f..ecdf27bd 100644 --- a/TESTING/LIN/ddrvrf2.f +++ b/TESTING/LIN/ddrvrf2.f @@ -70,9 +70,9 @@ *> AP is DOUBLE PRECISION array, dimension ((NMAX*(NMAX+1))/2). *> \endverbatim *> -*> \param[out] A2 +*> \param[out] ASAV *> \verbatim -*> A2 is DOUBLE PRECISION array, dimension (LDA,NMAX) +*> ASAV is DOUBLE PRECISION array, dimension (LDA,NMAX) *> \endverbatim *> * diff --git a/TESTING/LIN/debchvxx.f b/TESTING/LIN/debchvxx.f index 42389dd3..69bf58c7 100644 --- a/TESTING/LIN/debchvxx.f +++ b/TESTING/LIN/debchvxx.f @@ -8,84 +8,103 @@ * Definition * ========== * -* SUBROUTINE DEBCHVXX( THRESH, PATH ) -* -* .. Scalar Arguments .. -* DOUBLE PRECISION THRESH -* CHARACTER*3 PATH -* +* SUBROUTINE DEBCHVXX( THRESH, PATH ) +* +* .. Scalar Arguments .. +* DOUBLE PRECISION THRESH +* CHARACTER*3 PATH +* .. +* * Purpose * ======= * *>\details \b Purpose: *>\verbatim -*> Purpose -*> ====== +*> DEBCHVXX will run D**SVXX on a series of Hilbert matrices and then +*> compare the error bounds returned by D**SVXX to see if the returned +*> answer indeed falls within those bounds. *> -*> DEBCHVXX will run D**SVXX on a series of Hilbert matrices and then -*> compare the error bounds returned by D**SVXX to see if the returned -*> answer indeed falls within those bounds. +*> Eight test ratios will be computed. The tests will pass if they are .LT. +*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS). +*> If that value is .LE. to the component wise reciprocal condition number, +*> it uses the guaranteed case, other wise it uses the unguaranteed case. *> -*> Eight test ratios will be computed. The tests will pass if they are .LT. -*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS). -*> If that value is .LE. to the component wise reciprocal condition number, -*> it uses the guaranteed case, other wise it uses the unguaranteed case. +*> Test ratios: +*> Let Xc be X_computed and Xt be X_truth. +*> The norm used is the infinity norm. *> -*> Test ratios: -*> Let Xc be X_computed and Xt be X_truth. -*> The norm used is the infinity norm. - -*> Let A be the guaranteed case and B be the unguaranteed case. +*> Let A be the guaranteed case and B be the unguaranteed case. +*> +*> 1. Normwise guaranteed forward error bound. +*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and +*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS. +*> If these conditions are met, the test ratio is set to be +*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. +*> B: For this case, CGESVXX should just return 1. If it is less than +*> one, treat it the same as in 1A. Otherwise it fails. (Set test +*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?) *> -*> 1. Normwise guaranteed forward error bound. -*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and -*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS. -*> If these conditions are met, the test ratio is set to be -*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. -*> B: For this case, CGESVXX should just return 1. If it is less than -*> one, treat it the same as in 1A. Otherwise it fails. (Set test -*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?) +*> 2. Componentwise guaranteed forward error bound. +*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i ) +*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS. +*> If these conditions are met, the test ratio is set to be +*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. +*> B: Same as normwise test ratio. *> -*> 2. Componentwise guaranteed forward error bound. -*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i ) -*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS. -*> If these conditions are met, the test ratio is set to be -*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. -*> B: Same as normwise test ratio. +*> 3. Backwards error. +*> A: The test ratio is set to BERR/EPS. +*> B: Same test ratio. *> -*> 3. Backwards error. -*> A: The test ratio is set to BERR/EPS. -*> B: Same test ratio. +*> 4. Reciprocal condition number. +*> A: A condition number is computed with Xt and compared with the one +*> returned from CGESVXX. Let RCONDc be the RCOND returned by D**SVXX +*> and RCONDt be the RCOND from the truth value. Test ratio is set to +*> MAX(RCONDc/RCONDt, RCONDt/RCONDc). +*> B: Test ratio is set to 1 / (EPS * RCONDc). *> -*> 4. Reciprocal condition number. -*> A: A condition number is computed with Xt and compared with the one -*> returned from CGESVXX. Let RCONDc be the RCOND returned by D**SVXX -*> and RCONDt be the RCOND from the truth value. Test ratio is set to -*> MAX(RCONDc/RCONDt, RCONDt/RCONDc). -*> B: Test ratio is set to 1 / (EPS * RCONDc). +*> 5. Reciprocal normwise condition number. +*> A: The test ratio is set to +*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )). +*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )). *> -*> 5. Reciprocal normwise condition number. -*> A: The test ratio is set to -*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )). -*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )). +*> 6. Reciprocal componentwise condition number. +*> A: Test ratio is set to +*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )). +*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )). *> -*> 6. Reciprocal componentwise condition number. -*> A: Test ratio is set to -*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )). -*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )). +*> .. Parameters .. +*> NMAX is determined by the largest number in the inverse of the hilbert +*> matrix. Precision is exhausted when the largest entry in it is greater +*> than 2 to the power of the number of bits in the fraction of the data +*> type used plus one, which is 24 for single precision. +*> NMAX should be 6 for single and 11 for double. +*> \endverbatim *> -*> .. Parameters .. -*> NMAX is determined by the largest number in the inverse of the hilbert -*> matrix. Precision is exhausted when the largest entry in it is greater -*> than 2 to the power of the number of bits in the fraction of the data -*> type used plus one, which is 24 for single precision. -*> NMAX should be 6 for single and 11 for double. +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup double_lin +* +* ===================================================================== + SUBROUTINE DEBCHVXX( THRESH, PATH ) + IMPLICIT NONE +* .. Scalar Arguments .. + DOUBLE PRECISION THRESH + CHARACTER*3 PATH INTEGER NMAX, NPARAMS, NERRBND, NTESTS, KL, KU PARAMETER (NMAX = 10, NPARAMS = 2, NERRBND = 3, $ NTESTS = 6) -*> .. Local Scalars .. +* .. Local Scalars .. INTEGER N, NRHS, INFO, I ,J, k, NFAIL, LDA, $ N_AUX_TESTS, LDAB, LDAFB CHARACTER FACT, TRANS, UPLO, EQUED @@ -99,7 +118,7 @@ $ CWISE_RCOND, NWISE_RCOND, $ CONDTHRESH, ERRTHRESH -*> .. Local Arrays .. +* .. Local Arrays .. DOUBLE PRECISION TSTRAT(NTESTS), RINV(NMAX), PARAMS(NPARAMS), $ S(NMAX),R(NMAX),C(NMAX), DIFF(NMAX, NMAX), $ ERRBND_N(NMAX*3), ERRBND_C(NMAX*3), @@ -111,24 +130,24 @@ $ ACOPY(NMAX, NMAX) INTEGER IPIV(NMAX), IWORK(3*NMAX) -*> .. External Functions .. +* .. External Functions .. DOUBLE PRECISION DLAMCH -*> .. External Subroutines .. +* .. External Subroutines .. EXTERNAL DLAHILB, DGESVXX, DPOSVXX, DSYSVXX, $ DGBSVXX, DLACPY, LSAMEN LOGICAL LSAMEN -*> .. Intrinsic Functions .. +* .. Intrinsic Functions .. INTRINSIC SQRT, MAX, ABS, DBLE -*> .. Parameters .. +* .. Parameters .. INTEGER NWISE_I, CWISE_I PARAMETER (NWISE_I = 1, CWISE_I = 1) INTEGER BND_I, COND_I PARAMETER (BND_I = 2, COND_I = 3) -*> Create the loop to test out the Hilbert matrices +* Create the loop to test out the Hilbert matrices FACT = 'E' UPLO = 'U' @@ -142,7 +161,7 @@ LDAFB = 2*(NMAX-1)+(NMAX-1)+1 C2 = PATH( 2: 3 ) -*> Main loop to test the different Hilbert Matrices. +* Main loop to test the different Hilbert Matrices. printed_guide = .false. @@ -155,14 +174,14 @@ NRHS = n M = MAX(SQRT(DBLE(N)), 10.0D+0) -*> Generate the Hilbert matrix, its inverse, and the -*> right hand side, all scaled by the LCM(1,..,2N-1). +* Generate the Hilbert matrix, its inverse, and the +* right hand side, all scaled by the LCM(1,..,2N-1). CALL DLAHILB(N, N, A, LDA, INVHILB, LDA, B, LDA, WORK, INFO) -*> Copy A into ACOPY. +* Copy A into ACOPY. CALL DLACPY('ALL', N, N, A, NMAX, ACOPY, NMAX) -*> Store A in band format for GB tests +* Store A in band format for GB tests DO J = 1, N DO I = 1, KL+KU+1 AB( I, J ) = 0.0D+0 @@ -174,7 +193,7 @@ END DO END DO -*> Copy AB into ABCOPY. +* Copy AB into ABCOPY. DO J = 1, N DO I = 1, KL+KU+1 ABCOPY( I, J ) = 0.0D+0 @@ -182,7 +201,7 @@ END DO CALL DLACPY('ALL', KL+KU+1, N, AB, LDAB, ABCOPY, LDAB) -*> Call D**SVXX with default PARAMS and N_ERR_BND = 3. +* Call D**SVXX with default PARAMS and N_ERR_BND = 3. IF ( LSAMEN( 2, C2, 'SY' ) ) THEN CALL DSYSVXX(FACT, UPLO, N, NRHS, ACOPY, LDA, AF, LDA, $ IPIV, EQUED, S, B, LDA, X, LDA, ORCOND, @@ -223,14 +242,14 @@ END IF END IF -*> Calculating the difference between D**SVXX's X and the true X. +* Calculating the difference between D**SVXX's X and the true X. DO I = 1,N DO J =1,NRHS DIFF(I,J) = X(I,J) - INVHILB(I,J) END DO END DO -*> Calculating the RCOND +* Calculating the RCOND RNORM = 0.0D+0 RINORM = 0.0D+0 IF ( LSAMEN( 2, C2, 'PO' ) .OR. LSAMEN( 2, C2, 'SY' ) ) THEN @@ -262,7 +281,7 @@ RNORM = RNORM / ABS(A(1, 1)) RCOND = 1.0D+0/(RNORM * RINORM) -*> Calculating the R for normwise rcond. +* Calculating the R for normwise rcond. DO I = 1, N RINV(I) = 0.0D+0 END DO @@ -272,7 +291,7 @@ END DO END DO -*> Calculating the Normwise rcond. +* Calculating the Normwise rcond. RINORM = 0.0D+0 DO I = 1, N SUMRI = 0.0D+0 @@ -439,7 +458,7 @@ c$$$ WRITE(*,*) 'Reciprocal condition number: ',ERRBND(NRHS,cwise_i,cond c$$$ WRITE(*,*) 'Raw error estimate: ',ERRBND(NRHS,cwise_i,rawbnd_i) c$$$ print *, 'Info: ', info c$$$ WRITE(*,*) -*> WRITE(*,*) 'TSTRAT: ',TSTRAT +* WRITE(*,*) 'TSTRAT: ',TSTRAT END DO @@ -455,7 +474,7 @@ c$$$ WRITE(*,*) 9998 FORMAT( ' D', A2, 'SVXX: ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9997 FORMAT( ' D', A2, 'SVXX passed the tests of error bounds' ) -*> Test ratios. +* Test ratios. 9996 FORMAT( 3X, I2, ': Normwise guaranteed forward error', / 5X, $ 'Guaranteed case: if norm ( abs( Xc - Xt )', $ ' / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ), then', @@ -473,33 +492,3 @@ c$$$ WRITE(*,*) $ ', ORCOND = ', G12.5, ', real RCOND = ', G12.5 ) END -*>\endverbatim -* -* Arguments -* ========= -* -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup double_lin -* -* ===================================================================== - SUBROUTINE DEBCHVXX( THRESH, PATH ) -* -* -- LAPACK test routine (input) -- -* -- LAPACK is a software package provided by Univ. of Tennessee, -- -* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2011 -* -* .. Scalar Arguments .. - DOUBLE PRECISION THRESH - CHARACTER*3 PATH -* diff --git a/TESTING/LIN/dgtt01.f b/TESTING/LIN/dgtt01.f index 22673b1d..6fc036c0 100644 --- a/TESTING/LIN/dgtt01.f +++ b/TESTING/LIN/dgtt01.f @@ -82,9 +82,9 @@ *> The (n-1) elements of the first super-diagonal of U. *> \endverbatim *> -*> \param[in] DU2F +*> \param[in] DU2 *> \verbatim -*> DU2F is DOUBLE PRECISION array, dimension (N-2) +*> DU2 is DOUBLE PRECISION array, dimension (N-2) *> The (n-2) elements of the second super-diagonal of U. *> \endverbatim *> diff --git a/TESTING/LIN/dlahilb.f b/TESTING/LIN/dlahilb.f index 9ab5498f..a4922e8a 100644 --- a/TESTING/LIN/dlahilb.f +++ b/TESTING/LIN/dlahilb.f @@ -10,44 +10,106 @@ * * SUBROUTINE DLAHILB(N, NRHS, A, LDA, X, LDX, B, LDB, WORK, INFO) * -* ! .. Scalar Arguments .. +* .. Scalar Arguments .. * INTEGER N, NRHS, LDA, LDX, LDB, INFO -* ! .. Array Arguments .. +* .. Array Arguments .. * DOUBLE PRECISION A(LDA, N), X(LDX, NRHS), B(LDB, NRHS), WORK(N) -* ! .. -* ! +* .. +* * Purpose * ======= * *>\details \b Purpose: *>\verbatim -! Purpose -! ======= -! -! DLAHILB generates an N by N scaled Hilbert matrix in A along with -! NRHS right-hand sides in B and solutions in X such that A*X=B. -! -! The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all -! entries are integers. The right-hand sides are the first NRHS -! columns of M * the identity matrix, and the solutions are the -! first NRHS columns of the inverse Hilbert matrix. -! -! The condition number of the Hilbert matrix grows exponentially with -! its size, roughly as O(e ** (3.5*N)). Additionally, the inverse -! Hilbert matrices beyond a relatively small dimension cannot be -! generated exactly without extra precision. Precision is exhausted -! when the largest entry in the inverse Hilbert matrix is greater than -! 2 to the power of the number of bits in the fraction of the data type -! used plus one, which is 24 for single precision. -! -! In single, the generated solution is exact for N <= 6 and has -! small componentwise error for 7 <= N <= 11. -! +*> +*> DLAHILB generates an N by N scaled Hilbert matrix in A along with +*> NRHS right-hand sides in B and solutions in X such that A*X=B. +*> +*> The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all +*> entries are integers. The right-hand sides are the first NRHS +*> columns of M * the identity matrix, and the solutions are the +*> first NRHS columns of the inverse Hilbert matrix. +*> +*> The condition number of the Hilbert matrix grows exponentially with +*> its size, roughly as O(e ** (3.5*N)). Additionally, the inverse +*> Hilbert matrices beyond a relatively small dimension cannot be +*> generated exactly without extra precision. Precision is exhausted +*> when the largest entry in the inverse Hilbert matrix is greater than +*> 2 to the power of the number of bits in the fraction of the data type +*> used plus one, which is 24 for single precision. +*> +*> In single, the generated solution is exact for N <= 6 and has +*> small componentwise error for 7 <= N <= 11. +*> *>\endverbatim * * Arguments * ========= * +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The dimension of the matrix A. +*> \endverbatim +*> +*> \param[in] NRHS +*> \verbatim +*> NRHS is NRHS +*> The requested number of right-hand sides. +*> \endverbatim +*> +*> \param[out] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (LDA, N) +*> The generated scaled Hilbert matrix. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= N. +*> \endverbatim +*> +*> \param[out] X +*> \verbatim +*> X is DOUBLE PRECISION array, dimension (LDX, NRHS) +*> The generated exact solutions. Currently, the first NRHS +*> columns of the inverse Hilbert matrix. +*> \endverbatim +*> +*> \param[in] LDX +*> \verbatim +*> LDX is INTEGER +*> The leading dimension of the array X. LDX >= N. +*> \endverbatim +*> +*> \param[out] B +*> \verbatim +*> B is DOUBLE PRECISION array, dimension (LDB, NRHS) +*> The generated right-hand sides. Currently, the first NRHS +*> columns of LCM(1, 2, ..., 2*N-1) * the identity matrix. +*> \endverbatim +*> +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER +*> The leading dimension of the array B. LDB >= N. +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is DOUBLE PRECISION array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> = 1: N is too large; the data is still generated but may not +*> be not exact. +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,37 +131,36 @@ * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * -! .. Scalar Arguments .. +* .. Scalar Arguments .. INTEGER N, NRHS, LDA, LDX, LDB, INFO -! .. Array Arguments .. +* .. Array Arguments .. DOUBLE PRECISION A(LDA, N), X(LDX, NRHS), B(LDB, NRHS), WORK(N) -! .. -! -! ===================================================================== - -! .. Local Scalars .. +* .. +* +* ===================================================================== +* .. Local Scalars .. INTEGER TM, TI, R INTEGER M INTEGER I, J COMPLEX*16 TMP - -! .. Parameters .. -! NMAX_EXACT the largest dimension where the generated data is -! exact. -! NMAX_APPROX the largest dimension where the generated data has -! a small componentwise relative error. +* .. +* .. Parameters .. +* NMAX_EXACT the largest dimension where the generated data is +* exact. +* NMAX_APPROX the largest dimension where the generated data has +* a small componentwise relative error. INTEGER NMAX_EXACT, NMAX_APPROX PARAMETER (NMAX_EXACT = 6, NMAX_APPROX = 11) -! .. -! .. External Functions +* .. +* .. External Functions EXTERNAL DLASET INTRINSIC DBLE -! .. -! .. Executable Statements .. -! -! Test the input arguments -! +* .. +* .. Executable Statements .. +* +* Test the input arguments +* INFO = 0 IF (N .LT. 0 .OR. N .GT. NMAX_APPROX) THEN INFO = -1 @@ -119,9 +180,9 @@ IF (N .GT. NMAX_EXACT) THEN INFO = 1 END IF - -! Compute M = the LCM of the integers [1, 2*N-1]. The largest -! reasonable N is small enough that integers suffice (up to N = 11). +* +* Compute M = the LCM of the integers [1, 2*N-1]. The largest +* reasonable N is small enough that integers suffice (up to N = 11). M = 1 DO I = 2, (2*N-1) TM = M @@ -134,33 +195,33 @@ END DO M = (M / TI) * I END DO - -! Generate the scaled Hilbert matrix in A +* +* Generate the scaled Hilbert matrix in A DO J = 1, N DO I = 1, N A(I, J) = DBLE(M) / (I + J - 1) END DO END DO - -! Generate matrix B as simply the first NRHS columns of M * the -! identity. +* +* Generate matrix B as simply the first NRHS columns of M * the +* identity. TMP = DBLE(M) CALL DLASET('Full', N, NRHS, 0.0D+0, TMP, B, LDB) - -! Generate the true solutions in X. Because B = the first NRHS -! columns of M*I, the true solutions are just the first NRHS columns -! of the inverse Hilbert matrix. +* +* Generate the true solutions in X. Because B = the first NRHS +* columns of M*I, the true solutions are just the first NRHS columns +* of the inverse Hilbert matrix. WORK(1) = N DO J = 2, N WORK(J) = ( ( (WORK(J-1)/(J-1)) * (J-1 - N) ) /(J-1) ) $ * (N +J -1) END DO - +* DO J = 1, NRHS DO I = 1, N X(I, J) = (WORK(I)*WORK(J)) / (I + J - 1) END DO END DO - +* END diff --git a/TESTING/LIN/dpbt02.f b/TESTING/LIN/dpbt02.f index d2af8356..8bac818a 100644 --- a/TESTING/LIN/dpbt02.f +++ b/TESTING/LIN/dpbt02.f @@ -59,6 +59,12 @@ *> or the number of sub-diagonals if UPLO = 'L'. KD >= 0. *> \endverbatim *> +*> \param[in] NRHS +*> \verbatim +*> NRHS is INTEGER +*> The number of right hand sides. NRHS >= 0. +*> \endverbatim +*> *> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) diff --git a/TESTING/LIN/dpst01.f b/TESTING/LIN/dpst01.f index 23d00749..252fe64f 100644 --- a/TESTING/LIN/dpst01.f +++ b/TESTING/LIN/dpst01.f @@ -113,6 +113,12 @@ *> If UPLO = 'U', norm(U'*U - A) / ( N * norm(A) * EPS ) *> \endverbatim *> +*> \param[in] RANK +*> \verbatim +*> RANK is INTEGER +*> number of nonzero singular values of A. +*> \endverbatim +*> * * Authors * ======= diff --git a/TESTING/LIN/dspt01.f b/TESTING/LIN/dspt01.f index 05d6a2c8..6941630a 100644 --- a/TESTING/LIN/dspt01.f +++ b/TESTING/LIN/dspt01.f @@ -77,8 +77,10 @@ *> \verbatim *> C is DOUBLE PRECISION array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/LIN/dsyt01.f b/TESTING/LIN/dsyt01.f index b4329034..585101cb 100644 --- a/TESTING/LIN/dsyt01.f +++ b/TESTING/LIN/dsyt01.f @@ -90,8 +90,10 @@ *> \verbatim *> C is DOUBLE PRECISION array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/LIN/ilaenv.f b/TESTING/LIN/ilaenv.f index 744d699e..6f9b3099 100644 --- a/TESTING/LIN/ilaenv.f +++ b/TESTING/LIN/ilaenv.f @@ -8,7 +8,7 @@ * Definition * ========== * -* INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, +* INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, * N4 ) * * .. Scalar Arguments .. @@ -63,8 +63,7 @@ *> computation tree in the divide-and-conquer algorithm *> =10: ieee NaN arithmetic can be trusted not to trap *> =11: infinity arithmetic can be trusted not to trap -*> \endverbatim -*> \verbatim +*> *> Other specifications (up to 100) can be added later. *> \endverbatim *> @@ -101,15 +100,14 @@ *> \param[in] N4 *> \verbatim *> N4 is INTEGER -*> \endverbatim -*> \verbatim +*> *> Problem dimensions for the subroutine NAME; these may not all *> be required. *> \endverbatim *> -*> \param[out] (ILAENV) +*> \return ILAENV *> \verbatim -*> (ILAENV) is INTEGER +*> ILAENV is INTEGER *> >= 0: the value of the parameter specified by ISPEC *> < 0: if ILAENV = -k, the k-th argument had an illegal value. *> \endverbatim diff --git a/TESTING/LIN/sdrvgt.f b/TESTING/LIN/sdrvgt.f index fc361c30..f46a42a9 100644 --- a/TESTING/LIN/sdrvgt.f +++ b/TESTING/LIN/sdrvgt.f @@ -56,6 +56,12 @@ *> The values of the matrix dimension N. *> \endverbatim *> +*> \param[in] NRHS +*> \verbatim +*> NRHS is INTEGER +*> The number of right hand sides, NRHS >= 0. +*> \endverbatim +*> *> \param[in] THRESH *> \verbatim *> THRESH is REAL diff --git a/TESTING/LIN/sdrvrf1.f b/TESTING/LIN/sdrvrf1.f index 1a8e9fe2..46d5d1d5 100644 --- a/TESTING/LIN/sdrvrf1.f +++ b/TESTING/LIN/sdrvrf1.f @@ -170,7 +170,9 @@ * N = NVAL( IIN ) * - DO 120 IIT = 1, 3 + DO 120 IIT = 1, 3 +* Nothing to do for N=0 + IF ( N .EQ. 0 ) EXIT * Quick Return if possible IF ( N .EQ. 0 ) EXIT diff --git a/TESTING/LIN/sdrvrf2.f b/TESTING/LIN/sdrvrf2.f index 32772464..024bb495 100644 --- a/TESTING/LIN/sdrvrf2.f +++ b/TESTING/LIN/sdrvrf2.f @@ -70,9 +70,9 @@ *> AP is REAL array, dimension ((NMAX*(NMAX+1))/2). *> \endverbatim *> -*> \param[out] A2 +*> \param[out] ASAV *> \verbatim -*> A2 is REAL array, dimension (LDA,NMAX) +*> ASAV is REAL array, dimension (LDA,NMAX) *> \endverbatim *> * diff --git a/TESTING/LIN/sebchvxx.f b/TESTING/LIN/sebchvxx.f index f25f315a..b29e17c2 100644 --- a/TESTING/LIN/sebchvxx.f +++ b/TESTING/LIN/sebchvxx.f @@ -8,84 +8,103 @@ * Definition * ========== * -* SUBROUTINE SEBCHVXX( THRESH, PATH ) -* -* .. Scalar Arguments .. -* REAL THRESH -* CHARACTER*3 PATH -* +* SUBROUTINE SEBCHVXX( THRESH, PATH ) +* +* .. Scalar Arguments .. +* REAL THRESH +* CHARACTER*3 PATH +* .. +* * Purpose * ======= * *>\details \b Purpose: *>\verbatim -*> Purpose -*> ====== +*> SEBCHVXX will run S**SVXX on a series of Hilbert matrices and then +*> compare the error bounds returned by SGESVXX to see if the returned +*> answer indeed falls within those bounds. *> -*> SEBCHVXX will run S**SVXX on a series of Hilbert matrices and then -*> compare the error bounds returned by SGESVXX to see if the returned -*> answer indeed falls within those bounds. +*> Eight test ratios will be computed. The tests will pass if they are .LT. +*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS). +*> If that value is .LE. to the component wise reciprocal condition number, +*> it uses the guaranteed case, other wise it uses the unguaranteed case. *> -*> Eight test ratios will be computed. The tests will pass if they are .LT. -*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS). -*> If that value is .LE. to the component wise reciprocal condition number, -*> it uses the guaranteed case, other wise it uses the unguaranteed case. +*> Test ratios: +*> Let Xc be X_computed and Xt be X_truth. +*> The norm used is the infinity norm. *> -*> Test ratios: -*> Let Xc be X_computed and Xt be X_truth. -*> The norm used is the infinity norm. - -*> Let A be the guaranteed case and B be the unguaranteed case. +*> Let A be the guaranteed case and B be the unguaranteed case. +*> +*> 1. Normwise guaranteed forward error bound. +*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and +*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS. +*> If these conditions are met, the test ratio is set to be +*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. +*> B: For this case, SGESVXX should just return 1. If it is less than +*> one, treat it the same as in 1A. Otherwise it fails. (Set test +*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?) *> -*> 1. Normwise guaranteed forward error bound. -*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and -*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS. -*> If these conditions are met, the test ratio is set to be -*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. -*> B: For this case, SGESVXX should just return 1. If it is less than -*> one, treat it the same as in 1A. Otherwise it fails. (Set test -*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?) +*> 2. Componentwise guaranteed forward error bound. +*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i ) +*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS. +*> If these conditions are met, the test ratio is set to be +*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. +*> B: Same as normwise test ratio. *> -*> 2. Componentwise guaranteed forward error bound. -*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i ) -*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS. -*> If these conditions are met, the test ratio is set to be -*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. -*> B: Same as normwise test ratio. +*> 3. Backwards error. +*> A: The test ratio is set to BERR/EPS. +*> B: Same test ratio. *> -*> 3. Backwards error. -*> A: The test ratio is set to BERR/EPS. -*> B: Same test ratio. +*> 4. Reciprocal condition number. +*> A: A condition number is computed with Xt and compared with the one +*> returned from SGESVXX. Let RCONDc be the RCOND returned by SGESVXX +*> and RCONDt be the RCOND from the truth value. Test ratio is set to +*> MAX(RCONDc/RCONDt, RCONDt/RCONDc). +*> B: Test ratio is set to 1 / (EPS * RCONDc). *> -*> 4. Reciprocal condition number. -*> A: A condition number is computed with Xt and compared with the one -*> returned from SGESVXX. Let RCONDc be the RCOND returned by SGESVXX -*> and RCONDt be the RCOND from the truth value. Test ratio is set to -*> MAX(RCONDc/RCONDt, RCONDt/RCONDc). -*> B: Test ratio is set to 1 / (EPS * RCONDc). +*> 5. Reciprocal normwise condition number. +*> A: The test ratio is set to +*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )). +*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )). *> -*> 5. Reciprocal normwise condition number. -*> A: The test ratio is set to -*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )). -*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )). +*> 7. Reciprocal componentwise condition number. +*> A: Test ratio is set to +*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )). +*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )). *> -*> 7. Reciprocal componentwise condition number. -*> A: Test ratio is set to -*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )). -*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )). +*> .. Parameters .. +*> NMAX is determined by the largest number in the inverse of the Hilbert +*> matrix. Precision is exhausted when the largest entry in it is greater +*> than 2 to the power of the number of bits in the fraction of the data +*> type used plus one, which is 24 for single precision. +*> NMAX should be 6 for single and 11 for double. +*> \endverbatim *> -*> .. Parameters .. -*> NMAX is determined by the largest number in the inverse of the Hilbert -*> matrix. Precision is exhausted when the largest entry in it is greater -*> than 2 to the power of the number of bits in the fraction of the data -*> type used plus one, which is 24 for single precision. -*> NMAX should be 6 for single and 11 for double. +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup single_lin +* +* ===================================================================== + SUBROUTINE SEBCHVXX( THRESH, PATH ) + IMPLICIT NONE +* .. Scalar Arguments .. + REAL THRESH + CHARACTER*3 PATH INTEGER NMAX, NPARAMS, NERRBND, NTESTS, KL, KU PARAMETER (NMAX = 6, NPARAMS = 2, NERRBND = 3, $ NTESTS = 6) -*> .. Local Scalars .. +* .. Local Scalars .. INTEGER N, NRHS, INFO, I ,J, k, NFAIL, LDA, LDAB, $ LDAFB, N_AUX_TESTS CHARACTER FACT, TRANS, UPLO, EQUED @@ -99,7 +118,7 @@ $ CWISE_RCOND, NWISE_RCOND, $ CONDTHRESH, ERRTHRESH -*> .. Local Arrays .. +* .. Local Arrays .. REAL TSTRAT(NTESTS), RINV(NMAX), PARAMS(NPARAMS), $ A(NMAX, NMAX), ACOPY(NMAX, NMAX), $ INVHILB(NMAX, NMAX), R(NMAX), C(NMAX), S(NMAX), @@ -111,24 +130,24 @@ $ ERRBND_N(NMAX*3), ERRBND_C(NMAX*3) INTEGER IWORK(NMAX), IPIV(NMAX) -*> .. External Functions .. +* .. External Functions .. REAL SLAMCH -*> .. External Subroutines .. +* .. External Subroutines .. EXTERNAL SLAHILB, SGESVXX, SSYSVXX, SPOSVXX, SGBSVXX, $ SLACPY, LSAMEN LOGICAL LSAMEN -*> .. Intrinsic Functions .. +* .. Intrinsic Functions .. INTRINSIC SQRT, MAX, ABS -*> .. Parameters .. +* .. Parameters .. INTEGER NWISE_I, CWISE_I PARAMETER (NWISE_I = 1, CWISE_I = 1) INTEGER BND_I, COND_I PARAMETER (BND_I = 2, COND_I = 3) -*> Create the loop to test out the Hilbert matrices +* Create the loop to test out the Hilbert matrices FACT = 'E' UPLO = 'U' @@ -142,7 +161,7 @@ LDAFB = 2*(NMAX-1)+(NMAX-1)+1 C2 = PATH( 2: 3 ) -*> Main loop to test the different Hilbert Matrices. +* Main loop to test the different Hilbert Matrices. printed_guide = .false. @@ -155,14 +174,14 @@ NRHS = n M = MAX(SQRT(REAL(N)), 10.0) -*> Generate the Hilbert matrix, its inverse, and the -*> right hand side, all scaled by the LCM(1,..,2N-1). +* Generate the Hilbert matrix, its inverse, and the +* right hand side, all scaled by the LCM(1,..,2N-1). CALL SLAHILB(N, N, A, LDA, INVHILB, LDA, B, LDA, WORK, INFO) -*> Copy A into ACOPY. +* Copy A into ACOPY. CALL SLACPY('ALL', N, N, A, NMAX, ACOPY, NMAX) -*> Store A in band format for GB tests +* Store A in band format for GB tests DO J = 1, N DO I = 1, KL+KU+1 AB( I, J ) = 0.0E+0 @@ -174,7 +193,7 @@ END DO END DO -*> Copy AB into ABCOPY. +* Copy AB into ABCOPY. DO J = 1, N DO I = 1, KL+KU+1 ABCOPY( I, J ) = 0.0E+0 @@ -182,7 +201,7 @@ END DO CALL SLACPY('ALL', KL+KU+1, N, AB, LDAB, ABCOPY, LDAB) -*> Call S**SVXX with default PARAMS and N_ERR_BND = 3. +* Call S**SVXX with default PARAMS and N_ERR_BND = 3. IF ( LSAMEN( 2, C2, 'SY' ) ) THEN CALL SSYSVXX(FACT, UPLO, N, NRHS, ACOPY, LDA, AF, LDA, $ IPIV, EQUED, S, B, LDA, X, LDA, ORCOND, @@ -223,14 +242,14 @@ END IF END IF -*> Calculating the difference between S**SVXX's X and the true X. +* Calculating the difference between S**SVXX's X and the true X. DO I = 1, N DO J = 1, NRHS DIFF( I, J ) = X( I, J ) - INVHILB( I, J ) END DO END DO -*> Calculating the RCOND +* Calculating the RCOND RNORM = 0 RINORM = 0 IF ( LSAMEN( 2, C2, 'PO' ) .OR. LSAMEN( 2, C2, 'SY' ) ) THEN @@ -261,7 +280,7 @@ RNORM = RNORM / A(1, 1) RCOND = 1.0/(RNORM * RINORM) -*> Calculating the R for normwise rcond. +* Calculating the R for normwise rcond. DO I = 1, N RINV(I) = 0.0 END DO @@ -271,7 +290,7 @@ END DO END DO -*> Calculating the Normwise rcond. +* Calculating the Normwise rcond. RINORM = 0.0 DO I = 1, N SUMRI = 0.0 @@ -441,7 +460,7 @@ c$$$ WRITE(*,*) 'Reciprocal condition number: ',ERRBND(NRHS,cwise_i,cond c$$$ WRITE(*,*) 'Raw error estimate: ',ERRBND(NRHS,cwise_i,rawbnd_i) c$$$ print *, 'Info: ', info c$$$ WRITE(*,*) -*> WRITE(*,*) 'TSTRAT: ',TSTRAT +* WRITE(*,*) 'TSTRAT: ',TSTRAT END DO @@ -457,7 +476,7 @@ c$$$ WRITE(*,*) 9998 FORMAT( ' S', A2, 'SVXX: ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9997 FORMAT( ' S', A2, 'SVXX passed the tests of error bounds' ) -*> Test ratios. +* Test ratios. 9996 FORMAT( 3X, I2, ': Normwise guaranteed forward error', / 5X, $ 'Guaranteed case: if norm ( abs( Xc - Xt )', $ ' / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ), then', @@ -475,33 +494,3 @@ c$$$ WRITE(*,*) $ ', ORCOND = ', G12.5, ', real RCOND = ', G12.5 ) END -*>\endverbatim -* -* Arguments -* ========= -* -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup single_lin -* -* ===================================================================== - SUBROUTINE SEBCHVXX( THRESH, PATH ) -* -* -- LAPACK test routine (input) -- -* -- LAPACK is a software package provided by Univ. of Tennessee, -- -* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2011 -* -* .. Scalar Arguments .. - REAL THRESH - CHARACTER*3 PATH -* diff --git a/TESTING/LIN/sgtt01.f b/TESTING/LIN/sgtt01.f index adfd9abc..c2f8e714 100644 --- a/TESTING/LIN/sgtt01.f +++ b/TESTING/LIN/sgtt01.f @@ -82,9 +82,9 @@ *> The (n-1) elements of the first super-diagonal of U. *> \endverbatim *> -*> \param[in] DU2F +*> \param[in] DU2 *> \verbatim -*> DU2F is REAL array, dimension (N-2) +*> DU2 is REAL array, dimension (N-2) *> The (n-2) elements of the second super-diagonal of U. *> \endverbatim *> diff --git a/TESTING/LIN/slahilb.f b/TESTING/LIN/slahilb.f index ed25756e..7ced82fb 100644 --- a/TESTING/LIN/slahilb.f +++ b/TESTING/LIN/slahilb.f @@ -10,44 +10,106 @@ * * SUBROUTINE SLAHILB(N, NRHS, A, LDA, X, LDX, B, LDB, WORK, INFO) * -* ! .. Scalar Arguments .. +* .. Scalar Arguments .. * INTEGER N, NRHS, LDA, LDX, LDB, INFO -* ! .. Array Arguments .. +* .. Array Arguments .. * REAL A(LDA, N), X(LDX, NRHS), B(LDB, NRHS), WORK(N) -* ! .. -* ! +* .. +* * Purpose * ======= * *>\details \b Purpose: *>\verbatim -! Purpose -! ======= -! -! SLAHILB generates an N by N scaled Hilbert matrix in A along with -! NRHS right-hand sides in B and solutions in X such that A*X=B. -! -! The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all -! entries are integers. The right-hand sides are the first NRHS -! columns of M * the identity matrix, and the solutions are the -! first NRHS columns of the inverse Hilbert matrix. -! -! The condition number of the Hilbert matrix grows exponentially with -! its size, roughly as O(e ** (3.5*N)). Additionally, the inverse -! Hilbert matrices beyond a relatively small dimension cannot be -! generated exactly without extra precision. Precision is exhausted -! when the largest entry in the inverse Hilbert matrix is greater than -! 2 to the power of the number of bits in the fraction of the data type -! used plus one, which is 24 for single precision. -! -! In single, the generated solution is exact for N <= 6 and has -! small componentwise error for 7 <= N <= 11. -! +*> +*> SLAHILB generates an N by N scaled Hilbert matrix in A along with +*> NRHS right-hand sides in B and solutions in X such that A*X=B. +*> +*> The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all +*> entries are integers. The right-hand sides are the first NRHS +*> columns of M * the identity matrix, and the solutions are the +*> first NRHS columns of the inverse Hilbert matrix. +*> +*> The condition number of the Hilbert matrix grows exponentially with +*> its size, roughly as O(e ** (3.5*N)). Additionally, the inverse +*> Hilbert matrices beyond a relatively small dimension cannot be +*> generated exactly without extra precision. Precision is exhausted +*> when the largest entry in the inverse Hilbert matrix is greater than +*> 2 to the power of the number of bits in the fraction of the data type +*> used plus one, which is 24 for single precision. +*> +*> In single, the generated solution is exact for N <= 6 and has +*> small componentwise error for 7 <= N <= 11. +*> *>\endverbatim * * Arguments * ========= * +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The dimension of the matrix A. +*> \endverbatim +*> +*> \param[in] NRHS +*> \verbatim +*> NRHS is NRHS +*> The requested number of right-hand sides. +*> \endverbatim +*> +*> \param[out] A +*> \verbatim +*> A is REAL array, dimension (LDA, N) +*> The generated scaled Hilbert matrix. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= N. +*> \endverbatim +*> +*> \param[out] X +*> \verbatim +*> X is REAL array, dimension (LDX, NRHS) +*> The generated exact solutions. Currently, the first NRHS +*> columns of the inverse Hilbert matrix. +*> \endverbatim +*> +*> \param[in] LDX +*> \verbatim +*> LDX is INTEGER +*> The leading dimension of the array X. LDX >= N. +*> \endverbatim +*> +*> \param[out] B +*> \verbatim +*> B is REAL array, dimension (LDB, NRHS) +*> The generated right-hand sides. Currently, the first NRHS +*> columns of LCM(1, 2, ..., 2*N-1) * the identity matrix. +*> \endverbatim +*> +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER +*> The leading dimension of the array B. LDB >= N. +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> = 1: N is too large; the data is still generated but may not +*> be not exact. +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> * * Authors * ======= @@ -69,36 +131,34 @@ * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * -! .. Scalar Arguments .. +* .. Scalar Arguments .. INTEGER N, NRHS, LDA, LDX, LDB, INFO -! .. Array Arguments .. +* .. Array Arguments .. REAL A(LDA, N), X(LDX, NRHS), B(LDB, NRHS), WORK(N) -! .. -! -! ===================================================================== - -! .. Local Scalars .. +* .. +* +* ===================================================================== +* .. Local Scalars .. INTEGER TM, TI, R INTEGER M INTEGER I, J - -! .. Parameters .. -! NMAX_EXACT the largest dimension where the generated data is -! exact. -! NMAX_APPROX the largest dimension where the generated data has -! a small componentwise relative error. +* .. +* .. Parameters .. +* NMAX_EXACT the largest dimension where the generated data is +* exact. +* NMAX_APPROX the largest dimension where the generated data has +* a small componentwise relative error. INTEGER NMAX_EXACT, NMAX_APPROX PARAMETER (NMAX_EXACT = 6, NMAX_APPROX = 11) - -! .. -! .. External Functions +* .. +* .. External Functions EXTERNAL SLASET INTRINSIC REAL -! .. -! .. Executable Statements .. -! -! Test the input arguments -! +* .. +* .. Executable Statements .. +* +* Test the input arguments +* INFO = 0 IF (N .LT. 0 .OR. N .GT. NMAX_APPROX) THEN INFO = -1 @@ -118,9 +178,9 @@ IF (N .GT. NMAX_EXACT) THEN INFO = 1 END IF - -! Compute M = the LCM of the integers [1, 2*N-1]. The largest -! reasonable N is small enough that integers suffice (up to N = 11). +* +* Compute M = the LCM of the integers [1, 2*N-1]. The largest +* reasonable N is small enough that integers suffice (up to N = 11). M = 1 DO I = 2, (2*N-1) TM = M @@ -133,32 +193,32 @@ END DO M = (M / TI) * I END DO - -! Generate the scaled Hilbert matrix in A +* +* Generate the scaled Hilbert matrix in A DO J = 1, N DO I = 1, N A(I, J) = REAL(M) / (I + J - 1) END DO END DO - -! Generate matrix B as simply the first NRHS columns of M * the -! identity. +* +* Generate matrix B as simply the first NRHS columns of M * the +* identity. CALL SLASET('Full', N, NRHS, 0.0, REAL(M), B, LDB) - -! Generate the true solutions in X. Because B = the first NRHS -! columns of M*I, the true solutions are just the first NRHS columns -! of the inverse Hilbert matrix. +* +* Generate the true solutions in X. Because B = the first NRHS +* columns of M*I, the true solutions are just the first NRHS columns +* of the inverse Hilbert matrix. WORK(1) = N DO J = 2, N WORK(J) = ( ( (WORK(J-1)/(J-1)) * (J-1 - N) ) /(J-1) ) $ * (N +J -1) END DO - +* DO J = 1, NRHS DO I = 1, N X(I, J) = (WORK(I)*WORK(J)) / (I + J - 1) END DO END DO - +* END diff --git a/TESTING/LIN/spbt02.f b/TESTING/LIN/spbt02.f index 45c7cbd8..144994ba 100644 --- a/TESTING/LIN/spbt02.f +++ b/TESTING/LIN/spbt02.f @@ -59,6 +59,12 @@ *> or the number of sub-diagonals if UPLO = 'L'. KD >= 0. *> \endverbatim *> +*> \param[in] NRHS +*> \verbatim +*> NRHS is INTEGER +*> The number of right hand sides. NRHS >= 0. +*> \endverbatim +*> *> \param[in] A *> \verbatim *> A is REAL array, dimension (LDA,N) diff --git a/TESTING/LIN/spst01.f b/TESTING/LIN/spst01.f index 29fabd49..01e4b690 100644 --- a/TESTING/LIN/spst01.f +++ b/TESTING/LIN/spst01.f @@ -113,6 +113,12 @@ *> If UPLO = 'U', norm(U'*U - A) / ( N * norm(A) * EPS ) *> \endverbatim *> +*> \param[in] RANK +*> \verbatim +*> RANK is INTEGER +*> number of nonzero singular values of A. +*> \endverbatim +*> * * Authors * ======= diff --git a/TESTING/LIN/sspt01.f b/TESTING/LIN/sspt01.f index a46e689a..ddb38a95 100644 --- a/TESTING/LIN/sspt01.f +++ b/TESTING/LIN/sspt01.f @@ -77,8 +77,10 @@ *> \verbatim *> C is REAL array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/LIN/ssyt01.f b/TESTING/LIN/ssyt01.f index 7aaeae9e..bce84e66 100644 --- a/TESTING/LIN/ssyt01.f +++ b/TESTING/LIN/ssyt01.f @@ -90,8 +90,10 @@ *> \verbatim *> C is REAL array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/LIN/zchkge.f b/TESTING/LIN/zchkge.f index 8d05756a..8d5d970d 100644 --- a/TESTING/LIN/zchkge.f +++ b/TESTING/LIN/zchkge.f @@ -95,13 +95,6 @@ *> The values of the number of right hand sides NRHS. *> \endverbatim *> -*> \param[in] NRHS -*> \verbatim -*> NRHS is INTEGER -*> The number of right hand side vectors to be generated for -*> each linear system. -*> \endverbatim -*> *> \param[in] THRESH *> \verbatim *> THRESH is DOUBLE PRECISION diff --git a/TESTING/LIN/zdrvgt.f b/TESTING/LIN/zdrvgt.f index 91cf6cba..debecad2 100644 --- a/TESTING/LIN/zdrvgt.f +++ b/TESTING/LIN/zdrvgt.f @@ -57,6 +57,12 @@ *> The values of the matrix dimension N. *> \endverbatim *> +*> \param[in] NRHS +*> \verbatim +*> NRHS is INTEGER +*> The number of right hand sides, NRHS >= 0. +*> \endverbatim +*> *> \param[in] THRESH *> \verbatim *> THRESH is DOUBLE PRECISION diff --git a/TESTING/LIN/zdrvrf2.f b/TESTING/LIN/zdrvrf2.f index 734d0f92..c6c0f200 100644 --- a/TESTING/LIN/zdrvrf2.f +++ b/TESTING/LIN/zdrvrf2.f @@ -70,9 +70,9 @@ *> AP is COMPLEX*16 array, dimension ((NMAX*(NMAX+1))/2). *> \endverbatim *> -*> \param[out] A2 +*> \param[out] ASAV *> \verbatim -*> A2 is COMPLEX*16 array, dimension (LDA,NMAX) +*> ASAV is COMPLEX*16 array, dimension (LDA,NMAX) *> \endverbatim *> * diff --git a/TESTING/LIN/zebchvxx.f b/TESTING/LIN/zebchvxx.f index 2694c93c..3410f067 100644 --- a/TESTING/LIN/zebchvxx.f +++ b/TESTING/LIN/zebchvxx.f @@ -8,84 +8,103 @@ * Definition * ========== * -* SUBROUTINE ZEBCHVXX( THRESH, PATH ) -* -* .. Scalar Arguments .. -* DOUBLE PRECISION THRESH -* CHARACTER*3 PATH -* +* SUBROUTINE ZEBCHVXX( THRESH, PATH ) +* +* .. Scalar Arguments .. +* DOUBLE PRECISION THRESH +* CHARACTER*3 PATH +* .. +* * Purpose -* ======= +* ====== * *>\details \b Purpose: *>\verbatim -*> Purpose -*> ====== +*> ZEBCHVXX will run Z**SVXX on a series of Hilbert matrices and then +*> compare the error bounds returned by Z**SVXX to see if the returned +*> answer indeed falls within those bounds. *> -*> ZEBCHVXX will run Z**SVXX on a series of Hilbert matrices and then -*> compare the error bounds returned by Z**SVXX to see if the returned -*> answer indeed falls within those bounds. +*> Eight test ratios will be computed. The tests will pass if they are .LT. +*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS). +*> If that value is .LE. to the component wise reciprocal condition number, +*> it uses the guaranteed case, other wise it uses the unguaranteed case. *> -*> Eight test ratios will be computed. The tests will pass if they are .LT. -*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS). -*> If that value is .LE. to the component wise reciprocal condition number, -*> it uses the guaranteed case, other wise it uses the unguaranteed case. +*> Test ratios: +*> Let Xc be X_computed and Xt be X_truth. +*> The norm used is the infinity norm. *> -*> Test ratios: -*> Let Xc be X_computed and Xt be X_truth. -*> The norm used is the infinity norm. - -*> Let A be the guaranteed case and B be the unguaranteed case. +*> Let A be the guaranteed case and B be the unguaranteed case. +*> +*> 1. Normwise guaranteed forward error bound. +*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and +*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS. +*> If these conditions are met, the test ratio is set to be +*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. +*> B: For this case, CGESVXX should just return 1. If it is less than +*> one, treat it the same as in 1A. Otherwise it fails. (Set test +*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?) *> -*> 1. Normwise guaranteed forward error bound. -*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and -*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS. -*> If these conditions are met, the test ratio is set to be -*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. -*> B: For this case, CGESVXX should just return 1. If it is less than -*> one, treat it the same as in 1A. Otherwise it fails. (Set test -*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?) +*> 2. Componentwise guaranteed forward error bound. +*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i ) +*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS. +*> If these conditions are met, the test ratio is set to be +*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. +*> B: Same as normwise test ratio. *> -*> 2. Componentwise guaranteed forward error bound. -*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i ) -*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS. -*> If these conditions are met, the test ratio is set to be -*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS. -*> B: Same as normwise test ratio. +*> 3. Backwards error. +*> A: The test ratio is set to BERR/EPS. +*> B: Same test ratio. *> -*> 3. Backwards error. -*> A: The test ratio is set to BERR/EPS. -*> B: Same test ratio. +*> 4. Reciprocal condition number. +*> A: A condition number is computed with Xt and compared with the one +*> returned from CGESVXX. Let RCONDc be the RCOND returned by CGESVXX +*> and RCONDt be the RCOND from the truth value. Test ratio is set to +*> MAX(RCONDc/RCONDt, RCONDt/RCONDc). +*> B: Test ratio is set to 1 / (EPS * RCONDc). *> -*> 4. Reciprocal condition number. -*> A: A condition number is computed with Xt and compared with the one -*> returned from CGESVXX. Let RCONDc be the RCOND returned by CGESVXX -*> and RCONDt be the RCOND from the truth value. Test ratio is set to -*> MAX(RCONDc/RCONDt, RCONDt/RCONDc). -*> B: Test ratio is set to 1 / (EPS * RCONDc). +*> 5. Reciprocal normwise condition number. +*> A: The test ratio is set to +*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )). +*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )). *> -*> 5. Reciprocal normwise condition number. -*> A: The test ratio is set to -*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )). -*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )). +*> 6. Reciprocal componentwise condition number. +*> A: Test ratio is set to +*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )). +*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )). *> -*> 6. Reciprocal componentwise condition number. -*> A: Test ratio is set to -*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )). -*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )). +*> .. Parameters .. +*> NMAX is determined by the largest number in the inverse of the hilbert +*> matrix. Precision is exhausted when the largest entry in it is greater +*> than 2 to the power of the number of bits in the fraction of the data +*> type used plus one, which is 24 for single precision. +*> NMAX should be 6 for single and 11 for double. +*> \endverbatim *> -*> .. Parameters .. -*> NMAX is determined by the largest number in the inverse of the hilbert -*> matrix. Precision is exhausted when the largest entry in it is greater -*> than 2 to the power of the number of bits in the fraction of the data -*> type used plus one, which is 24 for single precision. -*> NMAX should be 6 for single and 11 for double. +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16_lin +* +* ===================================================================== + SUBROUTINE ZEBCHVXX( THRESH, PATH ) + IMPLICIT NONE +* .. Scalar Arguments .. + DOUBLE PRECISION THRESH + CHARACTER*3 PATH INTEGER NMAX, NPARAMS, NERRBND, NTESTS, KL, KU PARAMETER (NMAX = 10, NPARAMS = 2, NERRBND = 3, $ NTESTS = 6) -*> .. Local Scalars .. +* .. Local Scalars .. INTEGER N, NRHS, INFO, I ,J, k, NFAIL, LDA, $ N_AUX_TESTS, LDAB, LDAFB CHARACTER FACT, TRANS, UPLO, EQUED @@ -100,7 +119,7 @@ $ CONDTHRESH, ERRTHRESH COMPLEX*16 ZDUM -*> .. Local Arrays .. +* .. Local Arrays .. DOUBLE PRECISION TSTRAT(NTESTS), RINV(NMAX), PARAMS(NPARAMS), $ S(NMAX),R(NMAX),C(NMAX),RWORK(3*NMAX), $ DIFF(NMAX, NMAX), @@ -113,30 +132,30 @@ $ ABCOPY( (NMAX-1)+(NMAX-1)+1, NMAX ), $ AFB( 2*(NMAX-1)+(NMAX-1)+1, NMAX ) -*> .. External Functions .. +* .. External Functions .. DOUBLE PRECISION DLAMCH -*> .. External Subroutines .. +* .. External Subroutines .. EXTERNAL ZLAHILB, ZGESVXX, ZPOSVXX, ZSYSVXX, $ ZGBSVXX, ZLACPY, LSAMEN LOGICAL LSAMEN -*> .. Intrinsic Functions .. +* .. Intrinsic Functions .. INTRINSIC SQRT, MAX, ABS, DBLE, DIMAG -*> .. Statement Functions .. +* .. Statement Functions .. DOUBLE PRECISION CABS1 -*> .. Statement Function Definitions .. +* .. Statement Function Definitions .. CABS1( ZDUM ) = ABS( DBLE( ZDUM ) ) + ABS( DIMAG( ZDUM ) ) -*> .. Parameters .. +* .. Parameters .. INTEGER NWISE_I, CWISE_I PARAMETER (NWISE_I = 1, CWISE_I = 1) INTEGER BND_I, COND_I PARAMETER (BND_I = 2, COND_I = 3) -*> Create the loop to test out the Hilbert matrices +* Create the loop to test out the Hilbert matrices FACT = 'E' UPLO = 'U' @@ -150,7 +169,7 @@ LDAFB = 2*(NMAX-1)+(NMAX-1)+1 C2 = PATH( 2: 3 ) -*> Main loop to test the different Hilbert Matrices. +* Main loop to test the different Hilbert Matrices. printed_guide = .false. @@ -163,15 +182,15 @@ NRHS = n M = MAX(SQRT(DBLE(N)), 10.0D+0) -*> Generate the Hilbert matrix, its inverse, and the -*> right hand side, all scaled by the LCM(1,..,2N-1). +* Generate the Hilbert matrix, its inverse, and the +* right hand side, all scaled by the LCM(1,..,2N-1). CALL ZLAHILB(N, N, A, LDA, INVHILB, LDA, B, $ LDA, WORK, INFO, PATH) -*> Copy A into ACOPY. +* Copy A into ACOPY. CALL ZLACPY('ALL', N, N, A, NMAX, ACOPY, NMAX) -*> Store A in band format for GB tests +* Store A in band format for GB tests DO J = 1, N DO I = 1, KL+KU+1 AB( I, J ) = (0.0D+0,0.0D+0) @@ -183,7 +202,7 @@ END DO END DO -*> Copy AB into ABCOPY. +* Copy AB into ABCOPY. DO J = 1, N DO I = 1, KL+KU+1 ABCOPY( I, J ) = (0.0D+0,0.0D+0) @@ -191,7 +210,7 @@ END DO CALL ZLACPY('ALL', KL+KU+1, N, AB, LDAB, ABCOPY, LDAB) -*> Call Z**SVXX with default PARAMS and N_ERR_BND = 3. +* Call Z**SVXX with default PARAMS and N_ERR_BND = 3. IF ( LSAMEN( 2, C2, 'SY' ) ) THEN CALL ZSYSVXX(FACT, UPLO, N, NRHS, ACOPY, LDA, AF, LDA, $ IPIV, EQUED, S, B, LDA, X, LDA, ORCOND, @@ -237,14 +256,14 @@ END IF END IF -*> Calculating the difference between Z**SVXX's X and the true X. +* Calculating the difference between Z**SVXX's X and the true X. DO I = 1,N DO J =1,NRHS DIFF(I,J) = X(I,J) - INVHILB(I,J) END DO END DO -*> Calculating the RCOND +* Calculating the RCOND RNORM = 0 RINORM = 0 IF ( LSAMEN( 2, C2, 'PO' ) .OR. LSAMEN( 2, C2, 'SY' ) .OR. @@ -276,7 +295,7 @@ RNORM = RNORM / CABS1(A(1, 1)) RCOND = 1.0D+0/(RNORM * RINORM) -*> Calculating the R for normwise rcond. +* Calculating the R for normwise rcond. DO I = 1, N RINV(I) = 0.0D+0 END DO @@ -286,7 +305,7 @@ END DO END DO -*> Calculating the Normwise rcond. +* Calculating the Normwise rcond. RINORM = 0.0D+0 DO I = 1, N SUMRI = 0.0D+0 @@ -453,7 +472,7 @@ c$$$ WRITE(*,*) 'Reciprocal condition number: ',ERRBND(NRHS,cwise_i,cond c$$$ WRITE(*,*) 'Raw error estimate: ',ERRBND(NRHS,cwise_i,rawbnd_i) c$$$ print *, 'Info: ', info c$$$ WRITE(*,*) -*> WRITE(*,*) 'TSTRAT: ',TSTRAT +* WRITE(*,*) 'TSTRAT: ',TSTRAT END DO @@ -469,7 +488,7 @@ c$$$ WRITE(*,*) 9998 FORMAT( ' Z', A2, 'SVXX: ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9997 FORMAT( ' Z', A2, 'SVXX passed the tests of error bounds' ) -*> Test ratios. +* Test ratios. 9996 FORMAT( 3X, I2, ': Normwise guaranteed forward error', / 5X, $ 'Guaranteed case: if norm ( abs( Xc - Xt )', $ ' / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ), then', @@ -487,33 +506,3 @@ c$$$ WRITE(*,*) $ ', ORCOND = ', G12.5, ', real RCOND = ', G12.5 ) END -*>\endverbatim -* -* Arguments -* ========= -* -* -* Authors -* ======= -* -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 -* -*> \ingroup complex16_lin -* -* ===================================================================== - SUBROUTINE ZEBCHVXX( THRESH, PATH ) -* -* -- LAPACK test routine (input) -- -* -- LAPACK is a software package provided by Univ. of Tennessee, -- -* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2011 -* -* .. Scalar Arguments .. - DOUBLE PRECISION THRESH - CHARACTER*3 PATH -* diff --git a/TESTING/LIN/zhet01.f b/TESTING/LIN/zhet01.f index 9d3b91fc..4f2a11f3 100644 --- a/TESTING/LIN/zhet01.f +++ b/TESTING/LIN/zhet01.f @@ -92,8 +92,10 @@ *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/LIN/zhpt01.f b/TESTING/LIN/zhpt01.f index f35f6d33..5224a42e 100644 --- a/TESTING/LIN/zhpt01.f +++ b/TESTING/LIN/zhpt01.f @@ -80,8 +80,10 @@ *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/LIN/zlahilb.f b/TESTING/LIN/zlahilb.f index 1b44dd04..8479b3b2 100644 --- a/TESTING/LIN/zlahilb.f +++ b/TESTING/LIN/zlahilb.f @@ -11,46 +11,114 @@ * SUBROUTINE ZLAHILB(N, NRHS, A, LDA, X, LDX, B, LDB, WORK, * INFO, PATH) * -* ! .. Scalar Arguments .. +* .. Scalar Arguments .. * INTEGER N, NRHS, LDA, LDX, LDB, INFO -* ! .. Array Arguments .. +* .. Array Arguments .. * DOUBLE PRECISION WORK(N) * COMPLEX*16 A(LDA,N), X(LDX, NRHS), B(LDB, NRHS) * CHARACTER*3 PATH -* ! .. -* ! +* .. +* * Purpose * ======= * *>\details \b Purpose: *>\verbatim -! Purpose -! ======= -! -! ZLAHILB generates an N by N scaled Hilbert matrix in A along with -! NRHS right-hand sides in B and solutions in X such that A*X=B. -! -! The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all -! entries are integers. The right-hand sides are the first NRHS -! columns of M * the identity matrix, and the solutions are the -! first NRHS columns of the inverse Hilbert matrix. -! -! The condition number of the Hilbert matrix grows exponentially with -! its size, roughly as O(e ** (3.5*N)). Additionally, the inverse -! Hilbert matrices beyond a relatively small dimension cannot be -! generated exactly without extra precision. Precision is exhausted -! when the largest entry in the inverse Hilbert matrix is greater than -! 2 to the power of the number of bits in the fraction of the data type -! used plus one, which is 24 for single precision. -! -! In single, the generated solution is exact for N <= 6 and has -! small componentwise error for 7 <= N <= 11. -! +*> +*> ZLAHILB generates an N by N scaled Hilbert matrix in A along with +*> NRHS right-hand sides in B and solutions in X such that A*X=B. +*> +*> The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all +*> entries are integers. The right-hand sides are the first NRHS +*> columns of M * the identity matrix, and the solutions are the +*> first NRHS columns of the inverse Hilbert matrix. +*> +*> The condition number of the Hilbert matrix grows exponentially with +*> its size, roughly as O(e ** (3.5*N)). Additionally, the inverse +*> Hilbert matrices beyond a relatively small dimension cannot be +*> generated exactly without extra precision. Precision is exhausted +*> when the largest entry in the inverse Hilbert matrix is greater than +*> 2 to the power of the number of bits in the fraction of the data type +*> used plus one, which is 24 for single precision. +*> +*> In single, the generated solution is exact for N <= 6 and has +*> small componentwise error for 7 <= N <= 11. +*> *>\endverbatim * * Arguments * ========= * +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The dimension of the matrix A. +*> \endverbatim +*> +*> \param[in] NRHS +*> \verbatim +*> NRHS is NRHS +*> The requested number of right-hand sides. +*> \endverbatim +*> +*> \param[out] A +*> \verbatim +*> A is COMPLEX array, dimension (LDA, N) +*> The generated scaled Hilbert matrix. +*> \endverbatim +*> +*> \param[in] LDA +*> \verbatim +*> LDA is INTEGER +*> The leading dimension of the array A. LDA >= N. +*> \endverbatim +*> +*> \param[out] X +*> \verbatim +*> X is COMPLEX array, dimension (LDX, NRHS) +*> The generated exact solutions. Currently, the first NRHS +*> columns of the inverse Hilbert matrix. +*> \endverbatim +*> +*> \param[in] LDX +*> \verbatim +*> LDX is INTEGER +*> The leading dimension of the array X. LDX >= N. +*> \endverbatim +*> +*> \param[out] B +*> \verbatim +*> B is REAL array, dimension (LDB, NRHS) +*> The generated right-hand sides. Currently, the first NRHS +*> columns of LCM(1, 2, ..., 2*N-1) * the identity matrix. +*> \endverbatim +*> +*> \param[in] LDB +*> \verbatim +*> LDB is INTEGER +*> The leading dimension of the array B. LDB >= N. +*> \endverbatim +*> +*> \param[out] WORK +*> \verbatim +*> WORK is REAL array, dimension (N) +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> = 1: N is too large; the data is still generated but may not +*> be not exact. +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> \endverbatim +*> +*> \param[in] PATH +*> \verbatim +*> PATH is CHARACTER*3 +*> The LAPACK path name. +*> \endverbatim +*> * * Authors * ======= @@ -73,33 +141,32 @@ * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * November 2011 * -! .. Scalar Arguments .. +* .. Scalar Arguments .. INTEGER N, NRHS, LDA, LDX, LDB, INFO -! .. Array Arguments .. +* .. Array Arguments .. DOUBLE PRECISION WORK(N) COMPLEX*16 A(LDA,N), X(LDX, NRHS), B(LDB, NRHS) CHARACTER*3 PATH -! .. -! -! ===================================================================== - -! .. Local Scalars .. +* .. +* +* ===================================================================== +* .. Local Scalars .. INTEGER TM, TI, R INTEGER M INTEGER I, J COMPLEX*16 TMP CHARACTER*2 C2 - -! .. Parameters .. -! NMAX_EXACT the largest dimension where the generated data is -! exact. -! NMAX_APPROX the largest dimension where the generated data has -! a small componentwise relative error. -! ??? complex uses how many bits ??? +* .. +* .. Parameters .. +* NMAX_EXACT the largest dimension where the generated data is +* exact. +* NMAX_APPROX the largest dimension where the generated data has +* a small componentwise relative error. +* ??? complex uses how many bits ??? INTEGER NMAX_EXACT, NMAX_APPROX, SIZE_D PARAMETER (NMAX_EXACT = 6, NMAX_APPROX = 11, SIZE_D = 8) - -! d's are generated from random permuation of those eight elements. +* +* d's are generated from random permuation of those eight elements. COMPLEX*16 d1(8), d2(8), invd1(8), invd2(8) DATA D1 /(-1,0),(0,1),(-1,-1),(0,-1),(1,0),(-1,1),(1,1),(1,-1)/ DATA D2 /(-1,0),(0,-1),(-1,1),(0,1),(1,0),(-1,-1),(1,-1),(1,1)/ @@ -108,17 +175,17 @@ $ (-.5,-.5),(.5,-.5),(.5,.5)/ DATA INVD2 /(-1,0),(0,1),(-.5,-.5),(0,-1),(1,0), $ (-.5,.5),(.5,.5),(.5,-.5)/ -! .. -! .. External Functions +* .. +* .. External Functions EXTERNAL ZLASET, LSAMEN INTRINSIC DBLE LOGICAL LSAMEN -! .. -! .. Executable Statements .. +* .. +* .. Executable Statements .. C2 = PATH( 2: 3 ) -! -! Test the input arguments -! +* +* Test the input arguments +* INFO = 0 IF (N .LT. 0 .OR. N .GT. NMAX_APPROX) THEN INFO = -1 @@ -138,9 +205,9 @@ IF (N .GT. NMAX_EXACT) THEN INFO = 1 END IF - -! Compute M = the LCM of the integers [1, 2*N-1]. The largest -! reasonable N is small enough that integers suffice (up to N = 11). +* +* Compute M = the LCM of the integers [1, 2*N-1]. The largest +* reasonable N is small enough that integers suffice (up to N = 11). M = 1 DO I = 2, (2*N-1) TM = M @@ -153,9 +220,9 @@ END DO M = (M / TI) * I END DO - -! Generate the scaled Hilbert matrix in A -! If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i* +* +* Generate the scaled Hilbert matrix in A +* If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i* IF ( LSAMEN( 2, C2, 'SY' ) ) THEN DO J = 1, N DO I = 1, N @@ -171,22 +238,22 @@ END DO END DO END IF - -! Generate matrix B as simply the first NRHS columns of M * the -! identity. +* +* Generate matrix B as simply the first NRHS columns of M * the +* identity. TMP = DBLE(M) CALL ZLASET('Full', N, NRHS, (0.0D+0,0.0D+0), TMP, B, LDB) - -! Generate the true solutions in X. Because B = the first NRHS -! columns of M*I, the true solutions are just the first NRHS columns -! of the inverse Hilbert matrix. +* +* Generate the true solutions in X. Because B = the first NRHS +* columns of M*I, the true solutions are just the first NRHS columns +* of the inverse Hilbert matrix. WORK(1) = N DO J = 2, N WORK(J) = ( ( (WORK(J-1)/(J-1)) * (J-1 - N) ) /(J-1) ) $ * (N +J -1) END DO - -! If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i* +* +* If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i* IF ( LSAMEN( 2, C2, 'SY' ) ) THEN DO J = 1, NRHS DO I = 1, N diff --git a/TESTING/LIN/zpbt02.f b/TESTING/LIN/zpbt02.f index e28df4ae..ae70258d 100644 --- a/TESTING/LIN/zpbt02.f +++ b/TESTING/LIN/zpbt02.f @@ -59,6 +59,12 @@ *> or the number of sub-diagonals if UPLO = 'L'. KD >= 0. *> \endverbatim *> +*> \param[in] NRHS +*> \verbatim +*> NRHS is INTEGER +*> The number of right hand sides. NRHS >= 0. +*> \endverbatim +*> *> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) diff --git a/TESTING/LIN/zpst01.f b/TESTING/LIN/zpst01.f index 380b54e9..bbedf4ae 100644 --- a/TESTING/LIN/zpst01.f +++ b/TESTING/LIN/zpst01.f @@ -115,6 +115,12 @@ *> If UPLO = 'U', norm(U'*U - A) / ( N * norm(A) * EPS ) *> \endverbatim *> +*> \param[in] RANK +*> \verbatim +*> RANK is INTEGER +*> number of nonzero singular values of A. +*> \endverbatim +*> * * Authors * ======= diff --git a/TESTING/LIN/zspt01.f b/TESTING/LIN/zspt01.f index 5ff3eb53..37e0b09f 100644 --- a/TESTING/LIN/zspt01.f +++ b/TESTING/LIN/zspt01.f @@ -79,8 +79,10 @@ *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/LIN/zspt03.f b/TESTING/LIN/zspt03.f index c97c505c..2c3caf77 100644 --- a/TESTING/LIN/zspt03.f +++ b/TESTING/LIN/zspt03.f @@ -68,13 +68,13 @@ *> *> \param[out] WORK *> \verbatim -*> WORK is COMPLEX*16 array, dimension (LDWORK,N) +*> WORK is COMPLEX*16 array, dimension (LDW,N) *> \endverbatim *> -*> \param[in] LDWORK +*> \param[in] LDW *> \verbatim -*> LDWORK is INTEGER -*> The leading dimension of the array WORK. LDWORK >= max(1,N). +*> LDW is INTEGER +*> The leading dimension of the array WORK. LDW >= max(1,N). *> \endverbatim *> *> \param[out] RWORK diff --git a/TESTING/LIN/zsyt01.f b/TESTING/LIN/zsyt01.f index d73ac214..a676e438 100644 --- a/TESTING/LIN/zsyt01.f +++ b/TESTING/LIN/zsyt01.f @@ -91,8 +91,10 @@ *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> \endverbatim +*> +*> \param[in] LDC *> \verbatim -*> LDC (integer) INTEGER +*> LDC is INTEGER *> The leading dimension of the array C. LDC >= max(1,N). *> \endverbatim *> diff --git a/TESTING/MATGEN/clahilb.f b/TESTING/MATGEN/clahilb.f index 4c04f0a9..68661e5d 100644 --- a/TESTING/MATGEN/clahilb.f +++ b/TESTING/MATGEN/clahilb.f @@ -113,6 +113,12 @@ *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim *> +*> \param[in] PATH +*> \verbatim +*> PATH is CHARACTER*3 +*> The LAPACK path name. +*> \endverbatim +*> * * Authors * ======= diff --git a/TESTING/MATGEN/zlahilb.f b/TESTING/MATGEN/zlahilb.f index 53df5089..3d68ab69 100644 --- a/TESTING/MATGEN/zlahilb.f +++ b/TESTING/MATGEN/zlahilb.f @@ -113,6 +113,12 @@ *> < 0: if INFO = -i, the i-th argument had an illegal value *> \endverbatim *> +*> \param[in] PATH +*> \verbatim +*> PATH is CHARACTER*3 +*> The LAPACK path name. +*> \endverbatim +*> * * Authors * ======= diff --git a/TESTING/MATGEN/zlaror.f b/TESTING/MATGEN/zlaror.f index 34d32223..6eab03cb 100644 --- a/TESTING/MATGEN/zlaror.f +++ b/TESTING/MATGEN/zlaror.f @@ -56,13 +56,11 @@ *> identity matrix before applying U. *> INIT = 'N' No initialization. Apply U to the *> input matrix A. -*> \endverbatim -*> \verbatim +*> *> INIT = 'I' may be used to generate square (i.e., unitary) *> or rectangular orthogonal matrices (orthogonality being *> in the sense of ZDOTC): -*> \endverbatim -*> \verbatim +*> *> For square matrices, M=N, and SIDE many be either 'L' or *> 'R'; the rows will be orthogonal to each other, as will the *> columns. @@ -75,8 +73,7 @@ *> For matrices where M > N, just use the previous *> explanation, interchanging 'L' and 'R' and "rows" and *> "columns". -*> \endverbatim -*> \verbatim +*> *> Not modified. *> \endverbatim *> @@ -91,8 +88,10 @@ *> N is INTEGER *> Number of columns of A. Not modified. *> \endverbatim +*> +*> \param[in,out] A *> \verbatim -*> A COMPLEX*16 array, dimension ( LDA, N ) +*> A is COMPLEX*16 array, dimension ( LDA, N ) *> Input and output array. Overwritten by U A ( if SIDE = 'L' ) *> or by A U ( if SIDE = 'R' ) *> or by U A U* ( if SIDE = 'C') |