From: julie Date: Mon, 31 Oct 2011 22:21:11 +0000 (+0000) Subject: Correct Warning detected during Doxygen Generation. X-Git-Tag: submit/tizen/20180313.231549~756 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0d9e213c670ab0e68f17d68251412d53250108e1;p=platform%2Fupstream%2Flapack.git 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. --- 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 CGBSV computes the solution to system of linear equations A * X = B for GB matrices +*> \brief CGBSV computes the solution to system of linear equations A * X = B for GB matrices (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 CGESV computes the solution to system of linear equations A * X = B for GE matrices +*> \brief CGESV computes the solution to system of linear equations A * X = B for GE matrices (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: diff --git a/SRC/crot.f b/SRC/crot.f index 7519bed9..d69ba401 100644 --- a/SRC/crot.f +++ b/SRC/crot.f @@ -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 DGBSV computes the solution to system of linear equations A * X = B for GB matrices +*> \brief DGBSV computes the solution to system of linear equations A * X = B for GB matrices (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 *> *> [TGZ] *> *> [ZIP] *> -*> [TXT] +*> [TXT] +*> \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 DSGESV computes the solution to system of linear equations A * X = B for GE matrices +*> \brief DSGESV computes the solution to system of linear equations A * X = B for GE matrices (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 SGBSV computes the solution to system of linear equations A * X = B for GB matrices +*> \brief SGBSV computes the solution to system of linear equations A * X = B for GB matrices (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 SGESV computes the solution to system of linear equations A * X = B for GE matrices +*> \brief SGESV computes the solution to system of linear equations A * X = B for GE matrices (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 ZCGESV computes the solution to system of linear equations A * X = B for GE matrices +*> \brief ZCGESV computes the solution to system of linear equations A * X = B for GE matrices (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 ZGBSV computes the solution to system of linear equations A * X = B for GB matrices +*> \brief ZGBSV computes the solution to system of linear equations A * X = B for GB matrices (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 ZGESV computes the solution to system of linear equations A * X = B for GE matrices +*> \brief ZGESV computes the solution to system of linear equations A * X = B for GE matrices (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 *> diff --git a/SRC/zrot.f b/SRC/zrot.f index abd30c0b..dd890e76 100644 --- a/SRC/zrot.f +++ b/SRC/zrot.f @@ -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')