summaryrefslogtreecommitdiff
path: root/BLAS/SRC
diff options
context:
space:
mode:
Diffstat (limited to 'BLAS/SRC')
-rw-r--r--BLAS/SRC/caxpy.f71
-rw-r--r--BLAS/SRC/ccopy.f68
-rw-r--r--BLAS/SRC/cdotc.f70
-rw-r--r--BLAS/SRC/cdotu.f68
-rw-r--r--BLAS/SRC/cgbmv.f313
-rw-r--r--BLAS/SRC/cgemm.f314
-rw-r--r--BLAS/SRC/cgemv.f256
-rw-r--r--BLAS/SRC/cgerc.f201
-rw-r--r--BLAS/SRC/cgeru.f201
-rw-r--r--BLAS/SRC/chbmv.f319
-rw-r--r--BLAS/SRC/chemm.f322
-rw-r--r--BLAS/SRC/chemv.f251
-rw-r--r--BLAS/SRC/cher.f217
-rw-r--r--BLAS/SRC/cher2.f241
-rw-r--r--BLAS/SRC/cher2k.f335
-rw-r--r--BLAS/SRC/cherk.f290
-rw-r--r--BLAS/SRC/chpmv.f243
-rw-r--r--BLAS/SRC/chpr.f211
-rw-r--r--BLAS/SRC/chpr2.f235
-rw-r--r--BLAS/SRC/crotg.f51
-rw-r--r--BLAS/SRC/cscal.f73
-rw-r--r--BLAS/SRC/csrot.f150
-rw-r--r--BLAS/SRC/csscal.f73
-rw-r--r--BLAS/SRC/cswap.f68
-rw-r--r--BLAS/SRC/csymm.f318
-rw-r--r--BLAS/SRC/csyr2k.f314
-rw-r--r--BLAS/SRC/csyrk.f278
-rw-r--r--BLAS/SRC/ctbmv.f327
-rw-r--r--BLAS/SRC/ctbsv.f331
-rw-r--r--BLAS/SRC/ctpmv.f233
-rw-r--r--BLAS/SRC/ctpsv.f237
-rw-r--r--BLAS/SRC/ctrmm.f299
-rw-r--r--BLAS/SRC/ctrmv.f241
-rw-r--r--BLAS/SRC/ctrsm.f304
-rw-r--r--BLAS/SRC/ctrsv.f245
-rw-r--r--BLAS/SRC/dasum.f70
-rw-r--r--BLAS/SRC/daxpy.f73
-rw-r--r--BLAS/SRC/dcabs1.f50
-rw-r--r--BLAS/SRC/dcopy.f70
-rw-r--r--BLAS/SRC/ddot.f70
-rw-r--r--BLAS/SRC/dgbmv.f310
-rw-r--r--BLAS/SRC/dgemm.f314
-rw-r--r--BLAS/SRC/dgemv.f254
-rw-r--r--BLAS/SRC/dger.f201
-rw-r--r--BLAS/SRC/dnrm2.f74
-rw-r--r--BLAS/SRC/drot.f71
-rw-r--r--BLAS/SRC/drotg.f57
-rw-r--r--BLAS/SRC/drotm.f136
-rw-r--r--BLAS/SRC/drotmg.f126
-rw-r--r--BLAS/SRC/dsbmv.f313
-rw-r--r--BLAS/SRC/dscal.f75
-rw-r--r--BLAS/SRC/dsdot.f168
-rw-r--r--BLAS/SRC/dspmv.f239
-rw-r--r--BLAS/SRC/dspr.f205
-rw-r--r--BLAS/SRC/dspr2.f231
-rw-r--r--BLAS/SRC/dswap.f70
-rw-r--r--BLAS/SRC/dsymm.f318
-rw-r--r--BLAS/SRC/dsymv.f247
-rw-r--r--BLAS/SRC/dsyr.f213
-rw-r--r--BLAS/SRC/dsyr2.f239
-rw-r--r--BLAS/SRC/dsyr2k.f325
-rw-r--r--BLAS/SRC/dsyrk.f283
-rw-r--r--BLAS/SRC/dtbmv.f327
-rw-r--r--BLAS/SRC/dtbsv.f331
-rw-r--r--BLAS/SRC/dtpmv.f233
-rw-r--r--BLAS/SRC/dtpsv.f237
-rw-r--r--BLAS/SRC/dtrmm.f297
-rw-r--r--BLAS/SRC/dtrmv.f241
-rw-r--r--BLAS/SRC/dtrsm.f306
-rw-r--r--BLAS/SRC/dtrsv.f243
-rw-r--r--BLAS/SRC/dzasum.f70
-rw-r--r--BLAS/SRC/dznrm2.f74
-rw-r--r--BLAS/SRC/icamax.f70
-rw-r--r--BLAS/SRC/idamax.f70
-rw-r--r--BLAS/SRC/isamax.f70
-rw-r--r--BLAS/SRC/izamax.f70
-rw-r--r--BLAS/SRC/lsame.f66
-rw-r--r--BLAS/SRC/sasum.f72
-rw-r--r--BLAS/SRC/saxpy.f73
-rw-r--r--BLAS/SRC/scabs1.f50
-rw-r--r--BLAS/SRC/scasum.f72
-rw-r--r--BLAS/SRC/scnrm2.f74
-rw-r--r--BLAS/SRC/scopy.f70
-rw-r--r--BLAS/SRC/sdot.f70
-rw-r--r--BLAS/SRC/sdsdot.f146
-rw-r--r--BLAS/SRC/sgbmv.f310
-rw-r--r--BLAS/SRC/sgemm.f314
-rw-r--r--BLAS/SRC/sgemv.f254
-rw-r--r--BLAS/SRC/sger.f199
-rw-r--r--BLAS/SRC/snrm2.f74
-rw-r--r--BLAS/SRC/srot.f71
-rw-r--r--BLAS/SRC/srotg.f57
-rw-r--r--BLAS/SRC/srotm.f138
-rw-r--r--BLAS/SRC/srotmg.f124
-rw-r--r--BLAS/SRC/ssbmv.f313
-rw-r--r--BLAS/SRC/sscal.f75
-rw-r--r--BLAS/SRC/sspmv.f239
-rw-r--r--BLAS/SRC/sspr.f205
-rw-r--r--BLAS/SRC/sspr2.f229
-rw-r--r--BLAS/SRC/sswap.f70
-rw-r--r--BLAS/SRC/ssymm.f318
-rw-r--r--BLAS/SRC/ssymv.f247
-rw-r--r--BLAS/SRC/ssyr.f213
-rw-r--r--BLAS/SRC/ssyr2.f237
-rw-r--r--BLAS/SRC/ssyr2k.f325
-rw-r--r--BLAS/SRC/ssyrk.f283
-rw-r--r--BLAS/SRC/stbmv.f327
-rw-r--r--BLAS/SRC/stbsv.f331
-rw-r--r--BLAS/SRC/stpmv.f233
-rw-r--r--BLAS/SRC/stpsv.f237
-rw-r--r--BLAS/SRC/strmm.f299
-rw-r--r--BLAS/SRC/strmv.f241
-rw-r--r--BLAS/SRC/strsm.f306
-rw-r--r--BLAS/SRC/strsv.f245
-rw-r--r--BLAS/SRC/xerbla.f81
-rw-r--r--BLAS/SRC/xerbla_array.f119
-rw-r--r--BLAS/SRC/zaxpy.f71
-rw-r--r--BLAS/SRC/zcopy.f68
-rw-r--r--BLAS/SRC/zdotc.f68
-rw-r--r--BLAS/SRC/zdotu.f68
-rw-r--r--BLAS/SRC/zdrot.f150
-rw-r--r--BLAS/SRC/zdscal.f73
-rw-r--r--BLAS/SRC/zgbmv.f313
-rw-r--r--BLAS/SRC/zgemm.f314
-rw-r--r--BLAS/SRC/zgemv.f256
-rw-r--r--BLAS/SRC/zgerc.f201
-rw-r--r--BLAS/SRC/zgeru.f201
-rw-r--r--BLAS/SRC/zhbmv.f319
-rw-r--r--BLAS/SRC/zhemm.f322
-rw-r--r--BLAS/SRC/zhemv.f251
-rw-r--r--BLAS/SRC/zher.f219
-rw-r--r--BLAS/SRC/zher2.f245
-rw-r--r--BLAS/SRC/zher2k.f336
-rw-r--r--BLAS/SRC/zherk.f290
-rw-r--r--BLAS/SRC/zhpmv.f243
-rw-r--r--BLAS/SRC/zhpr.f211
-rw-r--r--BLAS/SRC/zhpr2.f237
-rw-r--r--BLAS/SRC/zrotg.f51
-rw-r--r--BLAS/SRC/zscal.f73
-rw-r--r--BLAS/SRC/zswap.f68
-rw-r--r--BLAS/SRC/zsymm.f318
-rw-r--r--BLAS/SRC/zsyr2k.f316
-rw-r--r--BLAS/SRC/zsyrk.f278
-rw-r--r--BLAS/SRC/ztbmv.f327
-rw-r--r--BLAS/SRC/ztbsv.f331
-rw-r--r--BLAS/SRC/ztpmv.f233
-rw-r--r--BLAS/SRC/ztpsv.f237
-rw-r--r--BLAS/SRC/ztrmm.f299
-rw-r--r--BLAS/SRC/ztrmv.f241
-rw-r--r--BLAS/SRC/ztrsm.f304
-rw-r--r--BLAS/SRC/ztrsv.f245
151 files changed, 20133 insertions, 10260 deletions
diff --git a/BLAS/SRC/caxpy.f b/BLAS/SRC/caxpy.f
index c0bb7661..3e274e5b 100644
--- a/BLAS/SRC/caxpy.f
+++ b/BLAS/SRC/caxpy.f
@@ -1,22 +1,71 @@
- SUBROUTINE CAXPY(N,CA,CX,INCX,CY,INCY)
-* .. Scalar Arguments ..
- COMPLEX CA
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- COMPLEX CX(*),CY(*)
-* ..
+*> \brief \b CAXPY
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE CAXPY(N,CA,CX,INCX,CY,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX CA
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* COMPLEX CX(*),CY(*)
+* ..
+*
* Purpose
* =======
*
-* CAXPY constant times a vector plus a vector.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CAXPY constant times a vector plus a vector.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CAXPY(N,CA,CX,INCX,CY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ COMPLEX CA
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ COMPLEX CX(*),CY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ccopy.f b/BLAS/SRC/ccopy.f
index 87446f7b..039a8be8 100644
--- a/BLAS/SRC/ccopy.f
+++ b/BLAS/SRC/ccopy.f
@@ -1,21 +1,69 @@
- SUBROUTINE CCOPY(N,CX,INCX,CY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- COMPLEX CX(*),CY(*)
-* ..
+*> \brief \b CCOPY
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE CCOPY(N,CX,INCX,CY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* COMPLEX CX(*),CY(*)
+* ..
+*
* Purpose
* =======
*
-* CCOPY copies a vector x to a vector y.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CCOPY copies a vector x to a vector y.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CCOPY(N,CX,INCX,CY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ COMPLEX CX(*),CY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cdotc.f b/BLAS/SRC/cdotc.f
index 025d1636..6903726d 100644
--- a/BLAS/SRC/cdotc.f
+++ b/BLAS/SRC/cdotc.f
@@ -1,22 +1,70 @@
- COMPLEX FUNCTION CDOTC(N,CX,INCX,CY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- COMPLEX CX(*),CY(*)
-* ..
+*> \brief \b CDOTC
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* COMPLEX FUNCTION CDOTC(N,CX,INCX,CY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* COMPLEX CX(*),CY(*)
+* ..
+*
* Purpose
* =======
*
-* forms the dot product of two vectors, conjugating the first
-* vector.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> forms the dot product of two vectors, conjugating the first
+*> vector.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ COMPLEX FUNCTION CDOTC(N,CX,INCX,CY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ COMPLEX CX(*),CY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cdotu.f b/BLAS/SRC/cdotu.f
index d31c16f0..00bc019b 100644
--- a/BLAS/SRC/cdotu.f
+++ b/BLAS/SRC/cdotu.f
@@ -1,21 +1,69 @@
- COMPLEX FUNCTION CDOTU(N,CX,INCX,CY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- COMPLEX CX(*),CY(*)
-* ..
+*> \brief \b CDOTU
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* COMPLEX FUNCTION CDOTU(N,CX,INCX,CY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* COMPLEX CX(*),CY(*)
+* ..
+*
* Purpose
* =======
*
-* CDOTU forms the dot product of two vectors.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CDOTU forms the dot product of two vectors.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ COMPLEX FUNCTION CDOTU(N,CX,INCX,CY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ COMPLEX CX(*),CY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cgbmv.f b/BLAS/SRC/cgbmv.f
index 6392e1d8..aa8d9d8c 100644
--- a/BLAS/SRC/cgbmv.f
+++ b/BLAS/SRC/cgbmv.f
@@ -1,134 +1,213 @@
- SUBROUTINE CGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- COMPLEX ALPHA,BETA
- INTEGER INCX,INCY,KL,KU,LDA,M,N
- CHARACTER TRANS
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b CGBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA,BETA
+* INTEGER INCX,INCY,KL,KU,LDA,M,N
+* CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* CGBMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CGBMV performs one of the matrix-vector operations
+*>
+*> y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, or
+*>
+*> y := alpha*A**H*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are vectors and A is an
+*> m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*>
+*>\endverbatim
*
-* y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, or
+* Arguments
+* =========
+*
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] KL
+*> \verbatim
+*> KL is INTEGER
+*> On entry, KL specifies the number of sub-diagonals of the
+*> matrix A. KL must satisfy 0 .le. KL.
+*> \endverbatim
+*>
+*> \param[in] KU
+*> \verbatim
+*> KU is INTEGER
+*> On entry, KU specifies the number of super-diagonals of the
+*> matrix A. KU must satisfy 0 .le. KU.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry, the leading ( kl + ku + 1 ) by n part of the
+*> array A must contain the matrix of coefficients, supplied
+*> column by column, with the leading diagonal of the matrix in
+*> row ( ku + 1 ) of the array, the first super-diagonal
+*> starting at position 2 in row ku, the first sub-diagonal
+*> starting at position 1 in row ( ku + 2 ), and so on.
+*> Elements in the array A that do not correspond to elements
+*> in the band matrix (such as the top left ku by ku triangle)
+*> 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 )
+*> A( K + I, J ) = matrix( I, J )
+*> 10 CONTINUE
+*> 20 CONTINUE
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( kl + ku + 1 ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is COMPLEX array of DIMENSION at least
+*> ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*> Before entry, the incremented array Y must contain the
+*> vector y. On exit, Y is overwritten by the updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A**H*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are vectors and A is an
-* m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*
-* TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*
-* TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* KL - INTEGER.
-* On entry, KL specifies the number of sub-diagonals of the
-* matrix A. KL must satisfy 0 .le. KL.
-* Unchanged on exit.
-*
-* KU - INTEGER.
-* On entry, KU specifies the number of super-diagonals of the
-* matrix A. KU must satisfy 0 .le. KU.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry, the leading ( kl + ku + 1 ) by n part of the
-* array A must contain the matrix of coefficients, supplied
-* column by column, with the leading diagonal of the matrix in
-* row ( ku + 1 ) of the array, the first super-diagonal
-* starting at position 2 in row ku, the first sub-diagonal
-* starting at position 1 in row ( ku + 2 ), and so on.
-* Elements in the array A that do not correspond to elements
-* in the band matrix (such as the top left ku by ku triangle)
-* are not referenced.
-* The following program segment will transfer a band matrix
-* from conventional full matrix storage to band storage:
-*
-* DO 20, J = 1, N
-* K = KU + 1 - J
-* DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
-* A( K + I, J ) = matrix( I, J )
-* 10 CONTINUE
-* 20 CONTINUE
-*
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( kl + ku + 1 ).
-* Unchanged on exit.
-*
-* X - COMPLEX array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - COMPLEX .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - COMPLEX array of DIMENSION at least
-* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
-* Before entry, the incremented array Y must contain the
-* vector y. On exit, Y is overwritten by the updated vector y.
-*
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA,BETA
+ INTEGER INCX,INCY,KL,KU,LDA,M,N
+ CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cgemm.f b/BLAS/SRC/cgemm.f
index 24548db1..daf642d0 100644
--- a/BLAS/SRC/cgemm.f
+++ b/BLAS/SRC/cgemm.f
@@ -1,133 +1,215 @@
- SUBROUTINE CGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX ALPHA,BETA
- INTEGER K,LDA,LDB,LDC,M,N
- CHARACTER TRANSA,TRANSB
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b CGEMM
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA,BETA
+* INTEGER K,LDA,LDB,LDC,M,N
+* CHARACTER TRANSA,TRANSB
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* CGEMM performs one of the matrix-matrix operations
-*
-* C := alpha*op( A )*op( B ) + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CGEMM performs one of the matrix-matrix operations
+*>
+*> C := alpha*op( A )*op( B ) + beta*C,
+*>
+*> where op( X ) is one of
+*>
+*> op( X ) = X or op( X ) = X**T or op( X ) = X**H,
+*>
+*> alpha and beta are scalars, and A, B and C are matrices, with op( A )
+*> an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+*>
+*>\endverbatim
*
-* where op( X ) is one of
+* Arguments
+* =========
+*
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSB
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix
+*> op( A ) and of the matrix C. M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix
+*> op( B ) and the number of columns of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry, K specifies the number of columns of the matrix
+*> op( A ) and the number of rows of the matrix op( B ). K must
+*> be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, ka ), where ka is
+*> k when TRANSA = 'N' or 'n', and is m otherwise.
+*> Before entry with TRANSA = 'N' or 'n', the leading m by k
+*> part of the array A must contain the matrix A, otherwise
+*> the leading k by m part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANSA = 'N' or 'n' then
+*> LDA must be at least max( 1, m ), otherwise LDA must be at
+*> least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is COMPLEX array of DIMENSION ( LDB, kb ), where kb is
+*> n when TRANSB = 'N' or 'n', and is k otherwise.
+*> Before entry with TRANSB = 'N' or 'n', the leading k by n
+*> part of the array B must contain the matrix B, otherwise
+*> the leading n by k part of the array B must contain the
+*> matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. When TRANSB = 'N' or 'n' then
+*> LDB must be at least max( 1, k ), otherwise LDB must be at
+*> least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then C need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX array of DIMENSION ( LDC, n ).
+*> Before entry, the leading m by n part of the array C must
+*> contain the matrix C, except when beta is zero, in which
+*> case C need not be set on entry.
+*> On exit, the array C is overwritten by the m by n matrix
+*> ( alpha*op( A )*op( B ) + beta*C ).
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* op( X ) = X or op( X ) = X**T or op( X ) = X**H,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* alpha and beta are scalars, and A, B and C are matrices, with op( A )
-* an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level3
*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n', op( A ) = A.
-*
-* TRANSA = 'T' or 't', op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c', op( A ) = A**H.
-*
-* Unchanged on exit.
-*
-* TRANSB - CHARACTER*1.
-* On entry, TRANSB specifies the form of op( B ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSB = 'N' or 'n', op( B ) = B.
-*
-* TRANSB = 'T' or 't', op( B ) = B**T.
-*
-* TRANSB = 'C' or 'c', op( B ) = B**H.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix
-* op( A ) and of the matrix C. M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix
-* op( B ) and the number of columns of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry, K specifies the number of columns of the matrix
-* op( A ) and the number of rows of the matrix op( B ). K must
-* be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, ka ), where ka is
-* k when TRANSA = 'N' or 'n', and is m otherwise.
-* Before entry with TRANSA = 'N' or 'n', the leading m by k
-* part of the array A must contain the matrix A, otherwise
-* the leading k by m part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANSA = 'N' or 'n' then
-* LDA must be at least max( 1, m ), otherwise LDA must be at
-* least max( 1, k ).
-* Unchanged on exit.
-*
-* B - COMPLEX array of DIMENSION ( LDB, kb ), where kb is
-* n when TRANSB = 'N' or 'n', and is k otherwise.
-* Before entry with TRANSB = 'N' or 'n', the leading k by n
-* part of the array B must contain the matrix B, otherwise
-* the leading n by k part of the array B must contain the
-* matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. When TRANSB = 'N' or 'n' then
-* LDB must be at least max( 1, k ), otherwise LDB must be at
-* least max( 1, n ).
-* Unchanged on exit.
-*
-* BETA - COMPLEX .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then C need not be set on input.
-* Unchanged on exit.
-*
-* C - COMPLEX array of DIMENSION ( LDC, n ).
-* Before entry, the leading m by n part of the array C must
-* contain the matrix C, except when beta is zero, in which
-* case C need not be set on entry.
-* On exit, the array C is overwritten by the m by n matrix
-* ( alpha*op( A )*op( B ) + beta*C ).
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA,BETA
+ INTEGER K,LDA,LDB,LDC,M,N
+ CHARACTER TRANSA,TRANSB
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cgemv.f b/BLAS/SRC/cgemv.f
index d9e55f9a..a341b454 100644
--- a/BLAS/SRC/cgemv.f
+++ b/BLAS/SRC/cgemv.f
@@ -1,107 +1,183 @@
- SUBROUTINE CGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- COMPLEX ALPHA,BETA
- INTEGER INCX,INCY,LDA,M,N
- CHARACTER TRANS
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b CGEMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA,BETA
+* INTEGER INCX,INCY,LDA,M,N
+* CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* CGEMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CGEMV performs one of the matrix-vector operations
+*>
+*> y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, or
+*>
+*> y := alpha*A**H*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are vectors and A is an
+*> m by n matrix.
+*>
+*>\endverbatim
*
-* y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, or
+* Arguments
+* =========
+*
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry, the leading m by n part of the array A must
+*> contain the matrix of coefficients.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is COMPLEX array of DIMENSION at least
+*> ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*> Before entry with BETA non-zero, the incremented array Y
+*> must contain the vector y. On exit, Y is overwritten by the
+*> updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A**H*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are vectors and A is an
-* m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*
-* TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*
-* TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry, the leading m by n part of the array A must
-* contain the matrix of coefficients.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, m ).
-* Unchanged on exit.
-*
-* X - COMPLEX array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - COMPLEX .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - COMPLEX array of DIMENSION at least
-* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
-* Before entry with BETA non-zero, the incremented array Y
-* must contain the vector y. On exit, Y is overwritten by the
-* updated vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA,BETA
+ INTEGER INCX,INCY,LDA,M,N
+ CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cgerc.f b/BLAS/SRC/cgerc.f
index ffc578a1..d6539b01 100644
--- a/BLAS/SRC/cgerc.f
+++ b/BLAS/SRC/cgerc.f
@@ -1,82 +1,151 @@
- SUBROUTINE CGERC(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
-* .. Scalar Arguments ..
- COMPLEX ALPHA
- INTEGER INCX,INCY,LDA,M,N
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b CGERC
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CGERC(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA
+* INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* CGERC performs the rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CGERC performs the rank 1 operation
+*>
+*> A := alpha*x*y**H + A,
+*>
+*> where alpha is a scalar, x is an m element vector, y is an n element
+*> vector and A is an m by n matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX array of dimension at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the m
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry, the leading m by n part of the array A must
+*> contain the matrix of coefficients. On exit, A is
+*> overwritten by the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**H + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x is an m element vector, y is an n element
-* vector and A is an m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( m - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the m
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry, the leading m by n part of the array A must
-* contain the matrix of coefficients. On exit, A is
-* overwritten by the updated matrix.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CGERC(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA
+ INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cgeru.f b/BLAS/SRC/cgeru.f
index 712aba2a..0db12d7b 100644
--- a/BLAS/SRC/cgeru.f
+++ b/BLAS/SRC/cgeru.f
@@ -1,82 +1,151 @@
- SUBROUTINE CGERU(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
-* .. Scalar Arguments ..
- COMPLEX ALPHA
- INTEGER INCX,INCY,LDA,M,N
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b CGERU
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CGERU(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA
+* INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* CGERU performs the rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CGERU performs the rank 1 operation
+*>
+*> A := alpha*x*y**T + A,
+*>
+*> where alpha is a scalar, x is an m element vector, y is an n element
+*> vector and A is an m by n matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX array of dimension at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the m
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry, the leading m by n part of the array A must
+*> contain the matrix of coefficients. On exit, A is
+*> overwritten by the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x is an m element vector, y is an n element
-* vector and A is an m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( m - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the m
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry, the leading m by n part of the array A must
-* contain the matrix of coefficients. On exit, A is
-* overwritten by the updated matrix.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CGERU(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA
+ INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/chbmv.f b/BLAS/SRC/chbmv.f
index e7bacae5..bd3b69c5 100644
--- a/BLAS/SRC/chbmv.f
+++ b/BLAS/SRC/chbmv.f
@@ -1,136 +1,215 @@
- SUBROUTINE CHBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- COMPLEX ALPHA,BETA
- INTEGER INCX,INCY,K,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b CHBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CHBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA,BETA
+* INTEGER INCX,INCY,K,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* CHBMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CHBMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n hermitian band matrix, with k super-diagonals.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry, K specifies the number of super-diagonals of the
+*> matrix A. K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the hermitian matrix, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is COMPLEX array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the
+*> vector y. On exit, Y is overwritten by the updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n hermitian band matrix, with k super-diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the band matrix A is being supplied as
-* follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* being supplied.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* being supplied.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry, K specifies the number of super-diagonals of the
-* matrix A. K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the hermitian matrix, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer the upper
-* triangular part of a hermitian band matrix from conventional
-* full matrix storage to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer the lower
-* triangular part of a hermitian band matrix from conventional
-* full matrix storage to band storage:
-*
-* 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
-*
-* Note that the imaginary parts of the diagonal elements need
-* not be set and are assumed to be zero.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - COMPLEX array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - COMPLEX .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* Y - COMPLEX array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the
-* vector y. On exit, Y is overwritten by the updated vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CHBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA,BETA
+ INTEGER INCX,INCY,K,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/chemm.f b/BLAS/SRC/chemm.f
index f5cb17a5..9947cb28 100644
--- a/BLAS/SRC/chemm.f
+++ b/BLAS/SRC/chemm.f
@@ -1,139 +1,217 @@
- SUBROUTINE CHEMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX ALPHA,BETA
- INTEGER LDA,LDB,LDC,M,N
- CHARACTER SIDE,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b CHEMM
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CHEMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA,BETA
+* INTEGER LDA,LDB,LDC,M,N
+* CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* CHEMM performs one of the matrix-matrix operations
-*
-* C := alpha*A*B + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CHEMM performs one of the matrix-matrix operations
+*>
+*> C := alpha*A*B + beta*C,
+*>
+*> or
+*>
+*> C := alpha*B*A + beta*C,
+*>
+*> where alpha and beta are scalars, A is an hermitian matrix and B and
+*> C are m by n matrices.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix C.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix C.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, ka ), where ka is
+*> m when SIDE = 'L' or 'l' and is n otherwise.
+*> Before entry with SIDE = 'L' or 'l', the m by m part of
+*> the array A must contain the hermitian matrix, such that
+*> when UPLO = 'U' or 'u', the leading m by m upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the hermitian matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading m by m lower triangular part of the array A
+*> must contain the lower triangular part of the hermitian
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> Before entry with SIDE = 'R' or 'r', the n by n part of
+*> the array A must contain the hermitian matrix, such that
+*> when UPLO = 'U' or 'u', the leading n by n upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the hermitian matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading n by n lower triangular part of the array A
+*> must contain the lower triangular part of the hermitian
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), otherwise LDA must be at
+*> least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is COMPLEX array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then C need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX array of DIMENSION ( LDC, n ).
+*> Before entry, the leading m by n part of the array C must
+*> contain the matrix C, except when beta is zero, in which
+*> case C need not be set on entry.
+*> On exit, the array C is overwritten by the m by n updated
+*> matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*B*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, A is an hermitian matrix and B and
-* C are m by n matrices.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level3
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether the hermitian matrix A
-* appears on the left or right in the operation as follows:
-*
-* SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*
-* SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the hermitian matrix A is to be
-* referenced as follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of the
-* hermitian matrix is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of the
-* hermitian matrix is to be referenced.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix C.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix C.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, ka ), where ka is
-* m when SIDE = 'L' or 'l' and is n otherwise.
-* Before entry with SIDE = 'L' or 'l', the m by m part of
-* the array A must contain the hermitian matrix, such that
-* when UPLO = 'U' or 'u', the leading m by m upper triangular
-* part of the array A must contain the upper triangular part
-* of the hermitian matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading m by m lower triangular part of the array A
-* must contain the lower triangular part of the hermitian
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Before entry with SIDE = 'R' or 'r', the n by n part of
-* the array A must contain the hermitian matrix, such that
-* when UPLO = 'U' or 'u', the leading n by n upper triangular
-* part of the array A must contain the upper triangular part
-* of the hermitian matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading n by n lower triangular part of the array A
-* must contain the lower triangular part of the hermitian
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), otherwise LDA must be at
-* least max( 1, n ).
-* Unchanged on exit.
-*
-* B - COMPLEX array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
-*
-* BETA - COMPLEX .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then C need not be set on input.
-* Unchanged on exit.
-*
-* C - COMPLEX array of DIMENSION ( LDC, n ).
-* Before entry, the leading m by n part of the array C must
-* contain the matrix C, except when beta is zero, in which
-* case C need not be set on entry.
-* On exit, the array C is overwritten by the m by n updated
-* matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CHEMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA,BETA
+ INTEGER LDA,LDB,LDC,M,N
+ CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/chemv.f b/BLAS/SRC/chemv.f
index 3ddca361..85de0631 100644
--- a/BLAS/SRC/chemv.f
+++ b/BLAS/SRC/chemv.f
@@ -1,105 +1,178 @@
- SUBROUTINE CHEMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- COMPLEX ALPHA,BETA
- INTEGER INCX,INCY,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b CHEMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CHEMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA,BETA
+* INTEGER INCX,INCY,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* CHEMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CHEMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n hermitian matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the hermitian matrix and the strictly
+*> lower triangular part of A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the hermitian matrix and the strictly
+*> upper triangular part of A is not referenced.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set and are assumed to be zero.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> 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. On exit, Y is overwritten by the updated
+*> vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n hermitian matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the hermitian matrix and the strictly
-* lower triangular part of A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the hermitian matrix and the strictly
-* upper triangular part of A is not referenced.
-* Note that the imaginary parts of the diagonal elements need
-* not be set and are assumed to be zero.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
-*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - COMPLEX .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y. On exit, Y is overwritten by the updated
-* vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CHEMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA,BETA
+ INTEGER INCX,INCY,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cher.f b/BLAS/SRC/cher.f
index b8d5ac01..b7ccc0b6 100644
--- a/BLAS/SRC/cher.f
+++ b/BLAS/SRC/cher.f
@@ -1,92 +1,157 @@
- SUBROUTINE CHER(UPLO,N,ALPHA,X,INCX,A,LDA)
-* .. Scalar Arguments ..
- REAL ALPHA
- INTEGER INCX,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*)
-* ..
+*> \brief \b CHER
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CHER(UPLO,N,ALPHA,X,INCX,A,LDA)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA
+* INTEGER INCX,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* CHER performs the hermitian rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CHER performs the hermitian rank 1 operation
+*>
+*> A := alpha*x*x**H + A,
+*>
+*> where alpha is a real scalar, x is an n element vector and A is an
+*> n by n hermitian matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*> \verbatim
+*> X COMPLEX array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the hermitian matrix and the strictly
+*> lower triangular part of A is not referenced. On exit, the
+*> upper triangular part of the array A is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the hermitian matrix and the strictly
+*> upper triangular part of A is not referenced. On exit, the
+*> lower triangular part of the array A is overwritten by the
+*> lower triangular part of the updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*x**H + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a real scalar, x is an n element vector and A is an
-* n by n hermitian matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the hermitian matrix and the strictly
-* lower triangular part of A is not referenced. On exit, the
-* upper triangular part of the array A is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the hermitian matrix and the strictly
-* upper triangular part of A is not referenced. On exit, the
-* lower triangular part of the array A is overwritten by the
-* lower triangular part of the updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CHER(UPLO,N,ALPHA,X,INCX,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA
+ INTEGER INCX,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cher2.f b/BLAS/SRC/cher2.f
index 3cc1a7d0..ee6e3a44 100644
--- a/BLAS/SRC/cher2.f
+++ b/BLAS/SRC/cher2.f
@@ -1,103 +1,170 @@
- SUBROUTINE CHER2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
-* .. Scalar Arguments ..
- COMPLEX ALPHA
- INTEGER INCX,INCY,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b CHER2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CHER2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA
+* INTEGER INCX,INCY,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* CHER2 performs the hermitian rank 2 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CHER2 performs the hermitian rank 2 operation
+*>
+*> A := alpha*x*y**H + conjg( alpha )*y*x**H + A,
+*>
+*> where alpha is a scalar, x and y are n element vectors and A is an n
+*> by n hermitian matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*> \verbatim
+*> X COMPLEX array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*> \verbatim
+*> Y COMPLEX array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the hermitian matrix and the strictly
+*> lower triangular part of A is not referenced. On exit, the
+*> upper triangular part of the array A is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the hermitian matrix and the strictly
+*> upper triangular part of A is not referenced. On exit, the
+*> lower triangular part of the array A is overwritten by the
+*> lower triangular part of the updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**H + conjg( alpha )*y*x**H + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x and y are n element vectors and A is an n
-* by n hermitian matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the hermitian matrix and the strictly
-* lower triangular part of A is not referenced. On exit, the
-* upper triangular part of the array A is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the hermitian matrix and the strictly
-* upper triangular part of A is not referenced. On exit, the
-* lower triangular part of the array A is overwritten by the
-* lower triangular part of the updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CHER2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA
+ INTEGER INCX,INCY,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cher2k.f b/BLAS/SRC/cher2k.f
index 368c1878..3a386fc8 100644
--- a/BLAS/SRC/cher2k.f
+++ b/BLAS/SRC/cher2k.f
@@ -1,145 +1,224 @@
- SUBROUTINE CHER2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX ALPHA
- REAL BETA
- INTEGER K,LDA,LDB,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b CHER2K
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CHER2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA
+* REAL BETA
+* INTEGER K,LDA,LDB,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* CHER2K performs one of the hermitian rank 2k operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CHER2K performs one of the hermitian rank 2k operations
+*>
+*> C := alpha*A*B**H + conjg( alpha )*B*A**H + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**H*B + conjg( alpha )*B**H*A + beta*C,
+*>
+*> where alpha and beta are scalars with beta real, C is an n by n
+*> hermitian matrix and A and B are n by k matrices in the first case
+*> and k by n matrices in the second case.
+*>
+*>\endverbatim
*
-* C := alpha*A*B**H + conjg( alpha )*B*A**H + beta*C,
-*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrices A and B, and on entry with
+*> TRANS = 'C' or 'c', K specifies the number of rows of the
+*> matrices A and B. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is COMPLEX array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
+*> the leading k by n part of the array B must contain the
+*> matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDB must be at least max( 1, n ), otherwise LDB must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is REAL
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the hermitian matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the hermitian matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**H*B + conjg( alpha )*B**H*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars with beta real, C is an n by n
-* hermitian matrix and A and B are n by k matrices in the first case
-* and k by n matrices in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*B**H +
-* conjg( alpha )*B*A**H +
-* beta*C.
-*
-* TRANS = 'C' or 'c' C := alpha*A**H*B +
-* conjg( alpha )*B**H*A +
-* beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrices A and B, and on entry with
-* TRANS = 'C' or 'c', K specifies the number of rows of the
-* matrices A and B. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* B - COMPLEX array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
-* the leading k by n part of the array B must contain the
-* matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDB must be at least max( 1, n ), otherwise LDB must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - REAL .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - COMPLEX array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the hermitian matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the hermitian matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> -- Modified 8-Nov-93 to set C(J,J) to REAL( C(J,J) ) when BETA = 1.
+*> Ed Anderson, Cray Research Inc.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CHER2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
-*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Modified 8-Nov-93 to set C(J,J) to REAL( C(J,J) ) when BETA = 1.
-* Ed Anderson, Cray Research Inc.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA
+ REAL BETA
+ INTEGER K,LDA,LDB,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cherk.f b/BLAS/SRC/cherk.f
index b2c1d556..66913b6e 100644
--- a/BLAS/SRC/cherk.f
+++ b/BLAS/SRC/cherk.f
@@ -1,125 +1,199 @@
- SUBROUTINE CHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
-* .. Scalar Arguments ..
- REAL ALPHA,BETA
- INTEGER K,LDA,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),C(LDC,*)
-* ..
+*> \brief \b CHERK
+*
+* =========== DOCUMENTATION ===========
*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE CHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA,BETA
+* INTEGER K,LDA,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* CHERK performs one of the hermitian rank k operations
-*
-* C := alpha*A*A**H + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CHERK performs one of the hermitian rank k operations
+*>
+*> C := alpha*A*A**H + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**H*A + beta*C,
+*>
+*> where alpha and beta are real scalars, C is an n by n hermitian
+*> matrix and A is an n by k matrix in the first case and a k by n
+*> matrix in the second case.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrix A, and on entry with
+*> TRANS = 'C' or 'c', K specifies the number of rows of the
+*> matrix A. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is REAL
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the hermitian matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the hermitian matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**H*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are real scalars, C is an n by n hermitian
-* matrix and A is an n by k matrix in the first case and a k by n
-* matrix in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*A**H + beta*C.
-*
-* TRANS = 'C' or 'c' C := alpha*A**H*A + beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrix A, and on entry with
-* TRANS = 'C' or 'c', K specifies the number of rows of the
-* matrix A. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - REAL .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - COMPLEX array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the hermitian matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the hermitian matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> -- Modified 8-Nov-93 to set C(J,J) to REAL( C(J,J) ) when BETA = 1.
+*> Ed Anderson, Cray Research Inc.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
*
-* Level 3 Blas routine.
-*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Modified 8-Nov-93 to set C(J,J) to REAL( C(J,J) ) when BETA = 1.
-* Ed Anderson, Cray Research Inc.
+* .. Scalar Arguments ..
+ REAL ALPHA,BETA
+ INTEGER K,LDA,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/chpmv.f b/BLAS/SRC/chpmv.f
index 264bdb24..857293aa 100644
--- a/BLAS/SRC/chpmv.f
+++ b/BLAS/SRC/chpmv.f
@@ -1,102 +1,173 @@
- SUBROUTINE CHPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- COMPLEX ALPHA,BETA
- INTEGER INCX,INCY,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX AP(*),X(*),Y(*)
-* ..
+*> \brief \b CHPMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CHPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA,BETA
+* INTEGER INCX,INCY,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX AP(*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* CHPMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CHPMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n hermitian matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is COMPLEX array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set and are assumed to be zero.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> 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. On exit, Y is overwritten by the updated
+*> vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n hermitian matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* AP - COMPLEX array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on.
-* Note that the imaginary parts of the diagonal elements need
-* not be set and are assumed to be zero.
-* Unchanged on exit.
-*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - COMPLEX .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y. On exit, Y is overwritten by the updated
-* vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CHPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA,BETA
+ INTEGER INCX,INCY,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX AP(*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/chpr.f b/BLAS/SRC/chpr.f
index 747b74af..1cdcf62f 100644
--- a/BLAS/SRC/chpr.f
+++ b/BLAS/SRC/chpr.f
@@ -1,89 +1,154 @@
- SUBROUTINE CHPR(UPLO,N,ALPHA,X,INCX,AP)
-* .. Scalar Arguments ..
- REAL ALPHA
- INTEGER INCX,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX AP(*),X(*)
-* ..
+*> \brief \b CHPR
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CHPR(UPLO,N,ALPHA,X,INCX,AP)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA
+* INTEGER INCX,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX AP(*),X(*)
+* ..
+*
* Purpose
* =======
*
-* CHPR performs the hermitian rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CHPR performs the hermitian rank 1 operation
+*>
+*> A := alpha*x*x**H + A,
+*>
+*> where alpha is a real scalar, x is an n element vector and A is an
+*> n by n hermitian matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is COMPLEX array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the upper triangular part of the
+*> updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the lower triangular part of the
+*> updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*x**H + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a real scalar, x is an n element vector and A is an
-* n by n hermitian matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* AP - COMPLEX array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on. On exit, the array
-* AP is overwritten by the upper triangular part of the
-* updated matrix.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on. On exit, the array
-* AP is overwritten by the lower triangular part of the
-* updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CHPR(UPLO,N,ALPHA,X,INCX,AP)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA
+ INTEGER INCX,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/chpr2.f b/BLAS/SRC/chpr2.f
index 71734cee..2a44bb95 100644
--- a/BLAS/SRC/chpr2.f
+++ b/BLAS/SRC/chpr2.f
@@ -1,100 +1,167 @@
- SUBROUTINE CHPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
-* .. Scalar Arguments ..
- COMPLEX ALPHA
- INTEGER INCX,INCY,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX AP(*),X(*),Y(*)
-* ..
+*> \brief \b CHPR2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CHPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA
+* INTEGER INCX,INCY,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX AP(*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* CHPR2 performs the hermitian rank 2 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CHPR2 performs the hermitian rank 2 operation
+*>
+*> A := alpha*x*y**H + conjg( alpha )*y*x**H + A,
+*>
+*> where alpha is a scalar, x and y are n element vectors and A is an
+*> n by n hermitian matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*> \verbatim
+*> Y COMPLEX array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is COMPLEX array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the upper triangular part of the
+*> updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the lower triangular part of the
+*> updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**H + conjg( alpha )*y*x**H + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x and y are n element vectors and A is an
-* n by n hermitian matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* AP - COMPLEX array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on. On exit, the array
-* AP is overwritten by the upper triangular part of the
-* updated matrix.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on. On exit, the array
-* AP is overwritten by the lower triangular part of the
-* updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CHPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA
+ INTEGER INCX,INCY,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX AP(*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/crotg.f b/BLAS/SRC/crotg.f
index 360028cc..f4800229 100644
--- a/BLAS/SRC/crotg.f
+++ b/BLAS/SRC/crotg.f
@@ -1,14 +1,55 @@
+*> \brief \b CROTG
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE CROTG(CA,CB,C,S)
+*
+* .. Scalar Arguments ..
+* COMPLEX CA,CB,S
+* REAL C
+* ..
+*
+* Purpose
+* =======
+*
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CROTG determines a complex Givens rotation.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex_blas_level1
+*
+* =====================================================================
SUBROUTINE CROTG(CA,CB,C,S)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
+*
* .. Scalar Arguments ..
COMPLEX CA,CB,S
REAL C
* ..
*
-* Purpose
-* =======
-*
-* CROTG determines a complex Givens rotation.
-*
* =====================================================================
*
* .. Local Scalars ..
diff --git a/BLAS/SRC/cscal.f b/BLAS/SRC/cscal.f
index ce1ae155..0e2dc6a1 100644
--- a/BLAS/SRC/cscal.f
+++ b/BLAS/SRC/cscal.f
@@ -1,23 +1,72 @@
- SUBROUTINE CSCAL(N,CA,CX,INCX)
-* .. Scalar Arguments ..
- COMPLEX CA
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- COMPLEX CX(*)
-* ..
+*> \brief \b CSCAL
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE CSCAL(N,CA,CX,INCX)
+*
+* .. Scalar Arguments ..
+* COMPLEX CA
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* COMPLEX CX(*)
+* ..
+*
* Purpose
* =======
*
-* CSCAL scales a vector by a constant.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CSCAL scales a vector by a constant.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CSCAL(N,CA,CX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ COMPLEX CA
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ COMPLEX CX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/csrot.f b/BLAS/SRC/csrot.f
index 4178079a..02a7a38c 100644
--- a/BLAS/SRC/csrot.f
+++ b/BLAS/SRC/csrot.f
@@ -1,5 +1,110 @@
+*> \brief \b CSROT
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE CSROT( N, CX, INCX, CY, INCY, C, S )
+*
+* .. Scalar Arguments ..
+* INTEGER INCX, INCY, N
+* REAL C, S
+* ..
+* .. Array Arguments ..
+* COMPLEX CX( * ), CY( * )
+* ..
+*
+* Purpose
+* =======
+*
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CSROT applies a plane rotation, where the cos and sin (c and s) are real
+*> and the vectors cx and cy are complex.
+*> jack dongarra, linpack, 3/11/78.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the vectors cx and cy.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in,out] CX
+*> \verbatim
+*> CX is COMPLEX array, dimension at least
+*> ( 1 + ( N - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array CX must contain the n
+*> element vector cx. On exit, CX is overwritten by the updated
+*> vector cx.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> CX. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] CY
+*> \verbatim
+*> CY is COMPLEX array, dimension at least
+*> ( 1 + ( N - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array CY must contain the n
+*> element vector cy. On exit, CY is overwritten by the updated
+*> vector cy.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> CY. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in] C
+*> \verbatim
+*> C is REAL
+*> On entry, C specifies the cosine, cos.
+*> \endverbatim
+*>
+*> \param[in] S
+*> \verbatim
+*> S is REAL
+*> On entry, S specifies the sine, sin.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex_blas_level1
+*
+* =====================================================================
SUBROUTINE CSROT( N, CX, INCX, CY, INCY, C, S )
*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
+*
* .. Scalar Arguments ..
INTEGER INCX, INCY, N
REAL C, S
@@ -8,51 +113,6 @@
COMPLEX CX( * ), CY( * )
* ..
*
-* Purpose
-* =======
-*
-* CSROT applies a plane rotation, where the cos and sin (c and s) are real
-* and the vectors cx and cy are complex.
-* jack dongarra, linpack, 3/11/78.
-*
-* Arguments
-* ==========
-*
-* N (input) INTEGER
-* On entry, N specifies the order of the vectors cx and cy.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* CX (input) COMPLEX array, dimension at least
-* ( 1 + ( N - 1 )*abs( INCX ) ).
-* Before entry, the incremented array CX must contain the n
-* element vector cx. On exit, CX is overwritten by the updated
-* vector cx.
-*
-* INCX (input) INTEGER
-* On entry, INCX specifies the increment for the elements of
-* CX. INCX must not be zero.
-* Unchanged on exit.
-*
-* CY (input) COMPLEX array, dimension at least
-* ( 1 + ( N - 1 )*abs( INCY ) ).
-* Before entry, the incremented array CY must contain the n
-* element vector cy. On exit, CY is overwritten by the updated
-* vector cy.
-*
-* INCY (input) INTEGER
-* On entry, INCY specifies the increment for the elements of
-* CY. INCY must not be zero.
-* Unchanged on exit.
-*
-* C (input) REAL
-* On entry, C specifies the cosine, cos.
-* Unchanged on exit.
-*
-* S (input) REAL
-* On entry, S specifies the sine, sin.
-* Unchanged on exit.
-*
* =====================================================================
*
* .. Local Scalars ..
diff --git a/BLAS/SRC/csscal.f b/BLAS/SRC/csscal.f
index 8ec2eade..2af05c22 100644
--- a/BLAS/SRC/csscal.f
+++ b/BLAS/SRC/csscal.f
@@ -1,23 +1,72 @@
- SUBROUTINE CSSCAL(N,SA,CX,INCX)
-* .. Scalar Arguments ..
- REAL SA
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- COMPLEX CX(*)
-* ..
+*> \brief \b CSSCAL
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE CSSCAL(N,SA,CX,INCX)
+*
+* .. Scalar Arguments ..
+* REAL SA
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* COMPLEX CX(*)
+* ..
+*
* Purpose
* =======
*
-* CSSCAL scales a complex vector by a real constant.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CSSCAL scales a complex vector by a real constant.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CSSCAL(N,SA,CX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ REAL SA
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ COMPLEX CX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/cswap.f b/BLAS/SRC/cswap.f
index 1e267179..12a6f193 100644
--- a/BLAS/SRC/cswap.f
+++ b/BLAS/SRC/cswap.f
@@ -1,21 +1,69 @@
- SUBROUTINE CSWAP(N,CX,INCX,CY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- COMPLEX CX(*),CY(*)
-* ..
+*> \brief \b CSWAP
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE CSWAP(N,CX,INCX,CY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* COMPLEX CX(*),CY(*)
+* ..
+*
* Purpose
* =======
*
-* CSWAP interchanges two vectors.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CSWAP interchanges two vectors.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CSWAP(N,CX,INCX,CY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ COMPLEX CX(*),CY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/csymm.f b/BLAS/SRC/csymm.f
index c925a778..326dcf0d 100644
--- a/BLAS/SRC/csymm.f
+++ b/BLAS/SRC/csymm.f
@@ -1,137 +1,215 @@
- SUBROUTINE CSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX ALPHA,BETA
- INTEGER LDA,LDB,LDC,M,N
- CHARACTER SIDE,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b CSYMM
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA,BETA
+* INTEGER LDA,LDB,LDC,M,N
+* CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* CSYMM performs one of the matrix-matrix operations
-*
-* C := alpha*A*B + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CSYMM performs one of the matrix-matrix operations
+*>
+*> C := alpha*A*B + beta*C,
+*>
+*> or
+*>
+*> C := alpha*B*A + beta*C,
+*>
+*> where alpha and beta are scalars, A is a symmetric matrix and B and
+*> C are m by n matrices.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix C.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix C.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, ka ), where ka is
+*> m when SIDE = 'L' or 'l' and is n otherwise.
+*> Before entry with SIDE = 'L' or 'l', the m by m part of
+*> the array A must contain the symmetric matrix, such that
+*> when UPLO = 'U' or 'u', the leading m by m upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the symmetric matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading m by m lower triangular part of the array A
+*> must contain the lower triangular part of the symmetric
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> Before entry with SIDE = 'R' or 'r', the n by n part of
+*> the array A must contain the symmetric matrix, such that
+*> when UPLO = 'U' or 'u', the leading n by n upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the symmetric matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading n by n lower triangular part of the array A
+*> must contain the lower triangular part of the symmetric
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), otherwise LDA must be at
+*> least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is COMPLEX array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then C need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX array of DIMENSION ( LDC, n ).
+*> Before entry, the leading m by n part of the array C must
+*> contain the matrix C, except when beta is zero, in which
+*> case C need not be set on entry.
+*> On exit, the array C is overwritten by the m by n updated
+*> matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*B*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, A is a symmetric matrix and B and
-* C are m by n matrices.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level3
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether the symmetric matrix A
-* appears on the left or right in the operation as follows:
-*
-* SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*
-* SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the symmetric matrix A is to be
-* referenced as follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of the
-* symmetric matrix is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of the
-* symmetric matrix is to be referenced.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix C.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix C.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, ka ), where ka is
-* m when SIDE = 'L' or 'l' and is n otherwise.
-* Before entry with SIDE = 'L' or 'l', the m by m part of
-* the array A must contain the symmetric matrix, such that
-* when UPLO = 'U' or 'u', the leading m by m upper triangular
-* part of the array A must contain the upper triangular part
-* of the symmetric matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading m by m lower triangular part of the array A
-* must contain the lower triangular part of the symmetric
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Before entry with SIDE = 'R' or 'r', the n by n part of
-* the array A must contain the symmetric matrix, such that
-* when UPLO = 'U' or 'u', the leading n by n upper triangular
-* part of the array A must contain the upper triangular part
-* of the symmetric matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading n by n lower triangular part of the array A
-* must contain the lower triangular part of the symmetric
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), otherwise LDA must be at
-* least max( 1, n ).
-* Unchanged on exit.
-*
-* B - COMPLEX array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
-*
-* BETA - COMPLEX .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then C need not be set on input.
-* Unchanged on exit.
-*
-* C - COMPLEX array of DIMENSION ( LDC, n ).
-* Before entry, the leading m by n part of the array C must
-* contain the matrix C, except when beta is zero, in which
-* case C need not be set on entry.
-* On exit, the array C is overwritten by the m by n updated
-* matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA,BETA
+ INTEGER LDA,LDB,LDC,M,N
+ CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/csyr2k.f b/BLAS/SRC/csyr2k.f
index ed1a56cd..0b424b45 100644
--- a/BLAS/SRC/csyr2k.f
+++ b/BLAS/SRC/csyr2k.f
@@ -1,136 +1,212 @@
- SUBROUTINE CSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX ALPHA,BETA
- INTEGER K,LDA,LDB,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b CSYR2K
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA,BETA
+* INTEGER K,LDA,LDB,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* CSYR2K performs one of the symmetric rank 2k operations
-*
-* C := alpha*A*B**T + alpha*B*A**T + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CSYR2K performs one of the symmetric rank 2k operations
+*>
+*> C := alpha*A*B**T + alpha*B*A**T + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**T*B + alpha*B**T*A + beta*C,
+*>
+*> where alpha and beta are scalars, C is an n by n symmetric matrix
+*> and A and B are n by k matrices in the first case and k by n
+*> matrices in the second case.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrices A and B, and on entry with
+*> TRANS = 'T' or 't', K specifies the number of rows of the
+*> matrices A and B. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*> \verbatim
+*> A 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is COMPLEX array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
+*> the leading k by n part of the array B must contain the
+*> matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDB must be at least max( 1, n ), otherwise LDB must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**T*B + alpha*B**T*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, C is an n by n symmetric matrix
-* and A and B are n by k matrices in the first case and k by n
-* matrices in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T +
-* beta*C.
-*
-* TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A +
-* beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrices A and B, and on entry with
-* TRANS = 'T' or 't', K specifies the number of rows of the
-* matrices A and B. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* B - COMPLEX array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
-* the leading k by n part of the array B must contain the
-* matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDB must be at least max( 1, n ), otherwise LDB must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - COMPLEX .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - COMPLEX array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA,BETA
+ INTEGER K,LDA,LDB,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/csyrk.f b/BLAS/SRC/csyrk.f
index 7b346ff0..be0a0b93 100644
--- a/BLAS/SRC/csyrk.f
+++ b/BLAS/SRC/csyrk.f
@@ -1,119 +1,193 @@
- SUBROUTINE CSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX ALPHA,BETA
- INTEGER K,LDA,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),C(LDC,*)
-* ..
+*> \brief \b CSYRK
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA,BETA
+* INTEGER K,LDA,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* CSYRK performs one of the symmetric rank k operations
-*
-* C := alpha*A*A**T + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CSYRK performs one of the symmetric rank k operations
+*>
+*> C := alpha*A*A**T + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**T*A + beta*C,
+*>
+*> where alpha and beta are scalars, C is an n by n symmetric matrix
+*> and A is an n by k matrix in the first case and a k by n matrix
+*> in the second case.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrix A, and on entry with
+*> TRANS = 'T' or 't', K specifies the number of rows of the
+*> matrix A. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**T*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, C is an n by n symmetric matrix
-* and A is an n by k matrix in the first case and a k by n matrix
-* in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C.
-*
-* TRANS = 'T' or 't' C := alpha*A**T*A + beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrix A, and on entry with
-* TRANS = 'T' or 't', K specifies the number of rows of the
-* matrix A. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - COMPLEX .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - COMPLEX array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA,BETA
+ INTEGER K,LDA,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ctbmv.f b/BLAS/SRC/ctbmv.f
index 37e0e7f8..1a7820e2 100644
--- a/BLAS/SRC/ctbmv.f
+++ b/BLAS/SRC/ctbmv.f
@@ -1,141 +1,218 @@
- SUBROUTINE CTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,K,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*)
-* ..
+*> \brief \b CTBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,K,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* CTBMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CTBMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x, or x := A**H*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with UPLO = 'U' or 'u', K specifies the number of
+*> super-diagonals of the matrix A.
+*> On entry with UPLO = 'L' or 'l', K specifies the number of
+*> sub-diagonals of the matrix A.
+*> K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the matrix of coefficients, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> 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. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* x := A*x, or x := A**T*x, or x := A**H*x,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**H*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with UPLO = 'U' or 'u', K specifies the number of
-* super-diagonals of the matrix A.
-* On entry with UPLO = 'L' or 'l', K specifies the number of
-* sub-diagonals of the matrix A.
-* K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the matrix of coefficients, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer an upper
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer a lower
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,K,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ctbsv.f b/BLAS/SRC/ctbsv.f
index bdbd9a3f..f7eb02c5 100644
--- a/BLAS/SRC/ctbsv.f
+++ b/BLAS/SRC/ctbsv.f
@@ -1,144 +1,221 @@
- SUBROUTINE CTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,K,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*)
-* ..
+*> \brief \b CTBSV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE CTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,K,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* CTBSV solves one of the systems of equations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CTBSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b, or A**H*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular band matrix, with ( k + 1 )
+*> diagonals.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* A*x = b, or A**T*x = b, or A**H*x = b,
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with UPLO = 'U' or 'u', K specifies the number of
+*> super-diagonals of the matrix A.
+*> On entry with UPLO = 'L' or 'l', K specifies the number of
+*> sub-diagonals of the matrix A.
+*> K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the matrix of coefficients, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is COMPLEX array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular band matrix, with ( k + 1 )
-* diagonals.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**H*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with UPLO = 'U' or 'u', K specifies the number of
-* super-diagonals of the matrix A.
-* On entry with UPLO = 'L' or 'l', K specifies the number of
-* sub-diagonals of the matrix A.
-* K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the matrix of coefficients, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer an upper
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer a lower
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,K,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ctpmv.f b/BLAS/SRC/ctpmv.f
index 53b1b165..d20c624f 100644
--- a/BLAS/SRC/ctpmv.f
+++ b/BLAS/SRC/ctpmv.f
@@ -1,101 +1,170 @@
- SUBROUTINE CTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX AP(*),X(*)
-* ..
-*
-* Purpose
-* =======
-*
-* CTPMV performs one of the matrix-vector operations
+*> \brief \b CTPMV
*
-* x := A*x, or x := A**T*x, or x := A**H*x,
+* =========== DOCUMENTATION ===========
*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular matrix, supplied in packed form.
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**H*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+* SUBROUTINE CTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX AP(*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CTPMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x, or x := A**H*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular matrix, supplied in packed form.
+*>
+*>\endverbatim
*
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is COMPLEX array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*> respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*> respectively, and so on.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> 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. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* AP - COMPLEX array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
-* respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
-* respectively, and so on.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced, but are assumed to be unity.
-* Unchanged on exit.
+*> \date November 2011
*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
+*> \ingroup complex_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ctpsv.f b/BLAS/SRC/ctpsv.f
index 3a7da00c..5fba7a90 100644
--- a/BLAS/SRC/ctpsv.f
+++ b/BLAS/SRC/ctpsv.f
@@ -1,103 +1,172 @@
- SUBROUTINE CTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX AP(*),X(*)
-* ..
+*> \brief \b CTPSV
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* CTPSV solves one of the systems of equations
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* A*x = b, or A**T*x = b, or A**H*x = b,
-*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular matrix, supplied in packed form.
-*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
-*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**H*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+* SUBROUTINE CTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX AP(*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CTPSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b, or A**H*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular matrix, supplied in packed form.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is COMPLEX array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*> respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*> respectively, and so on.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is COMPLEX array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* AP - COMPLEX array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
-* respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
-* respectively, and so on.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced, but are assumed to be unity.
-* Unchanged on exit.
+*> \date November 2011
*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
+*> \ingroup complex_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ctrmm.f b/BLAS/SRC/ctrmm.f
index e05a623e..8d95a5e7 100644
--- a/BLAS/SRC/ctrmm.f
+++ b/BLAS/SRC/ctrmm.f
@@ -1,129 +1,208 @@
- SUBROUTINE CTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
-* .. Scalar Arguments ..
- COMPLEX ALPHA
- INTEGER LDA,LDB,M,N
- CHARACTER DIAG,SIDE,TRANSA,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),B(LDB,*)
-* ..
-*
-* Purpose
-* =======
+*> \brief \b CTRMM
*
-* CTRMM performs one of the matrix-matrix operations
+* =========== DOCUMENTATION ===========
*
-* B := alpha*op( A )*B, or B := alpha*B*op( A )
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* where alpha is a scalar, B is an m by n matrix, A is a unit, or
-* non-unit, upper or lower triangular matrix and op( A ) is one of
-*
-* op( A ) = A or op( A ) = A**T or op( A ) = A**H.
-*
-* Arguments
+* Definition
* ==========
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether op( A ) multiplies B from
-* the left or right as follows:
-*
-* SIDE = 'L' or 'l' B := alpha*op( A )*B.
-*
-* SIDE = 'R' or 'r' B := alpha*B*op( A ).
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix A is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n' op( A ) = A.
-*
-* TRANSA = 'T' or 't' op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c' op( A ) = A**H.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit triangular
-* as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of B. M must be at
-* least zero.
-* Unchanged on exit.
+* SUBROUTINE CTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA
+* INTEGER LDA,LDB,M,N
+* CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),B(LDB,*)
+* ..
+*
+* Purpose
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the number of columns of B. N must be
-* at least zero.
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CTRMM performs one of the matrix-matrix operations
+*>
+*> B := alpha*op( A )*B, or B := alpha*B*op( A )
+*>
+*> where alpha is a scalar, B is an m by n matrix, A is a unit, or
+*> non-unit, upper or lower triangular matrix and op( A ) is one of
+*>
+*> op( A ) = A or op( A ) = A**T or op( A ) = A**H.
+*>
+*>\endverbatim
*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha. When alpha is
-* zero then A is not referenced and B need not be set before
-* entry.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of B. M must be at
+*> least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of B. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha. When alpha is
+*> zero then A is not referenced and B need not be set before
+*> entry.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX 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
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading k by k
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+*> then LDA must be at least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the matrix B, and on exit is overwritten by the
+*> transformed matrix.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - COMPLEX 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
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading k by k
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
-* then LDA must be at least max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* B - COMPLEX array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the matrix B, and on exit is overwritten by the
-* transformed matrix.
+*> \ingroup complex_blas_level3
*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA
+ INTEGER LDA,LDB,M,N
+ CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),B(LDB,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ctrmv.f b/BLAS/SRC/ctrmv.f
index ac0afb73..f432c96f 100644
--- a/BLAS/SRC/ctrmv.f
+++ b/BLAS/SRC/ctrmv.f
@@ -1,104 +1,175 @@
- SUBROUTINE CTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*)
-* ..
+*> \brief \b CTRMV
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* CTRMV performs one of the matrix-vector operations
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* x := A*x, or x := A**T*x, or x := A**H*x,
-*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular matrix.
-*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**H*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+* SUBROUTINE CTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CTRMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x, or x := A**H*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular matrix.
+*>
+*>\endverbatim
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> 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. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
+*> \ingroup complex_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ctrsm.f b/BLAS/SRC/ctrsm.f
index 2aeb8727..3fd4635e 100644
--- a/BLAS/SRC/ctrsm.f
+++ b/BLAS/SRC/ctrsm.f
@@ -1,131 +1,211 @@
- SUBROUTINE CTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
-* .. Scalar Arguments ..
- COMPLEX ALPHA
- INTEGER LDA,LDB,M,N
- CHARACTER DIAG,SIDE,TRANSA,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),B(LDB,*)
-* ..
-*
-* Purpose
-* =======
+*> \brief \b CTRSM
*
-* CTRSM solves one of the matrix equations
+* =========== DOCUMENTATION ===========
*
-* op( A )*X = alpha*B, or X*op( A ) = alpha*B,
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* where alpha is a scalar, X and B are m by n matrices, A is a unit, or
-* non-unit, upper or lower triangular matrix and op( A ) is one of
-*
-* op( A ) = A or op( A ) = A**T or op( A ) = A**H.
-*
-* The matrix X is overwritten on B.
-*
-* Arguments
+* Definition
* ==========
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether op( A ) appears on the left
-* or right of X as follows:
-*
-* SIDE = 'L' or 'l' op( A )*X = alpha*B.
-*
-* SIDE = 'R' or 'r' X*op( A ) = alpha*B.
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix A is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n' op( A ) = A.
-*
-* TRANSA = 'T' or 't' op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c' op( A ) = A**H.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit triangular
-* as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of B. M must be at
-* least zero.
-* Unchanged on exit.
+* SUBROUTINE CTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*
+* .. Scalar Arguments ..
+* COMPLEX ALPHA
+* INTEGER LDA,LDB,M,N
+* CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),B(LDB,*)
+* ..
+*
+* Purpose
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the number of columns of B. N must be
-* at least zero.
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CTRSM solves one of the matrix equations
+*>
+*> op( A )*X = alpha*B, or X*op( A ) = alpha*B,
+*>
+*> where alpha is a scalar, X and B are m by n matrices, A is a unit, or
+*> non-unit, upper or lower triangular matrix and op( A ) is one of
+*>
+*> op( A ) = A or op( A ) = A**T or op( A ) = A**H.
+*>
+*> The matrix X is overwritten on B.
+*>
+*>\endverbatim
*
-* ALPHA - COMPLEX .
-* On entry, ALPHA specifies the scalar alpha. When alpha is
-* zero then A is not referenced and B need not be set before
-* entry.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of B. M must be at
+*> least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of B. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX
+*> On entry, ALPHA specifies the scalar alpha. When alpha is
+*> zero then A is not referenced and B need not be set before
+*> entry.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, k ),
+*> where k is m when SIDE = 'L' or 'l'
+*> and k 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
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading k by k
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+*> then LDA must be at least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the right-hand side matrix B, and on exit is
+*> overwritten by the solution matrix X.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - COMPLEX 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
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading k by k
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
-* then LDA must be at least max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* B - COMPLEX array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the right-hand side matrix B, and on exit is
-* overwritten by the solution matrix X.
+*> \ingroup complex_blas_level3
*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX ALPHA
+ INTEGER LDA,LDB,M,N
+ CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),B(LDB,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ctrsv.f b/BLAS/SRC/ctrsv.f
index 93e7e44f..52fdb37b 100644
--- a/BLAS/SRC/ctrsv.f
+++ b/BLAS/SRC/ctrsv.f
@@ -1,106 +1,177 @@
- SUBROUTINE CTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX A(LDA,*),X(*)
-* ..
+*> \brief \b CTRSV
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* CTRSV solves one of the systems of equations
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* A*x = b, or A**T*x = b, or A**H*x = b,
-*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular matrix.
-*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
-*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**H*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+* SUBROUTINE CTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX A(LDA,*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CTRSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b, or A**H*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular matrix.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is COMPLEX array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - COMPLEX array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* X - COMPLEX array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
+*> \ingroup complex_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE CTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dasum.f b/BLAS/SRC/dasum.f
index e673554c..b6609ded 100644
--- a/BLAS/SRC/dasum.f
+++ b/BLAS/SRC/dasum.f
@@ -1,22 +1,70 @@
- DOUBLE PRECISION FUNCTION DASUM(N,DX,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION DX(*)
-* ..
+*> \brief \b DASUM
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* DOUBLE PRECISION FUNCTION DASUM(N,DX,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION DX(*)
+* ..
+*
* Purpose
* =======
*
-* DASUM takes the sum of the absolute values.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DASUM takes the sum of the absolute values.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ DOUBLE PRECISION FUNCTION DASUM(N,DX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION DX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/daxpy.f b/BLAS/SRC/daxpy.f
index ddc7449a..b21a9654 100644
--- a/BLAS/SRC/daxpy.f
+++ b/BLAS/SRC/daxpy.f
@@ -1,23 +1,72 @@
- SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY)
-* .. Scalar Arguments ..
- DOUBLE PRECISION DA
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION DX(*),DY(*)
-* ..
+*> \brief \b DAXPY
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION DA
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION DX(*),DY(*)
+* ..
+*
* Purpose
* =======
*
-* DAXPY constant times a vector plus a vector.
-* uses unrolled loops for increments equal to one.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DAXPY constant times a vector plus a vector.
+*> uses unrolled loops for increments equal to one.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ DOUBLE PRECISION DA
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION DX(*),DY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dcabs1.f b/BLAS/SRC/dcabs1.f
index 73a51fbe..f290b05c 100644
--- a/BLAS/SRC/dcabs1.f
+++ b/BLAS/SRC/dcabs1.f
@@ -1,13 +1,53 @@
+*> \brief \b DCABS1
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* DOUBLE PRECISION FUNCTION DCABS1(Z)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 Z
+* ..
+* ..
+* Purpose
+* =======
+*
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DCABS1 computes absolute value of a double complex number
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
+*
+* =====================================================================
DOUBLE PRECISION FUNCTION DCABS1(Z)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
+*
* .. Scalar Arguments ..
COMPLEX*16 Z
* ..
* ..
-* Purpose
-* =======
-*
-* DCABS1 computes absolute value of a double complex number
-*
* =====================================================================
*
* .. Intrinsic Functions ..
diff --git a/BLAS/SRC/dcopy.f b/BLAS/SRC/dcopy.f
index a4414509..35d0f4de 100644
--- a/BLAS/SRC/dcopy.f
+++ b/BLAS/SRC/dcopy.f
@@ -1,22 +1,70 @@
- SUBROUTINE DCOPY(N,DX,INCX,DY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION DX(*),DY(*)
-* ..
+*> \brief \b DCOPY
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE DCOPY(N,DX,INCX,DY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION DX(*),DY(*)
+* ..
+*
* Purpose
* =======
*
-* DCOPY copies a vector, x, to a vector, y.
-* uses unrolled loops for increments equal to one.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DCOPY copies a vector, x, to a vector, y.
+*> uses unrolled loops for increments equal to one.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DCOPY(N,DX,INCX,DY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION DX(*),DY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ddot.f b/BLAS/SRC/ddot.f
index 33719eed..13acc405 100644
--- a/BLAS/SRC/ddot.f
+++ b/BLAS/SRC/ddot.f
@@ -1,22 +1,70 @@
- DOUBLE PRECISION FUNCTION DDOT(N,DX,INCX,DY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION DX(*),DY(*)
-* ..
+*> \brief \b DDOT
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* DOUBLE PRECISION FUNCTION DDOT(N,DX,INCX,DY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION DX(*),DY(*)
+* ..
+*
* Purpose
* =======
*
-* DDOT forms the dot product of two vectors.
-* uses unrolled loops for increments equal to one.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DDOT forms the dot product of two vectors.
+*> uses unrolled loops for increments equal to one.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ DOUBLE PRECISION FUNCTION DDOT(N,DX,INCX,DY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION DX(*),DY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dgbmv.f b/BLAS/SRC/dgbmv.f
index 1fd5a589..92dacb42 100644
--- a/BLAS/SRC/dgbmv.f
+++ b/BLAS/SRC/dgbmv.f
@@ -1,131 +1,211 @@
- SUBROUTINE DGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA,BETA
- INTEGER INCX,INCY,KL,KU,LDA,M,N
- CHARACTER TRANS
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b DGBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA,BETA
+* INTEGER INCX,INCY,KL,KU,LDA,M,N
+* CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* DGBMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DGBMV performs one of the matrix-vector operations
+*>
+*> y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are vectors and A is an
+*> m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] KL
+*> \verbatim
+*> KL is INTEGER
+*> On entry, KL specifies the number of sub-diagonals of the
+*> matrix A. KL must satisfy 0 .le. KL.
+*> \endverbatim
+*>
+*> \param[in] KU
+*> \verbatim
+*> KU is INTEGER
+*> On entry, KU specifies the number of super-diagonals of the
+*> matrix A. KU must satisfy 0 .le. KU.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*> Before entry, the leading ( kl + ku + 1 ) by n part of the
+*> array A must contain the matrix of coefficients, supplied
+*> column by column, with the leading diagonal of the matrix in
+*> row ( ku + 1 ) of the array, the first super-diagonal
+*> starting at position 2 in row ku, the first sub-diagonal
+*> starting at position 1 in row ( ku + 2 ), and so on.
+*> Elements in the array A that do not correspond to elements
+*> in the band matrix (such as the top left ku by ku triangle)
+*> 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 )
+*> A( K + I, J ) = matrix( I, J )
+*> 10 CONTINUE
+*> 20 CONTINUE
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( kl + ku + 1 ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION.
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is DOUBLE PRECISION array of DIMENSION at least
+*> ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*> Before entry, the incremented array Y must contain the
+*> vector y. On exit, Y is overwritten by the updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are vectors and A is an
-* m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*
-* TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*
-* TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* KL - INTEGER.
-* On entry, KL specifies the number of sub-diagonals of the
-* matrix A. KL must satisfy 0 .le. KL.
-* Unchanged on exit.
-*
-* KU - INTEGER.
-* On entry, KU specifies the number of super-diagonals of the
-* matrix A. KU must satisfy 0 .le. KU.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
-* Before entry, the leading ( kl + ku + 1 ) by n part of the
-* array A must contain the matrix of coefficients, supplied
-* column by column, with the leading diagonal of the matrix in
-* row ( ku + 1 ) of the array, the first super-diagonal
-* starting at position 2 in row ku, the first sub-diagonal
-* starting at position 1 in row ( ku + 2 ), and so on.
-* Elements in the array A that do not correspond to elements
-* in the band matrix (such as the top left ku by ku triangle)
-* are not referenced.
-* The following program segment will transfer a band matrix
-* from conventional full matrix storage to band storage:
-*
-* DO 20, J = 1, N
-* K = KU + 1 - J
-* DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
-* A( K + I, J ) = matrix( I, J )
-* 10 CONTINUE
-* 20 CONTINUE
-*
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( kl + ku + 1 ).
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - DOUBLE PRECISION.
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - DOUBLE PRECISION array of DIMENSION at least
-* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
-* Before entry, the incremented array Y must contain the
-* vector y. On exit, Y is overwritten by the updated vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA,BETA
+ INTEGER INCX,INCY,KL,KU,LDA,M,N
+ CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dgemm.f b/BLAS/SRC/dgemm.f
index 7ac8c46b..64737822 100644
--- a/BLAS/SRC/dgemm.f
+++ b/BLAS/SRC/dgemm.f
@@ -1,133 +1,215 @@
- SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA,BETA
- INTEGER K,LDA,LDB,LDC,M,N
- CHARACTER TRANSA,TRANSB
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b DGEMM
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA,BETA
+* INTEGER K,LDA,LDB,LDC,M,N
+* CHARACTER TRANSA,TRANSB
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* DGEMM performs one of the matrix-matrix operations
-*
-* C := alpha*op( A )*op( B ) + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DGEMM performs one of the matrix-matrix operations
+*>
+*> C := alpha*op( A )*op( B ) + beta*C,
+*>
+*> where op( X ) is one of
+*>
+*> op( X ) = X or op( X ) = X**T,
+*>
+*> alpha and beta are scalars, and A, B and C are matrices, with op( A )
+*> an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+*>
+*>\endverbatim
*
-* where op( X ) is one of
+* Arguments
+* =========
+*
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSB
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix
+*> op( A ) and of the matrix C. M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix
+*> op( B ) and the number of columns of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry, K specifies the number of columns of the matrix
+*> op( A ) and the number of rows of the matrix op( B ). K must
+*> be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
+*> k when TRANSA = 'N' or 'n', and is m otherwise.
+*> Before entry with TRANSA = 'N' or 'n', the leading m by k
+*> part of the array A must contain the matrix A, otherwise
+*> the leading k by m part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANSA = 'N' or 'n' then
+*> LDA must be at least max( 1, m ), otherwise LDA must be at
+*> least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb is
+*> n when TRANSB = 'N' or 'n', and is k otherwise.
+*> Before entry with TRANSB = 'N' or 'n', the leading k by n
+*> part of the array B must contain the matrix B, otherwise
+*> the leading n by k part of the array B must contain the
+*> matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. When TRANSB = 'N' or 'n' then
+*> LDB must be at least max( 1, k ), otherwise LDB must be at
+*> least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION.
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then C need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+*> Before entry, the leading m by n part of the array C must
+*> contain the matrix C, except when beta is zero, in which
+*> case C need not be set on entry.
+*> On exit, the array C is overwritten by the m by n matrix
+*> ( alpha*op( A )*op( B ) + beta*C ).
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* op( X ) = X or op( X ) = X**T,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* alpha and beta are scalars, and A, B and C are matrices, with op( A )
-* an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level3
*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n', op( A ) = A.
-*
-* TRANSA = 'T' or 't', op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c', op( A ) = A**T.
-*
-* Unchanged on exit.
-*
-* TRANSB - CHARACTER*1.
-* On entry, TRANSB specifies the form of op( B ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSB = 'N' or 'n', op( B ) = B.
-*
-* TRANSB = 'T' or 't', op( B ) = B**T.
-*
-* TRANSB = 'C' or 'c', op( B ) = B**T.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix
-* op( A ) and of the matrix C. M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix
-* op( B ) and the number of columns of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry, K specifies the number of columns of the matrix
-* op( A ) and the number of rows of the matrix op( B ). K must
-* be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
-* k when TRANSA = 'N' or 'n', and is m otherwise.
-* Before entry with TRANSA = 'N' or 'n', the leading m by k
-* part of the array A must contain the matrix A, otherwise
-* the leading k by m part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANSA = 'N' or 'n' then
-* LDA must be at least max( 1, m ), otherwise LDA must be at
-* least max( 1, k ).
-* Unchanged on exit.
-*
-* B - DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb is
-* n when TRANSB = 'N' or 'n', and is k otherwise.
-* Before entry with TRANSB = 'N' or 'n', the leading k by n
-* part of the array B must contain the matrix B, otherwise
-* the leading n by k part of the array B must contain the
-* matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. When TRANSB = 'N' or 'n' then
-* LDB must be at least max( 1, k ), otherwise LDB must be at
-* least max( 1, n ).
-* Unchanged on exit.
-*
-* BETA - DOUBLE PRECISION.
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then C need not be set on input.
-* Unchanged on exit.
-*
-* C - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
-* Before entry, the leading m by n part of the array C must
-* contain the matrix C, except when beta is zero, in which
-* case C need not be set on entry.
-* On exit, the array C is overwritten by the m by n matrix
-* ( alpha*op( A )*op( B ) + beta*C ).
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA,BETA
+ INTEGER K,LDA,LDB,LDC,M,N
+ CHARACTER TRANSA,TRANSB
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dgemv.f b/BLAS/SRC/dgemv.f
index a4125941..c428737a 100644
--- a/BLAS/SRC/dgemv.f
+++ b/BLAS/SRC/dgemv.f
@@ -1,105 +1,181 @@
- SUBROUTINE DGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA,BETA
- INTEGER INCX,INCY,LDA,M,N
- CHARACTER TRANS
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b DGEMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA,BETA
+* INTEGER INCX,INCY,LDA,M,N
+* CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* DGEMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DGEMV performs one of the matrix-vector operations
+*>
+*> y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are vectors and A is an
+*> m by n matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*> Before entry, the leading m by n part of the array A must
+*> contain the matrix of coefficients.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION.
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is DOUBLE PRECISION array of DIMENSION at least
+*> ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*> Before entry with BETA non-zero, the incremented array Y
+*> must contain the vector y. On exit, Y is overwritten by the
+*> updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are vectors and A is an
-* m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*
-* TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*
-* TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
-* Before entry, the leading m by n part of the array A must
-* contain the matrix of coefficients.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, m ).
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - DOUBLE PRECISION.
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - DOUBLE PRECISION array of DIMENSION at least
-* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
-* Before entry with BETA non-zero, the incremented array Y
-* must contain the vector y. On exit, Y is overwritten by the
-* updated vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA,BETA
+ INTEGER INCX,INCY,LDA,M,N
+ CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dger.f b/BLAS/SRC/dger.f
index 1d95257e..c0e6059c 100644
--- a/BLAS/SRC/dger.f
+++ b/BLAS/SRC/dger.f
@@ -1,82 +1,151 @@
- SUBROUTINE DGER(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA
- INTEGER INCX,INCY,LDA,M,N
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b DGER
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DGER(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA
+* INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* DGER performs the rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DGER performs the rank 1 operation
+*>
+*> A := alpha*x*y**T + A,
+*>
+*> where alpha is a scalar, x is an m element vector, y is an n element
+*> vector and A is an m by n matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the m
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> Y is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*> Before entry, the leading m by n part of the array A must
+*> contain the matrix of coefficients. On exit, A is
+*> overwritten by the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x is an m element vector, y is an n element
-* vector and A is an m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( m - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the m
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
-* Before entry, the leading m by n part of the array A must
-* contain the matrix of coefficients. On exit, A is
-* overwritten by the updated matrix.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DGER(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dnrm2.f b/BLAS/SRC/dnrm2.f
index 480c912a..7d4a005d 100644
--- a/BLAS/SRC/dnrm2.f
+++ b/BLAS/SRC/dnrm2.f
@@ -1,25 +1,73 @@
- DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION X(*)
-* ..
+*> \brief \b DNRM2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION X(*)
+* ..
+*
* Purpose
* =======
*
-* DNRM2 returns the euclidean norm of a vector via the function
-* name, so that
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DNRM2 returns the euclidean norm of a vector via the function
+*> name, so that
+*>
+*> DNRM2 := sqrt( x'*x )
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
*
-* DNRM2 := sqrt( x'*x )
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> -- This version written on 25-October-1982.
+*> Modified on 14-October-1993 to inline the call to DLASSQ.
+*> Sven Hammarling, Nag Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- This version written on 25-October-1982.
-* Modified on 14-October-1993 to inline the call to DLASSQ.
-* Sven Hammarling, Nag Ltd.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/drot.f b/BLAS/SRC/drot.f
index a02bda37..355e17f8 100644
--- a/BLAS/SRC/drot.f
+++ b/BLAS/SRC/drot.f
@@ -1,22 +1,71 @@
- SUBROUTINE DROT(N,DX,INCX,DY,INCY,C,S)
-* .. Scalar Arguments ..
- DOUBLE PRECISION C,S
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION DX(*),DY(*)
-* ..
+*> \brief \b DROT
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE DROT(N,DX,INCX,DY,INCY,C,S)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION C,S
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION DX(*),DY(*)
+* ..
+*
* Purpose
* =======
*
-* DROT applies a plane rotation.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DROT applies a plane rotation.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DROT(N,DX,INCX,DY,INCY,C,S)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ DOUBLE PRECISION C,S
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION DX(*),DY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/drotg.f b/BLAS/SRC/drotg.f
index 3819f473..dcf3e135 100644
--- a/BLAS/SRC/drotg.f
+++ b/BLAS/SRC/drotg.f
@@ -1,17 +1,62 @@
- SUBROUTINE DROTG(DA,DB,C,S)
-* .. Scalar Arguments ..
- DOUBLE PRECISION C,DA,DB,S
-* ..
+*> \brief \b DROTG
+*
+* =========== DOCUMENTATION ===========
*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE DROTG(DA,DB,C,S)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION C,DA,DB,S
+* ..
+*
* Purpose
* =======
*
-* DROTG construct givens plane rotation.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DROTG construct givens plane rotation.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DROTG(DA,DB,C,S)
*
-* jack dongarra, linpack, 3/11/78.
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS 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 C,DA,DB,S
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/drotm.f b/BLAS/SRC/drotm.f
index a245116d..4d523113 100644
--- a/BLAS/SRC/drotm.f
+++ b/BLAS/SRC/drotm.f
@@ -1,54 +1,116 @@
- SUBROUTINE DROTM(N,DX,INCX,DY,INCY,DPARAM)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION DPARAM(5),DX(*),DY(*)
-* ..
+*> \brief \b DROTM
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* APPLY THE MODIFIED GIVENS TRANSFORMATION, H, TO THE 2 BY N MATRIX
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* (DX**T) , WHERE **T INDICATES TRANSPOSE. THE ELEMENTS OF DX ARE IN
-* (DY**T)
+* Definition
+* ==========
*
-* DX(LX+I*INCX), I = 0 TO N-1, WHERE LX = 1 IF INCX .GE. 0, ELSE
-* LX = (-INCX)*N, AND SIMILARLY FOR SY USING LY AND INCY.
-* WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS..
-*
-* DFLAG=-1.D0 DFLAG=0.D0 DFLAG=1.D0 DFLAG=-2.D0
+* SUBROUTINE DROTM(N,DX,INCX,DY,INCY,DPARAM)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION DPARAM(5),DX(*),DY(*)
+* ..
+*
+* Purpose
+* =======
*
-* (DH11 DH12) (1.D0 DH12) (DH11 1.D0) (1.D0 0.D0)
-* H=( ) ( ) ( ) ( )
-* (DH21 DH22), (DH21 1.D0), (-1.D0 DH22), (0.D0 1.D0).
-* SEE DROTMG FOR A DESCRIPTION OF DATA STORAGE IN DPARAM.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> APPLY THE MODIFIED GIVENS TRANSFORMATION, H, TO THE 2 BY N MATRIX
+*>
+*> (DX**T) , WHERE **T INDICATES TRANSPOSE. THE ELEMENTS OF DX ARE IN
+*> (DY**T)
+*>
+*> DX(LX+I*INCX), I = 0 TO N-1, WHERE LX = 1 IF INCX .GE. 0, ELSE
+*> LX = (-INCX)*N, AND SIMILARLY FOR SY USING LY AND INCY.
+*> WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+*>
+*> DFLAG=-1.D0 DFLAG=0.D0 DFLAG=1.D0 DFLAG=-2.D0
+*>
+*> (DH11 DH12) (1.D0 DH12) (DH11 1.D0) (1.D0 0.D0)
+*> H=( ) ( ) ( ) ( )
+*> (DH21 DH22), (DH21 1.D0), (-1.D0 DH22), (0.D0 1.D0).
+*> SEE DROTMG FOR A DESCRIPTION OF DATA STORAGE IN DPARAM.
+*>
+*>\endverbatim
*
* Arguments
* =========
*
-* N (input) INTEGER
-* number of elements in input vector(s)
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> number of elements in input vector(s)
+*> \endverbatim
+*>
+*> \param[in,out] DX
+*> \verbatim
+*> DX is DOUBLE PRECISION array, dimension N
+*> double precision vector with N elements
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> storage spacing between elements of DX
+*> \endverbatim
+*>
+*> \param[in,out] DY
+*> \verbatim
+*> DY is DOUBLE PRECISION array, dimension N
+*> double precision vector with N elements
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> storage spacing between elements of DY
+*> \endverbatim
+*>
+*> \param[in,out] DPARAM
+*> \verbatim
+*> DPARAM is DOUBLE PRECISION array, dimension 5
+*> DPARAM(1)=DFLAG
+*> DPARAM(2)=DH11
+*> DPARAM(3)=DH21
+*> DPARAM(4)=DH12
+*> DPARAM(5)=DH22
+*> \endverbatim
+*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* DX (input/output) DOUBLE PRECISION array, dimension N
-* double precision vector with N elements
+*> \date November 2011
*
-* INCX (input) INTEGER
-* storage spacing between elements of DX
+*> \ingroup double_blas_level1
*
-* DY (input/output) DOUBLE PRECISION array, dimension N
-* double precision vector with N elements
+* =====================================================================
+ SUBROUTINE DROTM(N,DX,INCX,DY,INCY,DPARAM)
*
-* INCY (input) INTEGER
-* storage spacing between elements of DY
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* DPARAM (input/output) DOUBLE PRECISION array, dimension 5
-* DPARAM(1)=DFLAG
-* DPARAM(2)=DH11
-* DPARAM(3)=DH21
-* DPARAM(4)=DH12
-* DPARAM(5)=DH22
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION DPARAM(5),DX(*),DY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/drotmg.f b/BLAS/SRC/drotmg.f
index 108c7949..694d37aa 100644
--- a/BLAS/SRC/drotmg.f
+++ b/BLAS/SRC/drotmg.f
@@ -1,50 +1,108 @@
- SUBROUTINE DROTMG(DD1,DD2,DX1,DY1,DPARAM)
-* .. Scalar Arguments ..
- DOUBLE PRECISION DD1,DD2,DX1,DY1
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION DPARAM(5)
-* ..
-*
-* Purpose
-* =======
+*> \brief \b DROTMG
*
-* CONSTRUCT THE MODIFIED GIVENS TRANSFORMATION MATRIX H WHICH ZEROS
-* THE SECOND COMPONENT OF THE 2-VECTOR (DSQRT(DD1)*DX1,DSQRT(DD2)*
-* DY2)**T.
-* WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+* =========== DOCUMENTATION ===========
*
-* DFLAG=-1.D0 DFLAG=0.D0 DFLAG=1.D0 DFLAG=-2.D0
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* (DH11 DH12) (1.D0 DH12) (DH11 1.D0) (1.D0 0.D0)
-* H=( ) ( ) ( ) ( )
-* (DH21 DH22), (DH21 1.D0), (-1.D0 DH22), (0.D0 1.D0).
-* LOCATIONS 2-4 OF DPARAM CONTAIN DH11, DH21, DH12, AND DH22
-* RESPECTIVELY. (VALUES OF 1.D0, -1.D0, OR 0.D0 IMPLIED BY THE
-* VALUE OF DPARAM(1) ARE NOT STORED IN DPARAM.)
+* Definition
+* ==========
*
-* THE VALUES OF GAMSQ AND RGAMSQ SET IN THE DATA STATEMENT MAY BE
-* INEXACT. THIS IS OK AS THEY ARE ONLY USED FOR TESTING THE SIZE
-* OF DD1 AND DD2. ALL ACTUAL SCALING OF DATA IS DONE USING GAM.
+* SUBROUTINE DROTMG(DD1,DD2,DX1,DY1,DPARAM)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION DD1,DD2,DX1,DY1
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION DPARAM(5)
+* ..
+*
+* Purpose
+* =======
*
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CONSTRUCT THE MODIFIED GIVENS TRANSFORMATION MATRIX H WHICH ZEROS
+*> THE SECOND COMPONENT OF THE 2-VECTOR (DSQRT(DD1)*DX1,DSQRT(DD2)*> DY2)**T.
+*> WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+*>
+*> DFLAG=-1.D0 DFLAG=0.D0 DFLAG=1.D0 DFLAG=-2.D0
+*>
+*> (DH11 DH12) (1.D0 DH12) (DH11 1.D0) (1.D0 0.D0)
+*> H=( ) ( ) ( ) ( )
+*> (DH21 DH22), (DH21 1.D0), (-1.D0 DH22), (0.D0 1.D0).
+*> LOCATIONS 2-4 OF DPARAM CONTAIN DH11, DH21, DH12, AND DH22
+*> RESPECTIVELY. (VALUES OF 1.D0, -1.D0, OR 0.D0 IMPLIED BY THE
+*> VALUE OF DPARAM(1) ARE NOT STORED IN DPARAM.)
+*>
+*> THE VALUES OF GAMSQ AND RGAMSQ SET IN THE DATA STATEMENT MAY BE
+*> INEXACT. THIS IS OK AS THEY ARE ONLY USED FOR TESTING THE SIZE
+*> OF DD1 AND DD2. ALL ACTUAL SCALING OF DATA IS DONE USING GAM.
+*>
+*>
+*>\endverbatim
*
* Arguments
* =========
*
-* DD1 (input/output) DOUBLE PRECISION
+*> \param[in,out] DD1
+*> \verbatim
+*> DD1 is DOUBLE PRECISION
+*> \endverbatim
+*>
+*> \param[in,out] DD2
+*> \verbatim
+*> DD2 is DOUBLE PRECISION
+*> \endverbatim
+*>
+*> \param[in,out] DX1
+*> \verbatim
+*> DX1 is DOUBLE PRECISION
+*> \endverbatim
+*>
+*> \param[in] DY1
+*> \verbatim
+*> DY1 is DOUBLE PRECISION
+*> \endverbatim
+*>
+*> \param[in,out] DPARAM
+*> \verbatim
+*> DPARAM is DOUBLE PRECISION array, dimension 5
+*> DPARAM(1)=DFLAG
+*> DPARAM(2)=DH11
+*> DPARAM(3)=DH21
+*> DPARAM(4)=DH12
+*> DPARAM(5)=DH22
+*> \endverbatim
+*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
*
-* DD2 (input/output) DOUBLE PRECISION
+*> \ingroup double_blas_level1
*
-* DX1 (input/output) DOUBLE PRECISION
+* =====================================================================
+ SUBROUTINE DROTMG(DD1,DD2,DX1,DY1,DPARAM)
*
-* DY1 (input) DOUBLE PRECISION
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* DPARAM (input/output) DOUBLE PRECISION array, dimension 5
-* DPARAM(1)=DFLAG
-* DPARAM(2)=DH11
-* DPARAM(3)=DH21
-* DPARAM(4)=DH12
-* DPARAM(5)=DH22
+* .. Scalar Arguments ..
+ DOUBLE PRECISION DD1,DD2,DX1,DY1
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION DPARAM(5)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dsbmv.f b/BLAS/SRC/dsbmv.f
index e7973517..09c53e1f 100644
--- a/BLAS/SRC/dsbmv.f
+++ b/BLAS/SRC/dsbmv.f
@@ -1,134 +1,211 @@
- SUBROUTINE DSBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA,BETA
- INTEGER INCX,INCY,K,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b DSBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DSBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA,BETA
+* INTEGER INCX,INCY,K,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* DSBMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DSBMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n symmetric band matrix, with k super-diagonals.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry, K specifies the number of super-diagonals of the
+*> matrix A. K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the symmetric matrix, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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 )
+*> A( M + I, J ) = matrix( I, J )
+*> 10 CONTINUE
+*> 20 CONTINUE
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION.
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is DOUBLE PRECISION array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the
+*> vector y. On exit, Y is overwritten by the updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n symmetric band matrix, with k super-diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the band matrix A is being supplied as
-* follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* being supplied.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* being supplied.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry, K specifies the number of super-diagonals of the
-* matrix A. K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the symmetric matrix, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer the upper
-* triangular part of a symmetric band matrix from conventional
-* full matrix storage to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer the lower
-* triangular part of a symmetric band matrix from conventional
-* full matrix storage to band storage:
-*
-* 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
-*
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - DOUBLE PRECISION.
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* Y - DOUBLE PRECISION array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the
-* vector y. On exit, Y is overwritten by the updated vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA,BETA
+ INTEGER INCX,INCY,K,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dscal.f b/BLAS/SRC/dscal.f
index 986c24eb..50dd2eb5 100644
--- a/BLAS/SRC/dscal.f
+++ b/BLAS/SRC/dscal.f
@@ -1,24 +1,73 @@
- SUBROUTINE DSCAL(N,DA,DX,INCX)
-* .. Scalar Arguments ..
- DOUBLE PRECISION DA
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION DX(*)
-* ..
+*> \brief \b DSCAL
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE DSCAL(N,DA,DX,INCX)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION DA
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION DX(*)
+* ..
+*
* Purpose
* =======
*
-* DSCAL scales a vector by a constant.
-* uses unrolled loops for increment equal to one.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DSCAL scales a vector by a constant.
+*> uses unrolled loops for increment equal to one.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSCAL(N,DA,DX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ DOUBLE PRECISION DA
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION DX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dsdot.f b/BLAS/SRC/dsdot.f
index 8f8ebfdb..cb8de30c 100644
--- a/BLAS/SRC/dsdot.f
+++ b/BLAS/SRC/dsdot.f
@@ -1,66 +1,138 @@
- DOUBLE PRECISION FUNCTION DSDOT(N,SX,INCX,SY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- REAL SX(*),SY(*)
-* ..
-*
-* AUTHORS
-* =======
-* Lawson, C. L., (JPL), Hanson, R. J., (SNLA),
-* Kincaid, D. R., (U. of Texas), Krogh, F. T., (JPL)
-*
+*> \brief \b DSDOT
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* DOUBLE PRECISION FUNCTION DSDOT(N,SX,INCX,SY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* REAL SX(*),SY(*)
+* ..
+*
+* AUTHORS
+* =======
+* Lawson, C. L., (JPL), Hanson, R. J., (SNLA),
+* Kincaid, D. R., (U. of Texas), Krogh, F. T., (JPL)
+*
* Purpose
* =======
-* Compute the inner product of two vectors with extended
-* precision accumulation and result.
*
-* Returns D.P. dot product accumulated in D.P., for S.P. SX and SY
-* DSDOT = sum for I = 0 to N-1 of SX(LX+I*INCX) * SY(LY+I*INCY),
-* where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is
-* defined in a similar way using INCY.
+*>\details \b Purpose:
+*>\verbatim
+*> Compute the inner product of two vectors with extended
+*> precision accumulation and result.
+*>
+*> Returns D.P. dot product accumulated in D.P., for S.P. SX and SY
+*> DSDOT = sum for I = 0 to N-1 of SX(LX+I*INCX) * SY(LY+I*INCY),
+*> where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is
+*> defined in a similar way using INCY.
+*>
+*>\endverbatim
*
* Arguments
* =========
*
-* N (input) INTEGER
-* number of elements in input vector(s)
-*
-* SX (input) REAL array, dimension(N)
-* single precision vector with N elements
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> number of elements in input vector(s)
+*> \endverbatim
+*>
+*> \param[in] SX
+*> \verbatim
+*> SX is REAL array, dimension(N)
+*> single precision vector with N elements
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> storage spacing between elements of SX
+*> \endverbatim
+*>
+*> \param[in] SY
+*> \verbatim
+*> SY is REAL array, dimension(N)
+*> single precision vector with N elements
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> storage spacing between elements of SY
+*> \endverbatim
+*>
+*> \param[out] DSDOT
+*> \verbatim
+*> DSDOT is DOUBLE PRECISION
+*> DSDOT double precision dot product (zero if N.LE.0)
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* INCX (input) INTEGER
-* storage spacing between elements of SX
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* SY (input) REAL array, dimension(N)
-* single precision vector with N elements
+*> \date November 2011
*
-* INCY (input) INTEGER
-* storage spacing between elements of SY
+*> \ingroup double_blas_level1
*
-* DSDOT (output) DOUBLE PRECISION
-* DSDOT double precision dot product (zero if N.LE.0)
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> REFERENCES
+*>
+*> C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T.
+*> Krogh, Basic linear algebra subprograms for Fortran
+*> usage, Algorithm No. 539, Transactions on Mathematical
+*> Software 5, 3 (September 1979), pp. 308-323.
+*>
+*> REVISION HISTORY (YYMMDD)
+*>
+*> 791001 DATE WRITTEN
+*> 890831 Modified array declarations. (WRB)
+*> 890831 REVISION DATE from Version 3.2
+*> 891214 Prologue converted to Version 4.0 format. (BAB)
+*> 920310 Corrected definition of LX in DESCRIPTION. (WRB)
+*> 920501 Reformatted the REFERENCES section. (WRB)
+*> 070118 Reformat to LAPACK style (JL)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ DOUBLE PRECISION FUNCTION DSDOT(N,SX,INCX,SY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
+*
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ REAL SX(*),SY(*)
+* ..
*
-* REFERENCES
-*
-* C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T.
-* Krogh, Basic linear algebra subprograms for Fortran
-* usage, Algorithm No. 539, Transactions on Mathematical
-* Software 5, 3 (September 1979), pp. 308-323.
-*
-* REVISION HISTORY (YYMMDD)
-*
-* 791001 DATE WRITTEN
-* 890831 Modified array declarations. (WRB)
-* 890831 REVISION DATE from Version 3.2
-* 891214 Prologue converted to Version 4.0 format. (BAB)
-* 920310 Corrected definition of LX in DESCRIPTION. (WRB)
-* 920501 Reformatted the REFERENCES section. (WRB)
-* 070118 Reformat to LAPACK style (JL)
+* AUTHORS
+* =======
+* Lawson, C. L., (JPL), Hanson, R. J., (SNLA),
+* Kincaid, D. R., (U. of Texas), Krogh, F. T., (JPL)
*
* =====================================================================
*
diff --git a/BLAS/SRC/dspmv.f b/BLAS/SRC/dspmv.f
index 4067b0e3..b0c0ceda 100644
--- a/BLAS/SRC/dspmv.f
+++ b/BLAS/SRC/dspmv.f
@@ -1,100 +1,171 @@
- SUBROUTINE DSPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA,BETA
- INTEGER INCX,INCY,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION AP(*),X(*),Y(*)
-* ..
+*> \brief \b DSPMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DSPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA,BETA
+* INTEGER INCX,INCY,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION AP(*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* DSPMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DSPMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n symmetric matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is DOUBLE PRECISION array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION.
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y. On exit, Y is overwritten by the updated
+*> vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n symmetric matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* AP - DOUBLE PRECISION array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on.
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - DOUBLE PRECISION.
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y. On exit, Y is overwritten by the updated
-* vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA,BETA
+ INTEGER INCX,INCY,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP(*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dspr.f b/BLAS/SRC/dspr.f
index 64567fc7..87fd3bc8 100644
--- a/BLAS/SRC/dspr.f
+++ b/BLAS/SRC/dspr.f
@@ -1,86 +1,151 @@
- SUBROUTINE DSPR(UPLO,N,ALPHA,X,INCX,AP)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA
- INTEGER INCX,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION AP(*),X(*)
-* ..
+*> \brief \b DSPR
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DSPR(UPLO,N,ALPHA,X,INCX,AP)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA
+* INTEGER INCX,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION AP(*),X(*)
+* ..
+*
* Purpose
* =======
*
-* DSPR performs the symmetric rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DSPR performs the symmetric rank 1 operation
+*>
+*> A := alpha*x*x**T + A,
+*>
+*> where alpha is a real scalar, x is an n element vector and A is an
+*> n by n symmetric matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is DOUBLE PRECISION array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the upper triangular part of the
+*> updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the lower triangular part of the
+*> updated matrix.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*x**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a real scalar, x is an n element vector and A is an
-* n by n symmetric matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* AP - DOUBLE PRECISION array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on. On exit, the array
-* AP is overwritten by the upper triangular part of the
-* updated matrix.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on. On exit, the array
-* AP is overwritten by the lower triangular part of the
-* updated matrix.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSPR(UPLO,N,ALPHA,X,INCX,AP)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dspr2.f b/BLAS/SRC/dspr2.f
index 22900ad0..54553ec1 100644
--- a/BLAS/SRC/dspr2.f
+++ b/BLAS/SRC/dspr2.f
@@ -1,97 +1,166 @@
- SUBROUTINE DSPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA
- INTEGER INCX,INCY,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION AP(*),X(*),Y(*)
-* ..
+*> \brief \b DSPR2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DSPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA
+* INTEGER INCX,INCY,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION AP(*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* DSPR2 performs the symmetric rank 2 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DSPR2 performs the symmetric rank 2 operation
+*>
+*> A := alpha*x*y**T + alpha*y*x**T + A,
+*>
+*> where alpha is a scalar, x and y are n element vectors and A is an
+*> n by n symmetric matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> Y is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is DOUBLE PRECISION array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the upper triangular part of the
+*> updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the lower triangular part of the
+*> updated matrix.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**T + alpha*y*x**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x and y are n element vectors and A is an
-* n by n symmetric matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* AP - DOUBLE PRECISION array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on. On exit, the array
-* AP is overwritten by the upper triangular part of the
-* updated matrix.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on. On exit, the array
-* AP is overwritten by the lower triangular part of the
-* updated matrix.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX,INCY,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP(*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dswap.f b/BLAS/SRC/dswap.f
index 93db05cb..27760582 100644
--- a/BLAS/SRC/dswap.f
+++ b/BLAS/SRC/dswap.f
@@ -1,22 +1,70 @@
- SUBROUTINE DSWAP(N,DX,INCX,DY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION DX(*),DY(*)
-* ..
+*> \brief \b DSWAP
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE DSWAP(N,DX,INCX,DY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION DX(*),DY(*)
+* ..
+*
* Purpose
* =======
*
-* interchanges two vectors.
-* uses unrolled loops for increments equal one.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> interchanges two vectors.
+*> uses unrolled loops for increments equal one.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSWAP(N,DX,INCX,DY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION DX(*),DY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dsymm.f b/BLAS/SRC/dsymm.f
index d9d3c96a..f3537fa9 100644
--- a/BLAS/SRC/dsymm.f
+++ b/BLAS/SRC/dsymm.f
@@ -1,137 +1,215 @@
- SUBROUTINE DSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA,BETA
- INTEGER LDA,LDB,LDC,M,N
- CHARACTER SIDE,UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b DSYMM
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA,BETA
+* INTEGER LDA,LDB,LDC,M,N
+* CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* DSYMM performs one of the matrix-matrix operations
-*
-* C := alpha*A*B + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DSYMM performs one of the matrix-matrix operations
+*>
+*> C := alpha*A*B + beta*C,
+*>
+*> or
+*>
+*> C := alpha*B*A + beta*C,
+*>
+*> where alpha and beta are scalars, A is a symmetric matrix and B and
+*> C are m by n matrices.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix C.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix C.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
+*> m when SIDE = 'L' or 'l' and is n otherwise.
+*> Before entry with SIDE = 'L' or 'l', the m by m part of
+*> the array A must contain the symmetric matrix, such that
+*> when UPLO = 'U' or 'u', the leading m by m upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the symmetric matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading m by m lower triangular part of the array A
+*> must contain the lower triangular part of the symmetric
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> Before entry with SIDE = 'R' or 'r', the n by n part of
+*> the array A must contain the symmetric matrix, such that
+*> when UPLO = 'U' or 'u', the leading n by n upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the symmetric matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading n by n lower triangular part of the array A
+*> must contain the lower triangular part of the symmetric
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), otherwise LDA must be at
+*> least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is DOUBLE PRECISION array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION.
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then C need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+*> Before entry, the leading m by n part of the array C must
+*> contain the matrix C, except when beta is zero, in which
+*> case C need not be set on entry.
+*> On exit, the array C is overwritten by the m by n updated
+*> matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*B*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, A is a symmetric matrix and B and
-* C are m by n matrices.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level3
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether the symmetric matrix A
-* appears on the left or right in the operation as follows:
-*
-* SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*
-* SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the symmetric matrix A is to be
-* referenced as follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of the
-* symmetric matrix is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of the
-* symmetric matrix is to be referenced.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix C.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix C.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
-* m when SIDE = 'L' or 'l' and is n otherwise.
-* Before entry with SIDE = 'L' or 'l', the m by m part of
-* the array A must contain the symmetric matrix, such that
-* when UPLO = 'U' or 'u', the leading m by m upper triangular
-* part of the array A must contain the upper triangular part
-* of the symmetric matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading m by m lower triangular part of the array A
-* must contain the lower triangular part of the symmetric
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Before entry with SIDE = 'R' or 'r', the n by n part of
-* the array A must contain the symmetric matrix, such that
-* when UPLO = 'U' or 'u', the leading n by n upper triangular
-* part of the array A must contain the upper triangular part
-* of the symmetric matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading n by n lower triangular part of the array A
-* must contain the lower triangular part of the symmetric
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), otherwise LDA must be at
-* least max( 1, n ).
-* Unchanged on exit.
-*
-* B - DOUBLE PRECISION array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
-*
-* BETA - DOUBLE PRECISION.
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then C need not be set on input.
-* Unchanged on exit.
-*
-* C - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
-* Before entry, the leading m by n part of the array C must
-* contain the matrix C, except when beta is zero, in which
-* case C need not be set on entry.
-* On exit, the array C is overwritten by the m by n updated
-* matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA,BETA
+ INTEGER LDA,LDB,LDC,M,N
+ CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dsymv.f b/BLAS/SRC/dsymv.f
index 5fa4341a..5dfc7ea9 100644
--- a/BLAS/SRC/dsymv.f
+++ b/BLAS/SRC/dsymv.f
@@ -1,103 +1,176 @@
- SUBROUTINE DSYMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA,BETA
- INTEGER INCX,INCY,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b DSYMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DSYMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA,BETA
+* INTEGER INCX,INCY,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* DSYMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DSYMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n symmetric matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of A is not referenced.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION.
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y. On exit, Y is overwritten by the updated
+*> vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n symmetric matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of A is not referenced.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - DOUBLE PRECISION.
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y. On exit, Y is overwritten by the updated
-* vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSYMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA,BETA
+ INTEGER INCX,INCY,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dsyr.f b/BLAS/SRC/dsyr.f
index 5cc4bcb5..81a01078 100644
--- a/BLAS/SRC/dsyr.f
+++ b/BLAS/SRC/dsyr.f
@@ -1,89 +1,156 @@
- SUBROUTINE DSYR(UPLO,N,ALPHA,X,INCX,A,LDA)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA
- INTEGER INCX,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),X(*)
-* ..
+*> \brief \b DSYR
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DSYR(UPLO,N,ALPHA,X,INCX,A,LDA)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA
+* INTEGER INCX,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* DSYR performs the symmetric rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DSYR performs the symmetric rank 1 operation
+*>
+*> A := alpha*x*x**T + A,
+*>
+*> where alpha is a real scalar, x is an n element vector and A is an
+*> n by n symmetric matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of A is not referenced. On exit, the
+*> upper triangular part of the array A is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of A is not referenced. On exit, the
+*> lower triangular part of the array A is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*x**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a real scalar, x is an n element vector and A is an
-* n by n symmetric matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of A is not referenced. On exit, the
-* upper triangular part of the array A is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of A is not referenced. On exit, the
-* lower triangular part of the array A is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSYR(UPLO,N,ALPHA,X,INCX,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dsyr2.f b/BLAS/SRC/dsyr2.f
index b2b2f3d7..7b72a342 100644
--- a/BLAS/SRC/dsyr2.f
+++ b/BLAS/SRC/dsyr2.f
@@ -1,100 +1,171 @@
- SUBROUTINE DSYR2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA
- INTEGER INCX,INCY,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b DSYR2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DSYR2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA
+* INTEGER INCX,INCY,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* DSYR2 performs the symmetric rank 2 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DSYR2 performs the symmetric rank 2 operation
+*>
+*> A := alpha*x*y**T + alpha*y*x**T + A,
+*>
+*> where alpha is a scalar, x and y are n element vectors and A is an n
+*> by n symmetric matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> Y is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of A is not referenced. On exit, the
+*> upper triangular part of the array A is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of A is not referenced. On exit, the
+*> lower triangular part of the array A is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**T + alpha*y*x**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x and y are n element vectors and A is an n
-* by n symmetric matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of A is not referenced. On exit, the
-* upper triangular part of the array A is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of A is not referenced. On exit, the
-* lower triangular part of the array A is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSYR2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX,INCY,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dsyr2k.f b/BLAS/SRC/dsyr2k.f
index 7289b055..3c2de59a 100644
--- a/BLAS/SRC/dsyr2k.f
+++ b/BLAS/SRC/dsyr2k.f
@@ -1,140 +1,219 @@
- SUBROUTINE DSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA,BETA
- INTEGER K,LDA,LDB,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b DSYR2K
+*
+* =========== DOCUMENTATION ===========
*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE DSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA,BETA
+* INTEGER K,LDA,LDB,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* DSYR2K performs one of the symmetric rank 2k operations
-*
-* C := alpha*A*B**T + alpha*B*A**T + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DSYR2K performs one of the symmetric rank 2k operations
+*>
+*> C := alpha*A*B**T + alpha*B*A**T + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**T*B + alpha*B**T*A + beta*C,
+*>
+*> where alpha and beta are scalars, C is an n by n symmetric matrix
+*> and A and B are n by k matrices in the first case and k by n
+*> matrices in the second case.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrices A and B, and on entry with
+*> TRANS = 'T' or 't' or 'C' or 'c', K specifies the number
+*> of rows of the matrices A and B. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
+*> the leading k by n part of the array B must contain the
+*> matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDB must be at least max( 1, n ), otherwise LDB must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION.
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**T*B + alpha*B**T*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, C is an n by n symmetric matrix
-* and A and B are n by k matrices in the first case and k by n
-* matrices in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T +
-* beta*C.
-*
-* TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A +
-* beta*C.
-*
-* TRANS = 'C' or 'c' C := alpha*A**T*B + alpha*B**T*A +
-* beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrices A and B, and on entry with
-* TRANS = 'T' or 't' or 'C' or 'c', K specifies the number
-* of rows of the matrices A and B. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* B - DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
-* the leading k by n part of the array B must contain the
-* matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDB must be at least max( 1, n ), otherwise LDB must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - DOUBLE PRECISION.
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
-*
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA,BETA
+ INTEGER K,LDA,LDB,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dsyrk.f b/BLAS/SRC/dsyrk.f
index 00fb33ae..df232ff4 100644
--- a/BLAS/SRC/dsyrk.f
+++ b/BLAS/SRC/dsyrk.f
@@ -1,121 +1,196 @@
- SUBROUTINE DSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA,BETA
- INTEGER K,LDA,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),C(LDC,*)
-* ..
+*> \brief \b DSYRK
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA,BETA
+* INTEGER K,LDA,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* DSYRK performs one of the symmetric rank k operations
-*
-* C := alpha*A*A**T + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DSYRK performs one of the symmetric rank k operations
+*>
+*> C := alpha*A*A**T + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**T*A + beta*C,
+*>
+*> where alpha and beta are scalars, C is an n by n symmetric matrix
+*> and A is an n by k matrix in the first case and a k by n matrix
+*> in the second case.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrix A, and on entry with
+*> TRANS = 'T' or 't' or 'C' or 'c', K specifies the number
+*> of rows of the matrix A. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION.
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is DOUBLE PRECISION array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**T*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, C is an n by n symmetric matrix
-* and A is an n by k matrix in the first case and a k by n matrix
-* in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C.
-*
-* TRANS = 'T' or 't' C := alpha*A**T*A + beta*C.
-*
-* TRANS = 'C' or 'c' C := alpha*A**T*A + beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrix A, and on entry with
-* TRANS = 'T' or 't' or 'C' or 'c', K specifies the number
-* of rows of the matrix A. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - DOUBLE PRECISION.
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - DOUBLE PRECISION array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA,BETA
+ INTEGER K,LDA,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dtbmv.f b/BLAS/SRC/dtbmv.f
index 4f8778ad..ad062ca9 100644
--- a/BLAS/SRC/dtbmv.f
+++ b/BLAS/SRC/dtbmv.f
@@ -1,141 +1,218 @@
- SUBROUTINE DTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,K,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),X(*)
-* ..
+*> \brief \b DTBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,K,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* DTBMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DTBMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with UPLO = 'U' or 'u', K specifies the number of
+*> super-diagonals of the matrix A.
+*> On entry with UPLO = 'L' or 'l', K specifies the number of
+*> sub-diagonals of the matrix A.
+*> K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the matrix of coefficients, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* x := A*x, or x := A**T*x,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**T*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with UPLO = 'U' or 'u', K specifies the number of
-* super-diagonals of the matrix A.
-* On entry with UPLO = 'L' or 'l', K specifies the number of
-* sub-diagonals of the matrix A.
-* K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the matrix of coefficients, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer an upper
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer a lower
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,K,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dtbsv.f b/BLAS/SRC/dtbsv.f
index 621c1ec7..9a2b8429 100644
--- a/BLAS/SRC/dtbsv.f
+++ b/BLAS/SRC/dtbsv.f
@@ -1,144 +1,221 @@
- SUBROUTINE DTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,K,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),X(*)
-* ..
+*> \brief \b DTBSV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE DTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,K,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* DTBSV solves one of the systems of equations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DTBSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular band matrix, with ( k + 1 )
+*> diagonals.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* A*x = b, or A**T*x = b,
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with UPLO = 'U' or 'u', K specifies the number of
+*> super-diagonals of the matrix A.
+*> On entry with UPLO = 'L' or 'l', K specifies the number of
+*> sub-diagonals of the matrix A.
+*> K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the matrix of coefficients, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular band matrix, with ( k + 1 )
-* diagonals.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup double_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**T*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with UPLO = 'U' or 'u', K specifies the number of
-* super-diagonals of the matrix A.
-* On entry with UPLO = 'L' or 'l', K specifies the number of
-* sub-diagonals of the matrix A.
-* K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the matrix of coefficients, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer an upper
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer a lower
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,K,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dtpmv.f b/BLAS/SRC/dtpmv.f
index 1def763e..b11f4dbe 100644
--- a/BLAS/SRC/dtpmv.f
+++ b/BLAS/SRC/dtpmv.f
@@ -1,101 +1,170 @@
- SUBROUTINE DTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION AP(*),X(*)
-* ..
-*
-* Purpose
-* =======
-*
-* DTPMV performs one of the matrix-vector operations
+*> \brief \b DTPMV
*
-* x := A*x, or x := A**T*x,
+* =========== DOCUMENTATION ===========
*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular matrix, supplied in packed form.
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**T*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+* SUBROUTINE DTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION AP(*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DTPMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular matrix, supplied in packed form.
+*>
+*>\endverbatim
*
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is DOUBLE PRECISION array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*> respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*> respectively, and so on.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* AP - DOUBLE PRECISION array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
-* respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
-* respectively, and so on.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced, but are assumed to be unity.
-* Unchanged on exit.
+*> \date November 2011
*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
+*> \ingroup double_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dtpsv.f b/BLAS/SRC/dtpsv.f
index 49b65237..bd7c5ec3 100644
--- a/BLAS/SRC/dtpsv.f
+++ b/BLAS/SRC/dtpsv.f
@@ -1,103 +1,172 @@
- SUBROUTINE DTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION AP(*),X(*)
-* ..
+*> \brief \b DTPSV
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* DTPSV solves one of the systems of equations
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* A*x = b, or A**T*x = b,
-*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular matrix, supplied in packed form.
-*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
-*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**T*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+* SUBROUTINE DTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION AP(*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DTPSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular matrix, supplied in packed form.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is DOUBLE PRECISION array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*> respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*> respectively, and so on.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* AP - DOUBLE PRECISION array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
-* respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
-* respectively, and so on.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced, but are assumed to be unity.
-* Unchanged on exit.
+*> \date November 2011
*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
+*> \ingroup double_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dtrmm.f b/BLAS/SRC/dtrmm.f
index fc03769f..9e4cc226 100644
--- a/BLAS/SRC/dtrmm.f
+++ b/BLAS/SRC/dtrmm.f
@@ -1,129 +1,206 @@
- SUBROUTINE DTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA
- INTEGER LDA,LDB,M,N
- CHARACTER DIAG,SIDE,TRANSA,UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),B(LDB,*)
-* ..
-*
-* Purpose
-* =======
+*> \brief \b DTRMM
*
-* DTRMM performs one of the matrix-matrix operations
+* =========== DOCUMENTATION ===========
*
-* B := alpha*op( A )*B, or B := alpha*B*op( A ),
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* where alpha is a scalar, B is an m by n matrix, A is a unit, or
-* non-unit, upper or lower triangular matrix and op( A ) is one of
-*
-* op( A ) = A or op( A ) = A**T.
-*
-* Arguments
+* Definition
* ==========
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether op( A ) multiplies B from
-* the left or right as follows:
-*
-* SIDE = 'L' or 'l' B := alpha*op( A )*B.
-*
-* SIDE = 'R' or 'r' B := alpha*B*op( A ).
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix A is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n' op( A ) = A.
-*
-* TRANSA = 'T' or 't' op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c' op( A ) = A**T.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit triangular
-* as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of B. M must be at
-* least zero.
-* Unchanged on exit.
+* SUBROUTINE DTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA
+* INTEGER LDA,LDB,M,N
+* CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),B(LDB,*)
+* ..
+*
+* Purpose
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the number of columns of B. N must be
-* at least zero.
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DTRMM performs one of the matrix-matrix operations
+*>
+*> B := alpha*op( A )*B, or B := alpha*B*op( A ),
+*>
+*> where alpha is a scalar, B is an m by n matrix, A is a unit, or
+*> non-unit, upper or lower triangular matrix and op( A ) is one of
+*>
+*> op( A ) = A or op( A ) = A**T.
+*>
+*>\endverbatim
*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha. When alpha is
-* zero then A is not referenced and B need not be set before
-* entry.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of B. M must be at
+*> least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of B. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha. When alpha is
+*> zero then A is not referenced and B need not be set before
+*> entry.
+*> \endverbatim
+*> \verbatim
+*> A 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
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading k by k
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+*> then LDA must be at least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] B
+*> \verbatim
+*> B is DOUBLE PRECISION array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the matrix B, and on exit is overwritten by the
+*> transformed matrix.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - 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
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading k by k
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
-* then LDA must be at least max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* B - DOUBLE PRECISION array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the matrix B, and on exit is overwritten by the
-* transformed matrix.
+*> \ingroup double_blas_level3
*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER LDA,LDB,M,N
+ CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),B(LDB,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dtrmv.f b/BLAS/SRC/dtrmv.f
index 5356cbbc..c4864bf5 100644
--- a/BLAS/SRC/dtrmv.f
+++ b/BLAS/SRC/dtrmv.f
@@ -1,104 +1,175 @@
- SUBROUTINE DTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),X(*)
-* ..
+*> \brief \b DTRMV
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* DTRMV performs one of the matrix-vector operations
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* x := A*x, or x := A**T*x,
-*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular matrix.
-*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**T*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+* SUBROUTINE DTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DTRMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular matrix.
+*>
+*>\endverbatim
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
+*> \ingroup double_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dtrsm.f b/BLAS/SRC/dtrsm.f
index dec5c8d0..3a91fd43 100644
--- a/BLAS/SRC/dtrsm.f
+++ b/BLAS/SRC/dtrsm.f
@@ -1,132 +1,212 @@
- SUBROUTINE DTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA
- INTEGER LDA,LDB,M,N
- CHARACTER DIAG,SIDE,TRANSA,UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),B(LDB,*)
-* ..
-*
-* Purpose
-* =======
+*> \brief \b DTRSM
*
-* DTRSM solves one of the matrix equations
+* =========== DOCUMENTATION ===========
*
-* op( A )*X = alpha*B, or X*op( A ) = alpha*B,
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* where alpha is a scalar, X and B are m by n matrices, A is a unit, or
-* non-unit, upper or lower triangular matrix and op( A ) is one of
-*
-* op( A ) = A or op( A ) = A**T.
-*
-* The matrix X is overwritten on B.
-*
-* Arguments
+* Definition
* ==========
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether op( A ) appears on the left
-* or right of X as follows:
-*
-* SIDE = 'L' or 'l' op( A )*X = alpha*B.
-*
-* SIDE = 'R' or 'r' X*op( A ) = alpha*B.
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix A is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n' op( A ) = A.
-*
-* TRANSA = 'T' or 't' op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c' op( A ) = A**T.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit triangular
-* as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of B. M must be at
-* least zero.
-* Unchanged on exit.
+* SUBROUTINE DTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA
+* INTEGER LDA,LDB,M,N
+* CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),B(LDB,*)
+* ..
+*
+* Purpose
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the number of columns of B. N must be
-* at least zero.
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DTRSM solves one of the matrix equations
+*>
+*> op( A )*X = alpha*B, or X*op( A ) = alpha*B,
+*>
+*> where alpha is a scalar, X and B are m by n matrices, A is a unit, or
+*> non-unit, upper or lower triangular matrix and op( A ) is one of
+*>
+*> op( A ) = A or op( A ) = A**T.
+*>
+*> The matrix X is overwritten on B.
+*>
+*>\endverbatim
*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha. When alpha is
-* zero then A is not referenced and B need not be set before
-* entry.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of B. M must be at
+*> least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of B. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha. When alpha is
+*> zero then A is not referenced and B need not be set before
+*> entry.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, k ),
+*> where k is m when SIDE = 'L' or 'l'
+*> and k 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
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading k by k
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+*> then LDA must be at least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] B
+*> \verbatim
+*> B is DOUBLE PRECISION array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the right-hand side matrix B, and on exit is
+*> overwritten by the solution matrix X.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - 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
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading k by k
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
-* then LDA must be at least max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* B - DOUBLE PRECISION array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the right-hand side matrix B, and on exit is
-* overwritten by the solution matrix X.
+*> \ingroup double_blas_level3
*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE DTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
*
-* Level 3 Blas routine.
-*
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER LDA,LDB,M,N
+ CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),B(LDB,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dtrsv.f b/BLAS/SRC/dtrsv.f
index f901e699..4a0845b7 100644
--- a/BLAS/SRC/dtrsv.f
+++ b/BLAS/SRC/dtrsv.f
@@ -1,104 +1,171 @@
- SUBROUTINE DTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION A(LDA,*),X(*)
-* ..
-*
-* Purpose
-* =======
-*
-* DTRSV solves one of the systems of equations
-*
-* A*x = b, or A**T*x = b,
+*> \brief \b DTRSV
*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular matrix.
+* =========== DOCUMENTATION ===========
*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**T*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
+* SUBROUTINE DTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION A(LDA,*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DTRSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular matrix.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* A - DOUBLE PRECISION array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is DOUBLE PRECISION array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> 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.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* X - DOUBLE PRECISION array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
+*> \date November 2011
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
+*> \ingroup double_blas_level1
*
+* =====================================================================
+ SUBROUTINE DTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dzasum.f b/BLAS/SRC/dzasum.f
index 992b3a5c..ea61e0bb 100644
--- a/BLAS/SRC/dzasum.f
+++ b/BLAS/SRC/dzasum.f
@@ -1,22 +1,70 @@
- DOUBLE PRECISION FUNCTION DZASUM(N,ZX,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 ZX(*)
-* ..
+*> \brief \b DZASUM
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* DOUBLE PRECISION FUNCTION DZASUM(N,ZX,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 ZX(*)
+* ..
+*
* Purpose
* =======
*
-* DZASUM takes the sum of the absolute values.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DZASUM takes the sum of the absolute values.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ DOUBLE PRECISION FUNCTION DZASUM(N,ZX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 ZX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/dznrm2.f b/BLAS/SRC/dznrm2.f
index a5e3da08..4a6b7573 100644
--- a/BLAS/SRC/dznrm2.f
+++ b/BLAS/SRC/dznrm2.f
@@ -1,25 +1,73 @@
- DOUBLE PRECISION FUNCTION DZNRM2(N,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 X(*)
-* ..
+*> \brief \b DZNRM2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* DOUBLE PRECISION FUNCTION DZNRM2(N,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 X(*)
+* ..
+*
* Purpose
* =======
*
-* DZNRM2 returns the euclidean norm of a vector via the function
-* name, so that
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> DZNRM2 returns the euclidean norm of a vector via the function
+*> name, so that
+*>
+*> DZNRM2 := sqrt( x**H*x )
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_blas_level1
*
-* DZNRM2 := sqrt( x**H*x )
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> -- This version written on 25-October-1982.
+*> Modified on 14-October-1993 to inline the call to ZLASSQ.
+*> Sven Hammarling, Nag Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ DOUBLE PRECISION FUNCTION DZNRM2(N,X,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- This version written on 25-October-1982.
-* Modified on 14-October-1993 to inline the call to ZLASSQ.
-* Sven Hammarling, Nag Ltd.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/icamax.f b/BLAS/SRC/icamax.f
index 2c941f97..5e060ec0 100644
--- a/BLAS/SRC/icamax.f
+++ b/BLAS/SRC/icamax.f
@@ -1,22 +1,70 @@
- INTEGER FUNCTION ICAMAX(N,CX,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- COMPLEX CX(*)
-* ..
+*> \brief \b ICAMAX
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* INTEGER FUNCTION ICAMAX(N,CX,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* COMPLEX CX(*)
+* ..
+*
* Purpose
* =======
*
-* ICAMAX finds the index of element having max. absolute value.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ICAMAX finds the index of element having max. absolute value.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup aux_blas
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ INTEGER FUNCTION ICAMAX(N,CX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ COMPLEX CX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/idamax.f b/BLAS/SRC/idamax.f
index 2cc0f9a5..e10fa057 100644
--- a/BLAS/SRC/idamax.f
+++ b/BLAS/SRC/idamax.f
@@ -1,22 +1,70 @@
- INTEGER FUNCTION IDAMAX(N,DX,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION DX(*)
-* ..
+*> \brief \b IDAMAX
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* INTEGER FUNCTION IDAMAX(N,DX,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* DOUBLE PRECISION DX(*)
+* ..
+*
* Purpose
* =======
*
-* IDAMAX finds the index of element having max. absolute value.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> IDAMAX finds the index of element having max. absolute value.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup aux_blas
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ INTEGER FUNCTION IDAMAX(N,DX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ DOUBLE PRECISION DX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/isamax.f b/BLAS/SRC/isamax.f
index 26a98dd5..4e03d89a 100644
--- a/BLAS/SRC/isamax.f
+++ b/BLAS/SRC/isamax.f
@@ -1,22 +1,70 @@
- INTEGER FUNCTION ISAMAX(N,SX,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- REAL SX(*)
-* ..
+*> \brief \b ISAMAX
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* INTEGER FUNCTION ISAMAX(N,SX,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* REAL SX(*)
+* ..
+*
* Purpose
* =======
*
-* ISAMAX finds the index of element having max. absolute value.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ISAMAX finds the index of element having max. absolute value.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup aux_blas
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ INTEGER FUNCTION ISAMAX(N,SX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ REAL SX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/izamax.f b/BLAS/SRC/izamax.f
index 9ab4b45d..592c3363 100644
--- a/BLAS/SRC/izamax.f
+++ b/BLAS/SRC/izamax.f
@@ -1,22 +1,70 @@
- INTEGER FUNCTION IZAMAX(N,ZX,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 ZX(*)
-* ..
+*> \brief \b IZAMAX
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* INTEGER FUNCTION IZAMAX(N,ZX,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 ZX(*)
+* ..
+*
* Purpose
* =======
*
-* IZAMAX finds the index of element having max. absolute value.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> IZAMAX finds the index of element having max. absolute value.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup aux_blas
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, 1/15/85.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ INTEGER FUNCTION IZAMAX(N,ZX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, 1/15/85.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 ZX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/lsame.f b/BLAS/SRC/lsame.f
index f5369026..7c0c8a07 100644
--- a/BLAS/SRC/lsame.f
+++ b/BLAS/SRC/lsame.f
@@ -1,26 +1,68 @@
- LOGICAL FUNCTION LSAME(CA,CB)
+*> \brief \b LSAME
*
-* -- LAPACK auxiliary routine (version 3.1) --
-* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
-* November 2006
+* =========== DOCUMENTATION ===========
*
-* .. Scalar Arguments ..
- CHARACTER CA,CB
-* ..
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* LOGICAL FUNCTION LSAME(CA,CB)
+*
+* .. Scalar Arguments ..
+* CHARACTER CA,CB
+* ..
+*
* Purpose
* =======
*
-* LSAME returns .TRUE. if CA is the same letter as CB regardless of
-* case.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> LSAME returns .TRUE. if CA is the same letter as CB regardless of
+*> case.
+*>
+*>\endverbatim
*
* Arguments
* =========
*
-* CA (input) CHARACTER*1
+*> \param[in] CA
+*> \verbatim
+*> CA is CHARACTER*1
+*> \endverbatim
+*>
+*> \param[in] CB
+*> \verbatim
+*> CB is CHARACTER*1
+*> CA and CB specify the single characters to be compared.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
*
-* CB (input) CHARACTER*1
-* CA and CB specify the single characters to be compared.
+*> \ingroup aux_blas
+*
+* =====================================================================
+ LOGICAL FUNCTION LSAME(CA,CB)
+*
+* -- Reference BLAS level1 routine (version 3.1) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
+*
+* .. Scalar Arguments ..
+ CHARACTER CA,CB
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/sasum.f b/BLAS/SRC/sasum.f
index 1e3f7db8..400eab05 100644
--- a/BLAS/SRC/sasum.f
+++ b/BLAS/SRC/sasum.f
@@ -1,23 +1,71 @@
- REAL FUNCTION SASUM(N,SX,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- REAL SX(*)
-* ..
+*> \brief \b SASUM
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* REAL FUNCTION SASUM(N,SX,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* REAL SX(*)
+* ..
+*
* Purpose
* =======
*
-* SASUM takes the sum of the absolute values.
-* uses unrolled loops for increment equal to one.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SASUM takes the sum of the absolute values.
+*> uses unrolled loops for increment equal to one.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ REAL FUNCTION SASUM(N,SX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ REAL SX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/saxpy.f b/BLAS/SRC/saxpy.f
index c0d8b3a0..648be35f 100644
--- a/BLAS/SRC/saxpy.f
+++ b/BLAS/SRC/saxpy.f
@@ -1,23 +1,72 @@
- SUBROUTINE SAXPY(N,SA,SX,INCX,SY,INCY)
-* .. Scalar Arguments ..
- REAL SA
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- REAL SX(*),SY(*)
-* ..
+*> \brief \b SAXPY
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE SAXPY(N,SA,SX,INCX,SY,INCY)
+*
+* .. Scalar Arguments ..
+* REAL SA
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* REAL SX(*),SY(*)
+* ..
+*
* Purpose
* =======
*
-* SAXPY constant times a vector plus a vector.
-* uses unrolled loops for increments equal to one.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SAXPY constant times a vector plus a vector.
+*> uses unrolled loops for increments equal to one.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SAXPY(N,SA,SX,INCX,SY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ REAL SA
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ REAL SX(*),SY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/scabs1.f b/BLAS/SRC/scabs1.f
index eccb9f61..f17280fe 100644
--- a/BLAS/SRC/scabs1.f
+++ b/BLAS/SRC/scabs1.f
@@ -1,12 +1,52 @@
- REAL FUNCTION SCABS1(Z)
-* .. Scalar Arguments ..
- COMPLEX Z
-* ..
+*> \brief \b SCABS1
+*
+* =========== DOCUMENTATION ===========
*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* REAL FUNCTION SCABS1(Z)
+*
+* .. Scalar Arguments ..
+* COMPLEX Z
+* ..
+*
* Purpose
* =======
*
-* SCABS1 computes absolute value of a complex number
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SCABS1 computes absolute value of a complex number
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
+*
+* =====================================================================
+ REAL FUNCTION SCABS1(Z)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
+*
+* .. Scalar Arguments ..
+ COMPLEX Z
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/scasum.f b/BLAS/SRC/scasum.f
index d090110c..dde1badb 100644
--- a/BLAS/SRC/scasum.f
+++ b/BLAS/SRC/scasum.f
@@ -1,23 +1,71 @@
- REAL FUNCTION SCASUM(N,CX,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- COMPLEX CX(*)
-* ..
+*> \brief \b SCASUM
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* REAL FUNCTION SCASUM(N,CX,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* COMPLEX CX(*)
+* ..
+*
* Purpose
* =======
*
-* SCASUM takes the sum of the absolute values of a complex vector and
-* returns a single precision result.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SCASUM takes the sum of the absolute values of a complex vector and
+*> returns a single precision result.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ REAL FUNCTION SCASUM(N,CX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ COMPLEX CX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/scnrm2.f b/BLAS/SRC/scnrm2.f
index 1738c315..8b3f8e06 100644
--- a/BLAS/SRC/scnrm2.f
+++ b/BLAS/SRC/scnrm2.f
@@ -1,25 +1,73 @@
- REAL FUNCTION SCNRM2(N,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- COMPLEX X(*)
-* ..
+*> \brief \b SCNRM2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* REAL FUNCTION SCNRM2(N,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* COMPLEX X(*)
+* ..
+*
* Purpose
* =======
*
-* SCNRM2 returns the euclidean norm of a vector via the function
-* name, so that
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SCNRM2 returns the euclidean norm of a vector via the function
+*> name, so that
+*>
+*> SCNRM2 := sqrt( x**H*x )
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
*
-* SCNRM2 := sqrt( x**H*x )
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> -- This version written on 25-October-1982.
+*> Modified on 14-October-1993 to inline the call to CLASSQ.
+*> Sven Hammarling, Nag Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ REAL FUNCTION SCNRM2(N,X,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- This version written on 25-October-1982.
-* Modified on 14-October-1993 to inline the call to CLASSQ.
-* Sven Hammarling, Nag Ltd.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ COMPLEX X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/scopy.f b/BLAS/SRC/scopy.f
index 905a64cb..f8b5d676 100644
--- a/BLAS/SRC/scopy.f
+++ b/BLAS/SRC/scopy.f
@@ -1,22 +1,70 @@
- SUBROUTINE SCOPY(N,SX,INCX,SY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- REAL SX(*),SY(*)
-* ..
+*> \brief \b SCOPY
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE SCOPY(N,SX,INCX,SY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* REAL SX(*),SY(*)
+* ..
+*
* Purpose
* =======
*
-* SCOPY copies a vector, x, to a vector, y.
-* uses unrolled loops for increments equal to 1.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SCOPY copies a vector, x, to a vector, y.
+*> uses unrolled loops for increments equal to 1.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SCOPY(N,SX,INCX,SY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ REAL SX(*),SY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/sdot.f b/BLAS/SRC/sdot.f
index 4629bbba..d3429a24 100644
--- a/BLAS/SRC/sdot.f
+++ b/BLAS/SRC/sdot.f
@@ -1,22 +1,70 @@
- REAL FUNCTION SDOT(N,SX,INCX,SY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- REAL SX(*),SY(*)
-* ..
+*> \brief \b SDOT
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* REAL FUNCTION SDOT(N,SX,INCX,SY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* REAL SX(*),SY(*)
+* ..
+*
* Purpose
* =======
*
-* SDOT forms the dot product of two vectors.
-* uses unrolled loops for increments equal to one.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SDOT forms the dot product of two vectors.
+*> uses unrolled loops for increments equal to one.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ REAL FUNCTION SDOT(N,SX,INCX,SY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ REAL SX(*),SY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/sdsdot.f b/BLAS/SRC/sdsdot.f
index b84a6c51..7be8af19 100644
--- a/BLAS/SRC/sdsdot.f
+++ b/BLAS/SRC/sdsdot.f
@@ -1,4 +1,150 @@
+*> \brief \b SDSDOT
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* REAL FUNCTION SDSDOT(N,SB,SX,INCX,SY,INCY)
+*
+* .. Scalar Arguments ..
+* REAL SB
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* REAL SX(*),SY(*)
+* ..
+*
+* PURPOSE
+* =======
+*
+* Compute the inner product of two vectors with extended
+* precision accumulation.
+*
+* Returns S.P. result with dot product accumulated in D.P.
+* SDSDOT = SB + sum for I = 0 to N-1 of SX(LX+I*INCX)*SY(LY+I*INCY),
+* where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is
+* defined in a similar way using INCY.
+*
+* AUTHOR
+* ======
+* Lawson, C. L., (JPL), Hanson, R. J., (SNLA),
+* Kincaid, D. R., (U. of Texas), Krogh, F. T., (JPL)
+*
+* ARGUMENTS
+* =========
+*
+* N (input) INTEGER
+* number of elements in input vector(s)
+*
+* SB (input) REAL
+* single precision scalar to be added to inner product
+*
+* SX (input) REAL array, dimension (N)
+* single precision vector with N elements
+*
+* INCX (input) INTEGER
+* storage spacing between elements of SX
+*
+* SY (input) REAL array, dimension (N)
+* single precision vector with N elements
+*
+* INCY (input) INTEGER
+* storage spacing between elements of SY
+*
+* SDSDOT (output) REAL
+* single precision dot product (SB if N .LE. 0)
+*
+* Further Details
+* ===============
+*
+* REFERENCES
+*
+* C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T.
+* Krogh, Basic linear algebra subprograms for Fortran
+* usage, Algorithm No. 539, Transactions on Mathematical
+* Software 5, 3 (September 1979), pp. 308-323.
+*
+* REVISION HISTORY (YYMMDD)
+*
+* 791001 DATE WRITTEN
+* 890531 Changed all specific intrinsics to generic. (WRB)
+* 890831 Modified array declarations. (WRB)
+* 890831 REVISION DATE from Version 3.2
+* 891214 Prologue converted to Version 4.0 format. (BAB)
+* 920310 Corrected definition of LX in DESCRIPTION. (WRB)
+* 920501 Reformatted the REFERENCES section. (WRB)
+* 070118 Reformat to LAPACK coding style
+*
+* =====================================================================
+*
+* .. Local Scalars ..
+* DOUBLE PRECISION DSDOT
+* INTEGER I,KX,KY,NS
+* ..
+* .. Intrinsic Functions ..
+* INTRINSIC DBLE
+* ..
+* DSDOT = SB
+* IF (N.LE.0) THEN
+* SDSDOT = DSDOT
+* RETURN
+* END IF
+* IF (INCX.EQ.INCY .AND. INCX.GT.0) THEN
+*
+* Code for equal and positive increments.
+*
+* NS = N*INCX
+* DO I = 1,NS,INCX
+* DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I))
+* END DO
+* ELSE
+*
+* Code for unequal or nonpositive increments.
+*
+* KX = 1
+* KY = 1
+* IF (INCX.LT.0) KX = 1 + (1-N)*INCX
+* IF (INCY.LT.0) KY = 1 + (1-N)*INCY
+* DO I = 1,N
+* DSDOT = DSDOT + DBLE(SX(KX))*DBLE(SY(KY))
+* KX = KX + INCX
+* KY = KY + INCY
+* END DO
+* END IF
+* SDSDOT = DSDOT
+* RETURN
+* END
+* Purpose
+* =======
+*
+*>\details \b Purpose:
+*>\verbatim
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
+*
+* =====================================================================
REAL FUNCTION SDSDOT(N,SB,SX,INCX,SY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS 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 SB
INTEGER INCX,INCY,N
diff --git a/BLAS/SRC/sgbmv.f b/BLAS/SRC/sgbmv.f
index 9c81731a..774dcda0 100644
--- a/BLAS/SRC/sgbmv.f
+++ b/BLAS/SRC/sgbmv.f
@@ -1,131 +1,211 @@
- SUBROUTINE SGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- REAL ALPHA,BETA
- INTEGER INCX,INCY,KL,KU,LDA,M,N
- CHARACTER TRANS
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b SGBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA,BETA
+* INTEGER INCX,INCY,KL,KU,LDA,M,N
+* CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* SGBMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SGBMV performs one of the matrix-vector operations
+*>
+*> y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are vectors and A is an
+*> m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] KL
+*> \verbatim
+*> KL is INTEGER
+*> On entry, KL specifies the number of sub-diagonals of the
+*> matrix A. KL must satisfy 0 .le. KL.
+*> \endverbatim
+*>
+*> \param[in] KU
+*> \verbatim
+*> KU is INTEGER
+*> On entry, KU specifies the number of super-diagonals of the
+*> matrix A. KU must satisfy 0 .le. KU.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, n ).
+*> Before entry, the leading ( kl + ku + 1 ) by n part of the
+*> array A must contain the matrix of coefficients, supplied
+*> column by column, with the leading diagonal of the matrix in
+*> row ( ku + 1 ) of the array, the first super-diagonal
+*> starting at position 2 in row ku, the first sub-diagonal
+*> starting at position 1 in row ( ku + 2 ), and so on.
+*> Elements in the array A that do not correspond to elements
+*> in the band matrix (such as the top left ku by ku triangle)
+*> 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 )
+*> A( K + I, J ) = matrix( I, J )
+*> 10 CONTINUE
+*> 20 CONTINUE
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( kl + ku + 1 ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is REAL array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is REAL
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is REAL array of DIMENSION at least
+*> ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*> Before entry, the incremented array Y must contain the
+*> vector y. On exit, Y is overwritten by the updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are vectors and A is an
-* m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*
-* TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*
-* TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* KL - INTEGER.
-* On entry, KL specifies the number of sub-diagonals of the
-* matrix A. KL must satisfy 0 .le. KL.
-* Unchanged on exit.
-*
-* KU - INTEGER.
-* On entry, KU specifies the number of super-diagonals of the
-* matrix A. KU must satisfy 0 .le. KU.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - REAL array of DIMENSION ( LDA, n ).
-* Before entry, the leading ( kl + ku + 1 ) by n part of the
-* array A must contain the matrix of coefficients, supplied
-* column by column, with the leading diagonal of the matrix in
-* row ( ku + 1 ) of the array, the first super-diagonal
-* starting at position 2 in row ku, the first sub-diagonal
-* starting at position 1 in row ( ku + 2 ), and so on.
-* Elements in the array A that do not correspond to elements
-* in the band matrix (such as the top left ku by ku triangle)
-* are not referenced.
-* The following program segment will transfer a band matrix
-* from conventional full matrix storage to band storage:
-*
-* DO 20, J = 1, N
-* K = KU + 1 - J
-* DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
-* A( K + I, J ) = matrix( I, J )
-* 10 CONTINUE
-* 20 CONTINUE
-*
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( kl + ku + 1 ).
-* Unchanged on exit.
-*
-* X - REAL array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - REAL .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - REAL array of DIMENSION at least
-* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
-* Before entry, the incremented array Y must contain the
-* vector y. On exit, Y is overwritten by the updated vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA,BETA
+ INTEGER INCX,INCY,KL,KU,LDA,M,N
+ CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/sgemm.f b/BLAS/SRC/sgemm.f
index 36c00d03..8ef99eac 100644
--- a/BLAS/SRC/sgemm.f
+++ b/BLAS/SRC/sgemm.f
@@ -1,133 +1,215 @@
- SUBROUTINE SGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- REAL ALPHA,BETA
- INTEGER K,LDA,LDB,LDC,M,N
- CHARACTER TRANSA,TRANSB
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b SGEMM
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA,BETA
+* INTEGER K,LDA,LDB,LDC,M,N
+* CHARACTER TRANSA,TRANSB
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* SGEMM performs one of the matrix-matrix operations
-*
-* C := alpha*op( A )*op( B ) + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SGEMM performs one of the matrix-matrix operations
+*>
+*> C := alpha*op( A )*op( B ) + beta*C,
+*>
+*> where op( X ) is one of
+*>
+*> op( X ) = X or op( X ) = X**T,
+*>
+*> alpha and beta are scalars, and A, B and C are matrices, with op( A )
+*> an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+*>
+*>\endverbatim
*
-* where op( X ) is one of
+* Arguments
+* =========
+*
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSB
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix
+*> op( A ) and of the matrix C. M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix
+*> op( B ) and the number of columns of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry, K specifies the number of columns of the matrix
+*> op( A ) and the number of rows of the matrix op( B ). K must
+*> be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, ka ), where ka is
+*> k when TRANSA = 'N' or 'n', and is m otherwise.
+*> Before entry with TRANSA = 'N' or 'n', the leading m by k
+*> part of the array A must contain the matrix A, otherwise
+*> the leading k by m part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANSA = 'N' or 'n' then
+*> LDA must be at least max( 1, m ), otherwise LDA must be at
+*> least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is REAL array of DIMENSION ( LDB, kb ), where kb is
+*> n when TRANSB = 'N' or 'n', and is k otherwise.
+*> Before entry with TRANSB = 'N' or 'n', the leading k by n
+*> part of the array B must contain the matrix B, otherwise
+*> the leading n by k part of the array B must contain the
+*> matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. When TRANSB = 'N' or 'n' then
+*> LDB must be at least max( 1, k ), otherwise LDB must be at
+*> least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is REAL
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then C need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is REAL array of DIMENSION ( LDC, n ).
+*> Before entry, the leading m by n part of the array C must
+*> contain the matrix C, except when beta is zero, in which
+*> case C need not be set on entry.
+*> On exit, the array C is overwritten by the m by n matrix
+*> ( alpha*op( A )*op( B ) + beta*C ).
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* op( X ) = X or op( X ) = X**T,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* alpha and beta are scalars, and A, B and C are matrices, with op( A )
-* an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level3
*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n', op( A ) = A.
-*
-* TRANSA = 'T' or 't', op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c', op( A ) = A**T.
-*
-* Unchanged on exit.
-*
-* TRANSB - CHARACTER*1.
-* On entry, TRANSB specifies the form of op( B ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSB = 'N' or 'n', op( B ) = B.
-*
-* TRANSB = 'T' or 't', op( B ) = B**T.
-*
-* TRANSB = 'C' or 'c', op( B ) = B**T.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix
-* op( A ) and of the matrix C. M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix
-* op( B ) and the number of columns of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry, K specifies the number of columns of the matrix
-* op( A ) and the number of rows of the matrix op( B ). K must
-* be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - REAL array of DIMENSION ( LDA, ka ), where ka is
-* k when TRANSA = 'N' or 'n', and is m otherwise.
-* Before entry with TRANSA = 'N' or 'n', the leading m by k
-* part of the array A must contain the matrix A, otherwise
-* the leading k by m part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANSA = 'N' or 'n' then
-* LDA must be at least max( 1, m ), otherwise LDA must be at
-* least max( 1, k ).
-* Unchanged on exit.
-*
-* B - REAL array of DIMENSION ( LDB, kb ), where kb is
-* n when TRANSB = 'N' or 'n', and is k otherwise.
-* Before entry with TRANSB = 'N' or 'n', the leading k by n
-* part of the array B must contain the matrix B, otherwise
-* the leading n by k part of the array B must contain the
-* matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. When TRANSB = 'N' or 'n' then
-* LDB must be at least max( 1, k ), otherwise LDB must be at
-* least max( 1, n ).
-* Unchanged on exit.
-*
-* BETA - REAL .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then C need not be set on input.
-* Unchanged on exit.
-*
-* C - REAL array of DIMENSION ( LDC, n ).
-* Before entry, the leading m by n part of the array C must
-* contain the matrix C, except when beta is zero, in which
-* case C need not be set on entry.
-* On exit, the array C is overwritten by the m by n matrix
-* ( alpha*op( A )*op( B ) + beta*C ).
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ REAL ALPHA,BETA
+ INTEGER K,LDA,LDB,LDC,M,N
+ CHARACTER TRANSA,TRANSB
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/sgemv.f b/BLAS/SRC/sgemv.f
index afae2698..315a6822 100644
--- a/BLAS/SRC/sgemv.f
+++ b/BLAS/SRC/sgemv.f
@@ -1,105 +1,181 @@
- SUBROUTINE SGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- REAL ALPHA,BETA
- INTEGER INCX,INCY,LDA,M,N
- CHARACTER TRANS
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b SGEMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA,BETA
+* INTEGER INCX,INCY,LDA,M,N
+* CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* SGEMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SGEMV performs one of the matrix-vector operations
+*>
+*> y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are vectors and A is an
+*> m by n matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, n ).
+*> Before entry, the leading m by n part of the array A must
+*> contain the matrix of coefficients.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is REAL array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is REAL
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is REAL array of DIMENSION at least
+*> ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*> Before entry with BETA non-zero, the incremented array Y
+*> must contain the vector y. On exit, Y is overwritten by the
+*> updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are vectors and A is an
-* m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*
-* TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*
-* TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - REAL array of DIMENSION ( LDA, n ).
-* Before entry, the leading m by n part of the array A must
-* contain the matrix of coefficients.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, m ).
-* Unchanged on exit.
-*
-* X - REAL array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - REAL .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - REAL array of DIMENSION at least
-* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
-* Before entry with BETA non-zero, the incremented array Y
-* must contain the vector y. On exit, Y is overwritten by the
-* updated vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA,BETA
+ INTEGER INCX,INCY,LDA,M,N
+ CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/sger.f b/BLAS/SRC/sger.f
index 828b7454..46ff76fb 100644
--- a/BLAS/SRC/sger.f
+++ b/BLAS/SRC/sger.f
@@ -1,82 +1,149 @@
- SUBROUTINE SGER(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
-* .. Scalar Arguments ..
- REAL ALPHA
- INTEGER INCX,INCY,LDA,M,N
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b SGER
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SGER(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA
+* INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* SGER performs the rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SGER performs the rank 1 operation
+*>
+*> A := alpha*x*y**T + A,
+*>
+*> where alpha is a scalar, x is an m element vector, y is an n element
+*> vector and A is an m by n matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*> \verbatim
+*> X REAL array of dimension at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the m
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> Y is REAL array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, n ).
+*> Before entry, the leading m by n part of the array A must
+*> contain the matrix of coefficients. On exit, A is
+*> overwritten by the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x is an m element vector, y is an n element
-* vector and A is an m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - REAL array of dimension at least
-* ( 1 + ( m - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the m
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* A - REAL array of DIMENSION ( LDA, n ).
-* Before entry, the leading m by n part of the array A must
-* contain the matrix of coefficients. On exit, A is
-* overwritten by the updated matrix.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SGER(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA
+ INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/snrm2.f b/BLAS/SRC/snrm2.f
index 1c336dac..6e122ccc 100644
--- a/BLAS/SRC/snrm2.f
+++ b/BLAS/SRC/snrm2.f
@@ -1,25 +1,73 @@
- REAL FUNCTION SNRM2(N,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- REAL X(*)
-* ..
+*> \brief \b SNRM2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* REAL FUNCTION SNRM2(N,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* REAL X(*)
+* ..
+*
* Purpose
* =======
*
-* SNRM2 returns the euclidean norm of a vector via the function
-* name, so that
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SNRM2 returns the euclidean norm of a vector via the function
+*> name, so that
+*>
+*> SNRM2 := sqrt( x'*x ).
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
*
-* SNRM2 := sqrt( x'*x ).
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> -- This version written on 25-October-1982.
+*> Modified on 14-October-1993 to inline the call to SLASSQ.
+*> Sven Hammarling, Nag Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ REAL FUNCTION SNRM2(N,X,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- This version written on 25-October-1982.
-* Modified on 14-October-1993 to inline the call to SLASSQ.
-* Sven Hammarling, Nag Ltd.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ REAL X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/srot.f b/BLAS/SRC/srot.f
index b53b0fdb..50e20ed8 100644
--- a/BLAS/SRC/srot.f
+++ b/BLAS/SRC/srot.f
@@ -1,22 +1,71 @@
- SUBROUTINE SROT(N,SX,INCX,SY,INCY,C,S)
-* .. Scalar Arguments ..
- REAL C,S
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- REAL SX(*),SY(*)
-* ..
+*> \brief \b SROT
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE SROT(N,SX,INCX,SY,INCY,C,S)
+*
+* .. Scalar Arguments ..
+* REAL C,S
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* REAL SX(*),SY(*)
+* ..
+*
* Purpose
* =======
*
-* applies a plane rotation.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> applies a plane rotation.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SROT(N,SX,INCX,SY,INCY,C,S)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ REAL C,S
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ REAL SX(*),SY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/srotg.f b/BLAS/SRC/srotg.f
index 4f4258be..666d5501 100644
--- a/BLAS/SRC/srotg.f
+++ b/BLAS/SRC/srotg.f
@@ -1,17 +1,62 @@
- SUBROUTINE SROTG(SA,SB,C,S)
-* .. Scalar Arguments ..
- REAL C,S,SA,SB
-* ..
+*> \brief \b SROTG
+*
+* =========== DOCUMENTATION ===========
*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE SROTG(SA,SB,C,S)
+*
+* .. Scalar Arguments ..
+* REAL C,S,SA,SB
+* ..
+*
* Purpose
* =======
*
-* SROTG construct givens plane rotation.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SROTG construct givens plane rotation.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SROTG(SA,SB,C,S)
*
-* jack dongarra, linpack, 3/11/78.
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS 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 C,S,SA,SB
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/srotm.f b/BLAS/SRC/srotm.f
index 4eeaa4f0..be84807f 100644
--- a/BLAS/SRC/srotm.f
+++ b/BLAS/SRC/srotm.f
@@ -1,55 +1,117 @@
- SUBROUTINE SROTM(N,SX,INCX,SY,INCY,SPARAM)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- REAL SPARAM(5),SX(*),SY(*)
-* ..
-*
-* Purpose
-* =======
-*
-* APPLY THE MODIFIED GIVENS TRANSFORMATION, H, TO THE 2 BY N MATRIX
+*> \brief \b SROTM
*
-* (SX**T) , WHERE **T INDICATES TRANSPOSE. THE ELEMENTS OF SX ARE IN
-* (SX**T)
+* =========== DOCUMENTATION ===========
*
-* SX(LX+I*INCX), I = 0 TO N-1, WHERE LX = 1 IF INCX .GE. 0, ELSE
-* LX = (-INCX)*N, AND SIMILARLY FOR SY USING USING LY AND INCY.
-* WITH SPARAM(1)=SFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* SFLAG=-1.E0 SFLAG=0.E0 SFLAG=1.E0 SFLAG=-2.E0
+* Definition
+* ==========
*
-* (SH11 SH12) (1.E0 SH12) (SH11 1.E0) (1.E0 0.E0)
-* H=( ) ( ) ( ) ( )
-* (SH21 SH22), (SH21 1.E0), (-1.E0 SH22), (0.E0 1.E0).
-* SEE SROTMG FOR A DESCRIPTION OF DATA STORAGE IN SPARAM.
+* SUBROUTINE SROTM(N,SX,INCX,SY,INCY,SPARAM)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* REAL SPARAM(5),SX(*),SY(*)
+* ..
+*
+* Purpose
+* =======
*
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> APPLY THE MODIFIED GIVENS TRANSFORMATION, H, TO THE 2 BY N MATRIX
+*>
+*> (SX**T) , WHERE **T INDICATES TRANSPOSE. THE ELEMENTS OF SX ARE IN
+*> (SX**T)
+*>
+*> SX(LX+I*INCX), I = 0 TO N-1, WHERE LX = 1 IF INCX .GE. 0, ELSE
+*> LX = (-INCX)*N, AND SIMILARLY FOR SY USING USING LY AND INCY.
+*> WITH SPARAM(1)=SFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+*>
+*> SFLAG=-1.E0 SFLAG=0.E0 SFLAG=1.E0 SFLAG=-2.E0
+*>
+*> (SH11 SH12) (1.E0 SH12) (SH11 1.E0) (1.E0 0.E0)
+*> H=( ) ( ) ( ) ( )
+*> (SH21 SH22), (SH21 1.E0), (-1.E0 SH22), (0.E0 1.E0).
+*> SEE SROTMG FOR A DESCRIPTION OF DATA STORAGE IN SPARAM.
+*>
+*>
+*>\endverbatim
*
* Arguments
* =========
*
-* N (input) INTEGER
-* number of elements in input vector(s)
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> number of elements in input vector(s)
+*> \endverbatim
+*>
+*> \param[in,out] SX
+*> \verbatim
+*> SX is REAL array, dimension N
+*> double precision vector with N elements
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> storage spacing between elements of SX
+*> \endverbatim
+*>
+*> \param[in,out] SY
+*> \verbatim
+*> SY is REAL array, dimension N
+*> double precision vector with N elements
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> storage spacing between elements of SY
+*> \endverbatim
+*>
+*> \param[in,out] SPARAM
+*> \verbatim
+*> SPARAM is REAL array, dimension 5
+*> SPARAM(1)=SFLAG
+*> SPARAM(2)=SH11
+*> SPARAM(3)=SH21
+*> SPARAM(4)=SH12
+*> SPARAM(5)=SH22
+*> \endverbatim
+*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* SX (input/output) REAL array, dimension N
-* double precision vector with N elements
+*> \date November 2011
*
-* INCX (input) INTEGER
-* storage spacing between elements of SX
+*> \ingroup single_blas_level1
*
-* SY (input/output) REAL array, dimension N
-* double precision vector with N elements
+* =====================================================================
+ SUBROUTINE SROTM(N,SX,INCX,SY,INCY,SPARAM)
*
-* INCY (input) INTEGER
-* storage spacing between elements of SY
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* SPARAM (input/output) REAL array, dimension 5
-* SPARAM(1)=SFLAG
-* SPARAM(2)=SH11
-* SPARAM(3)=SH21
-* SPARAM(4)=SH12
-* SPARAM(5)=SH22
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ REAL SPARAM(5),SX(*),SY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/srotmg.f b/BLAS/SRC/srotmg.f
index aae4f284..62a76e42 100644
--- a/BLAS/SRC/srotmg.f
+++ b/BLAS/SRC/srotmg.f
@@ -1,52 +1,108 @@
- SUBROUTINE SROTMG(SD1,SD2,SX1,SY1,SPARAM)
-* .. Scalar Arguments ..
- REAL SD1,SD2,SX1,SY1
-* ..
-* .. Array Arguments ..
- REAL SPARAM(5)
-* ..
+*> \brief \b SROTMG
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* CONSTRUCT THE MODIFIED GIVENS TRANSFORMATION MATRIX H WHICH ZEROS
-* THE SECOND COMPONENT OF THE 2-VECTOR (SQRT(SD1)*SX1,SQRT(SD2)*
-* SY2)**T.
-* WITH SPARAM(1)=SFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* SFLAG=-1.E0 SFLAG=0.E0 SFLAG=1.E0 SFLAG=-2.E0
+* Definition
+* ==========
*
-* (SH11 SH12) (1.E0 SH12) (SH11 1.E0) (1.E0 0.E0)
-* H=( ) ( ) ( ) ( )
-* (SH21 SH22), (SH21 1.E0), (-1.E0 SH22), (0.E0 1.E0).
-* LOCATIONS 2-4 OF SPARAM CONTAIN SH11,SH21,SH12, AND SH22
-* RESPECTIVELY. (VALUES OF 1.E0, -1.E0, OR 0.E0 IMPLIED BY THE
-* VALUE OF SPARAM(1) ARE NOT STORED IN SPARAM.)
-*
-* THE VALUES OF GAMSQ AND RGAMSQ SET IN THE DATA STATEMENT MAY BE
-* INEXACT. THIS IS OK AS THEY ARE ONLY USED FOR TESTING THE SIZE
-* OF SD1 AND SD2. ALL ACTUAL SCALING OF DATA IS DONE USING GAM.
+* SUBROUTINE SROTMG(SD1,SD2,SX1,SY1,SPARAM)
+*
+* .. Scalar Arguments ..
+* REAL SD1,SD2,SX1,SY1
+* ..
+* .. Array Arguments ..
+* REAL SPARAM(5)
+* ..
+*
+* Purpose
+* =======
*
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> CONSTRUCT THE MODIFIED GIVENS TRANSFORMATION MATRIX H WHICH ZEROS
+*> THE SECOND COMPONENT OF THE 2-VECTOR (SQRT(SD1)*SX1,SQRT(SD2)*> SY2)**T.
+*> WITH SPARAM(1)=SFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+*>
+*> SFLAG=-1.E0 SFLAG=0.E0 SFLAG=1.E0 SFLAG=-2.E0
+*>
+*> (SH11 SH12) (1.E0 SH12) (SH11 1.E0) (1.E0 0.E0)
+*> H=( ) ( ) ( ) ( )
+*> (SH21 SH22), (SH21 1.E0), (-1.E0 SH22), (0.E0 1.E0).
+*> LOCATIONS 2-4 OF SPARAM CONTAIN SH11,SH21,SH12, AND SH22
+*> RESPECTIVELY. (VALUES OF 1.E0, -1.E0, OR 0.E0 IMPLIED BY THE
+*> VALUE OF SPARAM(1) ARE NOT STORED IN SPARAM.)
+*>
+*> THE VALUES OF GAMSQ AND RGAMSQ SET IN THE DATA STATEMENT MAY BE
+*> INEXACT. THIS IS OK AS THEY ARE ONLY USED FOR TESTING THE SIZE
+*> OF SD1 AND SD2. ALL ACTUAL SCALING OF DATA IS DONE USING GAM.
+*>
+*>
+*>\endverbatim
*
* Arguments
* =========
*
+*> \param[in,out] SD1
+*> \verbatim
+*> SD1 is REAL
+*> \endverbatim
+*>
+*> \param[in,out] SD2
+*> \verbatim
+*> SD2 is REAL
+*> \endverbatim
+*>
+*> \param[in,out] SX1
+*> \verbatim
+*> SX1 is REAL
+*> \endverbatim
+*>
+*> \param[in] SY1
+*> \verbatim
+*> SY1 is REAL
+*> \endverbatim
+*>
+*> \param[in,out] SPARAM
+*> \verbatim
+*> SPARAM is REAL array, dimension 5
+*> SPARAM(1)=SFLAG
+*> SPARAM(2)=SH11
+*> SPARAM(3)=SH21
+*> SPARAM(4)=SH12
+*> SPARAM(5)=SH22
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* SD1 (input/output) REAL
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* SD2 (input/output) REAL
+*> \date November 2011
*
-* SX1 (input/output) REAL
+*> \ingroup single_blas_level1
*
-* SY1 (input) REAL
+* =====================================================================
+ SUBROUTINE SROTMG(SD1,SD2,SX1,SY1,SPARAM)
*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* SPARAM (input/output) REAL array, dimension 5
-* SPARAM(1)=SFLAG
-* SPARAM(2)=SH11
-* SPARAM(3)=SH21
-* SPARAM(4)=SH12
-* SPARAM(5)=SH22
+* .. Scalar Arguments ..
+ REAL SD1,SD2,SX1,SY1
+* ..
+* .. Array Arguments ..
+ REAL SPARAM(5)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ssbmv.f b/BLAS/SRC/ssbmv.f
index 88b4adc1..82f76ceb 100644
--- a/BLAS/SRC/ssbmv.f
+++ b/BLAS/SRC/ssbmv.f
@@ -1,134 +1,211 @@
- SUBROUTINE SSBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- REAL ALPHA,BETA
- INTEGER INCX,INCY,K,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b SSBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SSBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA,BETA
+* INTEGER INCX,INCY,K,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* SSBMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SSBMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n symmetric band matrix, with k super-diagonals.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry, K specifies the number of super-diagonals of the
+*> matrix A. K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the symmetric matrix, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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 )
+*> A( M + I, J ) = matrix( I, J )
+*> 10 CONTINUE
+*> 20 CONTINUE
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is REAL array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is REAL
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is REAL array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the
+*> vector y. On exit, Y is overwritten by the updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n symmetric band matrix, with k super-diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the band matrix A is being supplied as
-* follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* being supplied.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* being supplied.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry, K specifies the number of super-diagonals of the
-* matrix A. K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - REAL array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the symmetric matrix, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer the upper
-* triangular part of a symmetric band matrix from conventional
-* full matrix storage to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer the lower
-* triangular part of a symmetric band matrix from conventional
-* full matrix storage to band storage:
-*
-* 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
-*
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - REAL array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - REAL .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* Y - REAL array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the
-* vector y. On exit, Y is overwritten by the updated vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA,BETA
+ INTEGER INCX,INCY,K,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/sscal.f b/BLAS/SRC/sscal.f
index dd0a68d9..d3d7130a 100644
--- a/BLAS/SRC/sscal.f
+++ b/BLAS/SRC/sscal.f
@@ -1,24 +1,73 @@
- SUBROUTINE SSCAL(N,SA,SX,INCX)
-* .. Scalar Arguments ..
- REAL SA
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- REAL SX(*)
-* ..
+*> \brief \b SSCAL
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE SSCAL(N,SA,SX,INCX)
+*
+* .. Scalar Arguments ..
+* REAL SA
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* REAL SX(*)
+* ..
+*
* Purpose
* =======
*
-* scales a vector by a constant.
-* uses unrolled loops for increment equal to 1.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> scales a vector by a constant.
+*> uses unrolled loops for increment equal to 1.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSCAL(N,SA,SX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ REAL SA
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ REAL SX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/sspmv.f b/BLAS/SRC/sspmv.f
index c9518517..e2485a27 100644
--- a/BLAS/SRC/sspmv.f
+++ b/BLAS/SRC/sspmv.f
@@ -1,100 +1,171 @@
- SUBROUTINE SSPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- REAL ALPHA,BETA
- INTEGER INCX,INCY,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- REAL AP(*),X(*),Y(*)
-* ..
+*> \brief \b SSPMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SSPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA,BETA
+* INTEGER INCX,INCY,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* REAL AP(*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* SSPMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SSPMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n symmetric matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is REAL array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is REAL
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is REAL array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y. On exit, Y is overwritten by the updated
+*> vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n symmetric matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* AP - REAL array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on.
-* Unchanged on exit.
-*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - REAL .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y. On exit, Y is overwritten by the updated
-* vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA,BETA
+ INTEGER INCX,INCY,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ REAL AP(*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/sspr.f b/BLAS/SRC/sspr.f
index 6c2a21c6..55b120e8 100644
--- a/BLAS/SRC/sspr.f
+++ b/BLAS/SRC/sspr.f
@@ -1,86 +1,151 @@
- SUBROUTINE SSPR(UPLO,N,ALPHA,X,INCX,AP)
-* .. Scalar Arguments ..
- REAL ALPHA
- INTEGER INCX,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- REAL AP(*),X(*)
-* ..
+*> \brief \b SSPR
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SSPR(UPLO,N,ALPHA,X,INCX,AP)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA
+* INTEGER INCX,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* REAL AP(*),X(*)
+* ..
+*
* Purpose
* =======
*
-* SSPR performs the symmetric rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SSPR performs the symmetric rank 1 operation
+*>
+*> A := alpha*x*x**T + A,
+*>
+*> where alpha is a real scalar, x is an n element vector and A is an
+*> n by n symmetric matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is REAL array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the upper triangular part of the
+*> updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the lower triangular part of the
+*> updated matrix.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*x**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a real scalar, x is an n element vector and A is an
-* n by n symmetric matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* AP - REAL array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on. On exit, the array
-* AP is overwritten by the upper triangular part of the
-* updated matrix.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on. On exit, the array
-* AP is overwritten by the lower triangular part of the
-* updated matrix.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSPR(UPLO,N,ALPHA,X,INCX,AP)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA
+ INTEGER INCX,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ REAL AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/sspr2.f b/BLAS/SRC/sspr2.f
index 51831071..6450dbcc 100644
--- a/BLAS/SRC/sspr2.f
+++ b/BLAS/SRC/sspr2.f
@@ -1,97 +1,164 @@
- SUBROUTINE SSPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
-* .. Scalar Arguments ..
- REAL ALPHA
- INTEGER INCX,INCY,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- REAL AP(*),X(*),Y(*)
-* ..
+*> \brief \b SSPR2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SSPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA
+* INTEGER INCX,INCY,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* REAL AP(*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* SSPR2 performs the symmetric rank 2 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SSPR2 performs the symmetric rank 2 operation
+*>
+*> A := alpha*x*y**T + alpha*y*x**T + A,
+*>
+*> where alpha is a scalar, x and y are n element vectors and A is an
+*> n by n symmetric matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*> \verbatim
+*> X REAL array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> Y is REAL array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is REAL array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the upper triangular part of the
+*> updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the symmetric matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the lower triangular part of the
+*> updated matrix.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**T + alpha*y*x**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x and y are n element vectors and A is an
-* n by n symmetric matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* AP - REAL array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on. On exit, the array
-* AP is overwritten by the upper triangular part of the
-* updated matrix.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the symmetric matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on. On exit, the array
-* AP is overwritten by the lower triangular part of the
-* updated matrix.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA
+ INTEGER INCX,INCY,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ REAL AP(*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/sswap.f b/BLAS/SRC/sswap.f
index e1a75f49..d0dcddfa 100644
--- a/BLAS/SRC/sswap.f
+++ b/BLAS/SRC/sswap.f
@@ -1,22 +1,70 @@
- SUBROUTINE SSWAP(N,SX,INCX,SY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- REAL SX(*),SY(*)
-* ..
+*> \brief \b SSWAP
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE SSWAP(N,SX,INCX,SY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* REAL SX(*),SY(*)
+* ..
+*
* Purpose
* =======
*
-* interchanges two vectors.
-* uses unrolled loops for increments equal to 1.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> interchanges two vectors.
+*> uses unrolled loops for increments equal to 1.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSWAP(N,SX,INCX,SY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ REAL SX(*),SY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ssymm.f b/BLAS/SRC/ssymm.f
index 5182672e..2253c537 100644
--- a/BLAS/SRC/ssymm.f
+++ b/BLAS/SRC/ssymm.f
@@ -1,137 +1,215 @@
- SUBROUTINE SSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- REAL ALPHA,BETA
- INTEGER LDA,LDB,LDC,M,N
- CHARACTER SIDE,UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b SSYMM
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA,BETA
+* INTEGER LDA,LDB,LDC,M,N
+* CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* SSYMM performs one of the matrix-matrix operations
-*
-* C := alpha*A*B + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SSYMM performs one of the matrix-matrix operations
+*>
+*> C := alpha*A*B + beta*C,
+*>
+*> or
+*>
+*> C := alpha*B*A + beta*C,
+*>
+*> where alpha and beta are scalars, A is a symmetric matrix and B and
+*> C are m by n matrices.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix C.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix C.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, ka ), where ka is
+*> m when SIDE = 'L' or 'l' and is n otherwise.
+*> Before entry with SIDE = 'L' or 'l', the m by m part of
+*> the array A must contain the symmetric matrix, such that
+*> when UPLO = 'U' or 'u', the leading m by m upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the symmetric matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading m by m lower triangular part of the array A
+*> must contain the lower triangular part of the symmetric
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> Before entry with SIDE = 'R' or 'r', the n by n part of
+*> the array A must contain the symmetric matrix, such that
+*> when UPLO = 'U' or 'u', the leading n by n upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the symmetric matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading n by n lower triangular part of the array A
+*> must contain the lower triangular part of the symmetric
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), otherwise LDA must be at
+*> least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is REAL array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is REAL
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then C need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is REAL array of DIMENSION ( LDC, n ).
+*> Before entry, the leading m by n part of the array C must
+*> contain the matrix C, except when beta is zero, in which
+*> case C need not be set on entry.
+*> On exit, the array C is overwritten by the m by n updated
+*> matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*B*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, A is a symmetric matrix and B and
-* C are m by n matrices.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level3
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether the symmetric matrix A
-* appears on the left or right in the operation as follows:
-*
-* SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*
-* SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the symmetric matrix A is to be
-* referenced as follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of the
-* symmetric matrix is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of the
-* symmetric matrix is to be referenced.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix C.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix C.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - REAL array of DIMENSION ( LDA, ka ), where ka is
-* m when SIDE = 'L' or 'l' and is n otherwise.
-* Before entry with SIDE = 'L' or 'l', the m by m part of
-* the array A must contain the symmetric matrix, such that
-* when UPLO = 'U' or 'u', the leading m by m upper triangular
-* part of the array A must contain the upper triangular part
-* of the symmetric matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading m by m lower triangular part of the array A
-* must contain the lower triangular part of the symmetric
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Before entry with SIDE = 'R' or 'r', the n by n part of
-* the array A must contain the symmetric matrix, such that
-* when UPLO = 'U' or 'u', the leading n by n upper triangular
-* part of the array A must contain the upper triangular part
-* of the symmetric matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading n by n lower triangular part of the array A
-* must contain the lower triangular part of the symmetric
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), otherwise LDA must be at
-* least max( 1, n ).
-* Unchanged on exit.
-*
-* B - REAL array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
-*
-* BETA - REAL .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then C need not be set on input.
-* Unchanged on exit.
-*
-* C - REAL array of DIMENSION ( LDC, n ).
-* Before entry, the leading m by n part of the array C must
-* contain the matrix C, except when beta is zero, in which
-* case C need not be set on entry.
-* On exit, the array C is overwritten by the m by n updated
-* matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ REAL ALPHA,BETA
+ INTEGER LDA,LDB,LDC,M,N
+ CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ssymv.f b/BLAS/SRC/ssymv.f
index a43bd9b0..6660a329 100644
--- a/BLAS/SRC/ssymv.f
+++ b/BLAS/SRC/ssymv.f
@@ -1,103 +1,176 @@
- SUBROUTINE SSYMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- REAL ALPHA,BETA
- INTEGER INCX,INCY,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b SSYMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SSYMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA,BETA
+* INTEGER INCX,INCY,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* SSYMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SSYMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n symmetric matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of A is not referenced.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is REAL
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is REAL array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y. On exit, Y is overwritten by the updated
+*> vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n symmetric matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - REAL array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of A is not referenced.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
-*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - REAL .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y. On exit, Y is overwritten by the updated
-* vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSYMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA,BETA
+ INTEGER INCX,INCY,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ssyr.f b/BLAS/SRC/ssyr.f
index 1a546009..05c49151 100644
--- a/BLAS/SRC/ssyr.f
+++ b/BLAS/SRC/ssyr.f
@@ -1,89 +1,156 @@
- SUBROUTINE SSYR(UPLO,N,ALPHA,X,INCX,A,LDA)
-* .. Scalar Arguments ..
- REAL ALPHA
- INTEGER INCX,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),X(*)
-* ..
+*> \brief \b SSYR
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SSYR(UPLO,N,ALPHA,X,INCX,A,LDA)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA
+* INTEGER INCX,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* SSYR performs the symmetric rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SSYR performs the symmetric rank 1 operation
+*>
+*> A := alpha*x*x**T + A,
+*>
+*> where alpha is a real scalar, x is an n element vector and A is an
+*> n by n symmetric matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of A is not referenced. On exit, the
+*> upper triangular part of the array A is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of A is not referenced. On exit, the
+*> lower triangular part of the array A is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*x**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a real scalar, x is an n element vector and A is an
-* n by n symmetric matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* A - REAL array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of A is not referenced. On exit, the
-* upper triangular part of the array A is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of A is not referenced. On exit, the
-* lower triangular part of the array A is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSYR(UPLO,N,ALPHA,X,INCX,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA
+ INTEGER INCX,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ssyr2.f b/BLAS/SRC/ssyr2.f
index 545cfe55..b96e2184 100644
--- a/BLAS/SRC/ssyr2.f
+++ b/BLAS/SRC/ssyr2.f
@@ -1,100 +1,169 @@
- SUBROUTINE SSYR2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
-* .. Scalar Arguments ..
- REAL ALPHA
- INTEGER INCX,INCY,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b SSYR2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SSYR2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA
+* INTEGER INCX,INCY,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* SSYR2 performs the symmetric rank 2 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SSYR2 performs the symmetric rank 2 operation
+*>
+*> A := alpha*x*y**T + alpha*y*x**T + A,
+*>
+*> where alpha is a scalar, x and y are n element vectors and A is an n
+*> by n symmetric matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*> \verbatim
+*> X REAL array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> Y is REAL array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of A is not referenced. On exit, the
+*> upper triangular part of the array A is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of A is not referenced. On exit, the
+*> lower triangular part of the array A is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**T + alpha*y*x**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x and y are n element vectors and A is an n
-* by n symmetric matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* A - REAL array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of A is not referenced. On exit, the
-* upper triangular part of the array A is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of A is not referenced. On exit, the
-* lower triangular part of the array A is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSYR2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ REAL ALPHA
+ INTEGER INCX,INCY,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ssyr2k.f b/BLAS/SRC/ssyr2k.f
index c9f44aa8..a0bfee72 100644
--- a/BLAS/SRC/ssyr2k.f
+++ b/BLAS/SRC/ssyr2k.f
@@ -1,140 +1,219 @@
- SUBROUTINE SSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- REAL ALPHA,BETA
- INTEGER K,LDA,LDB,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b SSYR2K
+*
+* =========== DOCUMENTATION ===========
*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE SSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA,BETA
+* INTEGER K,LDA,LDB,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* SSYR2K performs one of the symmetric rank 2k operations
-*
-* C := alpha*A*B**T + alpha*B*A**T + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SSYR2K performs one of the symmetric rank 2k operations
+*>
+*> C := alpha*A*B**T + alpha*B*A**T + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**T*B + alpha*B**T*A + beta*C,
+*>
+*> where alpha and beta are scalars, C is an n by n symmetric matrix
+*> and A and B are n by k matrices in the first case and k by n
+*> matrices in the second case.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrices A and B, and on entry with
+*> TRANS = 'T' or 't' or 'C' or 'c', K specifies the number
+*> of rows of the matrices A and B. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is REAL array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
+*> the leading k by n part of the array B must contain the
+*> matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDB must be at least max( 1, n ), otherwise LDB must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is REAL
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is REAL array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**T*B + alpha*B**T*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, C is an n by n symmetric matrix
-* and A and B are n by k matrices in the first case and k by n
-* matrices in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T +
-* beta*C.
-*
-* TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A +
-* beta*C.
-*
-* TRANS = 'C' or 'c' C := alpha*A**T*B + alpha*B**T*A +
-* beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrices A and B, and on entry with
-* TRANS = 'T' or 't' or 'C' or 'c', K specifies the number
-* of rows of the matrices A and B. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - REAL 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* B - REAL array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
-* the leading k by n part of the array B must contain the
-* matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDB must be at least max( 1, n ), otherwise LDB must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - REAL .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - REAL array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
-*
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ REAL ALPHA,BETA
+ INTEGER K,LDA,LDB,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ssyrk.f b/BLAS/SRC/ssyrk.f
index 33b7296f..9d294f13 100644
--- a/BLAS/SRC/ssyrk.f
+++ b/BLAS/SRC/ssyrk.f
@@ -1,121 +1,196 @@
- SUBROUTINE SSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
-* .. Scalar Arguments ..
- REAL ALPHA,BETA
- INTEGER K,LDA,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),C(LDC,*)
-* ..
+*> \brief \b SSYRK
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE SSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA,BETA
+* INTEGER K,LDA,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* SSYRK performs one of the symmetric rank k operations
-*
-* C := alpha*A*A**T + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> SSYRK performs one of the symmetric rank k operations
+*>
+*> C := alpha*A*A**T + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**T*A + beta*C,
+*>
+*> where alpha and beta are scalars, C is an n by n symmetric matrix
+*> and A is an n by k matrix in the first case and a k by n matrix
+*> in the second case.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrix A, and on entry with
+*> TRANS = 'T' or 't' or 'C' or 'c', K specifies the number
+*> of rows of the matrix A. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is REAL
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is REAL array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**T*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, C is an n by n symmetric matrix
-* and A is an n by k matrix in the first case and a k by n matrix
-* in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C.
-*
-* TRANS = 'T' or 't' C := alpha*A**T*A + beta*C.
-*
-* TRANS = 'C' or 'c' C := alpha*A**T*A + beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrix A, and on entry with
-* TRANS = 'T' or 't' or 'C' or 'c', K specifies the number
-* of rows of the matrix A. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - REAL 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - REAL .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - REAL array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE SSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ REAL ALPHA,BETA
+ INTEGER K,LDA,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/stbmv.f b/BLAS/SRC/stbmv.f
index 7446b4e6..5c1190a8 100644
--- a/BLAS/SRC/stbmv.f
+++ b/BLAS/SRC/stbmv.f
@@ -1,141 +1,218 @@
- SUBROUTINE STBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,K,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),X(*)
-* ..
+*> \brief \b STBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE STBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,K,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* STBMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> STBMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with UPLO = 'U' or 'u', K specifies the number of
+*> super-diagonals of the matrix A.
+*> On entry with UPLO = 'L' or 'l', K specifies the number of
+*> sub-diagonals of the matrix A.
+*> K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the matrix of coefficients, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> 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. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* x := A*x, or x := A**T*x,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**T*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with UPLO = 'U' or 'u', K specifies the number of
-* super-diagonals of the matrix A.
-* On entry with UPLO = 'L' or 'l', K specifies the number of
-* sub-diagonals of the matrix A.
-* K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* A - REAL array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the matrix of coefficients, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer an upper
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer a lower
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE STBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,K,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/stbsv.f b/BLAS/SRC/stbsv.f
index d6d247e2..2bdb4824 100644
--- a/BLAS/SRC/stbsv.f
+++ b/BLAS/SRC/stbsv.f
@@ -1,144 +1,221 @@
- SUBROUTINE STBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,K,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),X(*)
-* ..
+*> \brief \b STBSV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE STBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,K,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* STBSV solves one of the systems of equations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> STBSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular band matrix, with ( k + 1 )
+*> diagonals.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* A*x = b, or A**T*x = b,
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with UPLO = 'U' or 'u', K specifies the number of
+*> super-diagonals of the matrix A.
+*> On entry with UPLO = 'L' or 'l', K specifies the number of
+*> sub-diagonals of the matrix A.
+*> K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the matrix of coefficients, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is REAL array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular band matrix, with ( k + 1 )
-* diagonals.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup single_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**T*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with UPLO = 'U' or 'u', K specifies the number of
-* super-diagonals of the matrix A.
-* On entry with UPLO = 'L' or 'l', K specifies the number of
-* sub-diagonals of the matrix A.
-* K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* A - REAL array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the matrix of coefficients, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer an upper
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer a lower
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE STBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,K,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/stpmv.f b/BLAS/SRC/stpmv.f
index 573288e6..a32cf73f 100644
--- a/BLAS/SRC/stpmv.f
+++ b/BLAS/SRC/stpmv.f
@@ -1,101 +1,170 @@
- SUBROUTINE STPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- REAL AP(*),X(*)
-* ..
-*
-* Purpose
-* =======
-*
-* STPMV performs one of the matrix-vector operations
+*> \brief \b STPMV
*
-* x := A*x, or x := A**T*x,
+* =========== DOCUMENTATION ===========
*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular matrix, supplied in packed form.
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**T*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+* SUBROUTINE STPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* REAL AP(*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> STPMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular matrix, supplied in packed form.
+*>
+*>\endverbatim
*
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is REAL array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*> respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*> respectively, and so on.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> 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. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* AP - REAL array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
-* respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
-* respectively, and so on.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced, but are assumed to be unity.
-* Unchanged on exit.
+*> \date November 2011
*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
+*> \ingroup single_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE STPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ REAL AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/stpsv.f b/BLAS/SRC/stpsv.f
index aca8a7fc..d54a5da4 100644
--- a/BLAS/SRC/stpsv.f
+++ b/BLAS/SRC/stpsv.f
@@ -1,103 +1,172 @@
- SUBROUTINE STPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- REAL AP(*),X(*)
-* ..
+*> \brief \b STPSV
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* STPSV solves one of the systems of equations
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* A*x = b, or A**T*x = b,
-*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular matrix, supplied in packed form.
-*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
-*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**T*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+* SUBROUTINE STPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* REAL AP(*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> STPSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular matrix, supplied in packed form.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is REAL array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*> respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*> respectively, and so on.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is REAL array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* AP - REAL array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
-* respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
-* respectively, and so on.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced, but are assumed to be unity.
-* Unchanged on exit.
+*> \date November 2011
*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
+*> \ingroup single_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE STPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ REAL AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/strmm.f b/BLAS/SRC/strmm.f
index 9d76a16d..c366891e 100644
--- a/BLAS/SRC/strmm.f
+++ b/BLAS/SRC/strmm.f
@@ -1,129 +1,208 @@
- SUBROUTINE STRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
-* .. Scalar Arguments ..
- REAL ALPHA
- INTEGER LDA,LDB,M,N
- CHARACTER DIAG,SIDE,TRANSA,UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),B(LDB,*)
-* ..
-*
-* Purpose
-* =======
+*> \brief \b STRMM
*
-* STRMM performs one of the matrix-matrix operations
+* =========== DOCUMENTATION ===========
*
-* B := alpha*op( A )*B, or B := alpha*B*op( A ),
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* where alpha is a scalar, B is an m by n matrix, A is a unit, or
-* non-unit, upper or lower triangular matrix and op( A ) is one of
-*
-* op( A ) = A or op( A ) = A**T.
-*
-* Arguments
+* Definition
* ==========
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether op( A ) multiplies B from
-* the left or right as follows:
-*
-* SIDE = 'L' or 'l' B := alpha*op( A )*B.
-*
-* SIDE = 'R' or 'r' B := alpha*B*op( A ).
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix A is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n' op( A ) = A.
-*
-* TRANSA = 'T' or 't' op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c' op( A ) = A**T.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit triangular
-* as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of B. M must be at
-* least zero.
-* Unchanged on exit.
+* SUBROUTINE STRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA
+* INTEGER LDA,LDB,M,N
+* CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),B(LDB,*)
+* ..
+*
+* Purpose
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the number of columns of B. N must be
-* at least zero.
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> STRMM performs one of the matrix-matrix operations
+*>
+*> B := alpha*op( A )*B, or B := alpha*B*op( A ),
+*>
+*> where alpha is a scalar, B is an m by n matrix, A is a unit, or
+*> non-unit, upper or lower triangular matrix and op( A ) is one of
+*>
+*> op( A ) = A or op( A ) = A**T.
+*>
+*>\endverbatim
*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha. When alpha is
-* zero then A is not referenced and B need not be set before
-* entry.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of B. M must be at
+*> least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of B. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha. When alpha is
+*> zero then A is not referenced and B need not be set before
+*> entry.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL 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
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading k by k
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+*> then LDA must be at least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] B
+*> \verbatim
+*> B is REAL array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the matrix B, and on exit is overwritten by the
+*> transformed matrix.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - REAL 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
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading k by k
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
-* then LDA must be at least max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* B - REAL array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the matrix B, and on exit is overwritten by the
-* transformed matrix.
+*> \ingroup single_blas_level3
*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE STRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ REAL ALPHA
+ INTEGER LDA,LDB,M,N
+ CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),B(LDB,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/strmv.f b/BLAS/SRC/strmv.f
index f20cfa2d..dcfa15d1 100644
--- a/BLAS/SRC/strmv.f
+++ b/BLAS/SRC/strmv.f
@@ -1,104 +1,175 @@
- SUBROUTINE STRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),X(*)
-* ..
+*> \brief \b STRMV
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* STRMV performs one of the matrix-vector operations
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* x := A*x, or x := A**T*x,
-*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular matrix.
-*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**T*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+* SUBROUTINE STRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> STRMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular matrix.
+*>
+*>\endverbatim
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> 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. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - REAL array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
+*> \ingroup single_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE STRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/strsm.f b/BLAS/SRC/strsm.f
index 88880696..0568d971 100644
--- a/BLAS/SRC/strsm.f
+++ b/BLAS/SRC/strsm.f
@@ -1,132 +1,212 @@
- SUBROUTINE STRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
-* .. Scalar Arguments ..
- REAL ALPHA
- INTEGER LDA,LDB,M,N
- CHARACTER DIAG,SIDE,TRANSA,UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),B(LDB,*)
-* ..
-*
-* Purpose
-* =======
+*> \brief \b STRSM
*
-* STRSM solves one of the matrix equations
+* =========== DOCUMENTATION ===========
*
-* op( A )*X = alpha*B, or X*op( A ) = alpha*B,
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* where alpha is a scalar, X and B are m by n matrices, A is a unit, or
-* non-unit, upper or lower triangular matrix and op( A ) is one of
-*
-* op( A ) = A or op( A ) = A**T.
-*
-* The matrix X is overwritten on B.
-*
-* Arguments
+* Definition
* ==========
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether op( A ) appears on the left
-* or right of X as follows:
-*
-* SIDE = 'L' or 'l' op( A )*X = alpha*B.
-*
-* SIDE = 'R' or 'r' X*op( A ) = alpha*B.
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix A is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n' op( A ) = A.
-*
-* TRANSA = 'T' or 't' op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c' op( A ) = A**T.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit triangular
-* as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of B. M must be at
-* least zero.
-* Unchanged on exit.
+* SUBROUTINE STRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*
+* .. Scalar Arguments ..
+* REAL ALPHA
+* INTEGER LDA,LDB,M,N
+* CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),B(LDB,*)
+* ..
+*
+* Purpose
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the number of columns of B. N must be
-* at least zero.
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> STRSM solves one of the matrix equations
+*>
+*> op( A )*X = alpha*B, or X*op( A ) = alpha*B,
+*>
+*> where alpha is a scalar, X and B are m by n matrices, A is a unit, or
+*> non-unit, upper or lower triangular matrix and op( A ) is one of
+*>
+*> op( A ) = A or op( A ) = A**T.
+*>
+*> The matrix X is overwritten on B.
+*>
+*>\endverbatim
*
-* ALPHA - REAL .
-* On entry, ALPHA specifies the scalar alpha. When alpha is
-* zero then A is not referenced and B need not be set before
-* entry.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of B. M must be at
+*> least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of B. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is REAL
+*> On entry, ALPHA specifies the scalar alpha. When alpha is
+*> zero then A is not referenced and B need not be set before
+*> entry.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, k ),
+*> where k is m when SIDE = 'L' or 'l'
+*> and k 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
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading k by k
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+*> then LDA must be at least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] B
+*> \verbatim
+*> B is REAL array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the right-hand side matrix B, and on exit is
+*> overwritten by the solution matrix X.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - REAL 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
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading k by k
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
-* then LDA must be at least max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* B - REAL array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the right-hand side matrix B, and on exit is
-* overwritten by the solution matrix X.
+*> \ingroup single_blas_level3
*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE STRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
*
-* Level 3 Blas routine.
-*
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ REAL ALPHA
+ INTEGER LDA,LDB,M,N
+ CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),B(LDB,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/strsv.f b/BLAS/SRC/strsv.f
index 02420fbf..c4b3f546 100644
--- a/BLAS/SRC/strsv.f
+++ b/BLAS/SRC/strsv.f
@@ -1,106 +1,177 @@
- SUBROUTINE STRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- REAL A(LDA,*),X(*)
-* ..
+*> \brief \b STRSV
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* STRSV solves one of the systems of equations
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* A*x = b, or A**T*x = b,
-*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular matrix.
-*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
-*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**T*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+* SUBROUTINE STRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* REAL A(LDA,*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> STRSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular matrix.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is REAL array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is REAL array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - REAL array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* X - REAL array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
+*> \ingroup single_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE STRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ REAL A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/xerbla.f b/BLAS/SRC/xerbla.f
index 3a84150e..5d287b91 100644
--- a/BLAS/SRC/xerbla.f
+++ b/BLAS/SRC/xerbla.f
@@ -1,33 +1,76 @@
- SUBROUTINE XERBLA( SRNAME, INFO )
+*> \brief \b XERBLA
*
-* -- LAPACK auxiliary routine (preliminary version) --
-* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
-* November 2006
+* =========== DOCUMENTATION ===========
*
-* .. Scalar Arguments ..
- CHARACTER*(*) SRNAME
- INTEGER INFO
-* ..
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE XERBLA( SRNAME, INFO )
+*
+* .. Scalar Arguments ..
+* CHARACTER*(*) SRNAME
+* INTEGER INFO
+* ..
+*
* Purpose
* =======
*
-* XERBLA is an error handler for the LAPACK routines.
-* It is called by an LAPACK routine if an input parameter has an
-* invalid value. A message is printed and execution stops.
-*
-* Installers may consider modifying the STOP statement in order to
-* call system-specific exception-handling facilities.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> XERBLA is an error handler for the LAPACK routines.
+*> It is called by an LAPACK routine if an input parameter has an
+*> invalid value. A message is printed and execution stops.
+*>
+*> Installers may consider modifying the STOP statement in order to
+*> call system-specific exception-handling facilities.
+*>
+*>\endverbatim
*
* Arguments
* =========
*
-* SRNAME (input) CHARACTER*(*)
-* The name of the routine which called XERBLA.
+*> \param[in] SRNAME
+*> \verbatim
+*> SRNAME is CHARACTER*(*)
+*> The name of the routine which called XERBLA.
+*> \endverbatim
+*>
+*> \param[in] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> The position of the invalid parameter in the parameter list
+*> of the calling routine.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* INFO (input) INTEGER
-* The position of the invalid parameter in the parameter list
-* of the calling routine.
+*> \date November 2011
+*
+*> \ingroup aux_blas
+*
+* =====================================================================
+ SUBROUTINE XERBLA( SRNAME, INFO )
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
+*
+* .. Scalar Arguments ..
+ CHARACTER*(*) SRNAME
+ INTEGER INFO
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/xerbla_array.f b/BLAS/SRC/xerbla_array.f
index 350b59bc..c6173eee 100644
--- a/BLAS/SRC/xerbla_array.f
+++ b/BLAS/SRC/xerbla_array.f
@@ -1,51 +1,98 @@
- SUBROUTINE XERBLA_ARRAY(SRNAME_ARRAY, SRNAME_LEN, INFO)
+*> \brief \b XERBLA_ARRAY
*
-* -- LAPACK auxiliary routine (version 3.0) --
-* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
-* September 19, 2006
+* =========== DOCUMENTATION ===========
*
- IMPLICIT NONE
-* .. Scalar Arguments ..
- INTEGER SRNAME_LEN, INFO
-* ..
-* .. Array Arguments ..
- CHARACTER(1) SRNAME_ARRAY(SRNAME_LEN)
-* ..
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE XERBLA_ARRAY(SRNAME_ARRAY, SRNAME_LEN, INFO)
+*
+* .. Scalar Arguments ..
+* INTEGER SRNAME_LEN, INFO
+* ..
+* .. Array Arguments ..
+* CHARACTER(1) SRNAME_ARRAY(SRNAME_LEN)
+* ..
+*
* Purpose
* =======
*
-* XERBLA_ARRAY assists other languages in calling XERBLA, the LAPACK
-* and BLAS error handler. Rather than taking a Fortran string argument
-* as the function's name, XERBLA_ARRAY takes an array of single
-* characters along with the array's length. XERBLA_ARRAY then copies
-* up to 32 characters of that array into a Fortran string and passes
-* that to XERBLA. If called with a non-positive SRNAME_LEN,
-* XERBLA_ARRAY will call XERBLA with a string of all blank characters.
-*
-* Say some macro or other device makes XERBLA_ARRAY available to C99
-* by a name lapack_xerbla and with a common Fortran calling convention.
-* Then a C99 program could invoke XERBLA via:
-* {
-* int flen = strlen(__func__);
-* lapack_xerbla(__func__, &flen, &info);
-* }
-*
-* Providing XERBLA_ARRAY is not necessary for intercepting LAPACK
-* errors. XERBLA_ARRAY calls XERBLA.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> XERBLA_ARRAY assists other languages in calling XERBLA, the LAPACK
+*> and BLAS error handler. Rather than taking a Fortran string argument
+*> as the function's name, XERBLA_ARRAY takes an array of single
+*> characters along with the array's length. XERBLA_ARRAY then copies
+*> up to 32 characters of that array into a Fortran string and passes
+*> that to XERBLA. If called with a non-positive SRNAME_LEN,
+*> XERBLA_ARRAY will call XERBLA with a string of all blank characters.
+*>
+*> Say some macro or other device makes XERBLA_ARRAY available to C99
+*> by a name lapack_xerbla and with a common Fortran calling convention.
+*> Then a C99 program could invoke XERBLA via:
+*> {
+*> int flen = strlen(__func__);
+*> lapack_xerbla(__func__, &flen, &info);
+*> }
+*>
+*> Providing XERBLA_ARRAY is not necessary for intercepting LAPACK
+*> errors. XERBLA_ARRAY calls XERBLA.
+*>
+*>\endverbatim
*
* Arguments
* =========
*
-* SRNAME_ARRAY (input) CHARACTER(1) array, dimension (SRNAME_LEN)
-* The name of the routine which called XERBLA_ARRAY.
+*> \param[in] SRNAME_ARRAY
+*> \verbatim
+*> SRNAME_ARRAY is CHARACTER(1) array, dimension (SRNAME_LEN)
+*> The name of the routine which called XERBLA_ARRAY.
+*> \endverbatim
+*>
+*> \param[in] SRNAME_LEN
+*> \verbatim
+*> SRNAME_LEN is INTEGER
+*> The length of the name in SRNAME_ARRAY.
+*> \endverbatim
+*>
+*> \param[in] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> The position of the invalid parameter in the parameter list
+*> of the calling routine.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* SRNAME_LEN (input) INTEGER
-* The length of the name in SRNAME_ARRAY.
+*> \date November 2011
*
-* INFO (input) INTEGER
-* The position of the invalid parameter in the parameter list
-* of the calling routine.
+*> \ingroup aux_blas
+*
+* =====================================================================
+ SUBROUTINE XERBLA_ARRAY(SRNAME_ARRAY, SRNAME_LEN, INFO)
+*
+* -- Reference BLAS level1 routine (version 3.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
+*
+* .. Scalar Arguments ..
+ INTEGER SRNAME_LEN, INFO
+* ..
+* .. Array Arguments ..
+ CHARACTER(1) SRNAME_ARRAY(SRNAME_LEN)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zaxpy.f b/BLAS/SRC/zaxpy.f
index 07afb5f3..0daa8870 100644
--- a/BLAS/SRC/zaxpy.f
+++ b/BLAS/SRC/zaxpy.f
@@ -1,22 +1,71 @@
- SUBROUTINE ZAXPY(N,ZA,ZX,INCX,ZY,INCY)
-* .. Scalar Arguments ..
- COMPLEX*16 ZA
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 ZX(*),ZY(*)
-* ..
+*> \brief \b ZAXPY
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE ZAXPY(N,ZA,ZX,INCX,ZY,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ZA
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 ZX(*),ZY(*)
+* ..
+*
* Purpose
* =======
*
-* ZAXPY constant times a vector plus a vector.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZAXPY constant times a vector plus a vector.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZAXPY(N,ZA,ZX,INCX,ZY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ COMPLEX*16 ZA
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 ZX(*),ZY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zcopy.f b/BLAS/SRC/zcopy.f
index 1038cb96..93ee92d0 100644
--- a/BLAS/SRC/zcopy.f
+++ b/BLAS/SRC/zcopy.f
@@ -1,21 +1,69 @@
- SUBROUTINE ZCOPY(N,ZX,INCX,ZY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 ZX(*),ZY(*)
-* ..
+*> \brief \b ZCOPY
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE ZCOPY(N,ZX,INCX,ZY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 ZX(*),ZY(*)
+* ..
+*
* Purpose
* =======
*
-* ZCOPY copies a vector, x, to a vector, y.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZCOPY copies a vector, x, to a vector, y.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, linpack, 4/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZCOPY(N,ZX,INCX,ZY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, linpack, 4/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 ZX(*),ZY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zdotc.f b/BLAS/SRC/zdotc.f
index 2f6b6532..4ed407d0 100644
--- a/BLAS/SRC/zdotc.f
+++ b/BLAS/SRC/zdotc.f
@@ -1,21 +1,69 @@
- COMPLEX*16 FUNCTION ZDOTC(N,ZX,INCX,ZY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 ZX(*),ZY(*)
-* ..
+*> \brief \b ZDOTC
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* COMPLEX*16 FUNCTION ZDOTC(N,ZX,INCX,ZY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 ZX(*),ZY(*)
+* ..
+*
* Purpose
* =======
*
-* ZDOTC forms the dot product of a vector.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZDOTC forms the dot product of a vector.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ COMPLEX*16 FUNCTION ZDOTC(N,ZX,INCX,ZY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 ZX(*),ZY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zdotu.f b/BLAS/SRC/zdotu.f
index 1722c8af..9d481a97 100644
--- a/BLAS/SRC/zdotu.f
+++ b/BLAS/SRC/zdotu.f
@@ -1,21 +1,69 @@
- COMPLEX*16 FUNCTION ZDOTU(N,ZX,INCX,ZY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 ZX(*),ZY(*)
-* ..
+*> \brief \b ZDOTU
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* COMPLEX*16 FUNCTION ZDOTU(N,ZX,INCX,ZY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 ZX(*),ZY(*)
+* ..
+*
* Purpose
* =======
*
-* ZDOTU forms the dot product of two vectors.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZDOTU forms the dot product of two vectors.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ COMPLEX*16 FUNCTION ZDOTU(N,ZX,INCX,ZY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 ZX(*),ZY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zdrot.f b/BLAS/SRC/zdrot.f
index 20d04361..3caaaca6 100644
--- a/BLAS/SRC/zdrot.f
+++ b/BLAS/SRC/zdrot.f
@@ -1,5 +1,110 @@
+*> \brief \b ZDROT
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE ZDROT( N, CX, INCX, CY, INCY, C, S )
+*
+* .. Scalar Arguments ..
+* INTEGER INCX, INCY, N
+* DOUBLE PRECISION C, S
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 CX( * ), CY( * )
+* ..
+*
+* Purpose
+* =======
+*
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> Applies a plane rotation, where the cos and sin (c and s) are real
+*> and the vectors cx and cy are complex.
+*> jack dongarra, linpack, 3/11/78.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the vectors cx and cy.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in,out] CX
+*> \verbatim
+*> CX is COMPLEX*16 array, dimension at least
+*> ( 1 + ( N - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array CX must contain the n
+*> element vector cx. On exit, CX is overwritten by the updated
+*> vector cx.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> CX. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] CY
+*> \verbatim
+*> CY is COMPLEX*16 array, dimension at least
+*> ( 1 + ( N - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array CY must contain the n
+*> element vector cy. On exit, CY is overwritten by the updated
+*> vector cy.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> CY. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in] C
+*> \verbatim
+*> C is DOUBLE PRECISION
+*> On entry, C specifies the cosine, cos.
+*> \endverbatim
+*>
+*> \param[in] S
+*> \verbatim
+*> S is DOUBLE PRECISION
+*> On entry, S specifies the sine, sin.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16_blas_level1
+*
+* =====================================================================
SUBROUTINE ZDROT( N, CX, INCX, CY, INCY, C, S )
*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
+*
* .. Scalar Arguments ..
INTEGER INCX, INCY, N
DOUBLE PRECISION C, S
@@ -8,51 +113,6 @@
COMPLEX*16 CX( * ), CY( * )
* ..
*
-* Purpose
-* =======
-*
-* Applies a plane rotation, where the cos and sin (c and s) are real
-* and the vectors cx and cy are complex.
-* jack dongarra, linpack, 3/11/78.
-*
-* Arguments
-* ==========
-*
-* N (input) INTEGER
-* On entry, N specifies the order of the vectors cx and cy.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* CX (input) COMPLEX*16 array, dimension at least
-* ( 1 + ( N - 1 )*abs( INCX ) ).
-* Before entry, the incremented array CX must contain the n
-* element vector cx. On exit, CX is overwritten by the updated
-* vector cx.
-*
-* INCX (input) INTEGER
-* On entry, INCX specifies the increment for the elements of
-* CX. INCX must not be zero.
-* Unchanged on exit.
-*
-* CY (input) COMPLEX*16 array, dimension at least
-* ( 1 + ( N - 1 )*abs( INCY ) ).
-* Before entry, the incremented array CY must contain the n
-* element vector cy. On exit, CY is overwritten by the updated
-* vector cy.
-*
-* INCY (input) INTEGER
-* On entry, INCY specifies the increment for the elements of
-* CY. INCY must not be zero.
-* Unchanged on exit.
-*
-* C (input) DOUBLE PRECISION
-* On entry, C specifies the cosine, cos.
-* Unchanged on exit.
-*
-* S (input) DOUBLE PRECISION
-* On entry, S specifies the sine, sin.
-* Unchanged on exit.
-*
* =====================================================================
*
* .. Local Scalars ..
diff --git a/BLAS/SRC/zdscal.f b/BLAS/SRC/zdscal.f
index d4d96c75..327309cf 100644
--- a/BLAS/SRC/zdscal.f
+++ b/BLAS/SRC/zdscal.f
@@ -1,23 +1,72 @@
- SUBROUTINE ZDSCAL(N,DA,ZX,INCX)
-* .. Scalar Arguments ..
- DOUBLE PRECISION DA
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 ZX(*)
-* ..
+*> \brief \b ZDSCAL
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE ZDSCAL(N,DA,ZX,INCX)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION DA
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 ZX(*)
+* ..
+*
* Purpose
* =======
*
-* ZDSCAL scales a vector by a constant.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZDSCAL scales a vector by a constant.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZDSCAL(N,DA,ZX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ DOUBLE PRECISION DA
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 ZX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zgbmv.f b/BLAS/SRC/zgbmv.f
index 3000be42..216cb5b8 100644
--- a/BLAS/SRC/zgbmv.f
+++ b/BLAS/SRC/zgbmv.f
@@ -1,134 +1,213 @@
- SUBROUTINE ZGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA,BETA
- INTEGER INCX,INCY,KL,KU,LDA,M,N
- CHARACTER TRANS
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b ZGBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA,BETA
+* INTEGER INCX,INCY,KL,KU,LDA,M,N
+* CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* ZGBMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZGBMV performs one of the matrix-vector operations
+*>
+*> y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, or
+*>
+*> y := alpha*A**H*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are vectors and A is an
+*> m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*>
+*>\endverbatim
*
-* y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, or
+* Arguments
+* =========
+*
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] KL
+*> \verbatim
+*> KL is INTEGER
+*> On entry, KL specifies the number of sub-diagonals of the
+*> matrix A. KL must satisfy 0 .le. KL.
+*> \endverbatim
+*>
+*> \param[in] KU
+*> \verbatim
+*> KU is INTEGER
+*> On entry, KU specifies the number of super-diagonals of the
+*> matrix A. KU must satisfy 0 .le. KU.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry, the leading ( kl + ku + 1 ) by n part of the
+*> array A must contain the matrix of coefficients, supplied
+*> column by column, with the leading diagonal of the matrix in
+*> row ( ku + 1 ) of the array, the first super-diagonal
+*> starting at position 2 in row ku, the first sub-diagonal
+*> starting at position 1 in row ( ku + 2 ), and so on.
+*> Elements in the array A that do not correspond to elements
+*> in the band matrix (such as the top left ku by ku triangle)
+*> 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 )
+*> A( K + I, J ) = matrix( I, J )
+*> 10 CONTINUE
+*> 20 CONTINUE
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( kl + ku + 1 ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX*16 array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX*16
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is COMPLEX*16 array of DIMENSION at least
+*> ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*> Before entry, the incremented array Y must contain the
+*> vector y. On exit, Y is overwritten by the updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A**H*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are vectors and A is an
-* m by n band matrix, with kl sub-diagonals and ku super-diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*
-* TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*
-* TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* KL - INTEGER.
-* On entry, KL specifies the number of sub-diagonals of the
-* matrix A. KL must satisfy 0 .le. KL.
-* Unchanged on exit.
-*
-* KU - INTEGER.
-* On entry, KU specifies the number of super-diagonals of the
-* matrix A. KU must satisfy 0 .le. KU.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry, the leading ( kl + ku + 1 ) by n part of the
-* array A must contain the matrix of coefficients, supplied
-* column by column, with the leading diagonal of the matrix in
-* row ( ku + 1 ) of the array, the first super-diagonal
-* starting at position 2 in row ku, the first sub-diagonal
-* starting at position 1 in row ( ku + 2 ), and so on.
-* Elements in the array A that do not correspond to elements
-* in the band matrix (such as the top left ku by ku triangle)
-* are not referenced.
-* The following program segment will transfer a band matrix
-* from conventional full matrix storage to band storage:
-*
-* DO 20, J = 1, N
-* K = KU + 1 - J
-* DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
-* A( K + I, J ) = matrix( I, J )
-* 10 CONTINUE
-* 20 CONTINUE
-*
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( kl + ku + 1 ).
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - COMPLEX*16 .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - COMPLEX*16 array of DIMENSION at least
-* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
-* Before entry, the incremented array Y must contain the
-* vector y. On exit, Y is overwritten by the updated vector y.
-*
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZGBMV(TRANS,M,N,KL,KU,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA,BETA
+ INTEGER INCX,INCY,KL,KU,LDA,M,N
+ CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zgemm.f b/BLAS/SRC/zgemm.f
index 8954cbfb..6aaf515e 100644
--- a/BLAS/SRC/zgemm.f
+++ b/BLAS/SRC/zgemm.f
@@ -1,133 +1,215 @@
- SUBROUTINE ZGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA,BETA
- INTEGER K,LDA,LDB,LDC,M,N
- CHARACTER TRANSA,TRANSB
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b ZGEMM
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA,BETA
+* INTEGER K,LDA,LDB,LDC,M,N
+* CHARACTER TRANSA,TRANSB
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* ZGEMM performs one of the matrix-matrix operations
-*
-* C := alpha*op( A )*op( B ) + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZGEMM performs one of the matrix-matrix operations
+*>
+*> C := alpha*op( A )*op( B ) + beta*C,
+*>
+*> where op( X ) is one of
+*>
+*> op( X ) = X or op( X ) = X**T or op( X ) = X**H,
+*>
+*> alpha and beta are scalars, and A, B and C are matrices, with op( A )
+*> an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+*>
+*>\endverbatim
*
-* where op( X ) is one of
+* Arguments
+* =========
+*
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSB
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix
+*> op( A ) and of the matrix C. M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix
+*> op( B ) and the number of columns of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry, K specifies the number of columns of the matrix
+*> op( A ) and the number of rows of the matrix op( B ). K must
+*> be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
+*> k when TRANSA = 'N' or 'n', and is m otherwise.
+*> Before entry with TRANSA = 'N' or 'n', the leading m by k
+*> part of the array A must contain the matrix A, otherwise
+*> the leading k by m part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANSA = 'N' or 'n' then
+*> LDA must be at least max( 1, m ), otherwise LDA must be at
+*> least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb is
+*> n when TRANSB = 'N' or 'n', and is k otherwise.
+*> Before entry with TRANSB = 'N' or 'n', the leading k by n
+*> part of the array B must contain the matrix B, otherwise
+*> the leading n by k part of the array B must contain the
+*> matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. When TRANSB = 'N' or 'n' then
+*> LDB must be at least max( 1, k ), otherwise LDB must be at
+*> least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX*16
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then C need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX*16 array of DIMENSION ( LDC, n ).
+*> Before entry, the leading m by n part of the array C must
+*> contain the matrix C, except when beta is zero, in which
+*> case C need not be set on entry.
+*> On exit, the array C is overwritten by the m by n matrix
+*> ( alpha*op( A )*op( B ) + beta*C ).
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* op( X ) = X or op( X ) = X**T or op( X ) = X**H,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* alpha and beta are scalars, and A, B and C are matrices, with op( A )
-* an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level3
*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n', op( A ) = A.
-*
-* TRANSA = 'T' or 't', op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c', op( A ) = A**H.
-*
-* Unchanged on exit.
-*
-* TRANSB - CHARACTER*1.
-* On entry, TRANSB specifies the form of op( B ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSB = 'N' or 'n', op( B ) = B.
-*
-* TRANSB = 'T' or 't', op( B ) = B**T.
-*
-* TRANSB = 'C' or 'c', op( B ) = B**H.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix
-* op( A ) and of the matrix C. M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix
-* op( B ) and the number of columns of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry, K specifies the number of columns of the matrix
-* op( A ) and the number of rows of the matrix op( B ). K must
-* be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
-* k when TRANSA = 'N' or 'n', and is m otherwise.
-* Before entry with TRANSA = 'N' or 'n', the leading m by k
-* part of the array A must contain the matrix A, otherwise
-* the leading k by m part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANSA = 'N' or 'n' then
-* LDA must be at least max( 1, m ), otherwise LDA must be at
-* least max( 1, k ).
-* Unchanged on exit.
-*
-* B - COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb is
-* n when TRANSB = 'N' or 'n', and is k otherwise.
-* Before entry with TRANSB = 'N' or 'n', the leading k by n
-* part of the array B must contain the matrix B, otherwise
-* the leading n by k part of the array B must contain the
-* matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. When TRANSB = 'N' or 'n' then
-* LDB must be at least max( 1, k ), otherwise LDB must be at
-* least max( 1, n ).
-* Unchanged on exit.
-*
-* BETA - COMPLEX*16 .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then C need not be set on input.
-* Unchanged on exit.
-*
-* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
-* Before entry, the leading m by n part of the array C must
-* contain the matrix C, except when beta is zero, in which
-* case C need not be set on entry.
-* On exit, the array C is overwritten by the m by n matrix
-* ( alpha*op( A )*op( B ) + beta*C ).
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA,BETA
+ INTEGER K,LDA,LDB,LDC,M,N
+ CHARACTER TRANSA,TRANSB
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zgemv.f b/BLAS/SRC/zgemv.f
index 9415940e..9eaf4450 100644
--- a/BLAS/SRC/zgemv.f
+++ b/BLAS/SRC/zgemv.f
@@ -1,107 +1,183 @@
- SUBROUTINE ZGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA,BETA
- INTEGER INCX,INCY,LDA,M,N
- CHARACTER TRANS
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b ZGEMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA,BETA
+* INTEGER INCX,INCY,LDA,M,N
+* CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* ZGEMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZGEMV performs one of the matrix-vector operations
+*>
+*> y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, or
+*>
+*> y := alpha*A**H*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are vectors and A is an
+*> m by n matrix.
+*>
+*>\endverbatim
*
-* y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y, or
+* Arguments
+* =========
+*
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry, the leading m by n part of the array A must
+*> contain the matrix of coefficients.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX*16 array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX*16
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is COMPLEX*16 array of DIMENSION at least
+*> ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
+*> and at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
+*> Before entry with BETA non-zero, the incremented array Y
+*> must contain the vector y. On exit, Y is overwritten by the
+*> updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A**H*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are vectors and A is an
-* m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*
-* TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*
-* TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry, the leading m by n part of the array A must
-* contain the matrix of coefficients.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, m ).
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - COMPLEX*16 .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - COMPLEX*16 array of DIMENSION at least
-* ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
-* and at least
-* ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
-* Before entry with BETA non-zero, the incremented array Y
-* must contain the vector y. On exit, Y is overwritten by the
-* updated vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA,BETA
+ INTEGER INCX,INCY,LDA,M,N
+ CHARACTER TRANS
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zgerc.f b/BLAS/SRC/zgerc.f
index a8872b49..9457319f 100644
--- a/BLAS/SRC/zgerc.f
+++ b/BLAS/SRC/zgerc.f
@@ -1,82 +1,151 @@
- SUBROUTINE ZGERC(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA
- INTEGER INCX,INCY,LDA,M,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b ZGERC
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZGERC(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA
+* INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* ZGERC performs the rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZGERC performs the rank 1 operation
+*>
+*> A := alpha*x*y**H + A,
+*>
+*> where alpha is a scalar, x is an m element vector, y is an n element
+*> vector and A is an m by n matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX*16 array of dimension at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the m
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> Y is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry, the leading m by n part of the array A must
+*> contain the matrix of coefficients. On exit, A is
+*> overwritten by the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**H + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x is an m element vector, y is an n element
-* vector and A is an m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( m - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the m
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry, the leading m by n part of the array A must
-* contain the matrix of coefficients. On exit, A is
-* overwritten by the updated matrix.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZGERC(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA
+ INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zgeru.f b/BLAS/SRC/zgeru.f
index 3ece8018..26acb99f 100644
--- a/BLAS/SRC/zgeru.f
+++ b/BLAS/SRC/zgeru.f
@@ -1,82 +1,151 @@
- SUBROUTINE ZGERU(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA
- INTEGER INCX,INCY,LDA,M,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b ZGERU
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZGERU(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA
+* INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* ZGERU performs the rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZGERU performs the rank 1 operation
+*>
+*> A := alpha*x*y**T + A,
+*>
+*> where alpha is a scalar, x is an m element vector, y is an n element
+*> vector and A is an m by n matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix A.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX*16 array of dimension at least
+*> ( 1 + ( m - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the m
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> Y is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry, the leading m by n part of the array A must
+*> contain the matrix of coefficients. On exit, A is
+*> overwritten by the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**T + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x is an m element vector, y is an n element
-* vector and A is an m by n matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix A.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( m - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the m
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry, the leading m by n part of the array A must
-* contain the matrix of coefficients. On exit, A is
-* overwritten by the updated matrix.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZGERU(M,N,ALPHA,X,INCX,Y,INCY,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA
+ INTEGER INCX,INCY,LDA,M,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zhbmv.f b/BLAS/SRC/zhbmv.f
index 90988684..0adaec41 100644
--- a/BLAS/SRC/zhbmv.f
+++ b/BLAS/SRC/zhbmv.f
@@ -1,136 +1,215 @@
- SUBROUTINE ZHBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA,BETA
- INTEGER INCX,INCY,K,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b ZHBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZHBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA,BETA
+* INTEGER INCX,INCY,K,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* ZHBMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZHBMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n hermitian band matrix, with k super-diagonals.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry, K specifies the number of super-diagonals of the
+*> matrix A. K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the hermitian matrix, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX*16 array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the
+*> vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX*16
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is COMPLEX*16 array of DIMENSION at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the
+*> vector y. On exit, Y is overwritten by the updated vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n hermitian band matrix, with k super-diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the band matrix A is being supplied as
-* follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* being supplied.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* being supplied.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry, K specifies the number of super-diagonals of the
-* matrix A. K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the hermitian matrix, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer the upper
-* triangular part of a hermitian band matrix from conventional
-* full matrix storage to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer the lower
-* triangular part of a hermitian band matrix from conventional
-* full matrix storage to band storage:
-*
-* 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
-*
-* Note that the imaginary parts of the diagonal elements need
-* not be set and are assumed to be zero.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the
-* vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - COMPLEX*16 .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* Y - COMPLEX*16 array of DIMENSION at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the
-* vector y. On exit, Y is overwritten by the updated vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZHBMV(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA,BETA
+ INTEGER INCX,INCY,K,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zhemm.f b/BLAS/SRC/zhemm.f
index 0537e919..8d7218c3 100644
--- a/BLAS/SRC/zhemm.f
+++ b/BLAS/SRC/zhemm.f
@@ -1,139 +1,217 @@
- SUBROUTINE ZHEMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA,BETA
- INTEGER LDA,LDB,LDC,M,N
- CHARACTER SIDE,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b ZHEMM
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZHEMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA,BETA
+* INTEGER LDA,LDB,LDC,M,N
+* CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* ZHEMM performs one of the matrix-matrix operations
-*
-* C := alpha*A*B + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZHEMM performs one of the matrix-matrix operations
+*>
+*> C := alpha*A*B + beta*C,
+*>
+*> or
+*>
+*> C := alpha*B*A + beta*C,
+*>
+*> where alpha and beta are scalars, A is an hermitian matrix and B and
+*> C are m by n matrices.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix C.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix C.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
+*> m when SIDE = 'L' or 'l' and is n otherwise.
+*> Before entry with SIDE = 'L' or 'l', the m by m part of
+*> the array A must contain the hermitian matrix, such that
+*> when UPLO = 'U' or 'u', the leading m by m upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the hermitian matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading m by m lower triangular part of the array A
+*> must contain the lower triangular part of the hermitian
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> Before entry with SIDE = 'R' or 'r', the n by n part of
+*> the array A must contain the hermitian matrix, such that
+*> when UPLO = 'U' or 'u', the leading n by n upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the hermitian matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading n by n lower triangular part of the array A
+*> must contain the lower triangular part of the hermitian
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), otherwise LDA must be at
+*> least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is COMPLEX*16 array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX*16
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then C need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX*16 array of DIMENSION ( LDC, n ).
+*> Before entry, the leading m by n part of the array C must
+*> contain the matrix C, except when beta is zero, in which
+*> case C need not be set on entry.
+*> On exit, the array C is overwritten by the m by n updated
+*> matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*B*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, A is an hermitian matrix and B and
-* C are m by n matrices.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level3
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether the hermitian matrix A
-* appears on the left or right in the operation as follows:
-*
-* SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*
-* SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the hermitian matrix A is to be
-* referenced as follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of the
-* hermitian matrix is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of the
-* hermitian matrix is to be referenced.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix C.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix C.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
-* m when SIDE = 'L' or 'l' and is n otherwise.
-* Before entry with SIDE = 'L' or 'l', the m by m part of
-* the array A must contain the hermitian matrix, such that
-* when UPLO = 'U' or 'u', the leading m by m upper triangular
-* part of the array A must contain the upper triangular part
-* of the hermitian matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading m by m lower triangular part of the array A
-* must contain the lower triangular part of the hermitian
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Before entry with SIDE = 'R' or 'r', the n by n part of
-* the array A must contain the hermitian matrix, such that
-* when UPLO = 'U' or 'u', the leading n by n upper triangular
-* part of the array A must contain the upper triangular part
-* of the hermitian matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading n by n lower triangular part of the array A
-* must contain the lower triangular part of the hermitian
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), otherwise LDA must be at
-* least max( 1, n ).
-* Unchanged on exit.
-*
-* B - COMPLEX*16 array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
-*
-* BETA - COMPLEX*16 .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then C need not be set on input.
-* Unchanged on exit.
-*
-* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
-* Before entry, the leading m by n part of the array C must
-* contain the matrix C, except when beta is zero, in which
-* case C need not be set on entry.
-* On exit, the array C is overwritten by the m by n updated
-* matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZHEMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA,BETA
+ INTEGER LDA,LDB,LDC,M,N
+ CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zhemv.f b/BLAS/SRC/zhemv.f
index 8e61e93b..c566a1fe 100644
--- a/BLAS/SRC/zhemv.f
+++ b/BLAS/SRC/zhemv.f
@@ -1,105 +1,178 @@
- SUBROUTINE ZHEMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA,BETA
- INTEGER INCX,INCY,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b ZHEMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZHEMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA,BETA
+* INTEGER INCX,INCY,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* ZHEMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZHEMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n hermitian matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the hermitian matrix and the strictly
+*> lower triangular part of A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the hermitian matrix and the strictly
+*> upper triangular part of A is not referenced.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set and are assumed to be zero.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX*16
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y. On exit, Y is overwritten by the updated
+*> vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n hermitian matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the hermitian matrix and the strictly
-* lower triangular part of A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the hermitian matrix and the strictly
-* upper triangular part of A is not referenced.
-* Note that the imaginary parts of the diagonal elements need
-* not be set and are assumed to be zero.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - COMPLEX*16 .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y. On exit, Y is overwritten by the updated
-* vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZHEMV(UPLO,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA,BETA
+ INTEGER INCX,INCY,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zher.f b/BLAS/SRC/zher.f
index 898a1e03..b2af0227 100644
--- a/BLAS/SRC/zher.f
+++ b/BLAS/SRC/zher.f
@@ -1,92 +1,159 @@
- SUBROUTINE ZHER(UPLO,N,ALPHA,X,INCX,A,LDA)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA
- INTEGER INCX,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*)
-* ..
+*> \brief \b ZHER
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZHER(UPLO,N,ALPHA,X,INCX,A,LDA)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA
+* INTEGER INCX,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* ZHER performs the hermitian rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZHER performs the hermitian rank 1 operation
+*>
+*> A := alpha*x*x**H + A,
+*>
+*> where alpha is a real scalar, x is an n element vector and A is an
+*> n by n hermitian matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the hermitian matrix and the strictly
+*> lower triangular part of A is not referenced. On exit, the
+*> upper triangular part of the array A is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the hermitian matrix and the strictly
+*> upper triangular part of A is not referenced. On exit, the
+*> lower triangular part of the array A is overwritten by the
+*> lower triangular part of the updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*x**H + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a real scalar, x is an n element vector and A is an
-* n by n hermitian matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the hermitian matrix and the strictly
-* lower triangular part of A is not referenced. On exit, the
-* upper triangular part of the array A is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the hermitian matrix and the strictly
-* upper triangular part of A is not referenced. On exit, the
-* lower triangular part of the array A is overwritten by the
-* lower triangular part of the updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZHER(UPLO,N,ALPHA,X,INCX,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zher2.f b/BLAS/SRC/zher2.f
index bb414e9e..0c4f94d9 100644
--- a/BLAS/SRC/zher2.f
+++ b/BLAS/SRC/zher2.f
@@ -1,103 +1,174 @@
- SUBROUTINE ZHER2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA
- INTEGER INCX,INCY,LDA,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*),Y(*)
-* ..
+*> \brief \b ZHER2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZHER2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA
+* INTEGER INCX,INCY,LDA,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* ZHER2 performs the hermitian rank 2 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZHER2 performs the hermitian rank 2 operation
+*>
+*> A := alpha*x*y**H + conjg( alpha )*y*x**H + A,
+*>
+*> where alpha is a scalar, x and y are n element vectors and A is an n
+*> by n hermitian matrix.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> Y is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular part of the hermitian matrix and the strictly
+*> lower triangular part of A is not referenced. On exit, the
+*> upper triangular part of the array A is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular part of the hermitian matrix and the strictly
+*> upper triangular part of A is not referenced. On exit, the
+*> lower triangular part of the array A is overwritten by the
+*> lower triangular part of the updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**H + conjg( alpha )*y*x**H + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x and y are n element vectors and A is an n
-* by n hermitian matrix.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array A is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of A
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of A
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular part of the hermitian matrix and the strictly
-* lower triangular part of A is not referenced. On exit, the
-* upper triangular part of the array A is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular part of the hermitian matrix and the strictly
-* upper triangular part of A is not referenced. On exit, the
-* lower triangular part of the array A is overwritten by the
-* lower triangular part of the updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZHER2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA
+ INTEGER INCX,INCY,LDA,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zher2k.f b/BLAS/SRC/zher2k.f
index e5f7be83..bfcf27fd 100644
--- a/BLAS/SRC/zher2k.f
+++ b/BLAS/SRC/zher2k.f
@@ -1,145 +1,225 @@
- SUBROUTINE ZHER2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA
- DOUBLE PRECISION BETA
- INTEGER K,LDA,LDB,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b ZHER2K
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZHER2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA
+* DOUBLE PRECISION BETA
+* INTEGER K,LDA,LDB,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* ZHER2K performs one of the hermitian rank 2k operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZHER2K performs one of the hermitian rank 2k operations
+*>
+*> C := alpha*A*B**H + conjg( alpha )*B*A**H + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**H*B + conjg( alpha )*B**H*A + beta*C,
+*>
+*> where alpha and beta are scalars with beta real, C is an n by n
+*> hermitian matrix and A and B are n by k matrices in the first case
+*> and k by n matrices in the second case.
+*>
+*>\endverbatim
*
-* C := alpha*A*B**H + conjg( alpha )*B*A**H + beta*C,
-*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrices A and B, and on entry with
+*> TRANS = 'C' or 'c', K specifies the number of rows of the
+*> matrices A and B. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16 .
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
+*> the leading k by n part of the array B must contain the
+*> matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDB must be at least max( 1, n ), otherwise LDB must
+*> be at least max( 1, k ).
+*> Unchanged on exit.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION .
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX*16 array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the hermitian matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the hermitian matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**H*B + conjg( alpha )*B**H*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars with beta real, C is an n by n
-* hermitian matrix and A and B are n by k matrices in the first case
-* and k by n matrices in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*B**H +
-* conjg( alpha )*B*A**H +
-* beta*C.
-*
-* TRANS = 'C' or 'c' C := alpha*A**H*B +
-* conjg( alpha )*B**H*A +
-* beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrices A and B, and on entry with
-* TRANS = 'C' or 'c', K specifies the number of rows of the
-* matrices A and B. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* B - COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
-* the leading k by n part of the array B must contain the
-* matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDB must be at least max( 1, n ), otherwise LDB must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - DOUBLE PRECISION .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the hermitian matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the hermitian matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
+*> Ed Anderson, Cray Research Inc.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZHER2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
-*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
-* Ed Anderson, Cray Research Inc.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA
+ DOUBLE PRECISION BETA
+ INTEGER K,LDA,LDB,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zherk.f b/BLAS/SRC/zherk.f
index af04413a..f1795c40 100644
--- a/BLAS/SRC/zherk.f
+++ b/BLAS/SRC/zherk.f
@@ -1,125 +1,199 @@
- SUBROUTINE ZHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA,BETA
- INTEGER K,LDA,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),C(LDC,*)
-* ..
+*> \brief \b ZHERK
+*
+* =========== DOCUMENTATION ===========
*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE ZHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA,BETA
+* INTEGER K,LDA,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* ZHERK performs one of the hermitian rank k operations
-*
-* C := alpha*A*A**H + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZHERK performs one of the hermitian rank k operations
+*>
+*> C := alpha*A*A**H + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**H*A + beta*C,
+*>
+*> where alpha and beta are real scalars, C is an n by n hermitian
+*> matrix and A is an n by k matrix in the first case and a k by n
+*> matrix in the second case.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrix A, and on entry with
+*> TRANS = 'C' or 'c', K specifies the number of rows of the
+*> matrix A. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION .
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION.
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX*16 array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the hermitian matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the hermitian matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**H*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are real scalars, C is an n by n hermitian
-* matrix and A is an n by k matrix in the first case and a k by n
-* matrix in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*A**H + beta*C.
-*
-* TRANS = 'C' or 'c' C := alpha*A**H*A + beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrix A, and on entry with
-* TRANS = 'C' or 'c', K specifies the number of rows of the
-* matrix A. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - DOUBLE PRECISION.
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the hermitian matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the hermitian matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
+*> Ed Anderson, Cray Research Inc.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZHERK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
*
-* Level 3 Blas routine.
-*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Modified 8-Nov-93 to set C(J,J) to DBLE( C(J,J) ) when BETA = 1.
-* Ed Anderson, Cray Research Inc.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA,BETA
+ INTEGER K,LDA,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zhpmv.f b/BLAS/SRC/zhpmv.f
index 514cd20a..2304ed87 100644
--- a/BLAS/SRC/zhpmv.f
+++ b/BLAS/SRC/zhpmv.f
@@ -1,102 +1,173 @@
- SUBROUTINE ZHPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA,BETA
- INTEGER INCX,INCY,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 AP(*),X(*),Y(*)
-* ..
+*> \brief \b ZHPMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZHPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA,BETA
+* INTEGER INCX,INCY,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 AP(*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* ZHPMV performs the matrix-vector operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZHPMV performs the matrix-vector operation
+*>
+*> y := alpha*A*x + beta*y,
+*>
+*> where alpha and beta are scalars, x and y are n element vectors and
+*> A is an n by n hermitian matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is COMPLEX*16 array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set and are assumed to be zero.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX*16
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then Y need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] Y
+*> \verbatim
+*> Y is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y. On exit, Y is overwritten by the updated
+*> vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* y := alpha*A*x + beta*y,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, x and y are n element vectors and
-* A is an n by n hermitian matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* AP - COMPLEX*16 array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on.
-* Note that the imaginary parts of the diagonal elements need
-* not be set and are assumed to be zero.
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* BETA - COMPLEX*16 .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then Y need not be set on input.
-* Unchanged on exit.
-*
-* Y - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y. On exit, Y is overwritten by the updated
-* vector y.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZHPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA,BETA
+ INTEGER INCX,INCY,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 AP(*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zhpr.f b/BLAS/SRC/zhpr.f
index 859805d2..d80e359f 100644
--- a/BLAS/SRC/zhpr.f
+++ b/BLAS/SRC/zhpr.f
@@ -1,89 +1,154 @@
- SUBROUTINE ZHPR(UPLO,N,ALPHA,X,INCX,AP)
-* .. Scalar Arguments ..
- DOUBLE PRECISION ALPHA
- INTEGER INCX,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 AP(*),X(*)
-* ..
+*> \brief \b ZHPR
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZHPR(UPLO,N,ALPHA,X,INCX,AP)
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION ALPHA
+* INTEGER INCX,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 AP(*),X(*)
+* ..
+*
* Purpose
* =======
*
-* ZHPR performs the hermitian rank 1 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZHPR performs the hermitian rank 1 operation
+*>
+*> A := alpha*x*x**H + A,
+*>
+*> where alpha is a real scalar, x is an n element vector and A is an
+*> n by n hermitian matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION.
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is COMPLEX*16 array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the upper triangular part of the
+*> updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the lower triangular part of the
+*> updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*x**H + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a real scalar, x is an n element vector and A is an
-* n by n hermitian matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - DOUBLE PRECISION.
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* AP - COMPLEX*16 array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on. On exit, the array
-* AP is overwritten by the upper triangular part of the
-* updated matrix.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on. On exit, the array
-* AP is overwritten by the lower triangular part of the
-* updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZHPR(UPLO,N,ALPHA,X,INCX,AP)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ DOUBLE PRECISION ALPHA
+ INTEGER INCX,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zhpr2.f b/BLAS/SRC/zhpr2.f
index 48b3591f..0d0c4ea5 100644
--- a/BLAS/SRC/zhpr2.f
+++ b/BLAS/SRC/zhpr2.f
@@ -1,100 +1,169 @@
- SUBROUTINE ZHPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA
- INTEGER INCX,INCY,N
- CHARACTER UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 AP(*),X(*),Y(*)
-* ..
+*> \brief \b ZHPR2
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZHPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA
+* INTEGER INCX,INCY,N
+* CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 AP(*),X(*),Y(*)
+* ..
+*
* Purpose
* =======
*
-* ZHPR2 performs the hermitian rank 2 operation
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZHPR2 performs the hermitian rank 2 operation
+*>
+*> A := alpha*x*y**H + conjg( alpha )*y*x**H + A,
+*>
+*> where alpha is a scalar, x and y are n element vectors and A is an
+*> n by n hermitian matrix, supplied in packed form.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*> \param[in] Y
+*> \verbatim
+*> Y is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCY ) ).
+*> Before entry, the incremented array Y must contain the n
+*> element vector y.
+*> \endverbatim
+*>
+*> \param[in] INCY
+*> \verbatim
+*> INCY is INTEGER
+*> On entry, INCY specifies the increment for the elements of
+*> Y. INCY must not be zero.
+*> \endverbatim
+*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is COMPLEX*16 array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
+*> and a( 2, 2 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the upper triangular part of the
+*> updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular part of the hermitian matrix
+*> packed sequentially, column by column, so that AP( 1 )
+*> contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
+*> and a( 3, 1 ) respectively, and so on. On exit, the array
+*> AP is overwritten by the lower triangular part of the
+*> updated matrix.
+*> Note that the imaginary parts of the diagonal elements need
+*> not be set, they are assumed to be zero, and on exit they
+*> are set to zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A := alpha*x*y**H + conjg( alpha )*y*x**H + A,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha is a scalar, x and y are n element vectors and A is an
-* n by n hermitian matrix, supplied in packed form.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the matrix A is supplied in the packed
-* array AP as follows:
-*
-* UPLO = 'U' or 'u' The upper triangular part of A is
-* supplied in AP.
-*
-* UPLO = 'L' or 'l' The lower triangular part of A is
-* supplied in AP.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x.
-* Unchanged on exit.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
-*
-* Y - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCY ) ).
-* Before entry, the incremented array Y must contain the n
-* element vector y.
-* Unchanged on exit.
-*
-* INCY - INTEGER.
-* On entry, INCY specifies the increment for the elements of
-* Y. INCY must not be zero.
-* Unchanged on exit.
-*
-* AP - COMPLEX*16 array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 )
-* and a( 2, 2 ) respectively, and so on. On exit, the array
-* AP is overwritten by the upper triangular part of the
-* updated matrix.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular part of the hermitian matrix
-* packed sequentially, column by column, so that AP( 1 )
-* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 )
-* and a( 3, 1 ) respectively, and so on. On exit, the array
-* AP is overwritten by the lower triangular part of the
-* updated matrix.
-* Note that the imaginary parts of the diagonal elements need
-* not be set, they are assumed to be zero, and on exit they
-* are set to zero.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZHPR2(UPLO,N,ALPHA,X,INCX,Y,INCY,AP)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA
+ INTEGER INCX,INCY,N
+ CHARACTER UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 AP(*),X(*),Y(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zrotg.f b/BLAS/SRC/zrotg.f
index c25fa654..daa0f667 100644
--- a/BLAS/SRC/zrotg.f
+++ b/BLAS/SRC/zrotg.f
@@ -1,14 +1,55 @@
+*> \brief \b ZROTG
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE ZROTG(CA,CB,C,S)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 CA,CB,S
+* DOUBLE PRECISION C
+* ..
+*
+* Purpose
+* =======
+*
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZROTG determines a double complex Givens rotation.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16_blas_level1
+*
+* =====================================================================
SUBROUTINE ZROTG(CA,CB,C,S)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
+*
* .. Scalar Arguments ..
COMPLEX*16 CA,CB,S
DOUBLE PRECISION C
* ..
*
-* Purpose
-* =======
-*
-* ZROTG determines a double complex Givens rotation.
-*
* =====================================================================
*
* .. Local Scalars ..
diff --git a/BLAS/SRC/zscal.f b/BLAS/SRC/zscal.f
index d5acf683..67148062 100644
--- a/BLAS/SRC/zscal.f
+++ b/BLAS/SRC/zscal.f
@@ -1,23 +1,72 @@
- SUBROUTINE ZSCAL(N,ZA,ZX,INCX)
-* .. Scalar Arguments ..
- COMPLEX*16 ZA
- INTEGER INCX,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 ZX(*)
-* ..
+*> \brief \b ZSCAL
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
*
+* SUBROUTINE ZSCAL(N,ZA,ZX,INCX)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ZA
+* INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 ZX(*)
+* ..
+*
* Purpose
* =======
*
-* ZSCAL scales a vector by a constant.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZSCAL scales a vector by a constant.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, 3/11/78.
+*> modified 3/93 to return if incx .le. 0.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZSCAL(N,ZA,ZX,INCX)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, 3/11/78.
-* modified 3/93 to return if incx .le. 0.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ COMPLEX*16 ZA
+ INTEGER INCX,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 ZX(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zswap.f b/BLAS/SRC/zswap.f
index d3bb047e..8000bfc2 100644
--- a/BLAS/SRC/zswap.f
+++ b/BLAS/SRC/zswap.f
@@ -1,21 +1,69 @@
- SUBROUTINE ZSWAP(N,ZX,INCX,ZY,INCY)
-* .. Scalar Arguments ..
- INTEGER INCX,INCY,N
-* ..
-* .. Array Arguments ..
- COMPLEX*16 ZX(*),ZY(*)
-* ..
+*> \brief \b ZSWAP
*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
+*
+* Definition
+* ==========
+*
+* SUBROUTINE ZSWAP(N,ZX,INCX,ZY,INCY)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 ZX(*),ZY(*)
+* ..
+*
* Purpose
* =======
*
-* ZSWAP interchanges two vectors.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZSWAP interchanges two vectors.
+*>
+*>\endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16_blas_level1
+*
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> jack dongarra, 3/11/78.
+*> modified 12/3/93, array(1) declarations changed to array(*)
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZSWAP(N,ZX,INCX,ZY,INCY)
+*
+* -- Reference BLAS level1 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* jack dongarra, 3/11/78.
-* modified 12/3/93, array(1) declarations changed to array(*)
+* .. Scalar Arguments ..
+ INTEGER INCX,INCY,N
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 ZX(*),ZY(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zsymm.f b/BLAS/SRC/zsymm.f
index e0192e9f..6ceda01d 100644
--- a/BLAS/SRC/zsymm.f
+++ b/BLAS/SRC/zsymm.f
@@ -1,137 +1,215 @@
- SUBROUTINE ZSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA,BETA
- INTEGER LDA,LDB,LDC,M,N
- CHARACTER SIDE,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b ZSYMM
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA,BETA
+* INTEGER LDA,LDB,LDC,M,N
+* CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* ZSYMM performs one of the matrix-matrix operations
-*
-* C := alpha*A*B + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZSYMM performs one of the matrix-matrix operations
+*>
+*> C := alpha*A*B + beta*C,
+*>
+*> or
+*>
+*> C := alpha*B*A + beta*C,
+*>
+*> where alpha and beta are scalars, A is a symmetric matrix and B and
+*> C are m by n matrices.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of the matrix C.
+*> M must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of the matrix C.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
+*> m when SIDE = 'L' or 'l' and is n otherwise.
+*> Before entry with SIDE = 'L' or 'l', the m by m part of
+*> the array A must contain the symmetric matrix, such that
+*> when UPLO = 'U' or 'u', the leading m by m upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the symmetric matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading m by m lower triangular part of the array A
+*> must contain the lower triangular part of the symmetric
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> Before entry with SIDE = 'R' or 'r', the n by n part of
+*> the array A must contain the symmetric matrix, such that
+*> when UPLO = 'U' or 'u', the leading n by n upper triangular
+*> part of the array A must contain the upper triangular part
+*> of the symmetric matrix and the strictly lower triangular
+*> part of A is not referenced, and when UPLO = 'L' or 'l',
+*> the leading n by n lower triangular part of the array A
+*> must contain the lower triangular part of the symmetric
+*> matrix and the strictly upper triangular part of A is not
+*> referenced.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), otherwise LDA must be at
+*> least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is COMPLEX*16 array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX*16
+*> On entry, BETA specifies the scalar beta. When BETA is
+*> supplied as zero then C need not be set on input.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX*16 array of DIMENSION ( LDC, n ).
+*> Before entry, the leading m by n part of the array C must
+*> contain the matrix C, except when beta is zero, in which
+*> case C need not be set on entry.
+*> On exit, the array C is overwritten by the m by n updated
+*> matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*B*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, A is a symmetric matrix and B and
-* C are m by n matrices.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level3
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether the symmetric matrix A
-* appears on the left or right in the operation as follows:
-*
-* SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*
-* SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the symmetric matrix A is to be
-* referenced as follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of the
-* symmetric matrix is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of the
-* symmetric matrix is to be referenced.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of the matrix C.
-* M must be at least zero.
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the number of columns of the matrix C.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, ka ), where ka is
-* m when SIDE = 'L' or 'l' and is n otherwise.
-* Before entry with SIDE = 'L' or 'l', the m by m part of
-* the array A must contain the symmetric matrix, such that
-* when UPLO = 'U' or 'u', the leading m by m upper triangular
-* part of the array A must contain the upper triangular part
-* of the symmetric matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading m by m lower triangular part of the array A
-* must contain the lower triangular part of the symmetric
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Before entry with SIDE = 'R' or 'r', the n by n part of
-* the array A must contain the symmetric matrix, such that
-* when UPLO = 'U' or 'u', the leading n by n upper triangular
-* part of the array A must contain the upper triangular part
-* of the symmetric matrix and the strictly lower triangular
-* part of A is not referenced, and when UPLO = 'L' or 'l',
-* the leading n by n lower triangular part of the array A
-* must contain the lower triangular part of the symmetric
-* matrix and the strictly upper triangular part of A is not
-* referenced.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), otherwise LDA must be at
-* least max( 1, n ).
-* Unchanged on exit.
-*
-* B - COMPLEX*16 array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
-*
-* BETA - COMPLEX*16 .
-* On entry, BETA specifies the scalar beta. When BETA is
-* supplied as zero then C need not be set on input.
-* Unchanged on exit.
-*
-* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
-* Before entry, the leading m by n part of the array C must
-* contain the matrix C, except when beta is zero, in which
-* case C need not be set on entry.
-* On exit, the array C is overwritten by the m by n updated
-* matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZSYMM(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA,BETA
+ INTEGER LDA,LDB,LDC,M,N
+ CHARACTER SIDE,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zsyr2k.f b/BLAS/SRC/zsyr2k.f
index a9bd0f4d..898febce 100644
--- a/BLAS/SRC/zsyr2k.f
+++ b/BLAS/SRC/zsyr2k.f
@@ -1,136 +1,214 @@
- SUBROUTINE ZSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA,BETA
- INTEGER K,LDA,LDB,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
-* ..
+*> \brief \b ZSYR2K
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA,BETA
+* INTEGER K,LDA,LDB,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* ZSYR2K performs one of the symmetric rank 2k operations
-*
-* C := alpha*A*B**T + alpha*B*A**T + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZSYR2K performs one of the symmetric rank 2k operations
+*>
+*> C := alpha*A*B**T + alpha*B*A**T + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**T*B + alpha*B**T*A + beta*C,
+*>
+*> where alpha and beta are scalars, C is an n by n symmetric matrix
+*> and A and B are n by k matrices in the first case and k by n
+*> matrices in the second case.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrices A and B, and on entry with
+*> TRANS = 'T' or 't', K specifies the number of rows of the
+*> matrices A and B. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
+*> the leading k by n part of the array B must contain the
+*> matrix B.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDB must be at least max( 1, n ), otherwise LDB must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX*16
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX*16 array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**T*B + alpha*B**T*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, C is an n by n symmetric matrix
-* and A and B are n by k matrices in the first case and k by n
-* matrices in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T +
-* beta*C.
-*
-* TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A +
-* beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrices A and B, and on entry with
-* TRANS = 'T' or 't', K specifies the number of rows of the
-* matrices A and B. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* B - COMPLEX*16 array of DIMENSION ( LDB, kb ), where kb 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 B must contain the matrix B, otherwise
-* the leading k by n part of the array B must contain the
-* matrix B.
-* Unchanged on exit.
-*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDB must be at least max( 1, n ), otherwise LDB must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - COMPLEX*16 .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZSYR2K(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA,BETA
+ INTEGER K,LDA,LDB,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/zsyrk.f b/BLAS/SRC/zsyrk.f
index b2acf31e..db6d567a 100644
--- a/BLAS/SRC/zsyrk.f
+++ b/BLAS/SRC/zsyrk.f
@@ -1,119 +1,193 @@
- SUBROUTINE ZSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA,BETA
- INTEGER K,LDA,LDC,N
- CHARACTER TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),C(LDC,*)
-* ..
+*> \brief \b ZSYRK
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA,BETA
+* INTEGER K,LDA,LDC,N
+* CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),C(LDC,*)
+* ..
+*
* Purpose
* =======
*
-* ZSYRK performs one of the symmetric rank k operations
-*
-* C := alpha*A*A**T + beta*C,
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZSYRK performs one of the symmetric rank k operations
+*>
+*> C := alpha*A*A**T + beta*C,
+*>
+*> or
+*>
+*> C := alpha*A**T*A + beta*C,
+*>
+*> where alpha and beta are scalars, C is an n by n symmetric matrix
+*> and A is an n by k matrix in the first case and a k by n matrix
+*> in the second case.
+*>
+*>\endverbatim
*
-* or
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix C. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with TRANS = 'N' or 'n', K specifies the number
+*> of columns of the matrix A, and on entry with
+*> TRANS = 'T' or 't', K specifies the number of rows of the
+*> matrix A. K must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 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
+*> the leading k by n part of the array A must contain the
+*> matrix A.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When TRANS = 'N' or 'n'
+*> then LDA must be at least max( 1, n ), otherwise LDA must
+*> be at least max( 1, k ).
+*> \endverbatim
+*>
+*> \param[in] BETA
+*> \verbatim
+*> BETA is COMPLEX*16
+*> On entry, BETA specifies the scalar beta.
+*> \endverbatim
+*>
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX*16 array of DIMENSION ( LDC, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array C must contain the upper
+*> triangular part of the symmetric matrix and the strictly
+*> lower triangular part of C is not referenced. On exit, the
+*> upper triangular part of the array C is overwritten by the
+*> upper triangular part of the updated matrix.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array C must contain the lower
+*> triangular part of the symmetric matrix and the strictly
+*> upper triangular part of C is not referenced. On exit, the
+*> lower triangular part of the array C is overwritten by the
+*> lower triangular part of the updated matrix.
+*> \endverbatim
+*>
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
+*> On entry, LDC specifies the first dimension of C as declared
+*> in the calling (sub) program. LDC must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* C := alpha*A**T*A + beta*C,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where alpha and beta are scalars, C is an n by n symmetric matrix
-* and A is an n by k matrix in the first case and a k by n matrix
-* in the second case.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level3
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the upper or lower
-* triangular part of the array C is to be referenced as
-* follows:
-*
-* UPLO = 'U' or 'u' Only the upper triangular part of C
-* is to be referenced.
-*
-* UPLO = 'L' or 'l' Only the lower triangular part of C
-* is to be referenced.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C.
-*
-* TRANS = 'T' or 't' C := alpha*A**T*A + beta*C.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix C. N must be
-* at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with TRANS = 'N' or 'n', K specifies the number
-* of columns of the matrix A, and on entry with
-* TRANS = 'T' or 't', K specifies the number of rows of the
-* matrix A. K must be at least zero.
-* Unchanged on exit.
-*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 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
-* the leading k by n part of the array A must contain the
-* matrix A.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When TRANS = 'N' or 'n'
-* then LDA must be at least max( 1, n ), otherwise LDA must
-* be at least max( 1, k ).
-* Unchanged on exit.
-*
-* BETA - COMPLEX*16 .
-* On entry, BETA specifies the scalar beta.
-* Unchanged on exit.
-*
-* C - COMPLEX*16 array of DIMENSION ( LDC, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array C must contain the upper
-* triangular part of the symmetric matrix and the strictly
-* lower triangular part of C is not referenced. On exit, the
-* upper triangular part of the array C is overwritten by the
-* upper triangular part of the updated matrix.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array C must contain the lower
-* triangular part of the symmetric matrix and the strictly
-* upper triangular part of C is not referenced. On exit, the
-* lower triangular part of the array C is overwritten by the
-* lower triangular part of the updated matrix.
-*
-* LDC - INTEGER.
-* On entry, LDC specifies the first dimension of C as declared
-* in the calling (sub) program. LDC must be at least
-* max( 1, n ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZSYRK(UPLO,TRANS,N,K,ALPHA,A,LDA,BETA,C,LDC)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA,BETA
+ INTEGER K,LDA,LDC,N
+ CHARACTER TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),C(LDC,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ztbmv.f b/BLAS/SRC/ztbmv.f
index 2d2fbe17..781ac531 100644
--- a/BLAS/SRC/ztbmv.f
+++ b/BLAS/SRC/ztbmv.f
@@ -1,141 +1,218 @@
- SUBROUTINE ZTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,K,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*)
-* ..
+*> \brief \b ZTBMV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,K,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* ZTBMV performs one of the matrix-vector operations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZTBMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x, or x := A**H*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*>
+*>\endverbatim
+*
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with UPLO = 'U' or 'u', K specifies the number of
+*> super-diagonals of the matrix A.
+*> On entry with UPLO = 'L' or 'l', K specifies the number of
+*> sub-diagonals of the matrix A.
+*> K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the matrix of coefficients, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is (input/output) COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* x := A*x, or x := A**T*x, or x := A**H*x,
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular band matrix, with ( k + 1 ) diagonals.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**H*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with UPLO = 'U' or 'u', K specifies the number of
-* super-diagonals of the matrix A.
-* On entry with UPLO = 'L' or 'l', K specifies the number of
-* sub-diagonals of the matrix A.
-* K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the matrix of coefficients, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer an upper
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer a lower
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZTBMV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,K,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ztbsv.f b/BLAS/SRC/ztbsv.f
index 80ebb740..b4828146 100644
--- a/BLAS/SRC/ztbsv.f
+++ b/BLAS/SRC/ztbsv.f
@@ -1,144 +1,221 @@
- SUBROUTINE ZTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,K,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*)
-* ..
+*> \brief \b ZTBSV
+*
+* =========== DOCUMENTATION ===========
+*
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
+* Definition
+* ==========
+*
+* SUBROUTINE ZTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,K,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*)
+* ..
+*
* Purpose
* =======
*
-* ZTBSV solves one of the systems of equations
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZTBSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b, or A**H*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular band matrix, with ( k + 1 )
+*> diagonals.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* A*x = b, or A**T*x = b, or A**H*x = b,
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> On entry with UPLO = 'U' or 'u', K specifies the number of
+*> super-diagonals of the matrix A.
+*> On entry with UPLO = 'L' or 'l', K specifies the number of
+*> sub-diagonals of the matrix A.
+*> K must satisfy 0 .le. K.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
+*> by n part of the array A must contain the upper triangular
+*> band part of the matrix of coefficients, supplied column by
+*> column, with the leading diagonal of the matrix in row
+*> ( k + 1 ) of the array, the first super-diagonal starting at
+*> position 2 in row k, and so on. The top left k by k triangle
+*> of the array A is not referenced.
+*> 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
+*> column, with the leading diagonal of the matrix in row 1 of
+*> the array, the first sub-diagonal starting at position 1 in
+*> row 2, and so on. The bottom right k by k triangle of the
+*> array A is not referenced.
+*> 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.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> ( k + 1 ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular band matrix, with ( k + 1 )
-* diagonals.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
+*> \date November 2011
*
-* Arguments
-* ==========
+*> \ingroup complex16_blas_level2
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**H*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
-*
-* K - INTEGER.
-* On entry with UPLO = 'U' or 'u', K specifies the number of
-* super-diagonals of the matrix A.
-* On entry with UPLO = 'L' or 'l', K specifies the number of
-* sub-diagonals of the matrix A.
-* K must satisfy 0 .le. K.
-* Unchanged on exit.
-*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading ( k + 1 )
-* by n part of the array A must contain the upper triangular
-* band part of the matrix of coefficients, supplied column by
-* column, with the leading diagonal of the matrix in row
-* ( k + 1 ) of the array, the first super-diagonal starting at
-* position 2 in row k, and so on. The top left k by k triangle
-* of the array A is not referenced.
-* The following program segment will transfer an upper
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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
-* column, with the leading diagonal of the matrix in row 1 of
-* the array, the first sub-diagonal starting at position 1 in
-* row 2, and so on. The bottom right k by k triangle of the
-* array A is not referenced.
-* The following program segment will transfer a lower
-* triangular band matrix from conventional full matrix storage
-* to band storage:
-*
-* 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
-*
-* 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.
-* Unchanged on exit.
-*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* ( k + 1 ).
-* Unchanged on exit.
-*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
-*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZTBSV(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,K,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ztpmv.f b/BLAS/SRC/ztpmv.f
index 33f4b52f..d4f71a47 100644
--- a/BLAS/SRC/ztpmv.f
+++ b/BLAS/SRC/ztpmv.f
@@ -1,101 +1,170 @@
- SUBROUTINE ZTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 AP(*),X(*)
-* ..
-*
-* Purpose
-* =======
-*
-* ZTPMV performs one of the matrix-vector operations
+*> \brief \b ZTPMV
*
-* x := A*x, or x := A**T*x, or x := A**H*x,
+* =========== DOCUMENTATION ===========
*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular matrix, supplied in packed form.
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**H*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+* SUBROUTINE ZTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 AP(*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZTPMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x, or x := A**H*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular matrix, supplied in packed form.
+*>
+*>\endverbatim
*
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is COMPLEX*16 array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*> respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*> respectively, and so on.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is (input/output) COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* AP - COMPLEX*16 array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
-* respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
-* respectively, and so on.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced, but are assumed to be unity.
-* Unchanged on exit.
+*> \date November 2011
*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
+*> \ingroup complex16_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZTPMV(UPLO,TRANS,DIAG,N,AP,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ztpsv.f b/BLAS/SRC/ztpsv.f
index 55eaf9e1..e12c1e9c 100644
--- a/BLAS/SRC/ztpsv.f
+++ b/BLAS/SRC/ztpsv.f
@@ -1,103 +1,172 @@
- SUBROUTINE ZTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 AP(*),X(*)
-* ..
+*> \brief \b ZTPSV
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* ZTPSV solves one of the systems of equations
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* A*x = b, or A**T*x = b, or A**H*x = b,
-*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular matrix, supplied in packed form.
-*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
-*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**H*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
+* SUBROUTINE ZTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 AP(*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZTPSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b, or A**H*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular matrix, supplied in packed form.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] AP
+*> \verbatim
+*> AP is COMPLEX*16 array of DIMENSION at least
+*> ( ( n*( n + 1 ) )/2 ).
+*> Before entry with UPLO = 'U' or 'u', the array AP must
+*> contain the upper triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
+*> respectively, and so on.
+*> Before entry with UPLO = 'L' or 'l', the array AP must
+*> contain the lower triangular matrix packed sequentially,
+*> column by column, so that AP( 1 ) contains a( 1, 1 ),
+*> AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
+*> respectively, and so on.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* AP - COMPLEX*16 array of DIMENSION at least
-* ( ( n*( n + 1 ) )/2 ).
-* Before entry with UPLO = 'U' or 'u', the array AP must
-* contain the upper triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 )
-* respectively, and so on.
-* Before entry with UPLO = 'L' or 'l', the array AP must
-* contain the lower triangular matrix packed sequentially,
-* column by column, so that AP( 1 ) contains a( 1, 1 ),
-* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 )
-* respectively, and so on.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced, but are assumed to be unity.
-* Unchanged on exit.
+*> \date November 2011
*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
+*> \ingroup complex16_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 AP(*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ztrmm.f b/BLAS/SRC/ztrmm.f
index e02efd43..a54a53c1 100644
--- a/BLAS/SRC/ztrmm.f
+++ b/BLAS/SRC/ztrmm.f
@@ -1,129 +1,208 @@
- SUBROUTINE ZTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA
- INTEGER LDA,LDB,M,N
- CHARACTER DIAG,SIDE,TRANSA,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),B(LDB,*)
-* ..
-*
-* Purpose
-* =======
+*> \brief \b ZTRMM
*
-* ZTRMM performs one of the matrix-matrix operations
+* =========== DOCUMENTATION ===========
*
-* B := alpha*op( A )*B, or B := alpha*B*op( A )
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* where alpha is a scalar, B is an m by n matrix, A is a unit, or
-* non-unit, upper or lower triangular matrix and op( A ) is one of
-*
-* op( A ) = A or op( A ) = A**T or op( A ) = A**H.
-*
-* Arguments
+* Definition
* ==========
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether op( A ) multiplies B from
-* the left or right as follows:
-*
-* SIDE = 'L' or 'l' B := alpha*op( A )*B.
-*
-* SIDE = 'R' or 'r' B := alpha*B*op( A ).
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix A is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n' op( A ) = A.
-*
-* TRANSA = 'T' or 't' op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c' op( A ) = A**H.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit triangular
-* as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of B. M must be at
-* least zero.
-* Unchanged on exit.
+* SUBROUTINE ZTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA
+* INTEGER LDA,LDB,M,N
+* CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),B(LDB,*)
+* ..
+*
+* Purpose
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the number of columns of B. N must be
-* at least zero.
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZTRMM performs one of the matrix-matrix operations
+*>
+*> B := alpha*op( A )*B, or B := alpha*B*op( A )
+*>
+*> where alpha is a scalar, B is an m by n matrix, A is a unit, or
+*> non-unit, upper or lower triangular matrix and op( A ) is one of
+*>
+*> op( A ) = A or op( A ) = A**T or op( A ) = A**H.
+*>
+*>\endverbatim
*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha. When alpha is
-* zero then A is not referenced and B need not be set before
-* entry.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of B. M must be at
+*> least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of B. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha. When alpha is
+*> zero then A is not referenced and B need not be set before
+*> entry.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 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
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading k by k
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+*> then LDA must be at least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] B
+*> \verbatim
+*> B is (input/output) COMPLEX*16 array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the matrix B, and on exit is overwritten by the
+*> transformed matrix.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - COMPLEX*16 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
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading k by k
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
-* then LDA must be at least max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* B - COMPLEX*16 array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the matrix B, and on exit is overwritten by the
-* transformed matrix.
+*> \ingroup complex16_blas_level3
*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZTRMM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA
+ INTEGER LDA,LDB,M,N
+ CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),B(LDB,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ztrmv.f b/BLAS/SRC/ztrmv.f
index 345c8cd9..2c491498 100644
--- a/BLAS/SRC/ztrmv.f
+++ b/BLAS/SRC/ztrmv.f
@@ -1,104 +1,175 @@
- SUBROUTINE ZTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*)
-* ..
+*> \brief \b ZTRMV
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* ZTRMV performs one of the matrix-vector operations
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* x := A*x, or x := A**T*x, or x := A**H*x,
-*
-* where x is an n element vector and A is an n by n unit, or non-unit,
-* upper or lower triangular matrix.
-*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the operation to be performed as
-* follows:
-*
-* TRANS = 'N' or 'n' x := A*x.
-*
-* TRANS = 'T' or 't' x := A**T*x.
-*
-* TRANS = 'C' or 'c' x := A**H*x.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+* SUBROUTINE ZTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZTRMV performs one of the matrix-vector operations
+*>
+*> x := A*x, or x := A**T*x, or x := A**H*x,
+*>
+*> where x is an n element vector and A is an n by n unit, or non-unit,
+*> upper or lower triangular matrix.
+*>
+*>\endverbatim
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in] X
+*> \verbatim
+*> X is (input/output) COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element vector x. On exit, X is overwritten with the
+*> tranformed vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element vector x. On exit, X is overwritten with the
-* tranformed vector x.
+*> \ingroup complex16_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*> The vector and matrix arguments are not referenced when N = 0, or M = 0
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZTRMV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
-* The vector and matrix arguments are not referenced when N = 0, or M = 0
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ztrsm.f b/BLAS/SRC/ztrsm.f
index 4cfe33b8..fae9928a 100644
--- a/BLAS/SRC/ztrsm.f
+++ b/BLAS/SRC/ztrsm.f
@@ -1,131 +1,211 @@
- SUBROUTINE ZTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
-* .. Scalar Arguments ..
- COMPLEX*16 ALPHA
- INTEGER LDA,LDB,M,N
- CHARACTER DIAG,SIDE,TRANSA,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),B(LDB,*)
-* ..
-*
-* Purpose
-* =======
+*> \brief \b ZTRSM
*
-* ZTRSM solves one of the matrix equations
+* =========== DOCUMENTATION ===========
*
-* op( A )*X = alpha*B, or X*op( A ) = alpha*B,
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* where alpha is a scalar, X and B are m by n matrices, A is a unit, or
-* non-unit, upper or lower triangular matrix and op( A ) is one of
-*
-* op( A ) = A or op( A ) = A**T or op( A ) = A**H.
-*
-* The matrix X is overwritten on B.
-*
-* Arguments
+* Definition
* ==========
*
-* SIDE - CHARACTER*1.
-* On entry, SIDE specifies whether op( A ) appears on the left
-* or right of X as follows:
-*
-* SIDE = 'L' or 'l' op( A )*X = alpha*B.
-*
-* SIDE = 'R' or 'r' X*op( A ) = alpha*B.
-*
-* Unchanged on exit.
-*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix A is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANSA - CHARACTER*1.
-* On entry, TRANSA specifies the form of op( A ) to be used in
-* the matrix multiplication as follows:
-*
-* TRANSA = 'N' or 'n' op( A ) = A.
-*
-* TRANSA = 'T' or 't' op( A ) = A**T.
-*
-* TRANSA = 'C' or 'c' op( A ) = A**H.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit triangular
-* as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
-*
-* Unchanged on exit.
-*
-* M - INTEGER.
-* On entry, M specifies the number of rows of B. M must be at
-* least zero.
-* Unchanged on exit.
+* SUBROUTINE ZTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
+*
+* .. Scalar Arguments ..
+* COMPLEX*16 ALPHA
+* INTEGER LDA,LDB,M,N
+* CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),B(LDB,*)
+* ..
+*
+* Purpose
+* =======
*
-* N - INTEGER.
-* On entry, N specifies the number of columns of B. N must be
-* at least zero.
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZTRSM solves one of the matrix equations
+*>
+*> op( A )*X = alpha*B, or X*op( A ) = alpha*B,
+*>
+*> where alpha is a scalar, X and B are m by n matrices, A is a unit, or
+*> non-unit, upper or lower triangular matrix and op( A ) is one of
+*>
+*> op( A ) = A or op( A ) = A**T or op( A ) = A**H.
+*>
+*> The matrix X is overwritten on B.
+*>
+*>\endverbatim
*
-* ALPHA - COMPLEX*16 .
-* On entry, ALPHA specifies the scalar alpha. When alpha is
-* zero then A is not referenced and B need not be set before
-* entry.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] SIDE
+*> \verbatim
+*> 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
+*>
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANSA
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] M
+*> \verbatim
+*> M is INTEGER
+*> On entry, M specifies the number of rows of B. M must be at
+*> least zero.
+*> \endverbatim
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the number of columns of B. N must be
+*> at least zero.
+*> \endverbatim
+*>
+*> \param[in] ALPHA
+*> \verbatim
+*> ALPHA is COMPLEX*16
+*> On entry, ALPHA specifies the scalar alpha. When alpha is
+*> zero then A is not referenced and B need not be set before
+*> entry.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, k ),
+*> where k is m when SIDE = 'L' or 'l'
+*> and k 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
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading k by k
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. When SIDE = 'L' or 'l' then
+*> LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
+*> then LDA must be at least max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX*16 array of DIMENSION ( LDB, n ).
+*> Before entry, the leading m by n part of the array B must
+*> contain the right-hand side matrix B, and on exit is
+*> overwritten by the solution matrix X.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> On entry, LDB specifies the first dimension of B as declared
+*> in the calling (sub) program. LDB must be at least
+*> max( 1, m ).
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - COMPLEX*16 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
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading k by k
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. When SIDE = 'L' or 'l' then
-* LDA must be at least max( 1, m ), when SIDE = 'R' or 'r'
-* then LDA must be at least max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* B - COMPLEX*16 array of DIMENSION ( LDB, n ).
-* Before entry, the leading m by n part of the array B must
-* contain the right-hand side matrix B, and on exit is
-* overwritten by the solution matrix X.
+*> \ingroup complex16_blas_level3
*
-* LDB - INTEGER.
-* On entry, LDB specifies the first dimension of B as declared
-* in the calling (sub) program. LDB must be at least
-* max( 1, m ).
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 3 Blas routine.
+*>
+*> -- Written on 8-February-1989.
+*> Jack Dongarra, Argonne National Laboratory.
+*> Iain Duff, AERE Harwell.
+*> Jeremy Du Croz, Numerical Algorithms Group Ltd.
+*> Sven Hammarling, Numerical Algorithms Group Ltd.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
*
-* Level 3 Blas routine.
+* -- Reference BLAS level3 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 8-February-1989.
-* Jack Dongarra, Argonne National Laboratory.
-* Iain Duff, AERE Harwell.
-* Jeremy Du Croz, Numerical Algorithms Group Ltd.
-* Sven Hammarling, Numerical Algorithms Group Ltd.
+* .. Scalar Arguments ..
+ COMPLEX*16 ALPHA
+ INTEGER LDA,LDB,M,N
+ CHARACTER DIAG,SIDE,TRANSA,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),B(LDB,*)
+* ..
*
* =====================================================================
*
diff --git a/BLAS/SRC/ztrsv.f b/BLAS/SRC/ztrsv.f
index 2527445f..3696075b 100644
--- a/BLAS/SRC/ztrsv.f
+++ b/BLAS/SRC/ztrsv.f
@@ -1,106 +1,177 @@
- SUBROUTINE ZTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
-* .. Scalar Arguments ..
- INTEGER INCX,LDA,N
- CHARACTER DIAG,TRANS,UPLO
-* ..
-* .. Array Arguments ..
- COMPLEX*16 A(LDA,*),X(*)
-* ..
+*> \brief \b ZTRSV
*
-* Purpose
-* =======
+* =========== DOCUMENTATION ===========
*
-* ZTRSV solves one of the systems of equations
+* Online html documentation available at
+* http://www.netlib.org/lapack/explore-html/
*
-* A*x = b, or A**T*x = b, or A**H*x = b,
-*
-* where b and x are n element vectors and A is an n by n unit, or
-* non-unit, upper or lower triangular matrix.
-*
-* No test for singularity or near-singularity is included in this
-* routine. Such tests must be performed before calling this routine.
-*
-* Arguments
+* Definition
* ==========
*
-* UPLO - CHARACTER*1.
-* On entry, UPLO specifies whether the matrix is an upper or
-* lower triangular matrix as follows:
-*
-* UPLO = 'U' or 'u' A is an upper triangular matrix.
-*
-* UPLO = 'L' or 'l' A is a lower triangular matrix.
-*
-* Unchanged on exit.
-*
-* TRANS - CHARACTER*1.
-* On entry, TRANS specifies the equations to be solved as
-* follows:
-*
-* TRANS = 'N' or 'n' A*x = b.
-*
-* TRANS = 'T' or 't' A**T*x = b.
-*
-* TRANS = 'C' or 'c' A**H*x = b.
-*
-* Unchanged on exit.
-*
-* DIAG - CHARACTER*1.
-* On entry, DIAG specifies whether or not A is unit
-* triangular as follows:
-*
-* DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*
-* DIAG = 'N' or 'n' A is not assumed to be unit
-* triangular.
+* SUBROUTINE ZTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
+*
+* .. Scalar Arguments ..
+* INTEGER INCX,LDA,N
+* CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+* COMPLEX*16 A(LDA,*),X(*)
+* ..
+*
+* Purpose
+* =======
*
-* Unchanged on exit.
+*>\details \b Purpose:
+*>\verbatim
+*>
+*> ZTRSV solves one of the systems of equations
+*>
+*> A*x = b, or A**T*x = b, or A**H*x = b,
+*>
+*> where b and x are n element vectors and A is an n by n unit, or
+*> non-unit, upper or lower triangular matrix.
+*>
+*> No test for singularity or near-singularity is included in this
+*> routine. Such tests must be performed before calling this routine.
+*>
+*>\endverbatim
*
-* N - INTEGER.
-* On entry, N specifies the order of the matrix A.
-* N must be at least zero.
-* Unchanged on exit.
+* Arguments
+* =========
+*
+*> \param[in] UPLO
+*> \verbatim
+*> 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
+*>
+*> \param[in] TRANS
+*> \verbatim
+*> 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
+*>
+*> \param[in] DIAG
+*> \verbatim
+*> 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
+*>
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> On entry, N specifies the order of the matrix A.
+*> N must be at least zero.
+*> \endverbatim
+*>
+*> \param[in] A
+*> \verbatim
+*> A is COMPLEX*16 array of DIMENSION ( LDA, n ).
+*> Before entry with UPLO = 'U' or 'u', the leading n by n
+*> upper triangular part of the array A must contain the upper
+*> triangular matrix and the strictly lower triangular part of
+*> A is not referenced.
+*> Before entry with UPLO = 'L' or 'l', the leading n by n
+*> lower triangular part of the array A must contain the lower
+*> triangular matrix and the strictly upper triangular part of
+*> A is not referenced.
+*> Note that when DIAG = 'U' or 'u', the diagonal elements of
+*> A are not referenced either, but are assumed to be unity.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> On entry, LDA specifies the first dimension of A as declared
+*> in the calling (sub) program. LDA must be at least
+*> max( 1, n ).
+*> \endverbatim
+*>
+*> \param[in,out] X
+*> \verbatim
+*> X is COMPLEX*16 array of dimension at least
+*> ( 1 + ( n - 1 )*abs( INCX ) ).
+*> Before entry, the incremented array X must contain the n
+*> element right-hand side vector b. On exit, X is overwritten
+*> with the solution vector x.
+*> \endverbatim
+*>
+*> \param[in] INCX
+*> \verbatim
+*> INCX is INTEGER
+*> On entry, INCX specifies the increment for the elements of
+*> X. INCX must not be zero.
+*> \endverbatim
+*>
+*
+* Authors
+* =======
*
-* A - COMPLEX*16 array of DIMENSION ( LDA, n ).
-* Before entry with UPLO = 'U' or 'u', the leading n by n
-* upper triangular part of the array A must contain the upper
-* triangular matrix and the strictly lower triangular part of
-* A is not referenced.
-* Before entry with UPLO = 'L' or 'l', the leading n by n
-* lower triangular part of the array A must contain the lower
-* triangular matrix and the strictly upper triangular part of
-* A is not referenced.
-* Note that when DIAG = 'U' or 'u', the diagonal elements of
-* A are not referenced either, but are assumed to be unity.
-* Unchanged on exit.
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
*
-* LDA - INTEGER.
-* On entry, LDA specifies the first dimension of A as declared
-* in the calling (sub) program. LDA must be at least
-* max( 1, n ).
-* Unchanged on exit.
+*> \date November 2011
*
-* X - COMPLEX*16 array of dimension at least
-* ( 1 + ( n - 1 )*abs( INCX ) ).
-* Before entry, the incremented array X must contain the n
-* element right-hand side vector b. On exit, X is overwritten
-* with the solution vector x.
+*> \ingroup complex16_blas_level2
*
-* INCX - INTEGER.
-* On entry, INCX specifies the increment for the elements of
-* X. INCX must not be zero.
-* Unchanged on exit.
*
* Further Details
* ===============
+*>\details \b Further \b Details
+*> \verbatim
+*>
+*> Level 2 Blas routine.
+*>
+*> -- Written on 22-October-1986.
+*> Jack Dongarra, Argonne National Lab.
+*> Jeremy Du Croz, Nag Central Office.
+*> Sven Hammarling, Nag Central Office.
+*> Richard Hanson, Sandia National Labs.
+*>
+*> \endverbatim
+*>
+* =====================================================================
+ SUBROUTINE ZTRSV(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
*
-* Level 2 Blas routine.
+* -- Reference BLAS level2 routine (version 3.4.0) --
+* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* November 2011
*
-* -- Written on 22-October-1986.
-* Jack Dongarra, Argonne National Lab.
-* Jeremy Du Croz, Nag Central Office.
-* Sven Hammarling, Nag Central Office.
-* Richard Hanson, Sandia National Labs.
+* .. Scalar Arguments ..
+ INTEGER INCX,LDA,N
+ CHARACTER DIAG,TRANS,UPLO
+* ..
+* .. Array Arguments ..
+ COMPLEX*16 A(LDA,*),X(*)
+* ..
*
* =====================================================================
*