summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjulie <julielangou@users.noreply.github.com>2011-10-31 22:21:11 +0000
committerjulie <julielangou@users.noreply.github.com>2011-10-31 22:21:11 +0000
commit0d9e213c670ab0e68f17d68251412d53250108e1 (patch)
tree2bcab1c08b84e327b9be345385e2c31e8a26905a
parent82901cd3e7bb75c73fc3a17fe7bf922289337f97 (diff)
downloadlapack-0d9e213c670ab0e68f17d68251412d53250108e1.tar.gz
lapack-0d9e213c670ab0e68f17d68251412d53250108e1.tar.bz2
lapack-0d9e213c670ab0e68f17d68251412d53250108e1.zip
Correct Warning detected during Doxygen Generation.
Now each routine should have the correct list of arguments. This allowed to detect and fix problems in parameter description of many routines.
-rw-r--r--BLAS/SRC/cgbmv.f12
-rw-r--r--BLAS/SRC/cgemm.f18
-rw-r--r--BLAS/SRC/cgemv.f9
-rw-r--r--BLAS/SRC/chbmv.f18
-rw-r--r--BLAS/SRC/chemm.f12
-rw-r--r--BLAS/SRC/chemv.f6
-rw-r--r--BLAS/SRC/cher.f10
-rw-r--r--BLAS/SRC/cher2.f14
-rw-r--r--BLAS/SRC/cher2k.f12
-rw-r--r--BLAS/SRC/cherk.f12
-rw-r--r--BLAS/SRC/chpmv.f6
-rw-r--r--BLAS/SRC/chpr.f6
-rw-r--r--BLAS/SRC/chpr2.f10
-rw-r--r--BLAS/SRC/csymm.f12
-rw-r--r--BLAS/SRC/csyr2k.f16
-rw-r--r--BLAS/SRC/csyrk.f12
-rw-r--r--BLAS/SRC/ctbmv.f33
-rw-r--r--BLAS/SRC/ctbsv.f33
-rw-r--r--BLAS/SRC/ctpmv.f21
-rw-r--r--BLAS/SRC/ctpsv.f21
-rw-r--r--BLAS/SRC/ctrmm.f27
-rw-r--r--BLAS/SRC/ctrmv.f21
-rw-r--r--BLAS/SRC/ctrsm.f27
-rw-r--r--BLAS/SRC/ctrsv.f21
-rw-r--r--BLAS/SRC/dgbmv.f12
-rw-r--r--BLAS/SRC/dgemm.f18
-rw-r--r--BLAS/SRC/dgemv.f9
-rw-r--r--BLAS/SRC/dsbmv.f15
-rw-r--r--BLAS/SRC/dsdot.f2
-rw-r--r--BLAS/SRC/dspmv.f6
-rw-r--r--BLAS/SRC/dspr.f6
-rw-r--r--BLAS/SRC/dspr2.f6
-rw-r--r--BLAS/SRC/dsymm.f12
-rw-r--r--BLAS/SRC/dsymv.f6
-rw-r--r--BLAS/SRC/dsyr.f6
-rw-r--r--BLAS/SRC/dsyr2.f6
-rw-r--r--BLAS/SRC/dsyr2k.f15
-rw-r--r--BLAS/SRC/dsyrk.f15
-rw-r--r--BLAS/SRC/dtbmv.f33
-rw-r--r--BLAS/SRC/dtbsv.f33
-rw-r--r--BLAS/SRC/dtpmv.f21
-rw-r--r--BLAS/SRC/dtpsv.f21
-rw-r--r--BLAS/SRC/dtrmm.f31
-rw-r--r--BLAS/SRC/dtrmv.f21
-rw-r--r--BLAS/SRC/dtrsm.f27
-rw-r--r--BLAS/SRC/dtrsv.f27
-rw-r--r--BLAS/SRC/sgbmv.f12
-rw-r--r--BLAS/SRC/sgemm.f18
-rw-r--r--BLAS/SRC/sgemv.f9
-rw-r--r--BLAS/SRC/sger.f4
-rw-r--r--BLAS/SRC/ssbmv.f15
-rw-r--r--BLAS/SRC/sspmv.f6
-rw-r--r--BLAS/SRC/sspr.f6
-rw-r--r--BLAS/SRC/sspr2.f10
-rw-r--r--BLAS/SRC/ssymm.f12
-rw-r--r--BLAS/SRC/ssymv.f6
-rw-r--r--BLAS/SRC/ssyr.f6
-rw-r--r--BLAS/SRC/ssyr2.f10
-rw-r--r--BLAS/SRC/ssyr2k.f15
-rw-r--r--BLAS/SRC/ssyrk.f15
-rw-r--r--BLAS/SRC/stbmv.f33
-rw-r--r--BLAS/SRC/stbsv.f33
-rw-r--r--BLAS/SRC/stpmv.f21
-rw-r--r--BLAS/SRC/stpsv.f21
-rw-r--r--BLAS/SRC/strmm.f27
-rw-r--r--BLAS/SRC/strmv.f21
-rw-r--r--BLAS/SRC/strsm.f27
-rw-r--r--BLAS/SRC/strsv.f21
-rw-r--r--BLAS/SRC/zgbmv.f12
-rw-r--r--BLAS/SRC/zgemm.f18
-rw-r--r--BLAS/SRC/zgemv.f9
-rw-r--r--BLAS/SRC/zhbmv.f18
-rw-r--r--BLAS/SRC/zhemm.f12
-rw-r--r--BLAS/SRC/zhemv.f6
-rw-r--r--BLAS/SRC/zher.f6
-rw-r--r--BLAS/SRC/zher2.f6
-rw-r--r--BLAS/SRC/zher2k.f12
-rw-r--r--BLAS/SRC/zherk.f12
-rw-r--r--BLAS/SRC/zhpmv.f6
-rw-r--r--BLAS/SRC/zhpr.f6
-rw-r--r--BLAS/SRC/zhpr2.f6
-rw-r--r--BLAS/SRC/zsymm.f12
-rw-r--r--BLAS/SRC/zsyr2k.f12
-rw-r--r--BLAS/SRC/zsyrk.f12
-rw-r--r--BLAS/SRC/ztbmv.f33
-rw-r--r--BLAS/SRC/ztbsv.f33
-rw-r--r--BLAS/SRC/ztpmv.f21
-rw-r--r--BLAS/SRC/ztpsv.f21
-rw-r--r--BLAS/SRC/ztrmm.f27
-rw-r--r--BLAS/SRC/ztrmv.f21
-rw-r--r--BLAS/SRC/ztrsm.f27
-rw-r--r--BLAS/SRC/ztrsv.f21
-rw-r--r--DOCS/Doxyfile21
-rw-r--r--INSTALL/dlamchf77.f6
-rw-r--r--INSTALL/slamchf77.f6
-rw-r--r--SRC/cbbcsd.f34
-rw-r--r--SRC/cgbsv.f2
-rw-r--r--SRC/cgebal.f69
-rw-r--r--SRC/cgebd2.f92
-rw-r--r--SRC/cgebrd.f96
-rw-r--r--SRC/cgees.f2
-rw-r--r--SRC/cgehd2.f74
-rw-r--r--SRC/cgehrd.f82
-rw-r--r--SRC/cgelq2.f51
-rw-r--r--SRC/cgelqf.f73
-rw-r--r--SRC/cgeql2.f53
-rw-r--r--SRC/cgeqlf.f76
-rw-r--r--SRC/cgeqr2.f51
-rw-r--r--SRC/cgeqr2p.f51
-rw-r--r--SRC/cgeqrt.f3
-rw-r--r--SRC/cgeqrt2.f4
-rw-r--r--SRC/cgeqrt3.f4
-rw-r--r--SRC/cgerqf.f73
-rw-r--r--SRC/cgesv.f2
-rw-r--r--SRC/cggglm.f5
-rw-r--r--SRC/cgghrd.f5
-rw-r--r--SRC/cggqrf.f71
-rw-r--r--SRC/cggrqf.f71
-rw-r--r--SRC/cggsvd.f14
-rw-r--r--SRC/cggsvp.f10
-rw-r--r--SRC/chbgvx.f10
-rw-r--r--SRC/cheequb.f15
-rw-r--r--SRC/chegvx.f31
-rw-r--r--SRC/chesvxx.f7
-rw-r--r--SRC/chetd2.f77
-rw-r--r--SRC/chetrd.f94
-rw-r--r--SRC/chpgvx.f10
-rw-r--r--SRC/chptrd.f66
-rw-r--r--SRC/chseqr.f7
-rw-r--r--SRC/cla_gbrfsx_extended.f48
-rw-r--r--SRC/cla_gerfsx_extended.f72
-rw-r--r--SRC/cla_herpvgrw.f6
-rw-r--r--SRC/cla_lin_berr.f2
-rw-r--r--SRC/cla_syrpvgrw.f6
-rw-r--r--SRC/clabrd.f100
-rw-r--r--SRC/clacn2.f2
-rw-r--r--SRC/clacon.f2
-rw-r--r--SRC/clagtm.f3
-rw-r--r--SRC/clahr2.f70
-rw-r--r--SRC/clahrd.f70
-rw-r--r--SRC/claqr0.f37
-rw-r--r--SRC/claqr1.f7
-rw-r--r--SRC/claqr4.f38
-rw-r--r--SRC/clarfb.f78
-rw-r--r--SRC/clarft.f76
-rw-r--r--SRC/clarrv.f10
-rw-r--r--SRC/clartg.f2
-rw-r--r--SRC/clarzt.f76
-rw-r--r--SRC/clascl.f5
-rw-r--r--SRC/clatrd.f83
-rw-r--r--SRC/cpbstf.f31
-rw-r--r--SRC/crot.f3
-rw-r--r--SRC/cstegr.f10
-rw-r--r--SRC/cstemr.f10
-rw-r--r--SRC/csyconv.f13
-rw-r--r--SRC/csyequb.f2
-rw-r--r--SRC/ctgsen.f10
-rw-r--r--SRC/ctgsja.f142
-rw-r--r--SRC/ctpmqrt.f104
-rw-r--r--SRC/ctpqrt.f87
-rw-r--r--SRC/ctpqrt2.f76
-rw-r--r--SRC/ctprfb.f91
-rw-r--r--SRC/ctrexc.f5
-rw-r--r--SRC/cuncsd.f48
-rw-r--r--SRC/cunghr.f5
-rw-r--r--SRC/cunmhr.f5
-rw-r--r--SRC/dbbcsd.f34
-rw-r--r--SRC/dgbsv.f2
-rw-r--r--SRC/dgebal.f69
-rw-r--r--SRC/dgebd2.f91
-rw-r--r--SRC/dgebrd.f96
-rw-r--r--SRC/dgees.f3
-rw-r--r--SRC/dgehd2.f75
-rw-r--r--SRC/dgehrd.f80
-rw-r--r--SRC/dgejsv.f18
-rw-r--r--SRC/dgelq2.f51
-rw-r--r--SRC/dgelqf.f70
-rw-r--r--SRC/dgeql2.f53
-rw-r--r--SRC/dgeqlf.f73
-rw-r--r--SRC/dgeqr2.f51
-rw-r--r--SRC/dgeqr2p.f51
-rw-r--r--SRC/dgeqrt.f1
-rw-r--r--SRC/dgeqrt2.f4
-rw-r--r--SRC/dgeqrt3.f4
-rw-r--r--SRC/dgerqf.f73
-rw-r--r--SRC/dgesv.f4
-rw-r--r--SRC/dggglm.f5
-rw-r--r--SRC/dgghrd.f7
-rw-r--r--SRC/dggqrf.f71
-rw-r--r--SRC/dggrqf.f71
-rw-r--r--SRC/dggsvd.f12
-rw-r--r--SRC/dggsvp.f14
-rw-r--r--SRC/dhsein.f5
-rw-r--r--SRC/dhseqr.f12
-rw-r--r--SRC/dla_gbrfsx_extended.f64
-rw-r--r--SRC/dla_gerfsx_extended.f72
-rw-r--r--SRC/dla_lin_berr.f2
-rw-r--r--SRC/dla_syrpvgrw.f6
-rw-r--r--SRC/dlabrd.f100
-rw-r--r--SRC/dlacon.f2
-rw-r--r--SRC/dlaed3.f6
-rw-r--r--SRC/dlagtm.f3
-rw-r--r--SRC/dlahr2.f70
-rw-r--r--SRC/dlahrd.f70
-rw-r--r--SRC/dlaqr0.f30
-rw-r--r--SRC/dlaqr4.f30
-rw-r--r--SRC/dlarfb.f78
-rw-r--r--SRC/dlarft.f76
-rw-r--r--SRC/dlarre.f1
-rw-r--r--SRC/dlarrv.f6
-rw-r--r--SRC/dlarzt.f76
-rw-r--r--SRC/dlascl.f2
-rw-r--r--SRC/dlasq4.f4
-rw-r--r--SRC/dlatrd.f83
-rw-r--r--SRC/dorcsd.f48
-rw-r--r--SRC/dorghr.f5
-rw-r--r--SRC/dormhr.f5
-rw-r--r--SRC/dpbstf.f32
-rw-r--r--SRC/dpptrf.f2
-rw-r--r--SRC/dsbgvx.f10
-rw-r--r--SRC/dsgesv.f2
-rw-r--r--SRC/dspgvx.f10
-rw-r--r--SRC/dsptrd.f66
-rw-r--r--SRC/dstebz.f10
-rw-r--r--SRC/dstegr.f10
-rw-r--r--SRC/dstemr.f10
-rw-r--r--SRC/dsyconv.f13
-rw-r--r--SRC/dsyequb.f2
-rw-r--r--SRC/dsytd2.f77
-rw-r--r--SRC/dsytrd.f91
-rw-r--r--SRC/dtgsen.f13
-rw-r--r--SRC/dtgsja.f143
-rw-r--r--SRC/dtpmqrt.f104
-rw-r--r--SRC/dtpqrt.f87
-rw-r--r--SRC/dtpqrt2.f76
-rw-r--r--SRC/dtprfb.f91
-rw-r--r--SRC/dtrexc.f5
-rw-r--r--SRC/dtrsen.f4
-rw-r--r--SRC/sbbcsd.f34
-rw-r--r--SRC/sgbsv.f2
-rw-r--r--SRC/sgebal.f69
-rw-r--r--SRC/sgebd2.f91
-rw-r--r--SRC/sgebrd.f96
-rw-r--r--SRC/sgehd2.f75
-rw-r--r--SRC/sgehrd.f83
-rw-r--r--SRC/sgejsv.f28
-rw-r--r--SRC/sgelq2.f51
-rw-r--r--SRC/sgelqf.f70
-rw-r--r--SRC/sgeql2.f53
-rw-r--r--SRC/sgeqlf.f73
-rw-r--r--SRC/sgeqr2.f51
-rw-r--r--SRC/sgeqr2p.f51
-rw-r--r--SRC/sgeqrt.f1
-rw-r--r--SRC/sgeqrt2.f4
-rw-r--r--SRC/sgeqrt3.f4
-rw-r--r--SRC/sgerqf.f73
-rw-r--r--SRC/sgesv.f2
-rw-r--r--SRC/sggglm.f5
-rw-r--r--SRC/sgghrd.f5
-rw-r--r--SRC/sggqrf.f71
-rw-r--r--SRC/sggrqf.f71
-rw-r--r--SRC/sggsvd.f12
-rw-r--r--SRC/sggsvp.f10
-rw-r--r--SRC/shsein.f5
-rw-r--r--SRC/shseqr.f39
-rw-r--r--SRC/sla_gbrfsx_extended.f64
-rw-r--r--SRC/sla_gerfsx_extended.f88
-rw-r--r--SRC/sla_lin_berr.f2
-rw-r--r--SRC/sla_syrpvgrw.f6
-rw-r--r--SRC/slabrd.f100
-rw-r--r--SRC/slacon.f2
-rw-r--r--SRC/slaed3.f6
-rw-r--r--SRC/slagtm.f3
-rw-r--r--SRC/slahr2.f70
-rw-r--r--SRC/slahrd.f70
-rw-r--r--SRC/slaqr0.f24
-rw-r--r--SRC/slaqr4.f32
-rw-r--r--SRC/slarfb.f78
-rw-r--r--SRC/slarft.f76
-rw-r--r--SRC/slarrf.f5
-rw-r--r--SRC/slarrv.f6
-rw-r--r--SRC/slarzt.f76
-rw-r--r--SRC/slascl.f2
-rw-r--r--SRC/slasq2.f2
-rw-r--r--SRC/slasq4.f6
-rw-r--r--SRC/slatbs.f2
-rw-r--r--SRC/slatps.f2
-rw-r--r--SRC/slatrd.f83
-rw-r--r--SRC/slatrs.f2
-rw-r--r--SRC/sorcsd.f48
-rw-r--r--SRC/sorghr.f5
-rw-r--r--SRC/sormhr.f5
-rw-r--r--SRC/spbstf.f31
-rw-r--r--SRC/spptrf.f2
-rw-r--r--SRC/ssbgvx.f10
-rw-r--r--SRC/sspgvx.f10
-rw-r--r--SRC/ssptrd.f66
-rw-r--r--SRC/sstebz.f10
-rw-r--r--SRC/sstegr.f10
-rw-r--r--SRC/sstemr.f10
-rw-r--r--SRC/ssyconv.f13
-rw-r--r--SRC/ssyequb.f2
-rw-r--r--SRC/ssytd2.f77
-rw-r--r--SRC/ssytrd.f91
-rw-r--r--SRC/stgsen.f13
-rw-r--r--SRC/stgsja.f143
-rw-r--r--SRC/stpmqrt.f104
-rw-r--r--SRC/stpqrt.f87
-rw-r--r--SRC/stpqrt2.f76
-rw-r--r--SRC/stprfb.f91
-rw-r--r--SRC/strexc.f5
-rw-r--r--SRC/strsen.f5
-rw-r--r--SRC/zbbcsd.f34
-rw-r--r--SRC/zcgesv.f2
-rw-r--r--SRC/zgbsv.f2
-rw-r--r--SRC/zgebal.f69
-rw-r--r--SRC/zgebd2.f91
-rw-r--r--SRC/zgebrd.f99
-rw-r--r--SRC/zgehd2.f75
-rw-r--r--SRC/zgehrd.f83
-rw-r--r--SRC/zgelq2.f51
-rw-r--r--SRC/zgelqf.f70
-rw-r--r--SRC/zgeql2.f53
-rw-r--r--SRC/zgeqlf.f76
-rw-r--r--SRC/zgeqr2.f51
-rw-r--r--SRC/zgeqr2p.f51
-rw-r--r--SRC/zgeqrt.f1
-rw-r--r--SRC/zgeqrt2.f4
-rw-r--r--SRC/zgeqrt3.f4
-rw-r--r--SRC/zgerqf.f73
-rw-r--r--SRC/zgesv.f2
-rw-r--r--SRC/zggglm.f5
-rw-r--r--SRC/zgghrd.f5
-rw-r--r--SRC/zggqrf.f71
-rw-r--r--SRC/zggrqf.f71
-rw-r--r--SRC/zggsvd.f14
-rw-r--r--SRC/zggsvp.f10
-rw-r--r--SRC/zhbgvx.f10
-rw-r--r--SRC/zheequb.f15
-rw-r--r--SRC/zhegvx.f31
-rw-r--r--SRC/zhesvxx.f7
-rw-r--r--SRC/zhetd2.f77
-rw-r--r--SRC/zhetrd.f94
-rw-r--r--SRC/zhpgvx.f10
-rw-r--r--SRC/zhptrd.f66
-rw-r--r--SRC/zhseqr.f5
-rw-r--r--SRC/zla_gbrfsx_extended.f46
-rw-r--r--SRC/zla_gerfsx_extended.f72
-rw-r--r--SRC/zla_herpvgrw.f6
-rw-r--r--SRC/zla_lin_berr.f2
-rw-r--r--SRC/zla_syrpvgrw.f6
-rw-r--r--SRC/zlabrd.f100
-rw-r--r--SRC/zlagtm.f3
-rw-r--r--SRC/zlahr2.f70
-rw-r--r--SRC/zlahrd.f70
-rw-r--r--SRC/zlaqr0.f42
-rw-r--r--SRC/zlaqr1.f9
-rw-r--r--SRC/zlaqr2.f3
-rw-r--r--SRC/zlaqr4.f37
-rw-r--r--SRC/zlarfb.f78
-rw-r--r--SRC/zlarft.f76
-rw-r--r--SRC/zlarrv.f10
-rw-r--r--SRC/zlartg.f2
-rw-r--r--SRC/zlarzt.f76
-rw-r--r--SRC/zlascl.f2
-rw-r--r--SRC/zlatrd.f83
-rw-r--r--SRC/zpbstf.f33
-rw-r--r--SRC/zrot.f3
-rw-r--r--SRC/zstegr.f10
-rw-r--r--SRC/zstemr.f10
-rw-r--r--SRC/zsyconv.f13
-rw-r--r--SRC/zsyequb.f2
-rw-r--r--SRC/ztgsen.f10
-rw-r--r--SRC/ztgsja.f144
-rw-r--r--SRC/ztpmqrt.f104
-rw-r--r--SRC/ztpqrt.f87
-rw-r--r--SRC/ztpqrt2.f76
-rw-r--r--SRC/ztprfb.f91
-rw-r--r--SRC/ztrexc.f5
-rw-r--r--SRC/zuncsd.f48
-rw-r--r--SRC/zunghr.f5
-rw-r--r--SRC/zunmhr.f5
-rw-r--r--TESTING/EIG/cchkbd.f4
-rw-r--r--TESTING/EIG/cchkhb.f11
-rw-r--r--TESTING/EIG/cchkst.f77
-rw-r--r--TESTING/EIG/cdrgvx.f4
-rw-r--r--TESTING/EIG/cdrvbd.f16
-rw-r--r--TESTING/EIG/cdrves.f5
-rw-r--r--TESTING/EIG/cdrvvx.f56
-rw-r--r--TESTING/EIG/cget22.f6
-rw-r--r--TESTING/EIG/chkxer.f20
-rw-r--r--TESTING/EIG/clctsx.f5
-rw-r--r--TESTING/EIG/dchkbd.f4
-rw-r--r--TESTING/EIG/dchkgg.f4
-rw-r--r--TESTING/EIG/dchkst.f68
-rw-r--r--TESTING/EIG/ddrgvx.f2
-rw-r--r--TESTING/EIG/ddrves.f5
-rw-r--r--TESTING/EIG/ddrvsx.f5
-rw-r--r--TESTING/EIG/ddrvvx.f12
-rw-r--r--TESTING/EIG/dlatb9.f68
-rw-r--r--TESTING/EIG/dsxt1.f4
-rw-r--r--TESTING/EIG/ilaenv.f4
-rw-r--r--TESTING/EIG/schkbd.f4
-rw-r--r--TESTING/EIG/schkst.f68
-rw-r--r--TESTING/EIG/sdrgvx.f4
-rw-r--r--TESTING/EIG/sdrves.f5
-rw-r--r--TESTING/EIG/sdrvsx.f5
-rw-r--r--TESTING/EIG/sdrvvx.f12
-rw-r--r--TESTING/EIG/slatb9.f68
-rw-r--r--TESTING/EIG/ssxt1.f4
-rw-r--r--TESTING/EIG/zchkbd.f4
-rw-r--r--TESTING/EIG/zchkgg.f4
-rw-r--r--TESTING/EIG/zchkhb.f11
-rw-r--r--TESTING/EIG/zchkst.f77
-rw-r--r--TESTING/EIG/zdrgvx.f2
-rw-r--r--TESTING/EIG/zdrvbd.f16
-rw-r--r--TESTING/EIG/zdrves.f5
-rw-r--r--TESTING/EIG/zdrvvx.f66
-rw-r--r--TESTING/EIG/zget22.f7
-rw-r--r--TESTING/EIG/zlctsx.f5
-rw-r--r--TESTING/LIN/Makefile70
-rw-r--r--TESTING/LIN/cchkge.f7
-rw-r--r--TESTING/LIN/cdrvgt.f6
-rw-r--r--TESTING/LIN/cdrvrf2.f4
-rw-r--r--TESTING/LIN/cebchvxx.f211
-rw-r--r--TESTING/LIN/chet01.f4
-rw-r--r--TESTING/LIN/chpt01.f4
-rw-r--r--TESTING/LIN/clahilb.f198
-rw-r--r--TESTING/LIN/cpbt02.f6
-rw-r--r--TESTING/LIN/cpst01.f6
-rw-r--r--TESTING/LIN/cspt01.f4
-rw-r--r--TESTING/LIN/cspt03.f8
-rw-r--r--TESTING/LIN/csyt01.f4
-rw-r--r--TESTING/LIN/ddrvgt.f6
-rw-r--r--TESTING/LIN/ddrvrf2.f4
-rw-r--r--TESTING/LIN/debchvxx.f203
-rw-r--r--TESTING/LIN/dgtt01.f4
-rw-r--r--TESTING/LIN/dlahilb.f181
-rw-r--r--TESTING/LIN/dpbt02.f6
-rw-r--r--TESTING/LIN/dpst01.f6
-rw-r--r--TESTING/LIN/dspt01.f4
-rw-r--r--TESTING/LIN/dsyt01.f4
-rw-r--r--TESTING/LIN/ilaenv.f12
-rw-r--r--TESTING/LIN/sdrvgt.f6
-rw-r--r--TESTING/LIN/sdrvrf1.f4
-rw-r--r--TESTING/LIN/sdrvrf2.f4
-rw-r--r--TESTING/LIN/sebchvxx.f203
-rw-r--r--TESTING/LIN/sgtt01.f4
-rw-r--r--TESTING/LIN/slahilb.f182
-rw-r--r--TESTING/LIN/spbt02.f6
-rw-r--r--TESTING/LIN/spst01.f6
-rw-r--r--TESTING/LIN/sspt01.f4
-rw-r--r--TESTING/LIN/ssyt01.f4
-rw-r--r--TESTING/LIN/zchkge.f7
-rw-r--r--TESTING/LIN/zdrvgt.f6
-rw-r--r--TESTING/LIN/zdrvrf2.f4
-rw-r--r--TESTING/LIN/zebchvxx.f209
-rw-r--r--TESTING/LIN/zhet01.f4
-rw-r--r--TESTING/LIN/zhpt01.f4
-rw-r--r--TESTING/LIN/zlahilb.f195
-rw-r--r--TESTING/LIN/zpbt02.f6
-rw-r--r--TESTING/LIN/zpst01.f6
-rw-r--r--TESTING/LIN/zspt01.f4
-rw-r--r--TESTING/LIN/zspt03.f8
-rw-r--r--TESTING/LIN/zsyt01.f4
-rw-r--r--TESTING/MATGEN/clahilb.f6
-rw-r--r--TESTING/MATGEN/zlahilb.f6
-rw-r--r--TESTING/MATGEN/zlaror.f13
468 files changed, 9903 insertions, 5486 deletions
diff --git a/BLAS/SRC/cgbmv.f b/BLAS/SRC/cgbmv.f
index aa8d9d8c..01690bb7 100644
--- a/BLAS/SRC/cgbmv.f
+++ b/BLAS/SRC/cgbmv.f
@@ -44,14 +44,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y.
*> \endverbatim
*>
@@ -103,8 +100,7 @@
*> are not referenced.
*> The following program segment will transfer a band matrix
*> from conventional full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> K = KU + 1 - J
*> DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
diff --git a/BLAS/SRC/cgemm.f b/BLAS/SRC/cgemm.f
index daf642d0..b1ba4c58 100644
--- a/BLAS/SRC/cgemm.f
+++ b/BLAS/SRC/cgemm.f
@@ -46,14 +46,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n', op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't', op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c', op( A ) = A**H.
*> \endverbatim
*>
@@ -62,14 +59,11 @@
*> TRANSB is CHARACTER*1
*> On entry, TRANSB specifies the form of op( B ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'N' or 'n', op( B ) = B.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'T' or 't', op( B ) = B**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'C' or 'c', op( B ) = B**H.
*> \endverbatim
*>
diff --git a/BLAS/SRC/cgemv.f b/BLAS/SRC/cgemv.f
index a341b454..db0564c1 100644
--- a/BLAS/SRC/cgemv.f
+++ b/BLAS/SRC/cgemv.f
@@ -44,14 +44,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y.
*> \endverbatim
*>
diff --git a/BLAS/SRC/chbmv.f b/BLAS/SRC/chbmv.f
index bd3b69c5..bafb5f12 100644
--- a/BLAS/SRC/chbmv.f
+++ b/BLAS/SRC/chbmv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the band matrix A is being supplied as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> being supplied.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> being supplied.
*> \endverbatim
@@ -86,16 +84,14 @@
*> The following program segment will transfer the upper
*> triangular part of a hermitian band matrix from conventional
*> full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the hermitian matrix, supplied column by
@@ -106,16 +102,14 @@
*> The following program segment will transfer the lower
*> triangular part of a hermitian band matrix from conventional
*> full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Note that the imaginary parts of the diagonal elements need
*> not be set and are assumed to be zero.
*> \endverbatim
diff --git a/BLAS/SRC/chemm.f b/BLAS/SRC/chemm.f
index 9947cb28..2944c649 100644
--- a/BLAS/SRC/chemm.f
+++ b/BLAS/SRC/chemm.f
@@ -46,11 +46,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether the hermitian matrix A
*> appears on the left or right in the operation as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
*> \endverbatim
*>
@@ -60,12 +58,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the hermitian matrix A is to be
*> referenced as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of the
*> hermitian matrix is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of the
*> hermitian matrix is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/chemv.f b/BLAS/SRC/chemv.f
index 85de0631..f93e0c4f 100644
--- a/BLAS/SRC/chemv.f
+++ b/BLAS/SRC/chemv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/cher.f b/BLAS/SRC/cher.f
index b7ccc0b6..1e74428c 100644
--- a/BLAS/SRC/cher.f
+++ b/BLAS/SRC/cher.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
@@ -65,8 +63,10 @@
*> ALPHA is REAL
*> On entry, ALPHA specifies the scalar alpha.
*> \endverbatim
+*>
+*> \param[in] X
*> \verbatim
-*> X COMPLEX array of dimension at least
+*> X is COMPLEX array of dimension at least
*> ( 1 + ( n - 1 )*abs( INCX ) ).
*> Before entry, the incremented array X must contain the n
*> element vector x.
diff --git a/BLAS/SRC/cher2.f b/BLAS/SRC/cher2.f
index ee6e3a44..9324e3af 100644
--- a/BLAS/SRC/cher2.f
+++ b/BLAS/SRC/cher2.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
@@ -65,8 +63,10 @@
*> ALPHA is COMPLEX
*> On entry, ALPHA specifies the scalar alpha.
*> \endverbatim
+*>
+*> \param[in] X
*> \verbatim
-*> X COMPLEX array of dimension at least
+*> X is COMPLEX array of dimension at least
*> ( 1 + ( n - 1 )*abs( INCX ) ).
*> Before entry, the incremented array X must contain the n
*> element vector x.
@@ -78,8 +78,10 @@
*> On entry, INCX specifies the increment for the elements of
*> X. INCX must not be zero.
*> \endverbatim
+*>
+*> \param[in] Y
*> \verbatim
-*> Y COMPLEX array of dimension at least
+*> Y is COMPLEX array of dimension at least
*> ( 1 + ( n - 1 )*abs( INCY ) ).
*> Before entry, the incremented array Y must contain the n
*> element vector y.
diff --git a/BLAS/SRC/cher2k.f b/BLAS/SRC/cher2k.f
index 3a386fc8..9ba1295d 100644
--- a/BLAS/SRC/cher2k.f
+++ b/BLAS/SRC/cher2k.f
@@ -49,12 +49,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -64,13 +62,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*B**H +
*> conjg( alpha )*B*A**H +
*> beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' C := alpha*A**H*B +
*> conjg( alpha )*B**H*A +
*> beta*C.
diff --git a/BLAS/SRC/cherk.f b/BLAS/SRC/cherk.f
index 66913b6e..addbefb4 100644
--- a/BLAS/SRC/cherk.f
+++ b/BLAS/SRC/cherk.f
@@ -48,12 +48,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -63,11 +61,9 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*A**H + beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' C := alpha*A**H*A + beta*C.
*> \endverbatim
*>
diff --git a/BLAS/SRC/chpmv.f b/BLAS/SRC/chpmv.f
index 857293aa..8128ca6f 100644
--- a/BLAS/SRC/chpmv.f
+++ b/BLAS/SRC/chpmv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
diff --git a/BLAS/SRC/chpr.f b/BLAS/SRC/chpr.f
index 1cdcf62f..3101ccdc 100644
--- a/BLAS/SRC/chpr.f
+++ b/BLAS/SRC/chpr.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
diff --git a/BLAS/SRC/chpr2.f b/BLAS/SRC/chpr2.f
index 2a44bb95..d3242110 100644
--- a/BLAS/SRC/chpr2.f
+++ b/BLAS/SRC/chpr2.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
@@ -80,8 +78,10 @@
*> On entry, INCX specifies the increment for the elements of
*> X. INCX must not be zero.
*> \endverbatim
+*>
+*> \param[in] Y
*> \verbatim
-*> Y COMPLEX array of dimension at least
+*> Y is COMPLEX array of dimension at least
*> ( 1 + ( n - 1 )*abs( INCY ) ).
*> Before entry, the incremented array Y must contain the n
*> element vector y.
diff --git a/BLAS/SRC/csymm.f b/BLAS/SRC/csymm.f
index 326dcf0d..f229c489 100644
--- a/BLAS/SRC/csymm.f
+++ b/BLAS/SRC/csymm.f
@@ -46,11 +46,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether the symmetric matrix A
*> appears on the left or right in the operation as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
*> \endverbatim
*>
@@ -60,12 +58,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the symmetric matrix A is to be
*> referenced as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of the
*> symmetric matrix is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of the
*> symmetric matrix is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/csyr2k.f b/BLAS/SRC/csyr2k.f
index 0b424b45..d37e6431 100644
--- a/BLAS/SRC/csyr2k.f
+++ b/BLAS/SRC/csyr2k.f
@@ -48,12 +48,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -63,12 +61,10 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T +
*> beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A +
*> beta*C.
*> \endverbatim
@@ -94,8 +90,10 @@
*> ALPHA is COMPLEX
*> On entry, ALPHA specifies the scalar alpha.
*> \endverbatim
+*>
+*> \param[in] A
*> \verbatim
-*> A COMPLEX array of DIMENSION ( LDA, ka ), where ka is
+*> A is COMPLEX array of DIMENSION ( LDA, ka ), where ka is
*> k when TRANS = 'N' or 'n', and is n otherwise.
*> Before entry with TRANS = 'N' or 'n', the leading n by k
*> part of the array A must contain the matrix A, otherwise
diff --git a/BLAS/SRC/csyrk.f b/BLAS/SRC/csyrk.f
index be0a0b93..744e7f33 100644
--- a/BLAS/SRC/csyrk.f
+++ b/BLAS/SRC/csyrk.f
@@ -48,12 +48,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -63,11 +61,9 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' C := alpha*A**T*A + beta*C.
*> \endverbatim
*>
diff --git a/BLAS/SRC/ctbmv.f b/BLAS/SRC/ctbmv.f
index 1a7820e2..18214c21 100644
--- a/BLAS/SRC/ctbmv.f
+++ b/BLAS/SRC/ctbmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**H*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
@@ -109,16 +102,14 @@
*> The following program segment will transfer an upper
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the matrix of coefficients, supplied column by
@@ -129,16 +120,14 @@
*> The following program segment will transfer a lower
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Note that when DIAG = 'U' or 'u' the elements of the array A
*> corresponding to the diagonal elements of the matrix are not
*> referenced, but are assumed to be unity.
diff --git a/BLAS/SRC/ctbsv.f b/BLAS/SRC/ctbsv.f
index f7eb02c5..8a70301d 100644
--- a/BLAS/SRC/ctbsv.f
+++ b/BLAS/SRC/ctbsv.f
@@ -45,11 +45,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -58,14 +56,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**H*x = b.
*> \endverbatim
*>
@@ -74,11 +69,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
@@ -113,16 +106,14 @@
*> The following program segment will transfer an upper
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the matrix of coefficients, supplied column by
@@ -133,16 +124,14 @@
*> The following program segment will transfer a lower
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Note that when DIAG = 'U' or 'u' the elements of the array A
*> corresponding to the diagonal elements of the matrix are not
*> referenced, but are assumed to be unity.
diff --git a/BLAS/SRC/ctpmv.f b/BLAS/SRC/ctpmv.f
index d20c624f..ad6e9b34 100644
--- a/BLAS/SRC/ctpmv.f
+++ b/BLAS/SRC/ctpmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**H*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/ctpsv.f b/BLAS/SRC/ctpsv.f
index 5fba7a90..fd2d0d1d 100644
--- a/BLAS/SRC/ctpsv.f
+++ b/BLAS/SRC/ctpsv.f
@@ -44,11 +44,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -57,14 +55,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**H*x = b.
*> \endverbatim
*>
@@ -73,11 +68,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/ctrmm.f b/BLAS/SRC/ctrmm.f
index 8d95a5e7..28a6d7d3 100644
--- a/BLAS/SRC/ctrmm.f
+++ b/BLAS/SRC/ctrmm.f
@@ -44,11 +44,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether op( A ) multiplies B from
*> the left or right as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' B := alpha*op( A )*B.
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' B := alpha*B*op( A ).
*> \endverbatim
*>
@@ -57,11 +55,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix A is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -70,14 +66,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n' op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't' op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c' op( A ) = A**H.
*> \endverbatim
*>
@@ -86,11 +79,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit triangular
*> as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/ctrmv.f b/BLAS/SRC/ctrmv.f
index f432c96f..734bcd0b 100644
--- a/BLAS/SRC/ctrmv.f
+++ b/BLAS/SRC/ctrmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**H*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/ctrsm.f b/BLAS/SRC/ctrsm.f
index 3fd4635e..93823f02 100644
--- a/BLAS/SRC/ctrsm.f
+++ b/BLAS/SRC/ctrsm.f
@@ -46,11 +46,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether op( A ) appears on the left
*> or right of X as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' op( A )*X = alpha*B.
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' X*op( A ) = alpha*B.
*> \endverbatim
*>
@@ -59,11 +57,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix A is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -72,14 +68,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n' op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't' op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c' op( A ) = A**H.
*> \endverbatim
*>
@@ -88,11 +81,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit triangular
*> as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/ctrsv.f b/BLAS/SRC/ctrsv.f
index 52fdb37b..05e7c4e9 100644
--- a/BLAS/SRC/ctrsv.f
+++ b/BLAS/SRC/ctrsv.f
@@ -44,11 +44,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -57,14 +55,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**H*x = b.
*> \endverbatim
*>
@@ -73,11 +68,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/dgbmv.f b/BLAS/SRC/dgbmv.f
index 92dacb42..198b0ab7 100644
--- a/BLAS/SRC/dgbmv.f
+++ b/BLAS/SRC/dgbmv.f
@@ -42,14 +42,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y.
*> \endverbatim
*>
@@ -101,8 +98,7 @@
*> are not referenced.
*> The following program segment will transfer a band matrix
*> from conventional full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> K = KU + 1 - J
*> DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
diff --git a/BLAS/SRC/dgemm.f b/BLAS/SRC/dgemm.f
index 64737822..e8aa6a4b 100644
--- a/BLAS/SRC/dgemm.f
+++ b/BLAS/SRC/dgemm.f
@@ -46,14 +46,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n', op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't', op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c', op( A ) = A**T.
*> \endverbatim
*>
@@ -62,14 +59,11 @@
*> TRANSB is CHARACTER*1
*> On entry, TRANSB specifies the form of op( B ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'N' or 'n', op( B ) = B.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'T' or 't', op( B ) = B**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'C' or 'c', op( B ) = B**T.
*> \endverbatim
*>
diff --git a/BLAS/SRC/dgemv.f b/BLAS/SRC/dgemv.f
index c428737a..ef42e93f 100644
--- a/BLAS/SRC/dgemv.f
+++ b/BLAS/SRC/dgemv.f
@@ -42,14 +42,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y.
*> \endverbatim
*>
diff --git a/BLAS/SRC/dsbmv.f b/BLAS/SRC/dsbmv.f
index 09c53e1f..128864f9 100644
--- a/BLAS/SRC/dsbmv.f
+++ b/BLAS/SRC/dsbmv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the band matrix A is being supplied as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> being supplied.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> being supplied.
*> \endverbatim
@@ -86,16 +84,14 @@
*> The following program segment will transfer the upper
*> triangular part of a symmetric band matrix from conventional
*> full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the symmetric matrix, supplied column by
@@ -106,8 +102,7 @@
*> The following program segment will transfer the lower
*> triangular part of a symmetric band matrix from conventional
*> full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
diff --git a/BLAS/SRC/dsdot.f b/BLAS/SRC/dsdot.f
index cb8de30c..a6f4ea88 100644
--- a/BLAS/SRC/dsdot.f
+++ b/BLAS/SRC/dsdot.f
@@ -70,7 +70,7 @@
*> storage spacing between elements of SY
*> \endverbatim
*>
-*> \param[out] DSDOT
+*> \result DSDOT
*> \verbatim
*> DSDOT is DOUBLE PRECISION
*> DSDOT double precision dot product (zero if N.LE.0)
diff --git a/BLAS/SRC/dspmv.f b/BLAS/SRC/dspmv.f
index b0c0ceda..ddebd55d 100644
--- a/BLAS/SRC/dspmv.f
+++ b/BLAS/SRC/dspmv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
diff --git a/BLAS/SRC/dspr.f b/BLAS/SRC/dspr.f
index 87fd3bc8..543dce9b 100644
--- a/BLAS/SRC/dspr.f
+++ b/BLAS/SRC/dspr.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
diff --git a/BLAS/SRC/dspr2.f b/BLAS/SRC/dspr2.f
index 54553ec1..cae156bd 100644
--- a/BLAS/SRC/dspr2.f
+++ b/BLAS/SRC/dspr2.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
diff --git a/BLAS/SRC/dsymm.f b/BLAS/SRC/dsymm.f
index f3537fa9..3a1710f6 100644
--- a/BLAS/SRC/dsymm.f
+++ b/BLAS/SRC/dsymm.f
@@ -46,11 +46,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether the symmetric matrix A
*> appears on the left or right in the operation as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
*> \endverbatim
*>
@@ -60,12 +58,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the symmetric matrix A is to be
*> referenced as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of the
*> symmetric matrix is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of the
*> symmetric matrix is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/dsymv.f b/BLAS/SRC/dsymv.f
index 5dfc7ea9..f919dbcd 100644
--- a/BLAS/SRC/dsymv.f
+++ b/BLAS/SRC/dsymv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/dsyr.f b/BLAS/SRC/dsyr.f
index 81a01078..73ed1e51 100644
--- a/BLAS/SRC/dsyr.f
+++ b/BLAS/SRC/dsyr.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/dsyr2.f b/BLAS/SRC/dsyr2.f
index 7b72a342..f6686944 100644
--- a/BLAS/SRC/dsyr2.f
+++ b/BLAS/SRC/dsyr2.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/dsyr2k.f b/BLAS/SRC/dsyr2k.f
index 3c2de59a..409f7e31 100644
--- a/BLAS/SRC/dsyr2k.f
+++ b/BLAS/SRC/dsyr2k.f
@@ -48,12 +48,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -63,16 +61,13 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T +
*> beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A +
*> beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' C := alpha*A**T*B + alpha*B**T*A +
*> beta*C.
*> \endverbatim
diff --git a/BLAS/SRC/dsyrk.f b/BLAS/SRC/dsyrk.f
index df232ff4..73f2a661 100644
--- a/BLAS/SRC/dsyrk.f
+++ b/BLAS/SRC/dsyrk.f
@@ -48,12 +48,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -63,14 +61,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' C := alpha*A**T*A + beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' C := alpha*A**T*A + beta*C.
*> \endverbatim
*>
diff --git a/BLAS/SRC/dtbmv.f b/BLAS/SRC/dtbmv.f
index ad062ca9..2b7ed080 100644
--- a/BLAS/SRC/dtbmv.f
+++ b/BLAS/SRC/dtbmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**T*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
@@ -109,16 +102,14 @@
*> The following program segment will transfer an upper
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the matrix of coefficients, supplied column by
@@ -129,16 +120,14 @@
*> The following program segment will transfer a lower
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Note that when DIAG = 'U' or 'u' the elements of the array A
*> corresponding to the diagonal elements of the matrix are not
*> referenced, but are assumed to be unity.
diff --git a/BLAS/SRC/dtbsv.f b/BLAS/SRC/dtbsv.f
index 9a2b8429..e80fe009 100644
--- a/BLAS/SRC/dtbsv.f
+++ b/BLAS/SRC/dtbsv.f
@@ -45,11 +45,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -58,14 +56,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**T*x = b.
*> \endverbatim
*>
@@ -74,11 +69,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
@@ -113,16 +106,14 @@
*> The following program segment will transfer an upper
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the matrix of coefficients, supplied column by
@@ -133,16 +124,14 @@
*> The following program segment will transfer a lower
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Note that when DIAG = 'U' or 'u' the elements of the array A
*> corresponding to the diagonal elements of the matrix are not
*> referenced, but are assumed to be unity.
diff --git a/BLAS/SRC/dtpmv.f b/BLAS/SRC/dtpmv.f
index b11f4dbe..9f643dc7 100644
--- a/BLAS/SRC/dtpmv.f
+++ b/BLAS/SRC/dtpmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**T*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/dtpsv.f b/BLAS/SRC/dtpsv.f
index bd7c5ec3..937afcca 100644
--- a/BLAS/SRC/dtpsv.f
+++ b/BLAS/SRC/dtpsv.f
@@ -44,11 +44,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -57,14 +55,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**T*x = b.
*> \endverbatim
*>
@@ -73,11 +68,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/dtrmm.f b/BLAS/SRC/dtrmm.f
index 9e4cc226..71a7e0d6 100644
--- a/BLAS/SRC/dtrmm.f
+++ b/BLAS/SRC/dtrmm.f
@@ -44,11 +44,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether op( A ) multiplies B from
*> the left or right as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' B := alpha*op( A )*B.
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' B := alpha*B*op( A ).
*> \endverbatim
*>
@@ -57,11 +55,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix A is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -70,14 +66,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n' op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't' op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c' op( A ) = A**T.
*> \endverbatim
*>
@@ -86,11 +79,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit triangular
*> as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
@@ -116,8 +107,10 @@
*> zero then A is not referenced and B need not be set before
*> entry.
*> \endverbatim
+*>
+*> \param[in] A
*> \verbatim
-*> A DOUBLE PRECISION array of DIMENSION ( LDA, k ), where k is m
+*> A is DOUBLE PRECISION array of DIMENSION ( LDA, k ), where k is m
*> when SIDE = 'L' or 'l' and is n when SIDE = 'R' or 'r'.
*> Before entry with UPLO = 'U' or 'u', the leading k by k
*> upper triangular part of the array A must contain the upper
diff --git a/BLAS/SRC/dtrmv.f b/BLAS/SRC/dtrmv.f
index c4864bf5..7bb9d748 100644
--- a/BLAS/SRC/dtrmv.f
+++ b/BLAS/SRC/dtrmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**T*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/dtrsm.f b/BLAS/SRC/dtrsm.f
index 3a91fd43..6adb99eb 100644
--- a/BLAS/SRC/dtrsm.f
+++ b/BLAS/SRC/dtrsm.f
@@ -46,11 +46,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether op( A ) appears on the left
*> or right of X as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' op( A )*X = alpha*B.
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' X*op( A ) = alpha*B.
*> \endverbatim
*>
@@ -59,11 +57,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix A is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -72,14 +68,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n' op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't' op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c' op( A ) = A**T.
*> \endverbatim
*>
@@ -88,11 +81,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit triangular
*> as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/dtrsv.f b/BLAS/SRC/dtrsv.f
index 4a0845b7..ce82d7de 100644
--- a/BLAS/SRC/dtrsv.f
+++ b/BLAS/SRC/dtrsv.f
@@ -44,11 +44,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -57,14 +55,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**T*x = b.
*> \endverbatim
*>
@@ -73,11 +68,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
@@ -126,11 +119,9 @@
*> INCX is INTEGER
*> On entry, INCX specifies the increment for the elements of
*> X. INCX must not be zero.
-*> \endverbatim
-*> \verbatim
+*>
*> Level 2 Blas routine.
-*> \endverbatim
-*> \verbatim
+*>
*> -- Written on 22-October-1986.
*> Jack Dongarra, Argonne National Lab.
*> Jeremy Du Croz, Nag Central Office.
diff --git a/BLAS/SRC/sgbmv.f b/BLAS/SRC/sgbmv.f
index 774dcda0..fde4e37a 100644
--- a/BLAS/SRC/sgbmv.f
+++ b/BLAS/SRC/sgbmv.f
@@ -42,14 +42,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y.
*> \endverbatim
*>
@@ -101,8 +98,7 @@
*> are not referenced.
*> The following program segment will transfer a band matrix
*> from conventional full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> K = KU + 1 - J
*> DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
diff --git a/BLAS/SRC/sgemm.f b/BLAS/SRC/sgemm.f
index 8ef99eac..7708dc92 100644
--- a/BLAS/SRC/sgemm.f
+++ b/BLAS/SRC/sgemm.f
@@ -46,14 +46,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n', op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't', op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c', op( A ) = A**T.
*> \endverbatim
*>
@@ -62,14 +59,11 @@
*> TRANSB is CHARACTER*1
*> On entry, TRANSB specifies the form of op( B ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'N' or 'n', op( B ) = B.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'T' or 't', op( B ) = B**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'C' or 'c', op( B ) = B**T.
*> \endverbatim
*>
diff --git a/BLAS/SRC/sgemv.f b/BLAS/SRC/sgemv.f
index 315a6822..ba1d3fac 100644
--- a/BLAS/SRC/sgemv.f
+++ b/BLAS/SRC/sgemv.f
@@ -42,14 +42,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' y := alpha*A**T*x + beta*y.
*> \endverbatim
*>
diff --git a/BLAS/SRC/sger.f b/BLAS/SRC/sger.f
index 46ff76fb..c34a2a91 100644
--- a/BLAS/SRC/sger.f
+++ b/BLAS/SRC/sger.f
@@ -55,8 +55,10 @@
*> ALPHA is REAL
*> On entry, ALPHA specifies the scalar alpha.
*> \endverbatim
+*>
+*> \param[in] X
*> \verbatim
-*> X REAL array of dimension at least
+*> X is REAL array of dimension at least
*> ( 1 + ( m - 1 )*abs( INCX ) ).
*> Before entry, the incremented array X must contain the m
*> element vector x.
diff --git a/BLAS/SRC/ssbmv.f b/BLAS/SRC/ssbmv.f
index 82f76ceb..c91cb18d 100644
--- a/BLAS/SRC/ssbmv.f
+++ b/BLAS/SRC/ssbmv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the band matrix A is being supplied as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> being supplied.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> being supplied.
*> \endverbatim
@@ -86,16 +84,14 @@
*> The following program segment will transfer the upper
*> triangular part of a symmetric band matrix from conventional
*> full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the symmetric matrix, supplied column by
@@ -106,8 +102,7 @@
*> The following program segment will transfer the lower
*> triangular part of a symmetric band matrix from conventional
*> full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
diff --git a/BLAS/SRC/sspmv.f b/BLAS/SRC/sspmv.f
index e2485a27..393700a4 100644
--- a/BLAS/SRC/sspmv.f
+++ b/BLAS/SRC/sspmv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
diff --git a/BLAS/SRC/sspr.f b/BLAS/SRC/sspr.f
index 55b120e8..4088b3f0 100644
--- a/BLAS/SRC/sspr.f
+++ b/BLAS/SRC/sspr.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
diff --git a/BLAS/SRC/sspr2.f b/BLAS/SRC/sspr2.f
index 6450dbcc..38466916 100644
--- a/BLAS/SRC/sspr2.f
+++ b/BLAS/SRC/sspr2.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
@@ -65,8 +63,10 @@
*> ALPHA is REAL
*> On entry, ALPHA specifies the scalar alpha.
*> \endverbatim
+*>
+*> \param[in] X
*> \verbatim
-*> X REAL array of dimension at least
+*> X is REAL array of dimension at least
*> ( 1 + ( n - 1 )*abs( INCX ) ).
*> Before entry, the incremented array X must contain the n
*> element vector x.
diff --git a/BLAS/SRC/ssymm.f b/BLAS/SRC/ssymm.f
index 2253c537..0fc8fc5c 100644
--- a/BLAS/SRC/ssymm.f
+++ b/BLAS/SRC/ssymm.f
@@ -46,11 +46,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether the symmetric matrix A
*> appears on the left or right in the operation as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
*> \endverbatim
*>
@@ -60,12 +58,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the symmetric matrix A is to be
*> referenced as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of the
*> symmetric matrix is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of the
*> symmetric matrix is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/ssymv.f b/BLAS/SRC/ssymv.f
index 6660a329..362a8f40 100644
--- a/BLAS/SRC/ssymv.f
+++ b/BLAS/SRC/ssymv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/ssyr.f b/BLAS/SRC/ssyr.f
index 05c49151..96fce78e 100644
--- a/BLAS/SRC/ssyr.f
+++ b/BLAS/SRC/ssyr.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/ssyr2.f b/BLAS/SRC/ssyr2.f
index b96e2184..88305522 100644
--- a/BLAS/SRC/ssyr2.f
+++ b/BLAS/SRC/ssyr2.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
@@ -65,8 +63,10 @@
*> ALPHA is REAL
*> On entry, ALPHA specifies the scalar alpha.
*> \endverbatim
+*>
+*> \param[in] X
*> \verbatim
-*> X REAL array of dimension at least
+*> X is REAL array of dimension at least
*> ( 1 + ( n - 1 )*abs( INCX ) ).
*> Before entry, the incremented array X must contain the n
*> element vector x.
diff --git a/BLAS/SRC/ssyr2k.f b/BLAS/SRC/ssyr2k.f
index a0bfee72..a7968577 100644
--- a/BLAS/SRC/ssyr2k.f
+++ b/BLAS/SRC/ssyr2k.f
@@ -48,12 +48,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -63,16 +61,13 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T +
*> beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A +
*> beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' C := alpha*A**T*B + alpha*B**T*A +
*> beta*C.
*> \endverbatim
diff --git a/BLAS/SRC/ssyrk.f b/BLAS/SRC/ssyrk.f
index 9d294f13..b38025b4 100644
--- a/BLAS/SRC/ssyrk.f
+++ b/BLAS/SRC/ssyrk.f
@@ -48,12 +48,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -63,14 +61,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' C := alpha*A**T*A + beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' C := alpha*A**T*A + beta*C.
*> \endverbatim
*>
diff --git a/BLAS/SRC/stbmv.f b/BLAS/SRC/stbmv.f
index 5c1190a8..ebd5f6f3 100644
--- a/BLAS/SRC/stbmv.f
+++ b/BLAS/SRC/stbmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**T*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
@@ -109,16 +102,14 @@
*> The following program segment will transfer an upper
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the matrix of coefficients, supplied column by
@@ -129,16 +120,14 @@
*> The following program segment will transfer a lower
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Note that when DIAG = 'U' or 'u' the elements of the array A
*> corresponding to the diagonal elements of the matrix are not
*> referenced, but are assumed to be unity.
diff --git a/BLAS/SRC/stbsv.f b/BLAS/SRC/stbsv.f
index 2bdb4824..f4e2688c 100644
--- a/BLAS/SRC/stbsv.f
+++ b/BLAS/SRC/stbsv.f
@@ -45,11 +45,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -58,14 +56,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**T*x = b.
*> \endverbatim
*>
@@ -74,11 +69,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
@@ -113,16 +106,14 @@
*> The following program segment will transfer an upper
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the matrix of coefficients, supplied column by
@@ -133,16 +124,14 @@
*> The following program segment will transfer a lower
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Note that when DIAG = 'U' or 'u' the elements of the array A
*> corresponding to the diagonal elements of the matrix are not
*> referenced, but are assumed to be unity.
diff --git a/BLAS/SRC/stpmv.f b/BLAS/SRC/stpmv.f
index a32cf73f..5dac03aa 100644
--- a/BLAS/SRC/stpmv.f
+++ b/BLAS/SRC/stpmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**T*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/stpsv.f b/BLAS/SRC/stpsv.f
index d54a5da4..d615193b 100644
--- a/BLAS/SRC/stpsv.f
+++ b/BLAS/SRC/stpsv.f
@@ -44,11 +44,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -57,14 +55,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**T*x = b.
*> \endverbatim
*>
@@ -73,11 +68,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/strmm.f b/BLAS/SRC/strmm.f
index c366891e..2a000630 100644
--- a/BLAS/SRC/strmm.f
+++ b/BLAS/SRC/strmm.f
@@ -44,11 +44,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether op( A ) multiplies B from
*> the left or right as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' B := alpha*op( A )*B.
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' B := alpha*B*op( A ).
*> \endverbatim
*>
@@ -57,11 +55,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix A is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -70,14 +66,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n' op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't' op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c' op( A ) = A**T.
*> \endverbatim
*>
@@ -86,11 +79,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit triangular
*> as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/strmv.f b/BLAS/SRC/strmv.f
index dcfa15d1..f3581cd5 100644
--- a/BLAS/SRC/strmv.f
+++ b/BLAS/SRC/strmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**T*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/strsm.f b/BLAS/SRC/strsm.f
index 0568d971..48f7dcf0 100644
--- a/BLAS/SRC/strsm.f
+++ b/BLAS/SRC/strsm.f
@@ -46,11 +46,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether op( A ) appears on the left
*> or right of X as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' op( A )*X = alpha*B.
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' X*op( A ) = alpha*B.
*> \endverbatim
*>
@@ -59,11 +57,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix A is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -72,14 +68,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n' op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't' op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c' op( A ) = A**T.
*> \endverbatim
*>
@@ -88,11 +81,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit triangular
*> as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/strsv.f b/BLAS/SRC/strsv.f
index c4b3f546..61a54c63 100644
--- a/BLAS/SRC/strsv.f
+++ b/BLAS/SRC/strsv.f
@@ -44,11 +44,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -57,14 +55,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**T*x = b.
*> \endverbatim
*>
@@ -73,11 +68,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/zgbmv.f b/BLAS/SRC/zgbmv.f
index 216cb5b8..77aff8d0 100644
--- a/BLAS/SRC/zgbmv.f
+++ b/BLAS/SRC/zgbmv.f
@@ -44,14 +44,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y.
*> \endverbatim
*>
@@ -103,8 +100,7 @@
*> are not referenced.
*> The following program segment will transfer a band matrix
*> from conventional full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> K = KU + 1 - J
*> DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
diff --git a/BLAS/SRC/zgemm.f b/BLAS/SRC/zgemm.f
index 6aaf515e..6f7fe980 100644
--- a/BLAS/SRC/zgemm.f
+++ b/BLAS/SRC/zgemm.f
@@ -46,14 +46,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n', op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't', op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c', op( A ) = A**H.
*> \endverbatim
*>
@@ -62,14 +59,11 @@
*> TRANSB is CHARACTER*1
*> On entry, TRANSB specifies the form of op( B ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'N' or 'n', op( B ) = B.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'T' or 't', op( B ) = B**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSB = 'C' or 'c', op( B ) = B**H.
*> \endverbatim
*>
diff --git a/BLAS/SRC/zgemv.f b/BLAS/SRC/zgemv.f
index 9eaf4450..b3ffbb84 100644
--- a/BLAS/SRC/zgemv.f
+++ b/BLAS/SRC/zgemv.f
@@ -44,14 +44,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' y := alpha*A*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' y := alpha*A**T*x + beta*y.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' y := alpha*A**H*x + beta*y.
*> \endverbatim
*>
diff --git a/BLAS/SRC/zhbmv.f b/BLAS/SRC/zhbmv.f
index 0adaec41..14f4fa87 100644
--- a/BLAS/SRC/zhbmv.f
+++ b/BLAS/SRC/zhbmv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the band matrix A is being supplied as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> being supplied.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> being supplied.
*> \endverbatim
@@ -86,16 +84,14 @@
*> The following program segment will transfer the upper
*> triangular part of a hermitian band matrix from conventional
*> full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the hermitian matrix, supplied column by
@@ -106,16 +102,14 @@
*> The following program segment will transfer the lower
*> triangular part of a hermitian band matrix from conventional
*> full matrix storage to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Note that the imaginary parts of the diagonal elements need
*> not be set and are assumed to be zero.
*> \endverbatim
diff --git a/BLAS/SRC/zhemm.f b/BLAS/SRC/zhemm.f
index 8d7218c3..608138c3 100644
--- a/BLAS/SRC/zhemm.f
+++ b/BLAS/SRC/zhemm.f
@@ -46,11 +46,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether the hermitian matrix A
*> appears on the left or right in the operation as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
*> \endverbatim
*>
@@ -60,12 +58,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the hermitian matrix A is to be
*> referenced as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of the
*> hermitian matrix is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of the
*> hermitian matrix is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/zhemv.f b/BLAS/SRC/zhemv.f
index c566a1fe..baa29300 100644
--- a/BLAS/SRC/zhemv.f
+++ b/BLAS/SRC/zhemv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/zher.f b/BLAS/SRC/zher.f
index b2af0227..5f684821 100644
--- a/BLAS/SRC/zher.f
+++ b/BLAS/SRC/zher.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/zher2.f b/BLAS/SRC/zher2.f
index 0c4f94d9..1b98c63a 100644
--- a/BLAS/SRC/zher2.f
+++ b/BLAS/SRC/zher2.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array A is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of A
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of A
*> is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/zher2k.f b/BLAS/SRC/zher2k.f
index bfcf27fd..b577e1b9 100644
--- a/BLAS/SRC/zher2k.f
+++ b/BLAS/SRC/zher2k.f
@@ -49,12 +49,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -64,13 +62,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*B**H +
*> conjg( alpha )*B*A**H +
*> beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' C := alpha*A**H*B +
*> conjg( alpha )*B**H*A +
*> beta*C.
diff --git a/BLAS/SRC/zherk.f b/BLAS/SRC/zherk.f
index f1795c40..cd4fed59 100644
--- a/BLAS/SRC/zherk.f
+++ b/BLAS/SRC/zherk.f
@@ -48,12 +48,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -63,11 +61,9 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*A**H + beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' C := alpha*A**H*A + beta*C.
*> \endverbatim
*>
diff --git a/BLAS/SRC/zhpmv.f b/BLAS/SRC/zhpmv.f
index 2304ed87..c81456f0 100644
--- a/BLAS/SRC/zhpmv.f
+++ b/BLAS/SRC/zhpmv.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
diff --git a/BLAS/SRC/zhpr.f b/BLAS/SRC/zhpr.f
index d80e359f..0b0bd68c 100644
--- a/BLAS/SRC/zhpr.f
+++ b/BLAS/SRC/zhpr.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
diff --git a/BLAS/SRC/zhpr2.f b/BLAS/SRC/zhpr2.f
index 0d0c4ea5..f160418b 100644
--- a/BLAS/SRC/zhpr2.f
+++ b/BLAS/SRC/zhpr2.f
@@ -43,12 +43,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the matrix A is supplied in the packed
*> array AP as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' The upper triangular part of A is
*> supplied in AP.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' The lower triangular part of A is
*> supplied in AP.
*> \endverbatim
diff --git a/BLAS/SRC/zsymm.f b/BLAS/SRC/zsymm.f
index 6ceda01d..57e70208 100644
--- a/BLAS/SRC/zsymm.f
+++ b/BLAS/SRC/zsymm.f
@@ -46,11 +46,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether the symmetric matrix A
*> appears on the left or right in the operation as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
*> \endverbatim
*>
@@ -60,12 +58,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the symmetric matrix A is to be
*> referenced as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of the
*> symmetric matrix is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of the
*> symmetric matrix is to be referenced.
*> \endverbatim
diff --git a/BLAS/SRC/zsyr2k.f b/BLAS/SRC/zsyr2k.f
index 898febce..5f88db42 100644
--- a/BLAS/SRC/zsyr2k.f
+++ b/BLAS/SRC/zsyr2k.f
@@ -48,12 +48,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -63,12 +61,10 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T +
*> beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A +
*> beta*C.
*> \endverbatim
diff --git a/BLAS/SRC/zsyrk.f b/BLAS/SRC/zsyrk.f
index db6d567a..8508988b 100644
--- a/BLAS/SRC/zsyrk.f
+++ b/BLAS/SRC/zsyrk.f
@@ -48,12 +48,10 @@
*> On entry, UPLO specifies whether the upper or lower
*> triangular part of the array C is to be referenced as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' Only the upper triangular part of C
*> is to be referenced.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' Only the lower triangular part of C
*> is to be referenced.
*> \endverbatim
@@ -63,11 +61,9 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' C := alpha*A*A**T + beta*C.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' C := alpha*A**T*A + beta*C.
*> \endverbatim
*>
diff --git a/BLAS/SRC/ztbmv.f b/BLAS/SRC/ztbmv.f
index 781ac531..690af3c6 100644
--- a/BLAS/SRC/ztbmv.f
+++ b/BLAS/SRC/ztbmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**H*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
@@ -109,16 +102,14 @@
*> The following program segment will transfer an upper
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the matrix of coefficients, supplied column by
@@ -129,16 +120,14 @@
*> The following program segment will transfer a lower
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Note that when DIAG = 'U' or 'u' the elements of the array A
*> corresponding to the diagonal elements of the matrix are not
*> referenced, but are assumed to be unity.
diff --git a/BLAS/SRC/ztbsv.f b/BLAS/SRC/ztbsv.f
index b4828146..7a7b02c2 100644
--- a/BLAS/SRC/ztbsv.f
+++ b/BLAS/SRC/ztbsv.f
@@ -45,11 +45,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -58,14 +56,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**H*x = b.
*> \endverbatim
*>
@@ -74,11 +69,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
@@ -113,16 +106,14 @@
*> The following program segment will transfer an upper
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = K + 1 - J
*> DO 10, I = MAX( 1, J - K ), J
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Before entry with UPLO = 'L' or 'l', the leading ( k + 1 )
*> by n part of the array A must contain the lower triangular
*> band part of the matrix of coefficients, supplied column by
@@ -133,16 +124,14 @@
*> The following program segment will transfer a lower
*> triangular band matrix from conventional full matrix storage
*> to band storage:
-*> \endverbatim
-*> \verbatim
+*>
*> DO 20, J = 1, N
*> M = 1 - J
*> DO 10, I = J, MIN( N, J + K )
*> A( M + I, J ) = matrix( I, J )
*> 10 CONTINUE
*> 20 CONTINUE
-*> \endverbatim
-*> \verbatim
+*>
*> Note that when DIAG = 'U' or 'u' the elements of the array A
*> corresponding to the diagonal elements of the matrix are not
*> referenced, but are assumed to be unity.
diff --git a/BLAS/SRC/ztpmv.f b/BLAS/SRC/ztpmv.f
index d4f71a47..d5d8da90 100644
--- a/BLAS/SRC/ztpmv.f
+++ b/BLAS/SRC/ztpmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**H*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/ztpsv.f b/BLAS/SRC/ztpsv.f
index e12c1e9c..94463428 100644
--- a/BLAS/SRC/ztpsv.f
+++ b/BLAS/SRC/ztpsv.f
@@ -44,11 +44,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -57,14 +55,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**H*x = b.
*> \endverbatim
*>
@@ -73,11 +68,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/ztrmm.f b/BLAS/SRC/ztrmm.f
index a54a53c1..16d6c95d 100644
--- a/BLAS/SRC/ztrmm.f
+++ b/BLAS/SRC/ztrmm.f
@@ -44,11 +44,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether op( A ) multiplies B from
*> the left or right as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' B := alpha*op( A )*B.
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' B := alpha*B*op( A ).
*> \endverbatim
*>
@@ -57,11 +55,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix A is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -70,14 +66,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n' op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't' op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c' op( A ) = A**H.
*> \endverbatim
*>
@@ -86,11 +79,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit triangular
*> as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/ztrmv.f b/BLAS/SRC/ztrmv.f
index 2c491498..ae8c40f6 100644
--- a/BLAS/SRC/ztrmv.f
+++ b/BLAS/SRC/ztrmv.f
@@ -41,11 +41,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -54,14 +52,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the operation to be performed as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' x := A*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' x := A**T*x.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' x := A**H*x.
*> \endverbatim
*>
@@ -70,11 +65,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/ztrsm.f b/BLAS/SRC/ztrsm.f
index fae9928a..f51fd2ab 100644
--- a/BLAS/SRC/ztrsm.f
+++ b/BLAS/SRC/ztrsm.f
@@ -46,11 +46,9 @@
*> SIDE is CHARACTER*1
*> On entry, SIDE specifies whether op( A ) appears on the left
*> or right of X as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'L' or 'l' op( A )*X = alpha*B.
-*> \endverbatim
-*> \verbatim
+*>
*> SIDE = 'R' or 'r' X*op( A ) = alpha*B.
*> \endverbatim
*>
@@ -59,11 +57,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix A is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -72,14 +68,11 @@
*> TRANSA is CHARACTER*1
*> On entry, TRANSA specifies the form of op( A ) to be used in
*> the matrix multiplication as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'N' or 'n' op( A ) = A.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'T' or 't' op( A ) = A**T.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANSA = 'C' or 'c' op( A ) = A**H.
*> \endverbatim
*>
@@ -88,11 +81,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit triangular
*> as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/BLAS/SRC/ztrsv.f b/BLAS/SRC/ztrsv.f
index 3696075b..8270da1d 100644
--- a/BLAS/SRC/ztrsv.f
+++ b/BLAS/SRC/ztrsv.f
@@ -44,11 +44,9 @@
*> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the matrix is an upper or
*> lower triangular matrix as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'U' or 'u' A is an upper triangular matrix.
-*> \endverbatim
-*> \verbatim
+*>
*> UPLO = 'L' or 'l' A is a lower triangular matrix.
*> \endverbatim
*>
@@ -57,14 +55,11 @@
*> TRANS is CHARACTER*1
*> On entry, TRANS specifies the equations to be solved as
*> follows:
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'N' or 'n' A*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'T' or 't' A**T*x = b.
-*> \endverbatim
-*> \verbatim
+*>
*> TRANS = 'C' or 'c' A**H*x = b.
*> \endverbatim
*>
@@ -73,11 +68,9 @@
*> DIAG is CHARACTER*1
*> On entry, DIAG specifies whether or not A is unit
*> triangular as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'U' or 'u' A is assumed to be unit triangular.
-*> \endverbatim
-*> \verbatim
+*>
*> DIAG = 'N' or 'n' A is not assumed to be unit
*> triangular.
*> \endverbatim
diff --git a/DOCS/Doxyfile b/DOCS/Doxyfile
index 9eef1d8a..06c59408 100644
--- a/DOCS/Doxyfile
+++ b/DOCS/Doxyfile
@@ -45,7 +45,7 @@ PROJECT_BRIEF = "LAPACK: Linear Algebra PACKage"
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
# Doxygen will copy the logo to the output directory.
-PROJECT_LOGO =
+PROJECT_LOGO = DOCS/lapack.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
@@ -193,7 +193,8 @@ TAB_SIZE = 8
# will result in a user-defined paragraph with heading "Side Effects:".
# You can put \n's in the value part of an alias to insert newlines.
-ALIASES =
+ALIASES = "purpose=\details \b Purpose"
+#ALIASES += "FurtherDetails=\details \b Further \b Details"
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
# sources only. Doxygen will then generate output that is more tailored for C.
@@ -617,7 +618,7 @@ WARN_FORMAT = "$file:$line: $text"
# and error messages should be written. If left blank the output is written
# to stderr.
-WARN_LOGFILE =
+WARN_LOGFILE = output_err
#---------------------------------------------------------------------------
# configuration options related to the input files
@@ -660,7 +661,15 @@ RECURSIVE = YES
# subdirectory from a directory tree whose root is specified with the INPUT tag.
# Note that relative paths are relative to directory from which doxygen is run.
-EXCLUDE = CMAKE
+EXCLUDE = CMAKE \
+ DOCS \
+ .svn \
+ SRC/.svn \
+ INSTALL/.svn \
+ TESTING/.svn \
+ TESTING/EIG/.svn \
+ TESTING/MATGEN/.svn \
+ TESTING/LIN/.svn \
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
@@ -1346,7 +1355,7 @@ MAN_EXTENSION = .3
# only source the real man page, but without them the man command
# would be unable to find the correct page. The default is NO.
-MAN_LINKS = NO
+MAN_LINKS = YES
#---------------------------------------------------------------------------
# configuration options related to the XML output
@@ -1677,7 +1686,7 @@ DIRECTORY_GRAPH = YES
# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible in IE 9+ (other browsers do not have this requirement).
-DOT_IMAGE_FORMAT = png
+DOT_IMAGE_FORMAT = svg
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
diff --git a/INSTALL/dlamchf77.f b/INSTALL/dlamchf77.f
index 885ef1ec..5c848214 100644
--- a/INSTALL/dlamchf77.f
+++ b/INSTALL/dlamchf77.f
@@ -192,7 +192,7 @@
*> DLAMC1 determines the machine parameters given by BETA, T, RND, and
*> IEEE1.
*>
-*>\verbatim
+*>\endverbatim
*>
*> \param[out] BETA
*> \verbatim
@@ -417,11 +417,7 @@
*> \param[out] EPS
*> \verbatim
*> The smallest positive number such that
-*> \endverbatim
-*> \verbatim
*> fl( 1.0 - EPS ) .LT. 1.0,
-*> \endverbatim
-*> \verbatim
*> where fl denotes the computed value.
*> \endverbatim
*>
diff --git a/INSTALL/slamchf77.f b/INSTALL/slamchf77.f
index 7d3c01b2..71baea2a 100644
--- a/INSTALL/slamchf77.f
+++ b/INSTALL/slamchf77.f
@@ -198,7 +198,7 @@
*> SLAMC1 determines the machine parameters given by BETA, T, RND, and
*> IEEE1.
*>
-*>\verbatim
+*>\endverbatim
*>
*> \param[out] BETA
*> \verbatim
@@ -423,11 +423,7 @@
*> \param[out] EPS
*> \verbatim
*> The smallest positive number such that
-*> \endverbatim
-*> \verbatim
*> fl( 1.0 - EPS ) .LT. 1.0,
-*> \endverbatim
-*> \verbatim
*> where fl denotes the computed value.
*> \endverbatim
*>
diff --git a/SRC/cbbcsd.f b/SRC/cbbcsd.f
index 18568579..410d6d2d 100644
--- a/SRC/cbbcsd.f
+++ b/SRC/cbbcsd.f
@@ -236,6 +236,40 @@
*> partially reduced top-right block.
*> \endverbatim
*>
+*> \param[out] B21D
+*> \verbatim
+*> B21D is REAL array, dimension (Q)
+*> When CBBCSD converges, B21D contains the negative sines of
+*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then
+*> B21D contains the diagonal of the partially reduced bottom-left
+*> block.
+*> \endverbatim
+*>
+*> \param[out] B21E
+*> \verbatim
+*> B21E is REAL array, dimension (Q-1)
+*> When CBBCSD converges, B21E contains zeros. If CBBCSD fails
+*> to converge, then B21E contains the subdiagonal of the
+*> partially reduced bottom-left block.
+*> \endverbatim
+*>
+*> \param[out] B22D
+*> \verbatim
+*> B22D is REAL array, dimension (Q)
+*> When CBBCSD converges, B22D contains the negative sines of
+*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then
+*> B22D contains the diagonal of the partially reduced bottom-right
+*> block.
+*> \endverbatim
+*>
+*> \param[out] B22E
+*> \verbatim
+*> B22E is REAL array, dimension (Q-1)
+*> When CBBCSD converges, B22E contains zeros. If CBBCSD fails
+*> to converge, then B22E contains the subdiagonal of the
+*> partially reduced bottom-right block.
+*> \endverbatim
+*>
*> \param[out] RWORK
*> \verbatim
*> RWORK is REAL array, dimension (MAX(1,LWORK))
diff --git a/SRC/cgbsv.f b/SRC/cgbsv.f
index 3feb6765..fa558b96 100644
--- a/SRC/cgbsv.f
+++ b/SRC/cgbsv.f
@@ -1,4 +1,4 @@
-*> \brief <b> CGBSV computes the solution to system of linear equations A * X = B for GB matrices</b>
+*> \brief <b> CGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> (simple driver)
*
* =========== DOCUMENTATION ===========
*
diff --git a/SRC/cgebal.f b/SRC/cgebal.f
index 045bd138..a684a4b3 100644
--- a/SRC/cgebal.f
+++ b/SRC/cgebal.f
@@ -65,37 +65,36 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the input matrix A.
+*> On exit, A is overwritten by the balanced matrix.
+*> If JOB = 'N', A is not referenced.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> ILO (output) INTEGER
-*>
-*> IHI (output) INTEGER
+*> \param[out] ILO
+*> \verbatim
+*> ILO is INTEGER
+*> \endverbatim
+*> \param[out] IHI
+*> \verbatim
+*> IHI is INTEGER
*> ILO and IHI are set to integers such that on exit
*> A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I = IHI+1,...,N.
*> If JOB = 'N' or 'S', ILO = 1 and IHI = N.
+*> \endverbatim
*>
-*> SCALE (output) REAL array, dimension (N)
+*> \param[out] SCALE
+*> \verbatim
+*> SCALE is REAL array, dimension (N)
*> Details of the permutations and scaling factors applied to
*> A. If P(j) is the index of the row and column interchanged
*> with row and column j and D(j) is the scaling factor
@@ -105,11 +104,33 @@
*> = P(j) for j = IHI+1,...,N.
*> The order in which the interchanges are made is N to IHI+1,
*> then 1 to ILO-1.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit.
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The permutations consist of row and column interchanges which put
*> the matrix in the form
diff --git a/SRC/cgebd2.f b/SRC/cgebd2.f
index 1b47e91b..12453e55 100644
--- a/SRC/cgebd2.f
+++ b/SRC/cgebd2.f
@@ -54,52 +54,94 @@
*> The number of columns in the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the m by n general matrix to be reduced.
+*> On exit,
+*> if m >= n, the diagonal and the first superdiagonal are
+*> overwritten with the upper bidiagonal matrix B; the
+*> elements below the diagonal, with the array TAUQ, represent
+*> the unitary matrix Q as a product of elementary
+*> reflectors, and the elements above the first superdiagonal,
+*> with the array TAUP, represent the unitary matrix P as
+*> a product of elementary reflectors;
+*> if m < n, the diagonal and the first subdiagonal are
+*> overwritten with the lower bidiagonal matrix B; the
+*> elements below the first subdiagonal, with the array TAUQ,
+*> represent the unitary matrix Q as a product of
+*> elementary reflectors, and the elements above the diagonal,
+*> with the array TAUP, represent the unitary matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) REAL array, dimension (min(M,N))
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (min(M,N))
*> The diagonal elements of the bidiagonal matrix B:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) REAL array, dimension (min(M,N)-1)
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (min(M,N)-1)
*> The off-diagonal elements of the bidiagonal matrix B:
*> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
*> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*> \endverbatim
*>
-*> TAUQ (output) COMPLEX array dimension (min(M,N))
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is COMPLEX array dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) COMPLEX array, dimension (min(M,N))
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is COMPLEX array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix P. See Further Details.
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX array, dimension (max(M,N))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (max(M,N))
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexGEcomputational
+* @precisions normal c -> s d z
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/cgebrd.f b/SRC/cgebrd.f
index 5368f1fd..e80f8077 100644
--- a/SRC/cgebrd.f
+++ b/SRC/cgebrd.f
@@ -56,50 +56,72 @@
*> The number of columns in the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the M-by-N general matrix to be reduced.
+*> On exit,
+*> if m >= n, the diagonal and the first superdiagonal are
+*> overwritten with the upper bidiagonal matrix B; the
+*> elements below the diagonal, with the array TAUQ, represent
+*> the unitary matrix Q as a product of elementary
+*> reflectors, and the elements above the first superdiagonal,
+*> with the array TAUP, represent the unitary matrix P as
+*> a product of elementary reflectors;
+*> if m < n, the diagonal and the first subdiagonal are
+*> overwritten with the lower bidiagonal matrix B; the
+*> elements below the first subdiagonal, with the array TAUQ,
+*> represent the unitary matrix Q as a product of
+*> elementary reflectors, and the elements above the diagonal,
+*> with the array TAUP, represent the unitary matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) REAL array, dimension (min(M,N))
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (min(M,N))
*> The diagonal elements of the bidiagonal matrix B:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) REAL array, dimension (min(M,N)-1)
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (min(M,N)-1)
*> The off-diagonal elements of the bidiagonal matrix B:
*> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
*> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*> \endverbatim
*>
-*> TAUQ (output) COMPLEX array dimension (min(M,N))
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is COMPLEX array dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) COMPLEX array, dimension (min(M,N))
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is COMPLEX array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix P. See Further Details.
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The length of the array WORK. LWORK >= max(1,M,N).
*> For optimum performance LWORK >= (M+N)*NB, where NB
*> is the optimal blocksize.
@@ -108,11 +130,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit.
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/cgees.f b/SRC/cgees.f
index 3b5e96be..4d7de6f7 100644
--- a/SRC/cgees.f
+++ b/SRC/cgees.f
@@ -47,7 +47,7 @@
*> Schur form so that selected eigenvalues are at the top left.
*> The leading columns of Z then form an orthonormal basis for the
*> invariant subspace corresponding to the selected eigenvalues.
-
+*>
*> A complex matrix is in Schur form if it is upper triangular.
*>
*>\endverbatim
diff --git a/SRC/cgehd2.f b/SRC/cgehd2.f
index 96ec3ca7..c6cf9e6e 100644
--- a/SRC/cgehd2.f
+++ b/SRC/cgehd2.f
@@ -45,48 +45,76 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] ILO
+*> \verbatim
+*> ILO is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHI
*> \verbatim
-* set to 1 and N respectively. See Further Details.
+*> IHI is INTEGER
+*>
+*> It is assumed that A is already upper triangular in rows
+*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+*> set by a previous call to CGEBAL; otherwise they should be
+*> set to 1 and N respectively. See Further Details.
*> 1 <= ILO <= IHI <= max(1,N).
+*> \endverbatim
*>
-*> A (input/output) COMPLEX array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N)
*> On entry, the n by n general matrix to be reduced.
*> On exit, the upper triangle and the first subdiagonal of A
*> are overwritten with the upper Hessenberg matrix H, and the
*> elements below the first subdiagonal, with the array TAU,
*> represent the unitary matrix Q as a product of elementary
*> reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> TAU (output) COMPLEX array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX array, dimension (N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of (ihi-ilo) elementary
*> reflectors
diff --git a/SRC/cgehrd.f b/SRC/cgehrd.f
index dcda32b4..19bcf5ad 100644
--- a/SRC/cgehrd.f
+++ b/SRC/cgehrd.f
@@ -45,60 +45,92 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] ILO
*> \verbatim
-* set to 1 and N respectively. See Further Details.
+*> ILO is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHI
+*> \verbatim
+*> IHI is INTEGER
+*>
+*> It is assumed that A is already upper triangular in rows
+*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+*> set by a previous call to CGEBAL; otherwise they should be
+*> set to 1 and N respectively. See Further Details.
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*> \endverbatim
*>
-*> A (input/output) COMPLEX array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N)
*> On entry, the N-by-N general matrix to be reduced.
*> On exit, the upper triangle and the first subdiagonal of A
*> are overwritten with the upper Hessenberg matrix H, and the
*> elements below the first subdiagonal, with the array TAU,
*> represent the unitary matrix Q as a product of elementary
*> reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> TAU (output) COMPLEX array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to
*> zero.
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX array, dimension (LWORK)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (LWORK)
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The length of the array WORK. LWORK >= max(1,N).
*> For optimum performance LWORK >= N*NB, where NB is the
*> optimal blocksize.
-*>
+*> \endverbatim
+*> \verbatim
*> If LWORK = -1, then a workspace query is assumed; the routine
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of (ihi-ilo) elementary
*> reflectors
diff --git a/SRC/cgelq2.f b/SRC/cgelq2.f
index 258cfaa9..455bc6cf 100644
--- a/SRC/cgelq2.f
+++ b/SRC/cgelq2.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and below the diagonal of the array
+*> contain the m by min(m,n) lower trapezoidal matrix L (L is
+*> lower triangular if m <= n); the elements above the diagonal,
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (M)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) COMPLEX array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) COMPLEX array, dimension (M)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/cgelqf.f b/SRC/cgelqf.f
index 8aa54eba..e6addc75 100644
--- a/SRC/cgelqf.f
+++ b/SRC/cgelqf.f
@@ -51,50 +51,75 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* product of elementary reflectors (see Further Details).
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit, the elements on and below the diagonal of the array
+*> contain the m-by-min(m,n) lower trapezoidal matrix L (L is
+*> lower triangular if m <= n); the elements above the diagonal,
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) COMPLEX array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,M).
*> For optimum performance LWORK >= M*NB, where NB is the
*> optimal blocksize.
-*>
+*> \endverbatim
+*> \verbatim
*> If LWORK = -1, then a workspace query is assumed; the routine
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/cgeql2.f b/SRC/cgeql2.f
index 76b2d081..bc4d5d3a 100644
--- a/SRC/cgeql2.f
+++ b/SRC/cgeql2.f
@@ -51,6 +51,44 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, if m >= n, the lower triangle of the subarray
+*> A(m-n+1:m,1:n) contains the n by n lower triangular matrix L;
+*> if m <= n, the elements on and below the (n-m)-th
+*> superdiagonal contain the m by n lower trapezoidal matrix L;
+*> the remaining elements, with the array TAU, represent the
+*> unitary matrix Q as a product of elementary reflectors
+*> (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +107,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) COMPLEX array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) COMPLEX array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/cgeqlf.f b/SRC/cgeqlf.f
index 91949edc..6ae4a4f9 100644
--- a/SRC/cgeqlf.f
+++ b/SRC/cgeqlf.f
@@ -51,50 +51,78 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* (see Further Details).
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit,
+*> if m >= n, the lower triangle of the subarray
+*> A(m-n+1:m,1:n) contains the N-by-N lower triangular matrix L;
+*> if m <= n, the elements on and below the (n-m)-th
+*> superdiagonal contain the M-by-N lower trapezoidal matrix L;
+*> the remaining elements, with the array TAU, represent the
+*> unitary matrix Q as a product of elementary reflectors
+*> (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) COMPLEX array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N).
*> For optimum performance LWORK >= N*NB, where NB is
*> the optimal blocksize.
-*>
+*> \endverbatim
+*> \verbatim
*> If LWORK = -1, then a workspace query is assumed; the routine
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/cgeqr2.f b/SRC/cgeqr2.f
index b657981b..e2c83218 100644
--- a/SRC/cgeqr2.f
+++ b/SRC/cgeqr2.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and above the diagonal of the array
+*> contain the min(m,n) by n upper trapezoidal matrix R (R is
+*> upper triangular if m >= n); the elements below the diagonal,
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) COMPLEX array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) COMPLEX array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/cgeqr2p.f b/SRC/cgeqr2p.f
index 16acb4bc..bbe3f4cb 100644
--- a/SRC/cgeqr2p.f
+++ b/SRC/cgeqr2p.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and above the diagonal of the array
+*> contain the min(m,n) by n upper trapezoidal matrix R (R is
+*> upper triangular if m >= n); the elements below the diagonal,
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) COMPLEX array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) COMPLEX array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/cgeqrt.f b/SRC/cgeqrt.f
index 4733e2a2..23e6705b 100644
--- a/SRC/cgeqrt.f
+++ b/SRC/cgeqrt.f
@@ -79,13 +79,13 @@
*> The upper triangular block reflectors stored in compact form
*> as a sequence of upper triangular blocks. See below
*> for further details.
+*> \endverbatim
*>
*> \param[in] LDT
*> \verbatim
*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= NB.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] WORK
*> \verbatim
@@ -117,7 +117,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-*
*> The matrix V stores the elementary reflectors H(i) in the i-th column
*> below the diagonal. For example, if M=5 and N=3, the matrix V is
*>
diff --git a/SRC/cgeqrt2.f b/SRC/cgeqrt2.f
index f28dd341..c1d922d8 100644
--- a/SRC/cgeqrt2.f
+++ b/SRC/cgeqrt2.f
@@ -74,8 +74,10 @@
*> reflector T; the elements below the diagonal are not used.
*> See below for further details.
*> \endverbatim
+*>
+*> \param[in] LDT
*> \verbatim
-*> LDT (intput) INTEGER
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N).
*> \endverbatim
*>
diff --git a/SRC/cgeqrt3.f b/SRC/cgeqrt3.f
index fea61d11..a70ea0ad 100644
--- a/SRC/cgeqrt3.f
+++ b/SRC/cgeqrt3.f
@@ -77,8 +77,10 @@
*> reflector T; the elements below the diagonal are not used.
*> See below for further details.
*> \endverbatim
+*>
+*> \param[in] LDT
*> \verbatim
-*> LDT (intput) INTEGER
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N).
*> \endverbatim
*>
diff --git a/SRC/cgerqf.f b/SRC/cgerqf.f
index a340caaa..1c9e934d 100644
--- a/SRC/cgerqf.f
+++ b/SRC/cgerqf.f
@@ -51,37 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* reflectors (see Further Details).
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit,
+*> if m <= n, the upper triangle of the subarray
+*> A(1:m,n-m+1:n) contains the M-by-M upper triangular matrix R;
+*> if m >= n, the elements on and above the (m-n)-th subdiagonal
+*> contain the M-by-N upper trapezoidal matrix R;
+*> the remaining elements, with the array TAU, represent the
+*> unitary matrix Q as a product of min(m,n) elementary
+*> reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) COMPLEX array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,M).
*> For optimum performance LWORK >= M*NB, where NB is
*> the optimal blocksize.
@@ -90,11 +95,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/cgesv.f b/SRC/cgesv.f
index 885028c7..a2f4a8ca 100644
--- a/SRC/cgesv.f
+++ b/SRC/cgesv.f
@@ -1,4 +1,4 @@
-*> \brief <b> CGESV computes the solution to system of linear equations A * X = B for GE matrices</b>
+*> \brief <b> CGESV computes the solution to system of linear equations A * X = B for GE matrices</b> (simple driver)
*
* =========== DOCUMENTATION ===========
*
diff --git a/SRC/cggglm.f b/SRC/cggglm.f
index 1694621c..08364d2c 100644
--- a/SRC/cggglm.f
+++ b/SRC/cggglm.f
@@ -123,11 +123,14 @@
*> \param[out] X
*> \verbatim
*> X is COMPLEX array, dimension (M)
+*> \endverbatim
+*>
*> \param[out] Y
*> \verbatim
*> Y is COMPLEX array, dimension (P)
-*> On exit, X and Y are the solutions of the GLM problem.
*> \endverbatim
+*> \verbatim
+*> On exit, X and Y are the solutions of the GLM problem.
*> \endverbatim
*>
*> \param[out] WORK
diff --git a/SRC/cgghrd.f b/SRC/cgghrd.f
index dbdcc05a..ea7e7eac 100644
--- a/SRC/cgghrd.f
+++ b/SRC/cgghrd.f
@@ -94,9 +94,13 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI mark the rows and columns of A which are to be
*> reduced. It is assumed that A is already upper triangular
*> in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are
@@ -104,7 +108,6 @@
*> should be set to 1 and N respectively.
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
diff --git a/SRC/cggqrf.f b/SRC/cggqrf.f
index 5fbd0ce3..e8719c81 100644
--- a/SRC/cggqrf.f
+++ b/SRC/cggqrf.f
@@ -102,27 +102,16 @@
*> The leading dimension of the array A. LDA >= max(1,N).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[out] TAUA
*> \verbatim
-* represent the unitary matrix Q (see Further Details).
+*> TAUA is COMPLEX array, dimension (min(N,M))
+*> The scalar factors of the elementary reflectors which
+*> represent the unitary matrix Q (see Further Details).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX array, dimension (LDB,P)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX array, dimension (LDB,P)
*> On entry, the N-by-P matrix B.
*> On exit, if N <= P, the upper triangle of the subarray
*> B(1:N,P-N+1:P) contains the N-by-N upper triangular matrix T;
@@ -131,18 +120,30 @@
*> elements, with the array TAUB, represent the unitary
*> matrix Z as a product of elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,N).
+*> \endverbatim
*>
-*> TAUB (output) COMPLEX array, dimension (min(N,P))
+*> \param[out] TAUB
+*> \verbatim
+*> TAUB is COMPLEX array, dimension (min(N,P))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix Z (see Further Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N,M,P).
*> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3),
*> where NB1 is the optimal blocksize for the QR factorization
@@ -154,11 +155,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/cggrqf.f b/SRC/cggrqf.f
index 60840b81..e89228a5 100644
--- a/SRC/cggrqf.f
+++ b/SRC/cggrqf.f
@@ -103,45 +103,46 @@
*> The leading dimension of the array A. LDA >= max(1,M).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[out] TAUA
*> \verbatim
-* represent the unitary matrix Q (see Further Details).
+*> TAUA is COMPLEX array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors which
+*> represent the unitary matrix Q (see Further Details).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX array, dimension (LDB,N)
*> On entry, the P-by-N matrix B.
*> On exit, the elements on and above the diagonal of the array
*> contain the min(P,N)-by-N upper trapezoidal matrix T (T is
*> upper triangular if P >= N); the elements below the diagonal,
*> with the array TAUB, represent the unitary matrix Z as a
*> product of elementary reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,P).
+*> \endverbatim
*>
-*> TAUB (output) COMPLEX array, dimension (min(P,N))
+*> \param[out] TAUB
+*> \verbatim
+*> TAUB is COMPLEX array, dimension (min(P,N))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix Z (see Further Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N,M,P).
*> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3),
*> where NB1 is the optimal blocksize for the RQ factorization
@@ -153,11 +154,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO=-i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/cggsvd.f b/SRC/cggsvd.f
index 4bf8dfb0..0a6db168 100644
--- a/SRC/cggsvd.f
+++ b/SRC/cggsvd.f
@@ -163,14 +163,17 @@
*> \param[out] K
*> \verbatim
*> K is INTEGER
+*> \endverbatim
+*>
*> \param[out] L
*> \verbatim
*> L is INTEGER
+*> \endverbatim
+*> \verbatim
*> On exit, K and L specify the dimension of the subblocks
*> described in Purpose.
*> K + L = effective numerical rank of (A**H,B**H)**H.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
@@ -203,9 +206,13 @@
*> \param[out] ALPHA
*> \verbatim
*> ALPHA is REAL array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] BETA
*> \verbatim
*> BETA is REAL array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> On exit, ALPHA and BETA contain the generalized singular
*> value pairs of A and B;
*> ALPHA(1:K) = 1,
@@ -214,13 +221,12 @@
*> ALPHA(K+1:K+L) = C,
*> BETA(K+1:K+L) = S,
*> or if M-K-L < 0,
-*> ALPHA(K+1:M)= C, ALPHA(M+1:K+L)= 0
-*> BETA(K+1:M) = S, BETA(M+1:K+L) = 1
+*> ALPHA(K+1:M)=C, ALPHA(M+1:K+L)=0
+*> BETA(K+1:M) =S, BETA(M+1:K+L) =1
*> and
*> ALPHA(K+L+1:N) = 0
*> BETA(K+L+1:N) = 0
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] U
*> \verbatim
diff --git a/SRC/cggsvp.f b/SRC/cggsvp.f
index ba1b1005..1e74a1e0 100644
--- a/SRC/cggsvp.f
+++ b/SRC/cggsvp.f
@@ -137,9 +137,13 @@
*> \param[in] TOLA
*> \verbatim
*> TOLA is REAL
+*> \endverbatim
+*>
*> \param[in] TOLB
*> \verbatim
*> TOLB is REAL
+*> \endverbatim
+*> \verbatim
*> TOLA and TOLB are the thresholds to determine the effective
*> numerical rank of matrix B and a subblock of A. Generally,
*> they are set to
@@ -148,19 +152,21 @@
*> The size of TOLA and TOLB may affect the size of backward
*> errors of the decomposition.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] K
*> \verbatim
*> K is INTEGER
+*> \endverbatim
+*>
*> \param[out] L
*> \verbatim
*> L is INTEGER
+*> \endverbatim
+*> \verbatim
*> On exit, K and L specify the dimension of the subblocks
*> described in Purpose section.
*> K + L = effective numerical rank of (A**H,B**H)**H.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] U
*> \verbatim
diff --git a/SRC/chbgvx.f b/SRC/chbgvx.f
index ff86dc31..45f846b1 100644
--- a/SRC/chbgvx.f
+++ b/SRC/chbgvx.f
@@ -154,27 +154,33 @@
*> \param[in] VL
*> \verbatim
*> VL is REAL
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is REAL
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/cheequb.f b/SRC/cheequb.f
index 2932d91b..d1e6ceec 100644
--- a/SRC/cheequb.f
+++ b/SRC/cheequb.f
@@ -48,6 +48,13 @@
* Arguments
* =========
*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> = 'U': Upper triangles of A and B are stored;
+*> = 'L': Lower triangles of A and B are stored.
+*> \endverbatim
+*>
*> \param[in] N
*> \verbatim
*> N is INTEGER
@@ -88,6 +95,13 @@
*> Absolute value of largest matrix element. If AMAX is very
*> close to overflow or very close to underflow, the matrix
*> should be scaled.
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (3*N)
+*> \endverbatim
+*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
@@ -95,7 +109,6 @@
*> < 0: if INFO = -i, the i-th argument had an illegal value
*> > 0: if INFO = i, the i-th diagonal element is nonpositive.
*> \endverbatim
-*> \endverbatim
*>
*
* Authors
diff --git a/SRC/chegvx.f b/SRC/chegvx.f
index 2171a5a3..34e0ea7c 100644
--- a/SRC/chegvx.f
+++ b/SRC/chegvx.f
@@ -73,13 +73,14 @@
*> = 'V': all eigenvalues in the half-open interval (VL,VU]
*> will be found.
*> = 'I': the IL-th through IU-th eigenvalues will be found.
+*> \endverbatim
+*>
*> \param[in] UPLO
*> \verbatim
*> UPLO is CHARACTER*1
*> = 'U': Upper triangles of A and B are stored;
*> = 'L': Lower triangles of A and B are stored.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] N
*> \verbatim
@@ -95,8 +96,7 @@
*> upper triangular part of the matrix A. If UPLO = 'L',
*> the leading N-by-N lower triangular part of A contains
*> the lower triangular part of the matrix A.
-*> \endverbatim
-*> \verbatim
+*>
*> On exit, the lower triangle (if UPLO='L') or the upper
*> triangle (if UPLO='U') of A, including the diagonal, is
*> destroyed.
@@ -116,8 +116,7 @@
*> upper triangular part of the matrix B. If UPLO = 'L',
*> the leading N-by-N lower triangular part of B contains
*> the lower triangular part of the matrix B.
-*> \endverbatim
-*> \verbatim
+*>
*> On exit, if INFO <= N, the part of B containing the matrix is
*> overwritten by the triangular factor U or L from the Cholesky
*> factorization B = U**H*U or B = L*L**H.
@@ -132,27 +131,33 @@
*> \param[in] VL
*> \verbatim
*> VL is REAL
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is REAL
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
@@ -161,19 +166,16 @@
*> An approximate eigenvalue is accepted as converged
*> when it is determined to lie in an interval [a,b]
*> of width less than or equal to
-*> \endverbatim
-*> \verbatim
+*>
*> ABSTOL + EPS * max( |a|,|b| ) ,
-*> \endverbatim
-*> \verbatim
+*>
*> where EPS is the machine precision. If ABSTOL is less than
*> or equal to zero, then EPS*|T| will be used in its place,
*> where |T| is the 1-norm of the tridiagonal matrix obtained
*> by reducing C to tridiagonal form, where C is the symmetric
*> matrix of the standard symmetric problem to which the
*> generalized problem is transformed.
-*> \endverbatim
-*> \verbatim
+*>
*> Eigenvalues will be computed most accurately when ABSTOL is
*> set to twice the underflow threshold 2*SLAMCH('S'), not zero.
*> If this routine returns with INFO>0, indicating that some
@@ -206,8 +208,7 @@
*> The eigenvectors are normalized as follows:
*> if ITYPE = 1 or 2, Z**T*B*Z = I;
*> if ITYPE = 3, Z**T*inv(B)*Z = I.
-*> \endverbatim
-*> \verbatim
+*>
*> If an eigenvector fails to converge, then that column of Z
*> contains the latest approximation to the eigenvector, and the
*> index of the eigenvector is returned in IFAIL.
diff --git a/SRC/chesvxx.f b/SRC/chesvxx.f
index 548f60fe..0d61ea76 100644
--- a/SRC/chesvxx.f
+++ b/SRC/chesvxx.f
@@ -133,6 +133,13 @@
*> copied to AF and factored.
*> \endverbatim
*>
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> = 'U': Upper triangle of A is stored;
+*> = 'L': Lower triangle of A is stored.
+*> \endverbatim
+*>
*> \param[in] N
*> \verbatim
*> N is INTEGER
diff --git a/SRC/chetd2.f b/SRC/chetd2.f
index 2f3d5a19..0f3a3702 100644
--- a/SRC/chetd2.f
+++ b/SRC/chetd2.f
@@ -57,6 +57,62 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading
+*> n-by-n upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading n-by-n lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the unitary
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the unitary matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (N)
+*> The diagonal elements of the tridiagonal matrix T:
+*> D(i) = A(i,i).
+*> \endverbatim
+*>
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (N-1)
+*> The off-diagonal elements of the tridiagonal matrix T:
+*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (N-1)
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -75,27 +131,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* of elementary reflectors. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> D (output) REAL array, dimension (N)
-*> The diagonal elements of the tridiagonal matrix T:
-*> D(i) = A(i,i).
-*>
-*> E (output) REAL array, dimension (N-1)
-*> The off-diagonal elements of the tridiagonal matrix T:
-*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
-*>
-*> TAU (output) COMPLEX array, dimension (N-1)
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value.
-*>
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/chetrd.f b/SRC/chetrd.f
index beb0371f..4262cd9f 100644
--- a/SRC/chetrd.f
+++ b/SRC/chetrd.f
@@ -55,58 +55,100 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexHEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* of elementary reflectors. See Further Details.
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading
+*> N-by-N upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading N-by-N lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the unitary
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the unitary matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> D (output) REAL array, dimension (N)
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (N)
*> The diagonal elements of the tridiagonal matrix T:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) REAL array, dimension (N-1)
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (N-1)
*> The off-diagonal elements of the tridiagonal matrix T:
*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
*>
-*> TAU (output) COMPLEX array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= 1.
*> For optimum performance LWORK >= N*NB, where NB is the
*> optimal blocksize.
-*>
+*> \endverbatim
+*> \verbatim
*> If LWORK = -1, then a workspace query is assumed; the routine
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexHEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/chpgvx.f b/SRC/chpgvx.f
index 50a49f54..c7166b96 100644
--- a/SRC/chpgvx.f
+++ b/SRC/chpgvx.f
@@ -119,27 +119,33 @@
*> \param[in] VL
*> \verbatim
*> VL is REAL
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is REAL
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/chptrd.f b/SRC/chptrd.f
index 51ee5acd..78fa12c5 100644
--- a/SRC/chptrd.f
+++ b/SRC/chptrd.f
@@ -55,6 +55,54 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is COMPLEX array, dimension (N*(N+1)/2)
+*> On entry, the upper or lower triangle of the Hermitian matrix
+*> A, packed columnwise in a linear array. The j-th column of A
+*> is stored in the array AP as follows:
+*> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+*> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the unitary
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the unitary matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
+*>
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (N)
+*> The diagonal elements of the tridiagonal matrix T:
+*> D(i) = A(i,i).
+*> \endverbatim
+*>
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (N-1)
+*> The off-diagonal elements of the tridiagonal matrix T:
+*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (N-1)
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -73,24 +121,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* of elementary reflectors. See Further Details.
-*>
-*> D (output) REAL array, dimension (N)
-*> The diagonal elements of the tridiagonal matrix T:
-*> D(i) = A(i,i).
-*>
-*> E (output) REAL array, dimension (N-1)
-*> The off-diagonal elements of the tridiagonal matrix T:
-*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
-*>
-*> TAU (output) COMPLEX array, dimension (N-1)
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/chseqr.f b/SRC/chseqr.f
index e7f48849..09d08bc3 100644
--- a/SRC/chseqr.f
+++ b/SRC/chseqr.f
@@ -75,18 +75,21 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> It is assumed that H is already upper triangular in rows
*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
-*> set by a previous call to CGEBAL, and then passed to CGEHRD
+*> set by a previous call to CGEBAL, and then passed to ZGEHRD
*> when the matrix output by CGEBAL is reduced to Hessenberg
*> form. Otherwise ILO and IHI should be set to 1 and N
*> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.
*> If N = 0, then ILO = 1 and IHI = 0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] H
*> \verbatim
diff --git a/SRC/cla_gbrfsx_extended.f b/SRC/cla_gbrfsx_extended.f
index 3561f7e9..4f56170a 100644
--- a/SRC/cla_gbrfsx_extended.f
+++ b/SRC/cla_gbrfsx_extended.f
@@ -109,14 +109,14 @@
*>
*> \param[in] AB
*> \verbatim
-*> AB is COMPLEX array, dimension (LDA,N)
-*> On entry, the N-by-N matrix A.
+*> AB is COMPLEX array, dimension (LDAB,N)
+*> On entry, the N-by-N matrix AB.
*> \endverbatim
*>
*> \param[in] LDAB
*> \verbatim
*> LDAB is INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
+*> The leading dimension of the array AB. LDAB >= max(1,N).
*> \endverbatim
*>
*> \param[in] AFB
@@ -212,37 +212,31 @@
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> normwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Normwise relative error in the ith solution vector:
*> max_j (abs(XTRUE(j,i) - X(j,i)))
*> ------------------------------
*> max_j abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the type of error information as described
*> below. There currently are up to three pieces of information
*> returned.
-*> \endverbatim
-*> \verbatim
+*>
*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
+*>
*> The second index in ERR_BNDS_NORM(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated normwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -251,8 +245,7 @@
*> appropriately scaled matrix Z.
*> Let Z = S*A, where S scales each row by a power of the
*> radix so all absolute row sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
@@ -266,14 +259,12 @@
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> componentwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Componentwise relative error in the ith solution vector:
*> abs(XTRUE(j,i) - X(j,i))
*> max_j ----------------------
*> abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the right-hand side i (on which the
*> componentwise relative error depends), and the type of error
*> information as described below. There currently are up to three
@@ -281,26 +272,22 @@
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned.
-*> \endverbatim
-*> \verbatim
+*>
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
+*>
*> The second index in ERR_BNDS_COMP(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated componentwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -311,8 +298,7 @@
*> current right-hand side and S scales each row of
*> A*diag(x) by a power of the radix so all absolute row
*> sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
diff --git a/SRC/cla_gerfsx_extended.f b/SRC/cla_gerfsx_extended.f
index 547c2e0a..12db6ba3 100644
--- a/SRC/cla_gerfsx_extended.f
+++ b/SRC/cla_gerfsx_extended.f
@@ -49,10 +49,10 @@
*> and provides error bounds and backward error estimates for the solution.
*> This subroutine is called by CGERFSX to perform iterative refinement.
*> In addition to normwise error bound, the code provides maximum
-*> componentwise error bound if possible. See comments for ERR_BNDS_NORM
-*> and ERR_BNDS_COMP for details of the error bounds. Note that this
+*> componentwise error bound if possible. See comments for ERRS_N
+*> and ERRS_C for details of the error bounds. Note that this
*> subroutine is only resonsible for setting the second fields of
-*> ERR_BNDS_NORM and ERR_BNDS_COMP.
+*> ERRS_N and ERRS_C.
*>
*>\endverbatim
*
@@ -186,49 +186,43 @@
*> \param[in] N_NORMS
*> \verbatim
*> N_NORMS is INTEGER
-*> Determines which error bounds to return (see ERR_BNDS_NORM
-*> and ERR_BNDS_COMP).
+*> Determines which error bounds to return (see ERRS_N
+*> and ERRS_C).
*> If N_NORMS >= 1 return normwise error bounds.
*> If N_NORMS >= 2 return componentwise error bounds.
*> \endverbatim
*>
-*> \param[in,out] ERR_BNDS_NORM
+*> \param[in,out] ERRS_N
*> \verbatim
-*> ERR_BNDS_NORM is REAL array, dimension (NRHS, N_ERR_BNDS)
+*> ERRS_N is REAL array, dimension (NRHS, N_ERR_BNDS)
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> normwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Normwise relative error in the ith solution vector:
*> max_j (abs(XTRUE(j,i) - X(j,i)))
*> ------------------------------
*> max_j abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the type of error information as described
*> below. There currently are up to three pieces of information
*> returned.
-*> \endverbatim
-*> \verbatim
-*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
+*>
+*> The first index in ERRS_N(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
-*> The second index in ERR_BNDS_NORM(:,err) contains the following
+*>
+*> The second index in ERRS_N(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated normwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -237,55 +231,48 @@
*> appropriately scaled matrix Z.
*> Let Z = S*A, where S scales each row by a power of the
*> radix so all absolute row sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
*> cautions.
*> \endverbatim
*>
-*> \param[in,out] ERR_BNDS_COMP
+*> \param[in,out] ERRS_C
*> \verbatim
-*> ERR_BNDS_COMP is REAL array, dimension (NRHS, N_ERR_BNDS)
+*> ERRS_C is REAL array, dimension (NRHS, N_ERR_BNDS)
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> componentwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Componentwise relative error in the ith solution vector:
*> abs(XTRUE(j,i) - X(j,i))
*> max_j ----------------------
*> abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the right-hand side i (on which the
*> componentwise relative error depends), and the type of error
*> information as described below. There currently are up to three
*> pieces of information returned for each right-hand side. If
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
-*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
+*> ERRS_C is not accessed. If N_ERR_BNDS .LT. 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned.
-*> \endverbatim
-*> \verbatim
-*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
+*>
+*> The first index in ERRS_C(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
-*> The second index in ERR_BNDS_COMP(:,err) contains the following
+*>
+*> The second index in ERRS_C(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated componentwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -296,8 +283,7 @@
*> current right-hand side and S scales each row of
*> A*diag(x) by a power of the radix so all absolute row
*> sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
@@ -348,7 +334,7 @@
*> permit convergence using approximate factorizations or
*> factorizations other than LU. If the factorization uses a
*> technique other than Gaussian elimination, the guarantees in
-*> ERR_BNDS_NORM and ERR_BNDS_COMP may no longer be trustworthy.
+*> ERRS_N and ERRS_C may no longer be trustworthy.
*> \endverbatim
*>
*> \param[in] RTHRESH
diff --git a/SRC/cla_herpvgrw.f b/SRC/cla_herpvgrw.f
index 89855238..62cf611d 100644
--- a/SRC/cla_herpvgrw.f
+++ b/SRC/cla_herpvgrw.f
@@ -68,12 +68,6 @@
*> column INFO is exactly 0.
*> \endverbatim
*>
-*> \param[in] NCOLS
-*> \verbatim
-*> NCOLS is INTEGER
-*> The number of columns of the matrix A. NCOLS >= 0.
-*> \endverbatim
-*>
*> \param[in] A
*> \verbatim
*> A is COMPLEX array, dimension (LDA,N)
diff --git a/SRC/cla_lin_berr.f b/SRC/cla_lin_berr.f
index 6ababe1d..8d4af0fb 100644
--- a/SRC/cla_lin_berr.f
+++ b/SRC/cla_lin_berr.f
@@ -77,13 +77,13 @@
*> The denominator in the relative backward error formula above, i.e.,
*> the matrix abs(op(A_s))*abs(Y) + abs(B_s). The matrices A, Y, and B
*> are from iterative refinement (see cla_gerfsx_extended.f).
+*> \endverbatim
*>
*> \param[out] BERR
*> \verbatim
*> BERR is COMPLEX array, dimension (NRHS)
*> The componentwise relative backward error from the formula above.
*> \endverbatim
-*> \endverbatim
*>
*
* Authors
diff --git a/SRC/cla_syrpvgrw.f b/SRC/cla_syrpvgrw.f
index e7087e43..a3c1482f 100644
--- a/SRC/cla_syrpvgrw.f
+++ b/SRC/cla_syrpvgrw.f
@@ -68,12 +68,6 @@
*> column INFO is exactly 0.
*> \endverbatim
*>
-*> \param[in] NCOLS
-*> \verbatim
-*> NCOLS is INTEGER
-*> The number of columns of the matrix A. NCOLS >= 0.
-*> \endverbatim
-*>
*> \param[in] A
*> \verbatim
*> A is COMPLEX array, dimension (LDA,N)
diff --git a/SRC/clabrd.f b/SRC/clabrd.f
index ab63b734..a1b725c8 100644
--- a/SRC/clabrd.f
+++ b/SRC/clabrd.f
@@ -67,59 +67,105 @@
*> The number of leading rows and columns of A to be reduced.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the m by n general matrix to be reduced.
+*> On exit, the first NB rows and columns of the matrix are
+*> overwritten; the rest of the array is unchanged.
+*> If m >= n, elements on and below the diagonal in the first NB
+*> columns, with the array TAUQ, represent the unitary
+*> matrix Q as a product of elementary reflectors; and
+*> elements above the diagonal in the first NB rows, with the
+*> array TAUP, represent the unitary matrix P as a product
+*> of elementary reflectors.
+*> If m < n, elements below the diagonal in the first NB
+*> columns, with the array TAUQ, represent the unitary
+*> matrix Q as a product of elementary reflectors, and
+*> elements on and above the diagonal in the first NB rows,
+*> with the array TAUP, represent the unitary matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) REAL array, dimension (NB)
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (NB)
*> The diagonal elements of the first NB rows and columns of
*> the reduced matrix. D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) REAL array, dimension (NB)
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (NB)
*> The off-diagonal elements of the first NB rows and columns of
*> the reduced matrix.
+*> \endverbatim
*>
-*> TAUQ (output) COMPLEX array dimension (NB)
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is COMPLEX array dimension (NB)
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) COMPLEX array, dimension (NB)
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is COMPLEX array, dimension (NB)
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix P. See Further Details.
+*> \endverbatim
*>
-*> X (output) COMPLEX array, dimension (LDX,NB)
+*> \param[out] X
+*> \verbatim
+*> X is COMPLEX array, dimension (LDX,NB)
*> The m-by-nb matrix X required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDX (input) INTEGER
+*> \param[in] LDX
+*> \verbatim
+*> LDX is INTEGER
*> The leading dimension of the array X. LDX >= max(1,M).
+*> \endverbatim
*>
-*> Y (output) COMPLEX array, dimension (LDY,NB)
+*> \param[out] Y
+*> \verbatim
+*> Y is COMPLEX array, dimension (LDY,NB)
*> The n-by-nb matrix Y required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDY (input) INTEGER
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
*> The leading dimension of the array Y. LDY >= max(1,N).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/clacn2.f b/SRC/clacn2.f
index c6def601..97a50ea9 100644
--- a/SRC/clacn2.f
+++ b/SRC/clacn2.f
@@ -105,8 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> Contributed by Nick Higham, University of Manchester.
*> Originally named CONEST, dated March 16, 1988.
diff --git a/SRC/clacon.f b/SRC/clacon.f
index 91662683..aead410a 100644
--- a/SRC/clacon.f
+++ b/SRC/clacon.f
@@ -98,8 +98,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> Contributed by Nick Higham, University of Manchester.
*> Originally named CONEST, dated March 16, 1988.
diff --git a/SRC/clagtm.f b/SRC/clagtm.f
index c0d3f3cf..2a4d3c55 100644
--- a/SRC/clagtm.f
+++ b/SRC/clagtm.f
@@ -99,12 +99,13 @@
*> \verbatim
*> X is COMPLEX array, dimension (LDX,NRHS)
*> The N by NRHS matrix X.
+*> \endverbatim
+*>
*> \param[in] LDX
*> \verbatim
*> LDX is INTEGER
*> The leading dimension of the array X. LDX >= max(N,1).
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] BETA
*> \verbatim
diff --git a/SRC/clahr2.f b/SRC/clahr2.f
index 029c06c0..5d002c9a 100644
--- a/SRC/clahr2.f
+++ b/SRC/clahr2.f
@@ -65,6 +65,55 @@
*> The number of columns to be reduced.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N-K+1)
+*> On entry, the n-by-(n-k+1) general matrix A.
+*> On exit, the elements on and above the k-th subdiagonal in
+*> the first NB columns are overwritten with the corresponding
+*> elements of the reduced matrix; the elements below the k-th
+*> subdiagonal, with the array TAU, represent the matrix Q as a
+*> product of elementary reflectors. The other columns of A are
+*> unchanged. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (NB)
+*> The scalar factors of the elementary reflectors. See Further
+*> Details.
+*> \endverbatim
+*>
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX array, dimension (LDT,NB)
+*> The upper triangular matrix T.
+*> \endverbatim
+*>
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
+*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
+*>
+*> \param[out] Y
+*> \verbatim
+*> Y is COMPLEX array, dimension (LDY,NB)
+*> The n-by-nb matrix Y.
+*> \endverbatim
+*>
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
+*> The leading dimension of the array Y. LDY >= N.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -83,27 +132,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* unchanged. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> TAU (output) COMPLEX array, dimension (NB)
-*> The scalar factors of the elementary reflectors. See Further
-*> Details.
-*>
-*> T (output) COMPLEX array, dimension (LDT,NB)
-*> The upper triangular matrix T.
-*>
-*> LDT (input) INTEGER
-*> The leading dimension of the array T. LDT >= NB.
-*>
-*> Y (output) COMPLEX array, dimension (LDY,NB)
-*> The n-by-nb matrix Y.
-*>
-*> LDY (input) INTEGER
-*> The leading dimension of the array Y. LDY >= N.
-*>
*>
*> The matrix Q is represented as a product of nb elementary reflectors
*>
diff --git a/SRC/clahrd.f b/SRC/clahrd.f
index 76f3be86..433ebf6d 100644
--- a/SRC/clahrd.f
+++ b/SRC/clahrd.f
@@ -66,6 +66,55 @@
*> The number of columns to be reduced.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N-K+1)
+*> On entry, the n-by-(n-k+1) general matrix A.
+*> On exit, the elements on and above the k-th subdiagonal in
+*> the first NB columns are overwritten with the corresponding
+*> elements of the reduced matrix; the elements below the k-th
+*> subdiagonal, with the array TAU, represent the matrix Q as a
+*> product of elementary reflectors. The other columns of A are
+*> unchanged. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (NB)
+*> The scalar factors of the elementary reflectors. See Further
+*> Details.
+*> \endverbatim
+*>
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX array, dimension (LDT,NB)
+*> The upper triangular matrix T.
+*> \endverbatim
+*>
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
+*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
+*>
+*> \param[out] Y
+*> \verbatim
+*> Y is COMPLEX array, dimension (LDY,NB)
+*> The n-by-nb matrix Y.
+*> \endverbatim
+*>
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
+*> The leading dimension of the array Y. LDY >= max(1,N).
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -84,27 +133,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* unchanged. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> TAU (output) COMPLEX array, dimension (NB)
-*> The scalar factors of the elementary reflectors. See Further
-*> Details.
-*>
-*> T (output) COMPLEX array, dimension (LDT,NB)
-*> The upper triangular matrix T.
-*>
-*> LDT (input) INTEGER
-*> The leading dimension of the array T. LDT >= NB.
-*>
-*> Y (output) COMPLEX array, dimension (LDY,NB)
-*> The n-by-nb matrix Y.
-*>
-*> LDY (input) INTEGER
-*> The leading dimension of the array Y. LDY >= max(1,N).
-*>
*>
*> The matrix Q is represented as a product of nb elementary reflectors
*>
diff --git a/SRC/claqr0.f b/SRC/claqr0.f
index d0f5d863..2405af48 100644
--- a/SRC/claqr0.f
+++ b/SRC/claqr0.f
@@ -117,6 +117,19 @@
*> form returned in H, with W(i) = H(i,i).
*> \endverbatim
*>
+*> \param[in] ILOZ
+*> \verbatim
+*> ILOZ is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHIZ
+*> \verbatim
+*> IHIZ is INTEGER
+*> Specify the rows of Z to which transformations must be
+*> applied if WANTZ is .TRUE..
+*> 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N.
+*> \endverbatim
+*>
*> \param[in,out] Z
*> \verbatim
*> Z is COMPLEX array, dimension (LDZ,IHI)
@@ -167,37 +180,29 @@
*> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
*> and WI contain those eigenvalues which have been
*> successfully computed. (Failures are rare.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANT is .FALSE., then on exit,
*> the remaining unconverged eigenvalues are the eigen-
*> values of the upper Hessenberg matrix rows and
*> columns ILO through INFO of the final, output
*> value of H.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTT is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (*) (initial value of H)*U = U*(final value of H)
-*> \endverbatim
-*> \verbatim
+*>
*> where U is a unitary matrix. The final
*> value of H is upper Hessenberg and triangular in
*> rows and columns INFO+1 through IHI.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (final value of Z(ILO:IHI,ILOZ:IHIZ)
*> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
-*> \endverbatim
-*> \verbatim
+*>
*> where U is the unitary matrix in (*) (regard-
*> less of the value of WANTT.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
*> accessed.
*> \endverbatim
diff --git a/SRC/claqr1.f b/SRC/claqr1.f
index 0b0ccb6b..b6e90b58 100644
--- a/SRC/claqr1.f
+++ b/SRC/claqr1.f
@@ -70,8 +70,13 @@
*> \verbatim
*> S1 is COMPLEX
*> \endverbatim
+*>
+*> \param[in] S2
+*> \verbatim
+*> S2 is COMPLEX
+*> \endverbatim
*> \verbatim
-*> S2 S1 and S2 are the shifts defining K in (*) above.
+*> S1 and S2 are the shifts defining K in (*) above.
*> \endverbatim
*>
*> \param[out] V
diff --git a/SRC/claqr4.f b/SRC/claqr4.f
index c6bb13b4..555910e8 100644
--- a/SRC/claqr4.f
+++ b/SRC/claqr4.f
@@ -125,6 +125,19 @@
*> form returned in H, with W(i) = H(i,i).
*> \endverbatim
*>
+*> \param[in] ILOZ
+*> \verbatim
+*> ILOZ is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHIZ
+*> \verbatim
+*> IHIZ is INTEGER
+*> Specify the rows of Z to which transformations must be
+*> applied if WANTZ is .TRUE..
+*> 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N.
+*> \endverbatim
+*>
*> \param[in,out] Z
*> \verbatim
*> Z is COMPLEX array, dimension (LDZ,IHI)
@@ -169,43 +182,36 @@
*>
*> \param[out] INFO
*> \verbatim
+*> \verbatim
*> INFO is INTEGER
*> = 0: successful exit
*> .GT. 0: if INFO = i, CLAQR4 failed to compute all of
*> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
*> and WI contain those eigenvalues which have been
*> successfully computed. (Failures are rare.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANT is .FALSE., then on exit,
*> the remaining unconverged eigenvalues are the eigen-
*> values of the upper Hessenberg matrix rows and
*> columns ILO through INFO of the final, output
*> value of H.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTT is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (*) (initial value of H)*U = U*(final value of H)
-*> \endverbatim
-*> \verbatim
+*>
*> where U is a unitary matrix. The final
*> value of H is upper Hessenberg and triangular in
*> rows and columns INFO+1 through IHI.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (final value of Z(ILO:IHI,ILOZ:IHIZ)
*> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
-*> \endverbatim
-*> \verbatim
+*>
*> where U is the unitary matrix in (*) (regard-
*> less of the value of WANTT.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
*> accessed.
*> \endverbatim
diff --git a/SRC/clarfb.f b/SRC/clarfb.f
index 6c3ba588..41d2c2c2 100644
--- a/SRC/clarfb.f
+++ b/SRC/clarfb.f
@@ -93,53 +93,81 @@
*> reflectors whose product defines the block reflector).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] V
*> \verbatim
-* The matrix V. See Further Details.
+*> V is COMPLEX array, dimension
+*> (LDV,K) if STOREV = 'C'
+*> (LDV,M) if STOREV = 'R' and SIDE = 'L'
+*> (LDV,N) if STOREV = 'R' and SIDE = 'R'
+*> The matrix V. See Further Details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
*> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
*> if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> T (input) COMPLEX array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is COMPLEX array, dimension (LDT,K)
*> The triangular K-by-K matrix T in the representation of the
*> block reflector.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
-*> C (input/output) COMPLEX array, dimension (LDC,N)
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX array, dimension (LDC,N)
*> On entry, the M-by-N matrix C.
*> On exit, C is overwritten by H*C or H**H*C or C*H or C*H**H.
+*> \endverbatim
*>
-*> LDC (input) INTEGER
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX array, dimension (LDWORK,K)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (LDWORK,K)
+*> \endverbatim
*>
-*> LDWORK (input) INTEGER
+*> \param[in] LDWORK
+*> \verbatim
+*> LDWORK is INTEGER
*> The leading dimension of the array WORK.
*> If SIDE = 'L', LDWORK >= max(1,N);
*> if SIDE = 'R', LDWORK >= max(1,M).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The shape of the matrix V and the storage of the vectors which define
*> the H(i) is best illustrated by the following example with n = 5 and
diff --git a/SRC/clarft.f b/SRC/clarft.f
index fe4c6865..d4379f3c 100644
--- a/SRC/clarft.f
+++ b/SRC/clarft.f
@@ -63,56 +63,82 @@
*> = 'B': H = H(k) . . . H(2) H(1) (Backward)
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] STOREV
*> \verbatim
-* reflectors are stored (see also Further Details):
+*> STOREV is CHARACTER*1
+*> Specifies how the vectors which define the elementary
+*> reflectors are stored (see also Further Details):
*> = 'C': columnwise
*> = 'R': rowwise
+*> \endverbatim
*>
-*> N (input) INTEGER
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
*> The order of the block reflector H. N >= 0.
+*> \endverbatim
*>
-*> K (input) INTEGER
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
*> The order of the triangular factor T (= the number of
*> elementary reflectors). K >= 1.
+*> \endverbatim
*>
-*> V (input/output) COMPLEX array, dimension
+*> \param[in,out] V
+*> \verbatim
+*> V is COMPLEX array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,N) if STOREV = 'R'
*> The matrix V. See further details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> TAU (input) COMPLEX array, dimension (K)
+*> \param[in] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (K)
*> TAU(i) must contain the scalar factor of the elementary
*> reflector H(i).
+*> \endverbatim
*>
-*> T (output) COMPLEX array, dimension (LDT,K)
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX array, dimension (LDT,K)
*> The k by k triangular factor T of the block reflector.
*> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
*> lower triangular. The rest of the array is not used.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The shape of the matrix V and the storage of the vectors which define
*> the H(i) is best illustrated by the following example with n = 5 and
diff --git a/SRC/clarrv.f b/SRC/clarrv.f
index 5990c42d..2e0b17cf 100644
--- a/SRC/clarrv.f
+++ b/SRC/clarrv.f
@@ -84,8 +84,10 @@
*> is stored the corresponding shift as given by SLARRE.
*> On exit, L is overwritten.
*> \endverbatim
+*>
+*> \param[in] PIVMIN
*> \verbatim
-*> PIVMIN (in) DOUBLE PRECISION
+*> PIVMIN is REAL
*> The minimum pivot allowed in the Sturm sequence.
*> \endverbatim
*>
@@ -232,14 +234,12 @@
*> \verbatim
*> INFO is INTEGER
*> = 0: successful exit
-*> \endverbatim
-*> \verbatim
+*>
*> > 0: A problem occured in CLARRV.
*> < 0: One of the called subroutines signaled an internal problem.
*> Needs inspection of the corresponding parameter IINFO
*> for further information.
-*> \endverbatim
-*> \verbatim
+*>
*> =-1: Problem in SLARRB when refining a child's eigenvalues.
*> =-2: Problem in SLARRF when computing the RRR of a child.
*> When a child is inside a tight cluster, it can be difficult
diff --git a/SRC/clartg.f b/SRC/clartg.f
index c5294a34..67c02f7a 100644
--- a/SRC/clartg.f
+++ b/SRC/clartg.f
@@ -94,8 +94,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> 3-5-96 - Modified with a new algorithm by W. Kahan and J. Demmel
*>
diff --git a/SRC/clarzt.f b/SRC/clarzt.f
index 8371efc2..2a5994d5 100644
--- a/SRC/clarzt.f
+++ b/SRC/clarzt.f
@@ -66,56 +66,82 @@
*> = 'B': H = H(k) . . . H(2) H(1) (Backward)
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] STOREV
*> \verbatim
-* reflectors are stored (see also Further Details):
+*> STOREV is CHARACTER*1
+*> Specifies how the vectors which define the elementary
+*> reflectors are stored (see also Further Details):
*> = 'C': columnwise (not supported yet)
*> = 'R': rowwise
+*> \endverbatim
*>
-*> N (input) INTEGER
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
*> The order of the block reflector H. N >= 0.
+*> \endverbatim
*>
-*> K (input) INTEGER
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
*> The order of the triangular factor T (= the number of
*> elementary reflectors). K >= 1.
+*> \endverbatim
*>
-*> V (input/output) COMPLEX array, dimension
+*> \param[in,out] V
+*> \verbatim
+*> V is COMPLEX array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,N) if STOREV = 'R'
*> The matrix V. See further details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> TAU (input) COMPLEX array, dimension (K)
+*> \param[in] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (K)
*> TAU(i) must contain the scalar factor of the elementary
*> reflector H(i).
+*> \endverbatim
*>
-*> T (output) COMPLEX array, dimension (LDT,K)
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX array, dimension (LDT,K)
*> The k by k triangular factor T of the block reflector.
*> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
*> lower triangular. The rest of the array is not used.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> Based on contributions by
*> A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
diff --git a/SRC/clascl.f b/SRC/clascl.f
index 64f4ef6d..3b86e312 100644
--- a/SRC/clascl.f
+++ b/SRC/clascl.f
@@ -79,15 +79,18 @@
*> \param[in] CFROM
*> \verbatim
*> CFROM is REAL
+*> \endverbatim
+*>
*> \param[in] CTO
*> \verbatim
*> CTO is REAL
+*> \endverbatim
+*> \verbatim
*> The matrix A is multiplied by CTO/CFROM. A(I,J) is computed
*> without over/underflow if the final result CTO*A(I,J)/CFROM
*> can be represented without over/underflow. CFROM must be
*> nonzero.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] M
*> \verbatim
diff --git a/SRC/clatrd.f b/SRC/clatrd.f
index 2c1f0992..ff4119b0 100644
--- a/SRC/clatrd.f
+++ b/SRC/clatrd.f
@@ -71,47 +71,84 @@
*> The number of rows and columns to be reduced.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is COMPLEX array, dimension (LDA,N)
+*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading
+*> n-by-n upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading n-by-n lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit:
+*> if UPLO = 'U', the last NB columns have been reduced to
+*> tridiagonal form, with the diagonal elements overwriting
+*> the diagonal elements of A; the elements above the diagonal
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors;
+*> if UPLO = 'L', the first NB columns have been reduced to
+*> tridiagonal form, with the diagonal elements overwriting
+*> the diagonal elements of A; the elements below the diagonal
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> E (output) REAL array, dimension (N-1)
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (N-1)
*> If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal
*> elements of the last NB columns of the reduced matrix;
*> if UPLO = 'L', E(1:nb) contains the subdiagonal elements of
*> the first NB columns of the reduced matrix.
+*> \endverbatim
*>
-*> TAU (output) COMPLEX array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX array, dimension (N-1)
*> The scalar factors of the elementary reflectors, stored in
*> TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'.
*> See Further Details.
+*> \endverbatim
*>
-*> W (output) COMPLEX array, dimension (LDW,NB)
+*> \param[out] W
+*> \verbatim
+*> W is COMPLEX array, dimension (LDW,NB)
*> The n-by-nb matrix W required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDW (input) INTEGER
+*> \param[in] LDW
+*> \verbatim
+*> LDW is INTEGER
*> The leading dimension of the array W. LDW >= max(1,N).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/cpbstf.f b/SRC/cpbstf.f
index 3775e179..0d38773c 100644
--- a/SRC/cpbstf.f
+++ b/SRC/cpbstf.f
@@ -80,6 +80,25 @@
*> as follows:
*> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
*> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
+*>
+*> On exit, if INFO = 0, the factor S from the split Cholesky
+*> factorization A = S**H*S. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDAB
+*> \verbatim
+*> LDAB is INTEGER
+*> The leading dimension of the array AB. LDAB >= KD+1.
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> > 0: if INFO = i, the factorization could not be completed,
+*> because the updated element a(i,i) was negative; the
+*> matrix A is not positive definite.
*> \endverbatim
*>
*
@@ -100,18 +119,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* factorization A = S**H*S. See Further Details.
-*>
-*> LDAB (input) INTEGER
-*> The leading dimension of the array AB. LDAB >= KD+1.
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*> > 0: if INFO = i, the factorization could not be completed,
-*> because the updated element a(i,i) was negative; the
-*> matrix A is not positive definite.
-*>
*>
*> The band storage scheme is illustrated by the following example, when
*> N = 7, KD = 2:
diff --git a/SRC/crot.f b/SRC/crot.f
index 7519bed9..d69ba401 100644
--- a/SRC/crot.f
+++ b/SRC/crot.f
@@ -76,6 +76,8 @@
*> \param[in] C
*> \verbatim
*> C is REAL
+*> \endverbatim
+*>
*> \param[in] S
*> \verbatim
*> S is COMPLEX
@@ -84,7 +86,6 @@
*> [ -conjg(S) C ]
*> where C*C + S*CONJG(S) = 1.0.
*> \endverbatim
-*> \endverbatim
*>
*
* Authors
diff --git a/SRC/cstegr.f b/SRC/cstegr.f
index 3de77471..89b4964d 100644
--- a/SRC/cstegr.f
+++ b/SRC/cstegr.f
@@ -104,27 +104,33 @@
*> \param[in] VL
*> \verbatim
*> VL is REAL
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is REAL
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/cstemr.f b/SRC/cstemr.f
index 6eac5c23..2e5c80ed 100644
--- a/SRC/cstemr.f
+++ b/SRC/cstemr.f
@@ -152,27 +152,33 @@
*> \param[in] VL
*> \verbatim
*> VL is REAL
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is REAL
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] M
*> \verbatim
diff --git a/SRC/csyconv.f b/SRC/csyconv.f
index c669f904..7063ce53 100644
--- a/SRC/csyconv.f
+++ b/SRC/csyconv.f
@@ -89,19 +89,6 @@
*> WORK is COMPLEX array, dimension (N)
*> \endverbatim
*>
-*> \param[in] LWORK
-*> \verbatim
-*> LWORK is INTEGER
-*> The length of WORK. LWORK >=1.
-*> LWORK = N
-*> \endverbatim
-*> \verbatim
-*> If LWORK = -1, then a workspace query is assumed; the routine
-*> only calculates the optimal size of the WORK array, returns
-*> this value as the first entry of the WORK array, and no error
-*> message related to LWORK is issued by XERBLA.
-*> \endverbatim
-*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/SRC/csyequb.f b/SRC/csyequb.f
index 563f136c..757ea7d9 100644
--- a/SRC/csyequb.f
+++ b/SRC/csyequb.f
@@ -130,8 +130,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> Reference: Livne, O.E. and Golub, G.H., "Scaling by Binormalization",
*> Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004.
diff --git a/SRC/ctgsen.f b/SRC/ctgsen.f
index 59aac069..f8f31d3a 100644
--- a/SRC/ctgsen.f
+++ b/SRC/ctgsen.f
@@ -147,15 +147,18 @@
*> \param[out] ALPHA
*> \verbatim
*> ALPHA is COMPLEX array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] BETA
*> \verbatim
*> BETA is COMPLEX array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> The diagonal elements of A and B, respectively,
*> when the pair (A,B) has been reduced to generalized Schur
*> form. ALPHA(i)/BETA(i) i=1,...,N are the generalized
*> eigenvalues.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] Q
*> \verbatim
@@ -203,9 +206,13 @@
*> \param[out] PL
*> \verbatim
*> PL is REAL
+*> \endverbatim
+*>
*> \param[out] PR
*> \verbatim
*> PR is REAL
+*> \endverbatim
+*> \verbatim
*> If IJOB = 1, 4 or 5, PL, PR are lower bounds on the
*> reciprocal of the norm of "projections" onto left and right
*> eigenspace with respect to the selected cluster.
@@ -213,7 +220,6 @@
*> If M = 0 or M = N, PL = PR = 1.
*> If IJOB = 0, 2 or 3 PL, PR are not referenced.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] DIF
*> \verbatim
diff --git a/SRC/ctgsja.f b/SRC/ctgsja.f
index e0d420a7..000a9ff6 100644
--- a/SRC/ctgsja.f
+++ b/SRC/ctgsja.f
@@ -176,52 +176,74 @@
*> The number of columns of the matrices A and B. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] K
*> \verbatim
-* See Further Details.
+*> K is INTEGER
+*> \endverbatim
*>
-*> A (input/output) COMPLEX array, dimension (LDA,N)
+*> \param[in] L
+*> \verbatim
+*> L is INTEGER
+*>
+*> K and L specify the subblocks in the input matrices A and B:
+*> A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,,N-L+1:N)
+*> of A and B, whose GSVD is going to be computed by CTGSJA.
+*> See Further Details.
+*> \endverbatim
+*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N)
*> On entry, the M-by-N matrix A.
*> On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular
*> matrix R or part of R. See Purpose for details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX array, dimension (LDB,N)
*> On entry, the P-by-N matrix B.
*> On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains
*> a part of R. See Purpose for details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,P).
+*> \endverbatim
+*>
+*> \param[in] TOLA
+*> \verbatim
+*> TOLA is REAL
+*> \endverbatim
+*>
+*> \param[in] TOLB
+*> \verbatim
+*> TOLB is REAL
*>
-*> TOLA (input) REAL
-*> TOLB (input) REAL
*> TOLA and TOLB are the convergence criteria for the Jacobi-
*> Kogbetliantz iteration procedure. Generally, they are the
*> same as used in the preprocessing step, say
*> TOLA = MAX(M,N)*norm(A)*MACHEPS,
*> TOLB = MAX(P,N)*norm(B)*MACHEPS.
+*> \endverbatim
+*>
+*> \param[out] ALPHA
+*> \verbatim
+*> ALPHA is REAL array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] BETA
+*> \verbatim
+*> BETA is REAL array, dimension (N)
*>
-*> ALPHA (output) REAL array, dimension (N)
-*> BETA (output) REAL array, dimension (N)
*> On exit, ALPHA and BETA contain the generalized singular
*> value pairs of A and B;
*> ALPHA(1:K) = 1,
@@ -235,61 +257,109 @@
*> Furthermore, if K+L < N,
*> ALPHA(K+L+1:N) = 0
*> BETA(K+L+1:N) = 0.
+*> \endverbatim
*>
-*> U (input/output) COMPLEX array, dimension (LDU,M)
+*> \param[in,out] U
+*> \verbatim
+*> U is COMPLEX array, dimension (LDU,M)
*> On entry, if JOBU = 'U', U must contain a matrix U1 (usually
*> the unitary matrix returned by CGGSVP).
*> On exit,
*> if JOBU = 'I', U contains the unitary matrix U;
*> if JOBU = 'U', U contains the product U1*U.
*> If JOBU = 'N', U is not referenced.
+*> \endverbatim
*>
-*> LDU (input) INTEGER
+*> \param[in] LDU
+*> \verbatim
+*> LDU is INTEGER
*> The leading dimension of the array U. LDU >= max(1,M) if
*> JOBU = 'U'; LDU >= 1 otherwise.
+*> \endverbatim
*>
-*> V (input/output) COMPLEX array, dimension (LDV,P)
+*> \param[in,out] V
+*> \verbatim
+*> V is COMPLEX array, dimension (LDV,P)
*> On entry, if JOBV = 'V', V must contain a matrix V1 (usually
*> the unitary matrix returned by CGGSVP).
*> On exit,
*> if JOBV = 'I', V contains the unitary matrix V;
*> if JOBV = 'V', V contains the product V1*V.
*> If JOBV = 'N', V is not referenced.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V. LDV >= max(1,P) if
*> JOBV = 'V'; LDV >= 1 otherwise.
+*> \endverbatim
*>
-*> Q (input/output) COMPLEX array, dimension (LDQ,N)
+*> \param[in,out] Q
+*> \verbatim
+*> Q is COMPLEX array, dimension (LDQ,N)
*> On entry, if JOBQ = 'Q', Q must contain a matrix Q1 (usually
*> the unitary matrix returned by CGGSVP).
*> On exit,
*> if JOBQ = 'I', Q contains the unitary matrix Q;
*> if JOBQ = 'Q', Q contains the product Q1*Q.
*> If JOBQ = 'N', Q is not referenced.
+*> \endverbatim
*>
-*> LDQ (input) INTEGER
+*> \param[in] LDQ
+*> \verbatim
+*> LDQ is INTEGER
*> The leading dimension of the array Q. LDQ >= max(1,N) if
*> JOBQ = 'Q'; LDQ >= 1 otherwise.
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX array, dimension (2*N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (2*N)
+*> \endverbatim
*>
-*> NCYCLE (output) INTEGER
+*> \param[out] NCYCLE
+*> \verbatim
+*> NCYCLE is INTEGER
*> The number of cycles required for convergence.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
*> = 1: the procedure does not converge after MAXIT cycles.
+*> \endverbatim
*>
*> Internal Parameters
*> ===================
-*>
+*>
+*> \verbatim
*> MAXIT INTEGER
*> MAXIT specifies the total loops that the iterative procedure
*> may take. If after MAXIT cycles, the routine fails to
*> converge, we return INFO = 1.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> CTGSJA essentially uses a variant of Kogbetliantz algorithm to reduce
*> min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and L-by-L
diff --git a/SRC/ctpmqrt.f b/SRC/ctpmqrt.f
index 46bb8671..7464853a 100644
--- a/SRC/ctpmqrt.f
+++ b/SRC/ctpmqrt.f
@@ -67,6 +67,7 @@
*> \verbatim
*> N is INTEGER
*> The number of columns of the matrix B. N >= 0.
+*> \endverbatim
*>
*> \param[in] K
*> \verbatim
@@ -74,78 +75,115 @@
*> The number of elementary reflectors whose product defines
*> the matrix Q.
*> \endverbatim
-*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* K >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The order of the trapezoidal part of V.
+*> K >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> NB (input) INTEGER
+*> \param[in] NB
+*> \verbatim
+*> NB is INTEGER
*> The block size used for the storage of T. K >= NB >= 1.
*> This must be the same value of NB used to generate T
*> in CTPQRT.
+*> \endverbatim
*>
-*> V (input) COMPLEX array, dimension (LDA,K)
+*> \param[in] V
+*> \verbatim
+*> V is COMPLEX array, dimension (LDA,K)
*> The i-th column must contain the vector which defines the
*> elementary reflector H(i), for i = 1,2,...,k, as returned by
*> CTPQRT in B. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A.
-*> If SIDE = 'L', LDA >= max(1,M);
-*> if SIDE = 'R', LDA >= max(1,N).
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
+*> The leading dimension of the array V.
+*> If SIDE = 'L', LDV >= max(1,M);
+*> if SIDE = 'R', LDV >= max(1,N).
+*> \endverbatim
*>
-*> T (input) COMPLEX array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is COMPLEX array, dimension (LDT,K)
*> The upper triangular factors of the block reflectors
*> as returned by CTPQRT, stored as a NB-by-K matrix.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
*>
-*> A (input/output) COMPLEX array, dimension
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension
*> (LDA,N) if SIDE = 'L' or
*> (LDA,K) if SIDE = 'R'
*> On entry, the K-by-N or M-by-K matrix A.
*> On exit, A is overwritten by the corresponding block of
*> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A.
*> If SIDE = 'L', LDC >= max(1,K);
*> If SIDE = 'R', LDC >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX array, dimension (LDB,N)
*> On entry, the M-by-N matrix B.
*> On exit, B is overwritten by the corresponding block of
*> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B.
*> LDB >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX array. The dimension of WORK is
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array. The dimension of WORK is
*> N*NB if SIDE = 'L', or M*NB if SIDE = 'R'.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The columns of the pentagonal matrix V contain the elementary reflectors
*> H(1), H(2), ..., H(K); V is composed of a rectangular block V1 and a
diff --git a/SRC/ctpqrt.f b/SRC/ctpqrt.f
index dff156e5..48a17058 100644
--- a/SRC/ctpqrt.f
+++ b/SRC/ctpqrt.f
@@ -57,59 +57,90 @@
*> N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* MIN(M,N) >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The number of rows of the upper trapezoidal part of B.
+*> MIN(M,N) >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> NB (input) INTEGER
+*> \param[in] NB
+*> \verbatim
+*> NB is INTEGER
*> The block size to be used in the blocked QR. N >= NB >= 1.
+*> \endverbatim
*>
-*> A (input/output) COMPLEX array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N)
*> On entry, the upper triangular N-by-N matrix A.
*> On exit, the elements on and above the diagonal of the array
*> contain the upper triangular matrix R.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX array, dimension (LDB,N)
*> On entry, the pentagonal M-by-N matrix B. The first M-L rows
*> are rectangular, and the last L rows are upper trapezoidal.
*> On exit, B contains the pentagonal matrix V. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,M).
+*> \endverbatim
*>
-*> T (output) COMPLEX array, dimension (LDT,N)
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX array, dimension (LDT,N)
*> The upper triangular block reflectors stored in compact form
*> as a sequence of upper triangular blocks. See Further Details.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX array, dimension (NB*N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension (NB*N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
-*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*> The input matrix C is a (N+M)-by-N matrix
*>
*> C = [ A ]
diff --git a/SRC/ctpqrt2.f b/SRC/ctpqrt2.f
index 6eb3cae3..b33fb41b 100644
--- a/SRC/ctpqrt2.f
+++ b/SRC/ctpqrt2.f
@@ -55,53 +55,79 @@
*> N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* MIN(M,N) >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The number of rows of the upper trapezoidal part of B.
+*> MIN(M,N) >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> A (input/output) COMPLEX array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA,N)
*> On entry, the upper triangular N-by-N matrix A.
*> On exit, the elements on and above the diagonal of the array
*> contain the upper triangular matrix R.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX array, dimension (LDB,N)
*> On entry, the pentagonal M-by-N matrix B. The first M-L rows
*> are rectangular, and the last L rows are upper trapezoidal.
*> On exit, B contains the pentagonal matrix V. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,M).
+*> \endverbatim
*>
-*> T (output) COMPLEX array, dimension (LDT,N)
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX array, dimension (LDT,N)
*> The N-by-N upper triangular factor T of the block reflector.
*> See Further Details.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The input matrix C is a (N+M)-by-N matrix
*>
diff --git a/SRC/ctprfb.f b/SRC/ctprfb.f
index 33c0d656..e71d821e 100644
--- a/SRC/ctprfb.f
+++ b/SRC/ctprfb.f
@@ -97,76 +97,111 @@
*> K >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complexOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* K >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The order of the trapezoidal part of V.
+*> K >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> V (input) COMPLEX array, dimension
+*> \param[in] V
+*> \verbatim
+*> V is COMPLEX array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,M) if STOREV = 'R' and SIDE = 'L'
*> (LDV,N) if STOREV = 'R' and SIDE = 'R'
*> The pentagonal matrix V, which contains the elementary reflectors
*> H(1), H(2), ..., H(K). See Further Details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
*> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
*> if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> T (input) COMPLEX array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is COMPLEX array, dimension (LDT,K)
*> The triangular K-by-K matrix T in the representation of the
*> block reflector.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T.
*> LDT >= K.
+*> \endverbatim
*>
-*> A (input/output) COMPLEX array, dimension
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX array, dimension
*> (LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R'
*> On entry, the K-by-N or M-by-K matrix A.
*> On exit, A is overwritten by the corresponding block of
*> H*C or H**H*C or C*H or C*H**H. See Futher Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A.
*> If SIDE = 'L', LDC >= max(1,K);
*> If SIDE = 'R', LDC >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX array, dimension (LDB,N)
*> On entry, the M-by-N matrix B.
*> On exit, B is overwritten by the corresponding block of
*> H*C or H**H*C or C*H or C*H**H. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B.
*> LDB >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX array, dimension
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX array, dimension
*> (LDWORK,N) if SIDE = 'L',
*> (LDWORK,K) if SIDE = 'R'.
+*> \endverbatim
*>
-*> LDWORK (input) INTEGER
+*> \param[in] LDWORK
+*> \verbatim
+*> LDWORK is INTEGER
*> The leading dimension of the array WORK.
*> If SIDE = 'L', LDWORK >= K;
*> if SIDE = 'R', LDWORK >= M.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complexOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix C is a composite matrix formed from blocks A and B.
*> The block B is of size M-by-N; if SIDE = 'R', A is of size M-by-K,
diff --git a/SRC/ctrexc.f b/SRC/ctrexc.f
index 9d305eef..e7de5acb 100644
--- a/SRC/ctrexc.f
+++ b/SRC/ctrexc.f
@@ -89,15 +89,18 @@
*> \param[in] IFST
*> \verbatim
*> IFST is INTEGER
+*> \endverbatim
+*>
*> \param[in] ILST
*> \verbatim
*> ILST is INTEGER
+*> \endverbatim
+*> \verbatim
*> Specify the reordering of the diagonal elements of T:
*> The element with row index IFST is moved to row ILST by a
*> sequence of transpositions between adjacent elements.
*> 1 <= IFST <= N; 1 <= ILST <= N.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] INFO
*> \verbatim
diff --git a/SRC/cuncsd.f b/SRC/cuncsd.f
index 6baec686..bc01881d 100644
--- a/SRC/cuncsd.f
+++ b/SRC/cuncsd.f
@@ -129,16 +129,52 @@
*> The number of columns in X11 and X21. 0 <= Q <= M.
*> \endverbatim
*>
-*> \param[in,out] X
+*> \param[in,out] X11
*> \verbatim
-*> X is COMPLEX array, dimension (LDX,M)
-*> On entry, the unitary matrix whose CSD is desired.
+*> X11 is COMPLEX array, dimension (LDX11,Q)
+*> On entry, part of the unitary matrix whose CSD is desired.
*> \endverbatim
*>
-*> \param[in] LDX
+*> \param[in] LDX11
*> \verbatim
-*> LDX is INTEGER
-*> The leading dimension of X. LDX >= MAX(1,M).
+*> LDX11 is INTEGER
+*> The leading dimension of X11. LDX11 >= MAX(1,P).
+*> \endverbatim
+*>
+*> \param[in,out] X12
+*> \verbatim
+*> X12 is COMPLEX array, dimension (LDX12,M-Q)
+*> On entry, part of the unitary matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX12
+*> \verbatim
+*> LDX12 is INTEGER
+*> The leading dimension of X12. LDX12 >= MAX(1,P).
+*> \endverbatim
+*>
+*> \param[in,out] X21
+*> \verbatim
+*> X21 is COMPLEX array, dimension (LDX21,Q)
+*> On entry, part of the unitary matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX21
+*> \verbatim
+*> LDX21 is INTEGER
+*> The leading dimension of X11. LDX21 >= MAX(1,M-P).
+*> \endverbatim
+*>
+*> \param[in,out] X22
+*> \verbatim
+*> X22 is COMPLEX array, dimension (LDX22,M-Q)
+*> On entry, part of the unitary matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX22
+*> \verbatim
+*> LDX22 is INTEGER
+*> The leading dimension of X11. LDX22 >= MAX(1,M-P).
*> \endverbatim
*>
*> \param[out] THETA
diff --git a/SRC/cunghr.f b/SRC/cunghr.f
index a32a1c1c..dc903191 100644
--- a/SRC/cunghr.f
+++ b/SRC/cunghr.f
@@ -51,15 +51,18 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI must have the same values as in the previous call
*> of CGEHRD. Q is equal to the unit matrix except in the
*> submatrix Q(ilo+1:ihi,ilo+1:ihi).
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
diff --git a/SRC/cunmhr.f b/SRC/cunmhr.f
index cca73211..8fca77f3 100644
--- a/SRC/cunmhr.f
+++ b/SRC/cunmhr.f
@@ -80,9 +80,13 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI must have the same values as in the previous call
*> of CGEHRD. Q is equal to the unit matrix except in the
*> submatrix Q(ilo+1:ihi,ilo+1:ihi).
@@ -91,7 +95,6 @@
*> if SIDE = 'R', then 1 <= ILO <= IHI <= N, if N > 0, and
*> ILO = 1 and IHI = 0, if N = 0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] A
*> \verbatim
diff --git a/SRC/dbbcsd.f b/SRC/dbbcsd.f
index 91049d1e..4f931e75 100644
--- a/SRC/dbbcsd.f
+++ b/SRC/dbbcsd.f
@@ -236,6 +236,40 @@
*> partially reduced top-right block.
*> \endverbatim
*>
+*> \param[out] B21D
+*> \verbatim
+*> B21D is DOUBLE PRECISION array, dimension (Q)
+*> When CBBCSD converges, B21D contains the negative sines of
+*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then
+*> B21D contains the diagonal of the partially reduced bottom-left
+*> block.
+*> \endverbatim
+*>
+*> \param[out] B21E
+*> \verbatim
+*> B21E is DOUBLE PRECISION array, dimension (Q-1)
+*> When CBBCSD converges, B21E contains zeros. If CBBCSD fails
+*> to converge, then B21E contains the subdiagonal of the
+*> partially reduced bottom-left block.
+*> \endverbatim
+*>
+*> \param[out] B22D
+*> \verbatim
+*> B22D is DOUBLE PRECISION array, dimension (Q)
+*> When CBBCSD converges, B22D contains the negative sines of
+*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then
+*> B22D contains the diagonal of the partially reduced bottom-right
+*> block.
+*> \endverbatim
+*>
+*> \param[out] B22E
+*> \verbatim
+*> B22E is DOUBLE PRECISION array, dimension (Q-1)
+*> When CBBCSD converges, B22E contains zeros. If CBBCSD fails
+*> to converge, then B22E contains the subdiagonal of the
+*> partially reduced bottom-right block.
+*> \endverbatim
+*>
*> \param[out] WORK
*> \verbatim
*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
diff --git a/SRC/dgbsv.f b/SRC/dgbsv.f
index 87b04e59..2e54ec91 100644
--- a/SRC/dgbsv.f
+++ b/SRC/dgbsv.f
@@ -1,4 +1,4 @@
-*> \brief <b> DGBSV computes the solution to system of linear equations A * X = B for GB matrices</b>
+*> \brief <b> DGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> (simple driver)
*
* =========== DOCUMENTATION ===========
*
diff --git a/SRC/dgebal.f b/SRC/dgebal.f
index 08d79990..a1b20f99 100644
--- a/SRC/dgebal.f
+++ b/SRC/dgebal.f
@@ -64,37 +64,36 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is DOUBLE array, dimension (LDA,N)
+*> On entry, the input matrix A.
+*> On exit, A is overwritten by the balanced matrix.
+*> If JOB = 'N', A is not referenced.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> ILO (output) INTEGER
-*>
-*> IHI (output) INTEGER
+*> \param[out] ILO
+*> \verbatim
+*> ILO is INTEGER
+*> \endverbatim
+*> \param[out] IHI
+*> \verbatim
+*> IHI is INTEGER
*> ILO and IHI are set to integers such that on exit
*> A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I = IHI+1,...,N.
*> If JOB = 'N' or 'S', ILO = 1 and IHI = N.
+*> \endverbatim
*>
-*> SCALE (output) DOUBLE PRECISION array, dimension (N)
+*> \param[out] SCALE
+*> \verbatim
+*> SCALE is DOUBLE array, dimension (N)
*> Details of the permutations and scaling factors applied to
*> A. If P(j) is the index of the row and column interchanged
*> with row and column j and D(j) is the scaling factor
@@ -104,11 +103,33 @@
*> = P(j) for j = IHI+1,...,N.
*> The order in which the interchanges are made is N to IHI+1,
*> then 1 to ILO-1.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit.
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The permutations consist of row and column interchanges which put
*> the matrix in the form
diff --git a/SRC/dgebd2.f b/SRC/dgebd2.f
index c8d8df44..32da134b 100644
--- a/SRC/dgebd2.f
+++ b/SRC/dgebd2.f
@@ -54,52 +54,93 @@
*> The number of columns in the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the m by n general matrix to be reduced.
+*> On exit,
+*> if m >= n, the diagonal and the first superdiagonal are
+*> overwritten with the upper bidiagonal matrix B; the
+*> elements below the diagonal, with the array TAUQ, represent
+*> the orthogonal matrix Q as a product of elementary
+*> reflectors, and the elements above the first superdiagonal,
+*> with the array TAUP, represent the orthogonal matrix P as
+*> a product of elementary reflectors;
+*> if m < n, the diagonal and the first subdiagonal are
+*> overwritten with the lower bidiagonal matrix B; the
+*> elements below the first subdiagonal, with the array TAUQ,
+*> represent the orthogonal matrix Q as a product of
+*> elementary reflectors, and the elements above the diagonal,
+*> with the array TAUP, represent the orthogonal matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) DOUBLE PRECISION array, dimension (min(M,N))
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (min(M,N))
*> The diagonal elements of the bidiagonal matrix B:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) DOUBLE PRECISION array, dimension (min(M,N)-1)
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (min(M,N)-1)
*> The off-diagonal elements of the bidiagonal matrix B:
*> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
*> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*> \endverbatim
*>
-*> TAUQ (output) DOUBLE PRECISION array dimension (min(M,N))
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is DOUBLE PRECISION array dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) DOUBLE PRECISION array, dimension (min(M,N))
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is DOUBLE PRECISION array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix P. See Further Details.
+*> \endverbatim
*>
-*> WORK (workspace) DOUBLE PRECISION array, dimension (max(M,N))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (max(M,N))
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit.
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/dgebrd.f b/SRC/dgebrd.f
index 70656784..91118e37 100644
--- a/SRC/dgebrd.f
+++ b/SRC/dgebrd.f
@@ -55,50 +55,72 @@
*> The number of columns in the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the M-by-N general matrix to be reduced.
+*> On exit,
+*> if m >= n, the diagonal and the first superdiagonal are
+*> overwritten with the upper bidiagonal matrix B; the
+*> elements below the diagonal, with the array TAUQ, represent
+*> the orthogonal matrix Q as a product of elementary
+*> reflectors, and the elements above the first superdiagonal,
+*> with the array TAUP, represent the orthogonal matrix P as
+*> a product of elementary reflectors;
+*> if m < n, the diagonal and the first subdiagonal are
+*> overwritten with the lower bidiagonal matrix B; the
+*> elements below the first subdiagonal, with the array TAUQ,
+*> represent the orthogonal matrix Q as a product of
+*> elementary reflectors, and the elements above the diagonal,
+*> with the array TAUP, represent the orthogonal matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) DOUBLE PRECISION array, dimension (min(M,N))
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (min(M,N))
*> The diagonal elements of the bidiagonal matrix B:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) DOUBLE PRECISION array, dimension (min(M,N)-1)
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (min(M,N)-1)
*> The off-diagonal elements of the bidiagonal matrix B:
*> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
*> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*> \endverbatim
*>
-*> TAUQ (output) DOUBLE PRECISION array dimension (min(M,N))
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is DOUBLE PRECISION array dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) DOUBLE PRECISION array, dimension (min(M,N))
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is DOUBLE PRECISION array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix P. See Further Details.
+*> \endverbatim
*>
-*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The length of the array WORK. LWORK >= max(1,M,N).
*> For optimum performance LWORK >= (M+N)*NB, where NB
*> is the optimal blocksize.
@@ -107,11 +129,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/dgees.f b/SRC/dgees.f
index f00eabe7..9e2dee76 100644
--- a/SRC/dgees.f
+++ b/SRC/dgees.f
@@ -166,8 +166,7 @@
*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,3*N).
*> For good performance, LWORK must generally be larger.
-*> \endverbatim
-*> \verbatim
+*>
*> If LWORK = -1, then a workspace query is assumed; the routine
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
diff --git a/SRC/dgehd2.f b/SRC/dgehd2.f
index f6d32925..daae6cee 100644
--- a/SRC/dgehd2.f
+++ b/SRC/dgehd2.f
@@ -45,48 +45,77 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] ILO
+*> \verbatim
+*> ILO is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHI
*> \verbatim
-* set to 1 and N respectively. See Further Details.
+*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
+*> It is assumed that A is already upper triangular in rows
+*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+*> set by a previous call to DGEBAL; otherwise they should be
+*> set to 1 and N respectively. See Further Details.
*> 1 <= ILO <= IHI <= max(1,N).
+*> \endverbatim
*>
-*> A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
*> On entry, the n by n general matrix to be reduced.
*> On exit, the upper triangle and the first subdiagonal of A
*> are overwritten with the upper Hessenberg matrix H, and the
*> elements below the first subdiagonal, with the array TAU,
*> represent the orthogonal matrix Q as a product of elementary
*> reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> TAU (output) DOUBLE PRECISION array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace) DOUBLE PRECISION array, dimension (N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit.
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of (ihi-ilo) elementary
*> reflectors
diff --git a/SRC/dgehrd.f b/SRC/dgehrd.f
index b24b2e3f..653a5fb8 100644
--- a/SRC/dgehrd.f
+++ b/SRC/dgehrd.f
@@ -45,47 +45,57 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] ILO
*> \verbatim
-* set to 1 and N respectively. See Further Details.
+*> ILO is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHI
+*> \verbatim
+*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
+*> It is assumed that A is already upper triangular in rows
+*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+*> set by a previous call to DGEBAL; otherwise they should be
+*> set to 1 and N respectively. See Further Details.
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*> \endverbatim
*>
-*> A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
*> On entry, the N-by-N general matrix to be reduced.
*> On exit, the upper triangle and the first subdiagonal of A
*> are overwritten with the upper Hessenberg matrix H, and the
*> elements below the first subdiagonal, with the array TAU,
*> represent the orthogonal matrix Q as a product of elementary
*> reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> TAU (output) DOUBLE PRECISION array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to
*> zero.
+*> \endverbatim
*>
-*> WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (LWORK)
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The length of the array WORK. LWORK >= max(1,N).
*> For optimum performance LWORK >= N*NB, where NB is the
*> optimal blocksize.
@@ -94,11 +104,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of (ihi-ilo) elementary
*> reflectors
diff --git a/SRC/dgejsv.f b/SRC/dgejsv.f
index 41b61d3d..d653ded2 100644
--- a/SRC/dgejsv.f
+++ b/SRC/dgejsv.f
@@ -284,14 +284,12 @@
*> determined to be strictly smaller than N, SCONDA is
*> returned as -1, thus indicating that the smallest
*> singular values might be lost.
-*> \endverbatim
-*> \verbatim
+*>
*> If full SVD is needed, the following two condition numbers are
*> useful for the analysis of the algorithm. They are provied for
*> a developer/implementer who is familiar with the details of
*> the method.
-*> \endverbatim
-*> \verbatim
+*>
*> WORK(4) = an estimate of the scaled condition number of the
*> triangular factor in the first QR factorization.
*> WORK(5) = an estimate of the scaled condition number of the
@@ -299,8 +297,7 @@
*> The following two parameters are computed if JOBT .EQ. 'T'.
*> They are provided for a developer/implementer who is familiar
*> with the details of the method.
-*> \endverbatim
-*> \verbatim
+*>
*> WORK(6) = the entropy of A^t*A :: this is the Shannon entropy
*> of diag(A^t*A) / Trace(A^t*A) taken as point in the
*> probability simplex.
@@ -312,8 +309,7 @@
*> LWORK is INTEGER
*> Length of WORK to confirm proper allocation of work space.
*> LWORK depends on the job:
-*> \endverbatim
-*> \verbatim
+*>
*> If only SIGMA is needed ( JOBU.EQ.'N', JOBV.EQ.'N' ) and
*> -> .. no scaled condition estimate required (JOBE.EQ.'N'):
*> LWORK >= max(2*M+N,4*N+1,7). This is the minimal requirement.
@@ -330,8 +326,7 @@
*> In general, the optimal length LWORK is computed as
*> LWORK >= max(2*M+N,N+LWORK(DGEQP3),N+LWORK(DGEQRF),
*> N+N*N+LWORK(DPOCON),7).
-*> \endverbatim
-*> \verbatim
+*>
*> If SIGMA and the right singular vectors are needed (JOBV.EQ.'V'),
*> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7).
*> -> For optimal performance, LWORK >= max(2*M+N,3*N+(N+1)*NB,7),
@@ -339,8 +334,7 @@
*> DORMLQ. In general, the optimal length LWORK is computed as
*> LWORK >= max(2*M+N,N+LWORK(DGEQP3), N+LWORK(DPOCON),
*> N+LWORK(DGELQ), 2*N+LWORK(DGEQRF), N+LWORK(DORMLQ)).
-*> \endverbatim
-*> \verbatim
+*>
*> If SIGMA and the left singular vectors are needed
*> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7).
*> -> For optimal performance:
diff --git a/SRC/dgelq2.f b/SRC/dgelq2.f
index bebd22ae..095c796f 100644
--- a/SRC/dgelq2.f
+++ b/SRC/dgelq2.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and below the diagonal of the array
+*> contain the m by min(m,n) lower trapezoidal matrix L (L is
+*> lower triangular if m <= n); the elements above the diagonal,
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (M)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) DOUBLE PRECISION array, dimension (M)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/dgelqf.f b/SRC/dgelqf.f
index 9cc3f109..cc1c8906 100644
--- a/SRC/dgelqf.f
+++ b/SRC/dgelqf.f
@@ -51,37 +51,39 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* product of elementary reflectors (see Further Details).
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit, the elements on and below the diagonal of the array
+*> contain the m-by-min(m,n) lower trapezoidal matrix L (L is
+*> lower triangular if m <= n); the elements above the diagonal,
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,M).
*> For optimum performance LWORK >= M*NB, where NB is the
*> optimal blocksize.
@@ -90,11 +92,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/dgeql2.f b/SRC/dgeql2.f
index 8908d546..3c3aa3df 100644
--- a/SRC/dgeql2.f
+++ b/SRC/dgeql2.f
@@ -51,6 +51,44 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, if m >= n, the lower triangle of the subarray
+*> A(m-n+1:m,1:n) contains the n by n lower triangular matrix L;
+*> if m <= n, the elements on and below the (n-m)-th
+*> superdiagonal contain the m by n lower trapezoidal matrix L;
+*> the remaining elements, with the array TAU, represent the
+*> orthogonal matrix Q as a product of elementary reflectors
+*> (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +107,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) DOUBLE PRECISION array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/dgeqlf.f b/SRC/dgeqlf.f
index befdfa8e..9e7c30a8 100644
--- a/SRC/dgeqlf.f
+++ b/SRC/dgeqlf.f
@@ -51,37 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* (see Further Details).
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit,
+*> if m >= n, the lower triangle of the subarray
+*> A(m-n+1:m,1:n) contains the N-by-N lower triangular matrix L;
+*> if m <= n, the elements on and below the (n-m)-th
+*> superdiagonal contain the M-by-N lower trapezoidal matrix L;
+*> the remaining elements, with the array TAU, represent the
+*> orthogonal matrix Q as a product of elementary reflectors
+*> (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N).
*> For optimum performance LWORK >= N*NB, where NB is the
*> optimal blocksize.
@@ -90,11 +95,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/dgeqr2.f b/SRC/dgeqr2.f
index 0cbc5124..27a2606e 100644
--- a/SRC/dgeqr2.f
+++ b/SRC/dgeqr2.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and above the diagonal of the array
+*> contain the min(m,n) by n upper trapezoidal matrix R (R is
+*> upper triangular if m >= n); the elements below the diagonal,
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) DOUBLE PRECISION array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/dgeqr2p.f b/SRC/dgeqr2p.f
index 66fdf276..2764d256 100644
--- a/SRC/dgeqr2p.f
+++ b/SRC/dgeqr2p.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and above the diagonal of the array
+*> contain the min(m,n) by n upper trapezoidal matrix R (R is
+*> upper triangular if m >= n); the elements below the diagonal,
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) DOUBLE PRECISION array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/dgeqrt.f b/SRC/dgeqrt.f
index add064c0..09b15f61 100644
--- a/SRC/dgeqrt.f
+++ b/SRC/dgeqrt.f
@@ -117,7 +117,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-*
*> The matrix V stores the elementary reflectors H(i) in the i-th column
*> below the diagonal. For example, if M=5 and N=3, the matrix V is
*>
diff --git a/SRC/dgeqrt2.f b/SRC/dgeqrt2.f
index 461decc9..1d3f519e 100644
--- a/SRC/dgeqrt2.f
+++ b/SRC/dgeqrt2.f
@@ -74,8 +74,10 @@
*> reflector T; the elements below the diagonal are not used.
*> See below for further details.
*> \endverbatim
+*>
+*> \param[in] LDT
*> \verbatim
-*> LDT (intput) INTEGER
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N).
*> \endverbatim
*>
diff --git a/SRC/dgeqrt3.f b/SRC/dgeqrt3.f
index 1885306f..ff048629 100644
--- a/SRC/dgeqrt3.f
+++ b/SRC/dgeqrt3.f
@@ -77,8 +77,10 @@
*> reflector T; the elements below the diagonal are not used.
*> See below for further details.
*> \endverbatim
+*>
+*> \param[in] LDT
*> \verbatim
-*> LDT (intput) INTEGER
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N).
*> \endverbatim
*>
diff --git a/SRC/dgerqf.f b/SRC/dgerqf.f
index f6ecacb5..90b8594d 100644
--- a/SRC/dgerqf.f
+++ b/SRC/dgerqf.f
@@ -51,37 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* reflectors (see Further Details).
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit,
+*> if m <= n, the upper triangle of the subarray
+*> A(1:m,n-m+1:n) contains the M-by-M upper triangular matrix R;
+*> if m >= n, the elements on and above the (m-n)-th subdiagonal
+*> contain the M-by-N upper trapezoidal matrix R;
+*> the remaining elements, with the array TAU, represent the
+*> orthogonal matrix Q as a product of min(m,n) elementary
+*> reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) DOUBLE PRECISION array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,M).
*> For optimum performance LWORK >= M*NB, where NB is
*> the optimal blocksize.
@@ -90,11 +95,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/dgesv.f b/SRC/dgesv.f
index 7e7e1ec0..9764edf2 100644
--- a/SRC/dgesv.f
+++ b/SRC/dgesv.f
@@ -5,13 +5,15 @@
* Online html documentation available at
* http://www.netlib.org/lapack/explore-html/
*
+*> \htmlonly
*> Download DGESV + dependencies
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgesv.f">
*> [TGZ]</a>
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgesv.f">
*> [ZIP]</a>
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgesv.f">
-*> [TXT]</a>
+*> [TXT]</a>
+*> \endhtmlonly
*
* Definition
* ==========
diff --git a/SRC/dggglm.f b/SRC/dggglm.f
index f31581d6..40b21222 100644
--- a/SRC/dggglm.f
+++ b/SRC/dggglm.f
@@ -123,11 +123,14 @@
*> \param[out] X
*> \verbatim
*> X is DOUBLE PRECISION array, dimension (M)
+*> \endverbatim
+*>
*> \param[out] Y
*> \verbatim
*> Y is DOUBLE PRECISION array, dimension (P)
-*> On exit, X and Y are the solutions of the GLM problem.
*> \endverbatim
+*> \verbatim
+*> On exit, X and Y are the solutions of the GLM problem.
*> \endverbatim
*>
*> \param[out] WORK
diff --git a/SRC/dgghrd.f b/SRC/dgghrd.f
index 7b6ad71b..ae3a3937 100644
--- a/SRC/dgghrd.f
+++ b/SRC/dgghrd.f
@@ -97,17 +97,20 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI mark the rows and columns of A which are to be
*> reduced. It is assumed that A is already upper triangular
*> in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are
-*> normally set by a previous call to SGGBAL; otherwise they
+*> normally set by a previous call to DGGBAL; otherwise they
*> should be set to 1 and N respectively.
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
diff --git a/SRC/dggqrf.f b/SRC/dggqrf.f
index e00acd6c..497afc7b 100644
--- a/SRC/dggqrf.f
+++ b/SRC/dggqrf.f
@@ -102,27 +102,16 @@
*> The leading dimension of the array A. LDA >= max(1,N).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[out] TAUA
*> \verbatim
-* represent the orthogonal matrix Q (see Further Details).
+*> TAUA is DOUBLE PRECISION array, dimension (min(N,M))
+*> The scalar factors of the elementary reflectors which
+*> represent the orthogonal matrix Q (see Further Details).
+*> \endverbatim
*>
-*> B (input/output) DOUBLE PRECISION array, dimension (LDB,P)
+*> \param[in,out] B
+*> \verbatim
+*> B is DOUBLE PRECISION array, dimension (LDB,P)
*> On entry, the N-by-P matrix B.
*> On exit, if N <= P, the upper triangle of the subarray
*> B(1:N,P-N+1:P) contains the N-by-N upper triangular matrix T;
@@ -131,18 +120,30 @@
*> elements, with the array TAUB, represent the orthogonal
*> matrix Z as a product of elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,N).
+*> \endverbatim
*>
-*> TAUB (output) DOUBLE PRECISION array, dimension (min(N,P))
+*> \param[out] TAUB
+*> \verbatim
+*> TAUB is DOUBLE PRECISION array, dimension (min(N,P))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix Z (see Further Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N,M,P).
*> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3),
*> where NB1 is the optimal blocksize for the QR factorization
@@ -154,11 +155,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/dggrqf.f b/SRC/dggrqf.f
index 6a930a72..1d1a9a46 100644
--- a/SRC/dggrqf.f
+++ b/SRC/dggrqf.f
@@ -103,45 +103,46 @@
*> The leading dimension of the array A. LDA >= max(1,M).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[out] TAUA
*> \verbatim
-* represent the orthogonal matrix Q (see Further Details).
+*> TAUA is DOUBLE PRECISION array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors which
+*> represent the orthogonal matrix Q (see Further Details).
+*> \endverbatim
*>
-*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is DOUBLE PRECISION array, dimension (LDB,N)
*> On entry, the P-by-N matrix B.
*> On exit, the elements on and above the diagonal of the array
*> contain the min(P,N)-by-N upper trapezoidal matrix T (T is
*> upper triangular if P >= N); the elements below the diagonal,
*> with the array TAUB, represent the orthogonal matrix Z as a
*> product of elementary reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,P).
+*> \endverbatim
*>
-*> TAUB (output) DOUBLE PRECISION array, dimension (min(P,N))
+*> \param[out] TAUB
+*> \verbatim
+*> TAUB is DOUBLE PRECISION array, dimension (min(P,N))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix Z (see Further Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N,M,P).
*> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3),
*> where NB1 is the optimal blocksize for the RQ factorization
@@ -153,11 +154,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INF0= -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/dggsvd.f b/SRC/dggsvd.f
index fce2da0f..c3b31459 100644
--- a/SRC/dggsvd.f
+++ b/SRC/dggsvd.f
@@ -163,14 +163,17 @@
*> \param[out] K
*> \verbatim
*> K is INTEGER
+*> \endverbatim
+*>
*> \param[out] L
*> \verbatim
*> L is INTEGER
+*> \endverbatim
+*> \verbatim
*> On exit, K and L specify the dimension of the subblocks
-*> described in the Purpose section.
+*> described in Purpose.
*> K + L = effective numerical rank of (A**T,B**T)**T.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
@@ -203,9 +206,13 @@
*> \param[out] ALPHA
*> \verbatim
*> ALPHA is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] BETA
*> \verbatim
*> BETA is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> On exit, ALPHA and BETA contain the generalized singular
*> value pairs of A and B;
*> ALPHA(1:K) = 1,
@@ -220,7 +227,6 @@
*> ALPHA(K+L+1:N) = 0
*> BETA(K+L+1:N) = 0
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] U
*> \verbatim
diff --git a/SRC/dggsvp.f b/SRC/dggsvp.f
index e25cb8fa..12bce973 100644
--- a/SRC/dggsvp.f
+++ b/SRC/dggsvp.f
@@ -136,30 +136,36 @@
*> \param[in] TOLA
*> \verbatim
*> TOLA is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] TOLB
*> \verbatim
*> TOLB is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> TOLA and TOLB are the thresholds to determine the effective
*> numerical rank of matrix B and a subblock of A. Generally,
*> they are set to
-*> TOLA = MAX(M,N)*norm(A)*MAZHEPS,
-*> TOLB = MAX(P,N)*norm(B)*MAZHEPS.
+*> TOLA = MAX(M,N)*norm(A)*MACHEPS,
+*> TOLB = MAX(P,N)*norm(B)*MACHEPS.
*> The size of TOLA and TOLB may affect the size of backward
*> errors of the decomposition.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] K
*> \verbatim
*> K is INTEGER
+*> \endverbatim
+*>
*> \param[out] L
*> \verbatim
*> L is INTEGER
+*> \endverbatim
+*> \verbatim
*> On exit, K and L specify the dimension of the subblocks
*> described in Purpose section.
*> K + L = effective numerical rank of (A**T,B**T)**T.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] U
*> \verbatim
diff --git a/SRC/dhsein.f b/SRC/dhsein.f
index 617174b2..e86297fe 100644
--- a/SRC/dhsein.f
+++ b/SRC/dhsein.f
@@ -118,9 +118,13 @@
*> \param[in,out] WR
*> \verbatim
*> WR is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
*> \param[in] WI
*> \verbatim
*> WI is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> On entry, the real and imaginary parts of the eigenvalues of
*> H; a complex conjugate pair of eigenvalues must be stored in
*> consecutive elements of WR and WI.
@@ -128,7 +132,6 @@
*> are perturbed slightly in searching for independent
*> eigenvectors.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] VL
*> \verbatim
diff --git a/SRC/dhseqr.f b/SRC/dhseqr.f
index be264d3e..0ea3bc9e 100644
--- a/SRC/dhseqr.f
+++ b/SRC/dhseqr.f
@@ -76,18 +76,21 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> It is assumed that H is already upper triangular in rows
*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
-*> set by a previous call to DGEBAL, and then passed to DGEHRD
+*> set by a previous call to DGEBAL, and then passed to ZGEHRD
*> when the matrix output by DGEBAL is reduced to Hessenberg
*> form. Otherwise ILO and IHI should be set to 1 and N
*> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.
*> If N = 0, then ILO = 1 and IHI = 0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] H
*> \verbatim
@@ -118,9 +121,13 @@
*> \param[out] WR
*> \verbatim
*> WR is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] WI
*> \verbatim
*> WI is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> The real and imaginary parts, respectively, of the computed
*> eigenvalues. If two eigenvalues are computed as a complex
*> conjugate pair, they are stored in consecutive elements of
@@ -131,7 +138,6 @@
*> diagonal block, WI(i) = sqrt(-H(i+1,i)*H(i,i+1)) and
*> WI(i+1) = -WI(i).
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] Z
*> \verbatim
diff --git a/SRC/dla_gbrfsx_extended.f b/SRC/dla_gbrfsx_extended.f
index 36c2c57b..40f6de00 100644
--- a/SRC/dla_gbrfsx_extended.f
+++ b/SRC/dla_gbrfsx_extended.f
@@ -107,29 +107,29 @@
*> matrix B.
*> \endverbatim
*>
-*> \param[in] A
+*> \param[in] AB
*> \verbatim
-*> A is DOUBLE PRECISION array, dimension (LDA,N)
-*> On entry, the N-by-N matrix A.
+*> AB is DOUBLE PRECISION array, dimension (LDAB,N)
+*> On entry, the N-by-N matrix AB.
*> \endverbatim
*>
-*> \param[in] LDA
+*> \param[in] LDAB
*> \verbatim
-*> LDA is INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
+*> LDAB is INTEGER
+*> The leading dimension of the array AB. LDBA >= max(1,N).
*> \endverbatim
*>
-*> \param[in] AF
+*> \param[in] AFB
*> \verbatim
-*> AF is DOUBLE PRECISION array, dimension (LDAF,N)
+*> AFB is DOUBLE PRECISION array, dimension (LDAFB,N)
*> The factors L and U from the factorization
*> A = P*L*U as computed by DGBTRF.
*> \endverbatim
*>
-*> \param[in] LDAF
+*> \param[in] LDAFB
*> \verbatim
-*> LDAF is INTEGER
-*> The leading dimension of the array AF. LDAF >= max(1,N).
+*> LDAFB is INTEGER
+*> The leading dimension of the array AF. LDAFB >= max(1,N).
*> \endverbatim
*>
*> \param[in] IPIV
@@ -213,37 +213,31 @@
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> normwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Normwise relative error in the ith solution vector:
*> max_j (abs(XTRUE(j,i) - X(j,i)))
*> ------------------------------
*> max_j abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the type of error information as described
*> below. There currently are up to three pieces of information
*> returned.
-*> \endverbatim
-*> \verbatim
+*>
*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
+*>
*> The second index in ERR_BNDS_NORM(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated normwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -252,8 +246,7 @@
*> appropriately scaled matrix Z.
*> Let Z = S*A, where S scales each row by a power of the
*> radix so all absolute row sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
@@ -267,14 +260,12 @@
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> componentwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Componentwise relative error in the ith solution vector:
*> abs(XTRUE(j,i) - X(j,i))
*> max_j ----------------------
*> abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the right-hand side i (on which the
*> componentwise relative error depends), and the type of error
*> information as described below. There currently are up to three
@@ -282,26 +273,22 @@
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned.
-*> \endverbatim
-*> \verbatim
+*>
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
+*>
*> The second index in ERR_BNDS_COMP(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated componentwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -312,8 +299,7 @@
*> current right-hand side and S scales each row of
*> A*diag(x) by a power of the radix so all absolute row
*> sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
diff --git a/SRC/dla_gerfsx_extended.f b/SRC/dla_gerfsx_extended.f
index c9788e9e..c3e009be 100644
--- a/SRC/dla_gerfsx_extended.f
+++ b/SRC/dla_gerfsx_extended.f
@@ -48,10 +48,10 @@
*> and provides error bounds and backward error estimates for the solution.
*> This subroutine is called by DGERFSX to perform iterative refinement.
*> In addition to normwise error bound, the code provides maximum
-*> componentwise error bound if possible. See comments for ERR_BNDS_NORM
-*> and ERR_BNDS_COMP for details of the error bounds. Note that this
+*> componentwise error bound if possible. See comments for ERRS_N
+*> and ERRS_C for details of the error bounds. Note that this
*> subroutine is only resonsible for setting the second fields of
-*> ERR_BNDS_NORM and ERR_BNDS_COMP.
+*> ERRS_N and ERRS_C.
*>
*>\endverbatim
*
@@ -186,50 +186,44 @@
*> \param[in] N_NORMS
*> \verbatim
*> N_NORMS is INTEGER
-*> Determines which error bounds to return (see ERR_BNDS_NORM
-*> and ERR_BNDS_COMP).
+*> Determines which error bounds to return (see ERRS_N
+*> and ERRS_C).
*> If N_NORMS >= 1 return normwise error bounds.
*> If N_NORMS >= 2 return componentwise error bounds.
*> \endverbatim
*>
-*> \param[in,out] ERR_BNDS_NORM
+*> \param[in,out] ERRS_N
*> \verbatim
-*> ERR_BNDS_NORM is DOUBLE PRECISION array, dimension
+*> ERRS_N is DOUBLE PRECISION array, dimension
*> (NRHS, N_ERR_BNDS)
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> normwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Normwise relative error in the ith solution vector:
*> max_j (abs(XTRUE(j,i) - X(j,i)))
*> ------------------------------
*> max_j abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the type of error information as described
*> below. There currently are up to three pieces of information
*> returned.
-*> \endverbatim
-*> \verbatim
-*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
+*>
+*> The first index in ERRS_N(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
-*> The second index in ERR_BNDS_NORM(:,err) contains the following
+*>
+*> The second index in ERRS_N(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated normwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -238,56 +232,49 @@
*> appropriately scaled matrix Z.
*> Let Z = S*A, where S scales each row by a power of the
*> radix so all absolute row sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
*> cautions.
*> \endverbatim
*>
-*> \param[in,out] ERR_BNDS_COMP
+*> \param[in,out] ERRS_C
*> \verbatim
-*> ERR_BNDS_COMP is DOUBLE PRECISION array, dimension
+*> ERRS_C is DOUBLE PRECISION array, dimension
*> (NRHS, N_ERR_BNDS)
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> componentwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Componentwise relative error in the ith solution vector:
*> abs(XTRUE(j,i) - X(j,i))
*> max_j ----------------------
*> abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the right-hand side i (on which the
*> componentwise relative error depends), and the type of error
*> information as described below. There currently are up to three
*> pieces of information returned for each right-hand side. If
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
-*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
+*> ERRS_C is not accessed. If N_ERR_BNDS .LT. 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned.
-*> \endverbatim
-*> \verbatim
-*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
+*>
+*> The first index in ERRS_C(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
-*> The second index in ERR_BNDS_COMP(:,err) contains the following
+*>
+*> The second index in ERRS_C(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated componentwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -298,8 +285,7 @@
*> current right-hand side and S scales each row of
*> A*diag(x) by a power of the radix so all absolute row
*> sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
@@ -350,7 +336,7 @@
*> permit convergence using approximate factorizations or
*> factorizations other than LU. If the factorization uses a
*> technique other than Gaussian elimination, the guarantees in
-*> ERR_BNDS_NORM and ERR_BNDS_COMP may no longer be trustworthy.
+*> ERRS_N and ERRS_C may no longer be trustworthy.
*> \endverbatim
*>
*> \param[in] RTHRESH
diff --git a/SRC/dla_lin_berr.f b/SRC/dla_lin_berr.f
index 8fbc294e..dbf450bd 100644
--- a/SRC/dla_lin_berr.f
+++ b/SRC/dla_lin_berr.f
@@ -77,13 +77,13 @@
*> The denominator in the relative backward error formula above, i.e.,
*> the matrix abs(op(A_s))*abs(Y) + abs(B_s). The matrices A, Y, and B
*> are from iterative refinement (see dla_gerfsx_extended.f).
+*> \endverbatim
*>
*> \param[out] BERR
*> \verbatim
*> BERR is DOUBLE PRECISION array, dimension (NRHS)
*> The component-wise relative backward error from the formula above.
*> \endverbatim
-*> \endverbatim
*>
*
* Authors
diff --git a/SRC/dla_syrpvgrw.f b/SRC/dla_syrpvgrw.f
index c677cf9b..33a476e9 100644
--- a/SRC/dla_syrpvgrw.f
+++ b/SRC/dla_syrpvgrw.f
@@ -67,12 +67,6 @@
*> column INFO is exactly 0.
*> \endverbatim
*>
-*> \param[in] NCOLS
-*> \verbatim
-*> NCOLS is INTEGER
-*> The number of columns of the matrix A. NCOLS >= 0.
-*> \endverbatim
-*>
*> \param[in] A
*> \verbatim
*> A is DOUBLE PRECISION array, dimension (LDA,N)
diff --git a/SRC/dlabrd.f b/SRC/dlabrd.f
index 51255d24..406a7b7f 100644
--- a/SRC/dlabrd.f
+++ b/SRC/dlabrd.f
@@ -66,59 +66,105 @@
*> The number of leading rows and columns of A to be reduced.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the m by n general matrix to be reduced.
+*> On exit, the first NB rows and columns of the matrix are
+*> overwritten; the rest of the array is unchanged.
+*> If m >= n, elements on and below the diagonal in the first NB
+*> columns, with the array TAUQ, represent the orthogonal
+*> matrix Q as a product of elementary reflectors; and
+*> elements above the diagonal in the first NB rows, with the
+*> array TAUP, represent the orthogonal matrix P as a product
+*> of elementary reflectors.
+*> If m < n, elements below the diagonal in the first NB
+*> columns, with the array TAUQ, represent the orthogonal
+*> matrix Q as a product of elementary reflectors, and
+*> elements on and above the diagonal in the first NB rows,
+*> with the array TAUP, represent the orthogonal matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) DOUBLE PRECISION array, dimension (NB)
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (NB)
*> The diagonal elements of the first NB rows and columns of
*> the reduced matrix. D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) DOUBLE PRECISION array, dimension (NB)
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (NB)
*> The off-diagonal elements of the first NB rows and columns of
*> the reduced matrix.
+*> \endverbatim
*>
-*> TAUQ (output) DOUBLE PRECISION array dimension (NB)
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is DOUBLE PRECISION array dimension (NB)
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) DOUBLE PRECISION array, dimension (NB)
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is DOUBLE PRECISION array, dimension (NB)
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix P. See Further Details.
+*> \endverbatim
*>
-*> X (output) DOUBLE PRECISION array, dimension (LDX,NB)
+*> \param[out] X
+*> \verbatim
+*> X is DOUBLE PRECISION array, dimension (LDX,NB)
*> The m-by-nb matrix X required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDX (input) INTEGER
+*> \param[in] LDX
+*> \verbatim
+*> LDX is INTEGER
*> The leading dimension of the array X. LDX >= max(1,M).
+*> \endverbatim
*>
-*> Y (output) DOUBLE PRECISION array, dimension (LDY,NB)
+*> \param[out] Y
+*> \verbatim
+*> Y is DOUBLE PRECISION array, dimension (LDY,NB)
*> The n-by-nb matrix Y required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDY (input) INTEGER
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
*> The leading dimension of the array Y. LDY >= max(1,N).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/dlacon.f b/SRC/dlacon.f
index 280ab921..c2489d05 100644
--- a/SRC/dlacon.f
+++ b/SRC/dlacon.f
@@ -104,8 +104,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> Contributed by Nick Higham, University of Manchester.
*> Originally named SONEST, dated March 16, 1988.
diff --git a/SRC/dlaed3.f b/SRC/dlaed3.f
index 8bf0bf9d..06a20f09 100644
--- a/SRC/dlaed3.f
+++ b/SRC/dlaed3.f
@@ -153,12 +153,6 @@
*> to update the system.
*> \endverbatim
*>
-*> \param[in] LDS
-*> \verbatim
-*> LDS is INTEGER
-*> The leading dimension of S. LDS >= max(1,K).
-*> \endverbatim
-*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/SRC/dlagtm.f b/SRC/dlagtm.f
index 300cb2a1..bfa2b179 100644
--- a/SRC/dlagtm.f
+++ b/SRC/dlagtm.f
@@ -99,12 +99,13 @@
*> \verbatim
*> X is DOUBLE PRECISION array, dimension (LDX,NRHS)
*> The N by NRHS matrix X.
+*> \endverbatim
+*>
*> \param[in] LDX
*> \verbatim
*> LDX is INTEGER
*> The leading dimension of the array X. LDX >= max(N,1).
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] BETA
*> \verbatim
diff --git a/SRC/dlahr2.f b/SRC/dlahr2.f
index b3a0dcb8..81d49234 100644
--- a/SRC/dlahr2.f
+++ b/SRC/dlahr2.f
@@ -65,6 +65,55 @@
*> The number of columns to be reduced.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N-K+1)
+*> On entry, the n-by-(n-k+1) general matrix A.
+*> On exit, the elements on and above the k-th subdiagonal in
+*> the first NB columns are overwritten with the corresponding
+*> elements of the reduced matrix; the elements below the k-th
+*> subdiagonal, with the array TAU, represent the matrix Q as a
+*> product of elementary reflectors. The other columns of A are
+*> unchanged. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (NB)
+*> The scalar factors of the elementary reflectors. See Further
+*> Details.
+*> \endverbatim
+*>
+*> \param[out] T
+*> \verbatim
+*> T is DOUBLE PRECISION array, dimension (LDT,NB)
+*> The upper triangular matrix T.
+*> \endverbatim
+*>
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
+*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
+*>
+*> \param[out] Y
+*> \verbatim
+*> Y is DOUBLE PRECISION array, dimension (LDY,NB)
+*> The n-by-nb matrix Y.
+*> \endverbatim
+*>
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
+*> The leading dimension of the array Y. LDY >= N.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -83,27 +132,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* unchanged. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> TAU (output) DOUBLE PRECISION array, dimension (NB)
-*> The scalar factors of the elementary reflectors. See Further
-*> Details.
-*>
-*> T (output) DOUBLE PRECISION array, dimension (LDT,NB)
-*> The upper triangular matrix T.
-*>
-*> LDT (input) INTEGER
-*> The leading dimension of the array T. LDT >= NB.
-*>
-*> Y (output) DOUBLE PRECISION array, dimension (LDY,NB)
-*> The n-by-nb matrix Y.
-*>
-*> LDY (input) INTEGER
-*> The leading dimension of the array Y. LDY >= N.
-*>
*>
*> The matrix Q is represented as a product of nb elementary reflectors
*>
diff --git a/SRC/dlahrd.f b/SRC/dlahrd.f
index 189e6e8c..92e709ed 100644
--- a/SRC/dlahrd.f
+++ b/SRC/dlahrd.f
@@ -66,6 +66,55 @@
*> The number of columns to be reduced.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N-K+1)
+*> On entry, the n-by-(n-k+1) general matrix A.
+*> On exit, the elements on and above the k-th subdiagonal in
+*> the first NB columns are overwritten with the corresponding
+*> elements of the reduced matrix; the elements below the k-th
+*> subdiagonal, with the array TAU, represent the matrix Q as a
+*> product of elementary reflectors. The other columns of A are
+*> unchanged. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (NB)
+*> The scalar factors of the elementary reflectors. See Further
+*> Details.
+*> \endverbatim
+*>
+*> \param[out] T
+*> \verbatim
+*> T is DOUBLE PRECISION array, dimension (LDT,NB)
+*> The upper triangular matrix T.
+*> \endverbatim
+*>
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
+*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
+*>
+*> \param[out] Y
+*> \verbatim
+*> Y is DOUBLE PRECISION array, dimension (LDY,NB)
+*> The n-by-nb matrix Y.
+*> \endverbatim
+*>
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
+*> The leading dimension of the array Y. LDY >= N.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -84,27 +133,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* unchanged. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> TAU (output) DOUBLE PRECISION array, dimension (NB)
-*> The scalar factors of the elementary reflectors. See Further
-*> Details.
-*>
-*> T (output) DOUBLE PRECISION array, dimension (LDT,NB)
-*> The upper triangular matrix T.
-*>
-*> LDT (input) INTEGER
-*> The leading dimension of the array T. LDT >= NB.
-*>
-*> Y (output) DOUBLE PRECISION array, dimension (LDY,NB)
-*> The n-by-nb matrix Y.
-*>
-*> LDY (input) INTEGER
-*> The leading dimension of the array Y. LDY >= N.
-*>
*>
*> The matrix Q is represented as a product of nb elementary reflectors
*>
diff --git a/SRC/dlaqr0.f b/SRC/dlaqr0.f
index c15924fe..b83ef92e 100644
--- a/SRC/dlaqr0.f
+++ b/SRC/dlaqr0.f
@@ -196,37 +196,29 @@
*> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
*> and WI contain those eigenvalues which have been
*> successfully computed. (Failures are rare.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANT is .FALSE., then on exit,
*> the remaining unconverged eigenvalues are the eigen-
*> values of the upper Hessenberg matrix rows and
*> columns ILO through INFO of the final, output
*> value of H.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTT is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (*) (initial value of H)*U = U*(final value of H)
-*> \endverbatim
-*> \verbatim
+*>
*> where U is an orthogonal matrix. The final
*> value of H is upper Hessenberg and quasi-triangular
*> in rows and columns INFO+1 through IHI.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (final value of Z(ILO:IHI,ILOZ:IHIZ)
*> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
-*> \endverbatim
-*> \verbatim
+*>
*> where U is the orthogonal matrix in (*) (regard-
*> less of the value of WANTT.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
*> accessed.
*> \endverbatim
@@ -236,15 +228,13 @@
*> Based on contributions by
*> Karen Braman and Ralph Byers, Department of Mathematics,
*> University of Kansas, USA
-*> \endverbatim
-*> \verbatim
+*>
*> References:
*> K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
*> Algorithm Part I: Maintaining Well Focused Shifts, and Level 3
*> Performance, SIAM Journal of Matrix Analysis, volume 23, pages
*> 929--947, 2002.
-*> \endverbatim
-*> \verbatim
+*>
*> K. Braman, R. Byers and R. Mathias, The Multi-Shift QR
*> Algorithm Part II: Aggressive Early Deflation, SIAM Journal
*> of Matrix Analysis, volume 23, pages 948--973, 2002.
diff --git a/SRC/dlaqr4.f b/SRC/dlaqr4.f
index 760f13d9..635c49b2 100644
--- a/SRC/dlaqr4.f
+++ b/SRC/dlaqr4.f
@@ -203,37 +203,29 @@
*> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
*> and WI contain those eigenvalues which have been
*> successfully computed. (Failures are rare.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANT is .FALSE., then on exit,
*> the remaining unconverged eigenvalues are the eigen-
*> values of the upper Hessenberg matrix rows and
*> columns ILO through INFO of the final, output
*> value of H.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTT is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (*) (initial value of H)*U = U*(final value of H)
-*> \endverbatim
-*> \verbatim
-*> where U is an orthogonal matrix. The final
-*> value of H is upper Hessenberg and quasi-triangular
-*> in rows and columns INFO+1 through IHI.
-*> \endverbatim
-*> \verbatim
+*>
+*> where U is a orthogonal matrix. The final
+*> value of H is upper Hessenberg and triangular in
+*> rows and columns INFO+1 through IHI.
+*>
*> If INFO .GT. 0 and WANTZ is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (final value of Z(ILO:IHI,ILOZ:IHIZ)
*> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
-*> \endverbatim
-*> \verbatim
+*>
*> where U is the orthogonal matrix in (*) (regard-
*> less of the value of WANTT.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
*> accessed.
*> \endverbatim
diff --git a/SRC/dlarfb.f b/SRC/dlarfb.f
index d690f3d3..00e8b948 100644
--- a/SRC/dlarfb.f
+++ b/SRC/dlarfb.f
@@ -93,53 +93,81 @@
*> reflectors whose product defines the block reflector).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] V
*> \verbatim
-* The matrix V. See Further Details.
+*> V is DOUBLE PRECISION array, dimension
+*> (LDV,K) if STOREV = 'C'
+*> (LDV,M) if STOREV = 'R' and SIDE = 'L'
+*> (LDV,N) if STOREV = 'R' and SIDE = 'R'
+*> The matrix V. See Further Details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
*> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
*> if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> T (input) DOUBLE PRECISION array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is DOUBLE PRECISION array, dimension (LDT,K)
*> The triangular k by k matrix T in the representation of the
*> block reflector.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
-*> C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
+*> \param[in,out] C
+*> \verbatim
+*> C is DOUBLE PRECISION array, dimension (LDC,N)
*> On entry, the m by n matrix C.
*> On exit, C is overwritten by H*C or H**T*C or C*H or C*H**T.
+*> \endverbatim
*>
-*> LDC (input) INTEGER
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace) DOUBLE PRECISION array, dimension (LDWORK,K)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (LDWORK,K)
+*> \endverbatim
*>
-*> LDWORK (input) INTEGER
+*> \param[in] LDWORK
+*> \verbatim
+*> LDWORK is INTEGER
*> The leading dimension of the array WORK.
*> If SIDE = 'L', LDWORK >= max(1,N);
*> if SIDE = 'R', LDWORK >= max(1,M).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The shape of the matrix V and the storage of the vectors which define
*> the H(i) is best illustrated by the following example with n = 5 and
diff --git a/SRC/dlarft.f b/SRC/dlarft.f
index 58efb595..c1314670 100644
--- a/SRC/dlarft.f
+++ b/SRC/dlarft.f
@@ -63,56 +63,82 @@
*> = 'B': H = H(k) . . . H(2) H(1) (Backward)
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] STOREV
*> \verbatim
-* reflectors are stored (see also Further Details):
+*> STOREV is CHARACTER*1
+*> Specifies how the vectors which define the elementary
+*> reflectors are stored (see also Further Details):
*> = 'C': columnwise
*> = 'R': rowwise
+*> \endverbatim
*>
-*> N (input) INTEGER
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
*> The order of the block reflector H. N >= 0.
+*> \endverbatim
*>
-*> K (input) INTEGER
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
*> The order of the triangular factor T (= the number of
*> elementary reflectors). K >= 1.
+*> \endverbatim
*>
-*> V (input/output) DOUBLE PRECISION array, dimension
+*> \param[in,out] V
+*> \verbatim
+*> V is DOUBLE PRECISION array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,N) if STOREV = 'R'
*> The matrix V. See further details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> TAU (input) DOUBLE PRECISION array, dimension (K)
+*> \param[in] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (K)
*> TAU(i) must contain the scalar factor of the elementary
*> reflector H(i).
+*> \endverbatim
*>
-*> T (output) DOUBLE PRECISION array, dimension (LDT,K)
+*> \param[out] T
+*> \verbatim
+*> T is DOUBLE PRECISION array, dimension (LDT,K)
*> The k by k triangular factor T of the block reflector.
*> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
*> lower triangular. The rest of the array is not used.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The shape of the matrix V and the storage of the vectors which define
*> the H(i) is best illustrated by the following example with n = 5 and
diff --git a/SRC/dlarre.f b/SRC/dlarre.f
index 7963159f..662adec5 100644
--- a/SRC/dlarre.f
+++ b/SRC/dlarre.f
@@ -278,7 +278,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
*> The base representations are required to suffer very little
*> element growth and consequently define all their eigenvalues to
*> high relative accuracy.
diff --git a/SRC/dlarrv.f b/SRC/dlarrv.f
index 98818a53..cac54ed7 100644
--- a/SRC/dlarrv.f
+++ b/SRC/dlarrv.f
@@ -234,14 +234,12 @@
*> \verbatim
*> INFO is INTEGER
*> = 0: successful exit
-*> \endverbatim
-*> \verbatim
+*>
*> > 0: A problem occured in DLARRV.
*> < 0: One of the called subroutines signaled an internal problem.
*> Needs inspection of the corresponding parameter IINFO
*> for further information.
-*> \endverbatim
-*> \verbatim
+*>
*> =-1: Problem in DLARRB when refining a child's eigenvalues.
*> =-2: Problem in DLARRF when computing the RRR of a child.
*> When a child is inside a tight cluster, it can be difficult
diff --git a/SRC/dlarzt.f b/SRC/dlarzt.f
index a0c2b08e..a88aa5c2 100644
--- a/SRC/dlarzt.f
+++ b/SRC/dlarzt.f
@@ -66,56 +66,82 @@
*> = 'B': H = H(k) . . . H(2) H(1) (Backward)
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] STOREV
*> \verbatim
-* reflectors are stored (see also Further Details):
+*> STOREV is CHARACTER*1
+*> Specifies how the vectors which define the elementary
+*> reflectors are stored (see also Further Details):
*> = 'C': columnwise (not supported yet)
*> = 'R': rowwise
+*> \endverbatim
*>
-*> N (input) INTEGER
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
*> The order of the block reflector H. N >= 0.
+*> \endverbatim
*>
-*> K (input) INTEGER
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
*> The order of the triangular factor T (= the number of
*> elementary reflectors). K >= 1.
+*> \endverbatim
*>
-*> V (input/output) DOUBLE PRECISION array, dimension
+*> \param[in,out] V
+*> \verbatim
+*> V is DOUBLE PRECISION array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,N) if STOREV = 'R'
*> The matrix V. See further details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> TAU (input) DOUBLE PRECISION array, dimension (K)
+*> \param[in] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (K)
*> TAU(i) must contain the scalar factor of the elementary
*> reflector H(i).
+*> \endverbatim
*>
-*> T (output) DOUBLE PRECISION array, dimension (LDT,K)
+*> \param[out] T
+*> \verbatim
+*> T is DOUBLE PRECISION array, dimension (LDT,K)
*> The k by k triangular factor T of the block reflector.
*> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
*> lower triangular. The rest of the array is not used.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> Based on contributions by
*> A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
diff --git a/SRC/dlascl.f b/SRC/dlascl.f
index 63efaaef..b9f3a22e 100644
--- a/SRC/dlascl.f
+++ b/SRC/dlascl.f
@@ -84,6 +84,8 @@
*> \param[in] CTO
*> \verbatim
*> CTO is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> The matrix A is multiplied by CTO/CFROM. A(I,J) is computed
*> without over/underflow if the final result CTO*A(I,J)/CFROM
*> can be represented without over/underflow. CFROM must be
diff --git a/SRC/dlasq4.f b/SRC/dlasq4.f
index fb1f897c..efba3bc7 100644
--- a/SRC/dlasq4.f
+++ b/SRC/dlasq4.f
@@ -65,9 +65,9 @@
*> PP=0 for ping, PP=1 for pong.
*> \endverbatim
*>
-*> \param[in] NOIN
+*> \param[in] N0IN
*> \verbatim
-*> NOIN is INTEGER
+*> N0IN is INTEGER
*> The value of N0 at start of EIGTEST.
*> \endverbatim
*>
diff --git a/SRC/dlatrd.f b/SRC/dlatrd.f
index 259fbb71..5d06c908 100644
--- a/SRC/dlatrd.f
+++ b/SRC/dlatrd.f
@@ -70,47 +70,84 @@
*> The number of rows and columns to be reduced.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the symmetric matrix A. If UPLO = 'U', the leading
+*> n-by-n upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading n-by-n lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit:
+*> if UPLO = 'U', the last NB columns have been reduced to
+*> tridiagonal form, with the diagonal elements overwriting
+*> the diagonal elements of A; the elements above the diagonal
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors;
+*> if UPLO = 'L', the first NB columns have been reduced to
+*> tridiagonal form, with the diagonal elements overwriting
+*> the diagonal elements of A; the elements below the diagonal
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= (1,N).
+*> \endverbatim
*>
-*> E (output) DOUBLE PRECISION array, dimension (N-1)
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (N-1)
*> If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal
*> elements of the last NB columns of the reduced matrix;
*> if UPLO = 'L', E(1:nb) contains the subdiagonal elements of
*> the first NB columns of the reduced matrix.
+*> \endverbatim
*>
-*> TAU (output) DOUBLE PRECISION array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (N-1)
*> The scalar factors of the elementary reflectors, stored in
*> TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'.
*> See Further Details.
+*> \endverbatim
*>
-*> W (output) DOUBLE PRECISION array, dimension (LDW,NB)
+*> \param[out] W
+*> \verbatim
+*> W is DOUBLE PRECISION array, dimension (LDW,NB)
*> The n-by-nb matrix W required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDW (input) INTEGER
+*> \param[in] LDW
+*> \verbatim
+*> LDW is INTEGER
*> The leading dimension of the array W. LDW >= max(1,N).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/dorcsd.f b/SRC/dorcsd.f
index dee37dd7..71b86054 100644
--- a/SRC/dorcsd.f
+++ b/SRC/dorcsd.f
@@ -127,16 +127,52 @@
*> The number of columns in X11 and X21. 0 <= Q <= M.
*> \endverbatim
*>
-*> \param[in,out] X
+*> \param[in,out] X11
*> \verbatim
-*> X is DOUBLE PRECISION array, dimension (LDX,M)
-*> On entry, the orthogonal matrix whose CSD is desired.
+*> X11 is DOUBLE PRECISION array, dimension (LDX11,Q)
+*> On entry, part of the orthogonal matrix whose CSD is desired.
*> \endverbatim
*>
-*> \param[in] LDX
+*> \param[in] LDX11
*> \verbatim
-*> LDX is INTEGER
-*> The leading dimension of X. LDX >= MAX(1,M).
+*> LDX11 is INTEGER
+*> The leading dimension of X11. LDX11 >= MAX(1,P).
+*> \endverbatim
+*>
+*> \param[in,out] X12
+*> \verbatim
+*> X12 is DOUBLE PRECISION array, dimension (LDX12,M-Q)
+*> On entry, part of the orthogonal matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX12
+*> \verbatim
+*> LDX12 is INTEGER
+*> The leading dimension of X12. LDX12 >= MAX(1,P).
+*> \endverbatim
+*>
+*> \param[in,out] X21
+*> \verbatim
+*> X21 is DOUBLE PRECISION array, dimension (LDX21,Q)
+*> On entry, part of the orthogonal matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX21
+*> \verbatim
+*> LDX21 is INTEGER
+*> The leading dimension of X11. LDX21 >= MAX(1,M-P).
+*> \endverbatim
+*>
+*> \param[in,out] X22
+*> \verbatim
+*> X22 is DOUBLE PRECISION array, dimension (LDX22,M-Q)
+*> On entry, part of the orthogonal matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX22
+*> \verbatim
+*> LDX22 is INTEGER
+*> The leading dimension of X11. LDX22 >= MAX(1,M-P).
*> \endverbatim
*>
*> \param[out] THETA
diff --git a/SRC/dorghr.f b/SRC/dorghr.f
index 809dd9ce..4903dabe 100644
--- a/SRC/dorghr.f
+++ b/SRC/dorghr.f
@@ -51,15 +51,18 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI must have the same values as in the previous call
*> of DGEHRD. Q is equal to the unit matrix except in the
*> submatrix Q(ilo+1:ihi,ilo+1:ihi).
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
diff --git a/SRC/dormhr.f b/SRC/dormhr.f
index d6368e91..0e1b4fa9 100644
--- a/SRC/dormhr.f
+++ b/SRC/dormhr.f
@@ -79,9 +79,13 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI must have the same values as in the previous call
*> of DGEHRD. Q is equal to the unit matrix except in the
*> submatrix Q(ilo+1:ihi,ilo+1:ihi).
@@ -90,7 +94,6 @@
*> if SIDE = 'R', then 1 <= ILO <= IHI <= N, if N > 0, and
*> ILO = 1 and IHI = 0, if N = 0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] A
*> \verbatim
diff --git a/SRC/dpbstf.f b/SRC/dpbstf.f
index 8266a696..69d68a40 100644
--- a/SRC/dpbstf.f
+++ b/SRC/dpbstf.f
@@ -81,6 +81,26 @@
*> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
*> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
*> \endverbatim
+*> \verbatim
+*> On exit, if INFO = 0, the factor S from the split Cholesky
+*> factorization A = S**T*S. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDAB
+*> \verbatim
+*> LDAB is INTEGER
+*> The leading dimension of the array AB. LDAB >= KD+1.
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> > 0: if INFO = i, the factorization could not be completed,
+*> because the updated element a(i,i) was negative; the
+*> matrix A is not positive definite.
+*> \endverbatim
*>
*
* Authors
@@ -100,18 +120,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* factorization A = S**T*S. See Further Details.
-*>
-*> LDAB (input) INTEGER
-*> The leading dimension of the array AB. LDAB >= KD+1.
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*> > 0: if INFO = i, the factorization could not be completed,
-*> because the updated element a(i,i) was negative; the
-*> matrix A is not positive definite.
-*>
*>
*> The band storage scheme is illustrated by the following example, when
*> N = 7, KD = 2:
diff --git a/SRC/dpptrf.f b/SRC/dpptrf.f
index 88627c0e..54addd6d 100644
--- a/SRC/dpptrf.f
+++ b/SRC/dpptrf.f
@@ -102,8 +102,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> The packed storage scheme is illustrated by the following example
*> when N = 4, UPLO = 'U':
diff --git a/SRC/dsbgvx.f b/SRC/dsbgvx.f
index 45bf4093..83c322a7 100644
--- a/SRC/dsbgvx.f
+++ b/SRC/dsbgvx.f
@@ -153,27 +153,33 @@
*> \param[in] VL
*> \verbatim
*> VL is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/dsgesv.f b/SRC/dsgesv.f
index 928dcc89..43d20a24 100644
--- a/SRC/dsgesv.f
+++ b/SRC/dsgesv.f
@@ -1,4 +1,4 @@
-*> \brief <b> DSGESV computes the solution to system of linear equations A * X = B for GE matrices</b>
+*> \brief <b> DSGESV computes the solution to system of linear equations A * X = B for GE matrices</b> (mixed precision with iterative refinement)
*
* =========== DOCUMENTATION ===========
*
diff --git a/SRC/dspgvx.f b/SRC/dspgvx.f
index fb407aa5..5383aa69 100644
--- a/SRC/dspgvx.f
+++ b/SRC/dspgvx.f
@@ -119,27 +119,33 @@
*> \param[in] VL
*> \verbatim
*> VL is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/dsptrd.f b/SRC/dsptrd.f
index cceacff1..e9cce8ae 100644
--- a/SRC/dsptrd.f
+++ b/SRC/dsptrd.f
@@ -54,6 +54,54 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is DOUBLE PRECISION array, dimension (N*(N+1)/2)
+*> On entry, the upper or lower triangle of the symmetric matrix
+*> A, packed columnwise in a linear array. The j-th column of A
+*> is stored in the array AP as follows:
+*> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+*> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the orthogonal
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the orthogonal matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
+*>
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (N)
+*> The diagonal elements of the tridiagonal matrix T:
+*> D(i) = A(i,i).
+*> \endverbatim
+*>
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (N-1)
+*> The off-diagonal elements of the tridiagonal matrix T:
+*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (N-1)
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -72,24 +120,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* of elementary reflectors. See Further Details.
-*>
-*> D (output) DOUBLE PRECISION array, dimension (N)
-*> The diagonal elements of the tridiagonal matrix T:
-*> D(i) = A(i,i).
-*>
-*> E (output) DOUBLE PRECISION array, dimension (N-1)
-*> The off-diagonal elements of the tridiagonal matrix T:
-*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
-*>
-*> TAU (output) DOUBLE PRECISION array, dimension (N-1)
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/dstebz.f b/SRC/dstebz.f
index 301c4b24..d06fc028 100644
--- a/SRC/dstebz.f
+++ b/SRC/dstebz.f
@@ -86,28 +86,34 @@
*> \param[in] VL
*> \verbatim
*> VL is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. Eigenvalues less than or equal
*> to VL, or greater than VU, will not be returned. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/dstegr.f b/SRC/dstegr.f
index a4c965d0..5ce184d8 100644
--- a/SRC/dstegr.f
+++ b/SRC/dstegr.f
@@ -104,27 +104,33 @@
*> \param[in] VL
*> \verbatim
*> VL is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/dstemr.f b/SRC/dstemr.f
index a8fd75a1..0a393606 100644
--- a/SRC/dstemr.f
+++ b/SRC/dstemr.f
@@ -135,27 +135,33 @@
*> \param[in] VL
*> \verbatim
*> VL is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] M
*> \verbatim
diff --git a/SRC/dsyconv.f b/SRC/dsyconv.f
index df7bbc7c..36dadeb7 100644
--- a/SRC/dsyconv.f
+++ b/SRC/dsyconv.f
@@ -89,19 +89,6 @@
*> WORK is DOUBLE PRECISION array, dimension (N)
*> \endverbatim
*>
-*> \param[in] LWORK
-*> \verbatim
-*> LWORK is INTEGER
-*> The length of WORK. LWORK >=1.
-*> LWORK = N
-*> \endverbatim
-*> \verbatim
-*> If LWORK = -1, then a workspace query is assumed; the routine
-*> only calculates the optimal size of the WORK array, returns
-*> this value as the first entry of the WORK array, and no error
-*> message related to LWORK is issued by XERBLA.
-*> \endverbatim
-*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/SRC/dsyequb.f b/SRC/dsyequb.f
index 6121f219..5acf4572 100644
--- a/SRC/dsyequb.f
+++ b/SRC/dsyequb.f
@@ -129,8 +129,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> Reference: Livne, O.E. and Golub, G.H., "Scaling by Binormalization",
*> Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004.
diff --git a/SRC/dsytd2.f b/SRC/dsytd2.f
index 1e5117cd..dbc20964 100644
--- a/SRC/dsytd2.f
+++ b/SRC/dsytd2.f
@@ -55,6 +55,62 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the symmetric matrix A. If UPLO = 'U', the leading
+*> n-by-n upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading n-by-n lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the orthogonal
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the orthogonal matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (N)
+*> The diagonal elements of the tridiagonal matrix T:
+*> D(i) = A(i,i).
+*> \endverbatim
+*>
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (N-1)
+*> The off-diagonal elements of the tridiagonal matrix T:
+*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (N-1)
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -73,27 +129,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* of elementary reflectors. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> D (output) DOUBLE PRECISION array, dimension (N)
-*> The diagonal elements of the tridiagonal matrix T:
-*> D(i) = A(i,i).
-*>
-*> E (output) DOUBLE PRECISION array, dimension (N-1)
-*> The off-diagonal elements of the tridiagonal matrix T:
-*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
-*>
-*> TAU (output) DOUBLE PRECISION array, dimension (N-1)
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value.
-*>
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/dsytrd.f b/SRC/dsytrd.f
index 7850c904..003beadf 100644
--- a/SRC/dsytrd.f
+++ b/SRC/dsytrd.f
@@ -55,45 +55,64 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleSYcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* of elementary reflectors. See Further Details.
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
+*> On entry, the symmetric matrix A. If UPLO = 'U', the leading
+*> N-by-N upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading N-by-N lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the orthogonal
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the orthogonal matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> D (output) DOUBLE PRECISION array, dimension (N)
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (N)
*> The diagonal elements of the tridiagonal matrix T:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) DOUBLE PRECISION array, dimension (N-1)
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (N-1)
*> The off-diagonal elements of the tridiagonal matrix T:
*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
*>
-*> TAU (output) DOUBLE PRECISION array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is DOUBLE PRECISION array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= 1.
*> For optimum performance LWORK >= N*NB, where NB is the
*> optimal blocksize.
@@ -102,11 +121,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleSYcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/dtgsen.f b/SRC/dtgsen.f
index a6d65afc..69921db2 100644
--- a/SRC/dtgsen.f
+++ b/SRC/dtgsen.f
@@ -152,12 +152,18 @@
*> \param[out] ALPHAR
*> \verbatim
*> ALPHAR is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] ALPHAI
*> \verbatim
*> ALPHAI is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] BETA
*> \verbatim
*> BETA is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> On exit, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N, will
*> be the generalized eigenvalues. ALPHAR(j) + ALPHAI(j)*i
*> and BETA(j),j=1,...,N are the diagonals of the complex Schur
@@ -168,8 +174,6 @@
*> positive, then the j-th and (j+1)-st eigenvalues are a
*> complex conjugate pair, with ALPHAI(j+1) negative.
*> \endverbatim
-*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] Q
*> \verbatim
@@ -217,9 +221,13 @@
*> \param[out] PL
*> \verbatim
*> PL is DOUBLE PRECISION
+*> \endverbatim
+
*> \param[out] PR
*> \verbatim
*> PR is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If IJOB = 1, 4 or 5, PL, PR are lower bounds on the
*> reciprocal of the norm of "projections" onto left and right
*> eigenspaces with respect to the selected cluster.
@@ -227,7 +235,6 @@
*> If M = 0 or M = N, PL = PR = 1.
*> If IJOB = 0, 2 or 3, PL and PR are not referenced.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] DIF
*> \verbatim
diff --git a/SRC/dtgsja.f b/SRC/dtgsja.f
index 4bdbf304..3c29c3db 100644
--- a/SRC/dtgsja.f
+++ b/SRC/dtgsja.f
@@ -175,52 +175,77 @@
*> The number of columns of the matrices A and B. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> \endverbatim
+*>
+*> \param[in] L
+*> \verbatim
+*> L is INTEGER
+*> \endverbatim
*> \verbatim
-* See Further Details.
+*> K and L specify the subblocks in the input matrices A and B:
+*> A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,N-L+1:N)
+*> of A and B, whose GSVD is going to be computed by DTGSJA.
+*> See Further Details.
+*> \endverbatim
*>
-*> A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
*> On entry, the M-by-N matrix A.
*> On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular
*> matrix R or part of R. See Purpose for details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is DOUBLE PRECISION array, dimension (LDB,N)
*> On entry, the P-by-N matrix B.
*> On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains
*> a part of R. See Purpose for details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,P).
+*> \endverbatim
*>
-*> TOLA (input) DOUBLE PRECISION
-*> TOLB (input) DOUBLE PRECISION
+*> \param[in] TOLA
+*> \verbatim
+*> TOLA is DOUBLE PRECISION
+*> \endverbatim
+*>
+*> \param[in] TOLB
+*> \verbatim
+*> TOLB is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> TOLA and TOLB are the convergence criteria for the Jacobi-
*> Kogbetliantz iteration procedure. Generally, they are the
*> same as used in the preprocessing step, say
*> TOLA = max(M,N)*norm(A)*MAZHEPS,
*> TOLB = max(P,N)*norm(B)*MAZHEPS.
+*> \endverbatim
*>
-*> ALPHA (output) DOUBLE PRECISION array, dimension (N)
-*> BETA (output) DOUBLE PRECISION array, dimension (N)
+*> \param[out] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> On exit, ALPHA and BETA contain the generalized singular
*> value pairs of A and B;
*> ALPHA(1:K) = 1,
@@ -234,53 +259,82 @@
*> Furthermore, if K+L < N,
*> ALPHA(K+L+1:N) = 0 and
*> BETA(K+L+1:N) = 0.
+*> \endverbatim
*>
-*> U (input/output) DOUBLE PRECISION array, dimension (LDU,M)
+*> \param[in,out] U
+*> \verbatim
+*> U is DOUBLE PRECISION array, dimension (LDU,M)
*> On entry, if JOBU = 'U', U must contain a matrix U1 (usually
*> the orthogonal matrix returned by DGGSVP).
*> On exit,
*> if JOBU = 'I', U contains the orthogonal matrix U;
*> if JOBU = 'U', U contains the product U1*U.
*> If JOBU = 'N', U is not referenced.
+*> \endverbatim
*>
-*> LDU (input) INTEGER
+*> \param[in] LDU
+*> \verbatim
+*> LDU is INTEGER
*> The leading dimension of the array U. LDU >= max(1,M) if
*> JOBU = 'U'; LDU >= 1 otherwise.
+*> \endverbatim
*>
-*> V (input/output) DOUBLE PRECISION array, dimension (LDV,P)
+*> \param[in,out] V
+*> \verbatim
+*> V is DOUBLE PRECISION array, dimension (LDV,P)
*> On entry, if JOBV = 'V', V must contain a matrix V1 (usually
*> the orthogonal matrix returned by DGGSVP).
*> On exit,
*> if JOBV = 'I', V contains the orthogonal matrix V;
*> if JOBV = 'V', V contains the product V1*V.
*> If JOBV = 'N', V is not referenced.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V. LDV >= max(1,P) if
*> JOBV = 'V'; LDV >= 1 otherwise.
+*> \endverbatim
*>
-*> Q (input/output) DOUBLE PRECISION array, dimension (LDQ,N)
+*> \param[in,out] Q
+*> \verbatim
+*> Q is DOUBLE PRECISION array, dimension (LDQ,N)
*> On entry, if JOBQ = 'Q', Q must contain a matrix Q1 (usually
*> the orthogonal matrix returned by DGGSVP).
*> On exit,
*> if JOBQ = 'I', Q contains the orthogonal matrix Q;
*> if JOBQ = 'Q', Q contains the product Q1*Q.
*> If JOBQ = 'N', Q is not referenced.
+*> \endverbatim
*>
-*> LDQ (input) INTEGER
+*> \param[in] LDQ
+*> \verbatim
+*> LDQ is INTEGER
*> The leading dimension of the array Q. LDQ >= max(1,N) if
*> JOBQ = 'Q'; LDQ >= 1 otherwise.
+*> \endverbatim
*>
-*> WORK (workspace) DOUBLE PRECISION array, dimension (2*N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (2*N)
+*> \endverbatim
*>
-*> NCYCLE (output) INTEGER
+*> \param[out] NCYCLE
+*> \verbatim
+*> NCYCLE is INTEGER
*> The number of cycles required for convergence.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
*> = 1: the procedure does not converge after MAXIT cycles.
+*> \endverbatim
*>
+*> \verbatim
*> Internal Parameters
*> ===================
*>
@@ -288,7 +342,26 @@
*> MAXIT specifies the total loops that the iterative procedure
*> may take. If after MAXIT cycles, the routine fails to
*> converge, we return INFO = 1.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> DTGSJA essentially uses a variant of Kogbetliantz algorithm to reduce
*> min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and L-by-L
diff --git a/SRC/dtpmqrt.f b/SRC/dtpmqrt.f
index ec1663de..ee109435 100644
--- a/SRC/dtpmqrt.f
+++ b/SRC/dtpmqrt.f
@@ -67,6 +67,7 @@
*> \verbatim
*> N is INTEGER
*> The number of columns of the matrix B. N >= 0.
+*> \endverbatim
*>
*> \param[in] K
*> \verbatim
@@ -74,78 +75,115 @@
*> The number of elementary reflectors whose product defines
*> the matrix Q.
*> \endverbatim
-*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* K >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The order of the trapezoidal part of V.
+*> K >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> NB (input) INTEGER
+*> \param[in] NB
+*> \verbatim
+*> NB is INTEGER
*> The block size used for the storage of T. K >= NB >= 1.
*> This must be the same value of NB used to generate T
*> in CTPQRT.
+*> \endverbatim
*>
-*> V (input) DOUBLE PRECISION array, dimension (LDA,K)
+*> \param[in] V
+*> \verbatim
+*> V is DOUBLE PRECISION array, dimension (LDA,K)
*> The i-th column must contain the vector which defines the
*> elementary reflector H(i), for i = 1,2,...,k, as returned by
*> CTPQRT in B. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A.
-*> If SIDE = 'L', LDA >= max(1,M);
-*> if SIDE = 'R', LDA >= max(1,N).
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
+*> The leading dimension of the array V.
+*> If SIDE = 'L', LDV >= max(1,M);
+*> if SIDE = 'R', LDV >= max(1,N).
+*> \endverbatim
*>
-*> T (input) DOUBLE PRECISION array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is DOUBLE PRECISION array, dimension (LDT,K)
*> The upper triangular factors of the block reflectors
*> as returned by CTPQRT, stored as a NB-by-K matrix.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
*>
-*> A (input/output) DOUBLE PRECISION array, dimension
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension
*> (LDA,N) if SIDE = 'L' or
*> (LDA,K) if SIDE = 'R'
*> On entry, the K-by-N or M-by-K matrix A.
*> On exit, A is overwritten by the corresponding block of
*> Q*C or Q**T*C or C*Q or C*Q**T. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A.
*> If SIDE = 'L', LDC >= max(1,K);
*> If SIDE = 'R', LDC >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is DOUBLE PRECISION array, dimension (LDB,N)
*> On entry, the M-by-N matrix B.
*> On exit, B is overwritten by the corresponding block of
*> Q*C or Q**T*C or C*Q or C*Q**T. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B.
*> LDB >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace/output) DOUBLE PRECISION array. The dimension of WORK is
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array. The dimension of WORK is
*> N*NB if SIDE = 'L', or M*NB if SIDE = 'R'.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The columns of the pentagonal matrix V contain the elementary reflectors
*> H(1), H(2), ..., H(K); V is composed of a rectangular block V1 and a
diff --git a/SRC/dtpqrt.f b/SRC/dtpqrt.f
index 1b8607b7..3e889949 100644
--- a/SRC/dtpqrt.f
+++ b/SRC/dtpqrt.f
@@ -57,59 +57,90 @@
*> N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* MIN(M,N) >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The number of rows of the upper trapezoidal part of B.
+*> MIN(M,N) >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> NB (input) INTEGER
+*> \param[in] NB
+*> \verbatim
+*> NB is INTEGER
*> The block size to be used in the blocked QR. N >= NB >= 1.
+*> \endverbatim
*>
-*> A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
*> On entry, the upper triangular N-by-N matrix A.
*> On exit, the elements on and above the diagonal of the array
*> contain the upper triangular matrix R.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is DOUBLE PRECISION array, dimension (LDB,N)
*> On entry, the pentagonal M-by-N matrix B. The first M-L rows
*> are rectangular, and the last L rows are upper trapezoidal.
*> On exit, B contains the pentagonal matrix V. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,M).
+*> \endverbatim
*>
-*> T (output) DOUBLE PRECISION array, dimension (LDT,N)
+*> \param[out] T
+*> \verbatim
+*> T is DOUBLE PRECISION array, dimension (LDT,N)
*> The upper triangular block reflectors stored in compact form
*> as a sequence of upper triangular blocks. See Further Details.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
*>
-*> WORK (workspace) DOUBLE PRECISION array, dimension (NB*N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (NB*N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
-*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*> The input matrix C is a (N+M)-by-N matrix
*>
*> C = [ A ]
diff --git a/SRC/dtpqrt2.f b/SRC/dtpqrt2.f
index 99ba2e3b..32635cf7 100644
--- a/SRC/dtpqrt2.f
+++ b/SRC/dtpqrt2.f
@@ -55,53 +55,79 @@
*> N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* MIN(M,N) >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The number of rows of the upper trapezoidal part of B.
+*> MIN(M,N) >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA,N)
*> On entry, the upper triangular N-by-N matrix A.
*> On exit, the elements on and above the diagonal of the array
*> contain the upper triangular matrix R.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is DOUBLE PRECISION array, dimension (LDB,N)
*> On entry, the pentagonal M-by-N matrix B. The first M-L rows
*> are rectangular, and the last L rows are upper trapezoidal.
*> On exit, B contains the pentagonal matrix V. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,M).
+*> \endverbatim
*>
-*> T (output) DOUBLE PRECISION array, dimension (LDT,N)
+*> \param[out] T
+*> \verbatim
+*> T is DOUBLE PRECISION array, dimension (LDT,N)
*> The N-by-N upper triangular factor T of the block reflector.
*> See Further Details.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The input matrix C is a (N+M)-by-N matrix
*>
diff --git a/SRC/dtprfb.f b/SRC/dtprfb.f
index cad29215..f1bf71ca 100644
--- a/SRC/dtprfb.f
+++ b/SRC/dtprfb.f
@@ -97,76 +97,111 @@
*> K >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup doubleOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* K >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The order of the trapezoidal part of V.
+*> K >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> V (input) DOUBLE PRECISION array, dimension
+*> \param[in] V
+*> \verbatim
+*> V is DOUBLE PRECISION array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,M) if STOREV = 'R' and SIDE = 'L'
*> (LDV,N) if STOREV = 'R' and SIDE = 'R'
*> The pentagonal matrix V, which contains the elementary reflectors
*> H(1), H(2), ..., H(K). See Further Details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
*> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
*> if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> T (input) DOUBLE PRECISION array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is DOUBLE PRECISION array, dimension (LDT,K)
*> The triangular K-by-K matrix T in the representation of the
*> block reflector.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T.
*> LDT >= K.
+*> \endverbatim
*>
-*> A (input/output) DOUBLE PRECISION array, dimension
+*> \param[in,out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension
*> (LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R'
*> On entry, the K-by-N or M-by-K matrix A.
*> On exit, A is overwritten by the corresponding block of
*> H*C or H**T*C or C*H or C*H**T. See Futher Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A.
*> If SIDE = 'L', LDC >= max(1,K);
*> If SIDE = 'R', LDC >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) DOUBLE PRECISION array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is DOUBLE PRECISION array, dimension (LDB,N)
*> On entry, the M-by-N matrix B.
*> On exit, B is overwritten by the corresponding block of
*> H*C or H**T*C or C*H or C*H**T. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B.
*> LDB >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace) DOUBLE PRECISION array, dimension
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension
*> (LDWORK,N) if SIDE = 'L',
*> (LDWORK,K) if SIDE = 'R'.
+*> \endverbatim
*>
-*> LDWORK (input) INTEGER
+*> \param[in] LDWORK
+*> \verbatim
+*> LDWORK is INTEGER
*> The leading dimension of the array WORK.
*> If SIDE = 'L', LDWORK >= K;
*> if SIDE = 'R', LDWORK >= M.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix C is a composite matrix formed from blocks A and B.
*> The block B is of size M-by-N; if SIDE = 'R', A is of size M-by-K,
diff --git a/SRC/dtrexc.f b/SRC/dtrexc.f
index 6a1e61e5..9ce852bc 100644
--- a/SRC/dtrexc.f
+++ b/SRC/dtrexc.f
@@ -97,9 +97,13 @@
*> \param[in,out] IFST
*> \verbatim
*> IFST is INTEGER
+*> \endverbatim
+*>
*> \param[in,out] ILST
*> \verbatim
*> ILST is INTEGER
+*> \endverbatim
+*> \verbatim
*> Specify the reordering of the diagonal blocks of T.
*> The block with row index IFST is moved to row ILST, by a
*> sequence of transpositions between adjacent blocks.
@@ -109,7 +113,6 @@
*> position (which may differ from its input value by +1 or -1).
*> 1 <= IFST <= N; 1 <= ILST <= N.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] WORK
*> \verbatim
diff --git a/SRC/dtrsen.f b/SRC/dtrsen.f
index b5e19a9f..18ecc39c 100644
--- a/SRC/dtrsen.f
+++ b/SRC/dtrsen.f
@@ -130,9 +130,12 @@
*> \param[out] WR
*> \verbatim
*> WR is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
*> \param[out] WI
*> \verbatim
*> WI is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> The real and imaginary parts, respectively, of the reordered
*> eigenvalues of T. The eigenvalues are stored in the same
*> order as on the diagonal of T, with WR(i) = T(i,i) and, if
@@ -141,7 +144,6 @@
*> sufficiently ill-conditioned, then its value may differ
*> significantly from its value before reordering.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] M
*> \verbatim
diff --git a/SRC/sbbcsd.f b/SRC/sbbcsd.f
index c8f5118b..c82c478b 100644
--- a/SRC/sbbcsd.f
+++ b/SRC/sbbcsd.f
@@ -236,6 +236,40 @@
*> partially reduced top-right block.
*> \endverbatim
*>
+*> \param[out] B21D
+*> \verbatim
+*> B21D is REAL array, dimension (Q)
+*> When CBBCSD converges, B21D contains the negative sines of
+*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then
+*> B21D contains the diagonal of the partially reduced bottom-left
+*> block.
+*> \endverbatim
+*>
+*> \param[out] B21E
+*> \verbatim
+*> B21E is REAL array, dimension (Q-1)
+*> When CBBCSD converges, B21E contains zeros. If CBBCSD fails
+*> to converge, then B21E contains the subdiagonal of the
+*> partially reduced bottom-left block.
+*> \endverbatim
+*>
+*> \param[out] B22D
+*> \verbatim
+*> B22D is REAL array, dimension (Q)
+*> When CBBCSD converges, B22D contains the negative sines of
+*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then
+*> B22D contains the diagonal of the partially reduced bottom-right
+*> block.
+*> \endverbatim
+*>
+*> \param[out] B22E
+*> \verbatim
+*> B22E is REAL array, dimension (Q-1)
+*> When CBBCSD converges, B22E contains zeros. If CBBCSD fails
+*> to converge, then B22E contains the subdiagonal of the
+*> partially reduced bottom-right block.
+*> \endverbatim
+*>
*> \param[out] WORK
*> \verbatim
*> WORK is REAL array, dimension (MAX(1,LWORK))
diff --git a/SRC/sgbsv.f b/SRC/sgbsv.f
index e7b26190..4e324c00 100644
--- a/SRC/sgbsv.f
+++ b/SRC/sgbsv.f
@@ -1,4 +1,4 @@
-*> \brief <b> SGBSV computes the solution to system of linear equations A * X = B for GB matrices</b>
+*> \brief <b> SGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> (simple driver)
*
* =========== DOCUMENTATION ===========
*
diff --git a/SRC/sgebal.f b/SRC/sgebal.f
index ca9c6edf..1f5eb377 100644
--- a/SRC/sgebal.f
+++ b/SRC/sgebal.f
@@ -64,37 +64,36 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the input matrix A.
+*> On exit, A is overwritten by the balanced matrix.
+*> If JOB = 'N', A is not referenced.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> ILO (output) INTEGER
-*>
-*> IHI (output) INTEGER
+*> \param[out] ILO
+*> \verbatim
+*> ILO is INTEGER
+*> \endverbatim
+*> \param[out] IHI
+*> \verbatim
+*> IHI is INTEGER
*> ILO and IHI are set to integers such that on exit
*> A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I = IHI+1,...,N.
*> If JOB = 'N' or 'S', ILO = 1 and IHI = N.
+*> \endverbatim
*>
-*> SCALE (output) REAL array, dimension (N)
+*> \param[out] SCALE
+*> \verbatim
+*> SCALE is REAL array, dimension (N)
*> Details of the permutations and scaling factors applied to
*> A. If P(j) is the index of the row and column interchanged
*> with row and column j and D(j) is the scaling factor
@@ -104,11 +103,33 @@
*> = P(j) for j = IHI+1,...,N.
*> The order in which the interchanges are made is N to IHI+1,
*> then 1 to ILO-1.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit.
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The permutations consist of row and column interchanges which put
*> the matrix in the form
diff --git a/SRC/sgebd2.f b/SRC/sgebd2.f
index 1b48b8ed..9e04c39e 100644
--- a/SRC/sgebd2.f
+++ b/SRC/sgebd2.f
@@ -54,52 +54,93 @@
*> The number of columns in the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the m by n general matrix to be reduced.
+*> On exit,
+*> if m >= n, the diagonal and the first superdiagonal are
+*> overwritten with the upper bidiagonal matrix B; the
+*> elements below the diagonal, with the array TAUQ, represent
+*> the orthogonal matrix Q as a product of elementary
+*> reflectors, and the elements above the first superdiagonal,
+*> with the array TAUP, represent the orthogonal matrix P as
+*> a product of elementary reflectors;
+*> if m < n, the diagonal and the first subdiagonal are
+*> overwritten with the lower bidiagonal matrix B; the
+*> elements below the first subdiagonal, with the array TAUQ,
+*> represent the orthogonal matrix Q as a product of
+*> elementary reflectors, and the elements above the diagonal,
+*> with the array TAUP, represent the orthogonal matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) REAL array, dimension (min(M,N))
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (min(M,N))
*> The diagonal elements of the bidiagonal matrix B:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) REAL array, dimension (min(M,N)-1)
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (min(M,N)-1)
*> The off-diagonal elements of the bidiagonal matrix B:
*> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
*> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*> \endverbatim
*>
-*> TAUQ (output) REAL array dimension (min(M,N))
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is REAL array dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) REAL array, dimension (min(M,N))
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is REAL array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix P. See Further Details.
+*> \endverbatim
*>
-*> WORK (workspace) REAL array, dimension (max(M,N))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (max(M,N))
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit.
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/sgebrd.f b/SRC/sgebrd.f
index 3e139855..a46b6d76 100644
--- a/SRC/sgebrd.f
+++ b/SRC/sgebrd.f
@@ -55,50 +55,72 @@
*> The number of columns in the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the M-by-N general matrix to be reduced.
+*> On exit,
+*> if m >= n, the diagonal and the first superdiagonal are
+*> overwritten with the upper bidiagonal matrix B; the
+*> elements below the diagonal, with the array TAUQ, represent
+*> the orthogonal matrix Q as a product of elementary
+*> reflectors, and the elements above the first superdiagonal,
+*> with the array TAUP, represent the orthogonal matrix P as
+*> a product of elementary reflectors;
+*> if m < n, the diagonal and the first subdiagonal are
+*> overwritten with the lower bidiagonal matrix B; the
+*> elements below the first subdiagonal, with the array TAUQ,
+*> represent the orthogonal matrix Q as a product of
+*> elementary reflectors, and the elements above the diagonal,
+*> with the array TAUP, represent the orthogonal matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) REAL array, dimension (min(M,N))
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (min(M,N))
*> The diagonal elements of the bidiagonal matrix B:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) REAL array, dimension (min(M,N)-1)
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (min(M,N)-1)
*> The off-diagonal elements of the bidiagonal matrix B:
*> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
*> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*> \endverbatim
*>
-*> TAUQ (output) REAL array dimension (min(M,N))
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is REAL array dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) REAL array, dimension (min(M,N))
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is REAL array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix P. See Further Details.
+*> \endverbatim
*>
-*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The length of the array WORK. LWORK >= max(1,M,N).
*> For optimum performance LWORK >= (M+N)*NB, where NB
*> is the optimal blocksize.
@@ -107,11 +129,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/sgehd2.f b/SRC/sgehd2.f
index 47902fc2..0c1a28f6 100644
--- a/SRC/sgehd2.f
+++ b/SRC/sgehd2.f
@@ -45,48 +45,77 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] ILO
+*> \verbatim
+*> ILO is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHI
*> \verbatim
-* set to 1 and N respectively. See Further Details.
+*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
+*> It is assumed that A is already upper triangular in rows
+*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+*> set by a previous call to SGEBAL; otherwise they should be
+*> set to 1 and N respectively. See Further Details.
*> 1 <= ILO <= IHI <= max(1,N).
+*> \endverbatim
*>
-*> A (input/output) REAL array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N)
*> On entry, the n by n general matrix to be reduced.
*> On exit, the upper triangle and the first subdiagonal of A
*> are overwritten with the upper Hessenberg matrix H, and the
*> elements below the first subdiagonal, with the array TAU,
*> represent the orthogonal matrix Q as a product of elementary
*> reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> TAU (output) REAL array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace) REAL array, dimension (N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit.
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of (ihi-ilo) elementary
*> reflectors
diff --git a/SRC/sgehrd.f b/SRC/sgehrd.f
index 10f7374c..2344ee9f 100644
--- a/SRC/sgehrd.f
+++ b/SRC/sgehrd.f
@@ -45,60 +45,93 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] ILO
+*> \verbatim
+*> ILO is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHI
+*> \verbatim
+*> IHI is INTEGER
+*> \endverbatim
*> \verbatim
-* set to 1 and N respectively. See Further Details.
+*> It is assumed that A is already upper triangular in rows
+*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+*> set by a previous call to SGEBAL; otherwise they should be
+*> set to 1 and N respectively. See Further Details.
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*> \endverbatim
*>
-*> A (input/output) REAL array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N)
*> On entry, the N-by-N general matrix to be reduced.
*> On exit, the upper triangle and the first subdiagonal of A
*> are overwritten with the upper Hessenberg matrix H, and the
*> elements below the first subdiagonal, with the array TAU,
*> represent the orthogonal matrix Q as a product of elementary
*> reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> TAU (output) REAL array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to
*> zero.
+*> \endverbatim
*>
-*> WORK (workspace/output) REAL array, dimension (LWORK)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (LWORK)
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The length of the array WORK. LWORK >= max(1,N).
*> For optimum performance LWORK >= N*NB, where NB is the
*> optimal blocksize.
-*>
+*> \endverbatim
+*> \verbatim
*> If LWORK = -1, then a workspace query is assumed; the routine
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of (ihi-ilo) elementary
*> reflectors
diff --git a/SRC/sgejsv.f b/SRC/sgejsv.f
index 03944af6..0233e8c8 100644
--- a/SRC/sgejsv.f
+++ b/SRC/sgejsv.f
@@ -95,6 +95,7 @@
*> a gap sigma_{r+1} < epsilon * sigma_r in which case the
*> numerical RANK is declared to be r. The SVD is computed with
*> absolute error bounds, but more accurately than with 'A'.
+*> \endverbatim
*>
*> \param[in] JOBU
*> \verbatim
@@ -105,6 +106,7 @@
*> = 'W': U may be used as workspace of length M*N. See the description
*> of U.
*> = 'N': U is not computed.
+*> \endverbatim
*>
*> \param[in] JOBV
*> \verbatim
@@ -118,6 +120,7 @@
*> = 'W': V may be used as workspace of length N*N. See the description
*> of V.
*> = 'N': V is not computed.
+*> \endverbatim
*>
*> \param[in] JOBR
*> \verbatim
@@ -138,6 +141,7 @@
*> ===========================
*> For computing the singular values in the FULL range [SFMIN,BIG]
*> use SGESVJ.
+*> \endverbatim
*>
*> \param[in] JOBT
*> \verbatim
@@ -158,6 +162,7 @@
*> matrices is used as workspace if the matrix A is transposed.
*> The implementer can easily remove this constraint and make the
*> code more complicated. See the descriptions of U and V.
+*> \endverbatim
*>
*> \param[in] JOBP
*> \verbatim
@@ -173,11 +178,6 @@
*> = 'P': introduce perturbation
*> = 'N': do not perturb
*> \endverbatim
-*> \endverbatim
-*> \endverbatim
-*> \endverbatim
-*> \endverbatim
-*> \endverbatim
*>
*> \param[in] M
*> \verbatim
@@ -284,14 +284,12 @@
*> determined to be strictly smaller than N, SCONDA is
*> returned as -1, thus indicating that the smallest
*> singular values might be lost.
-*> \endverbatim
-*> \verbatim
+*>
*> If full SVD is needed, the following two condition numbers are
*> useful for the analysis of the algorithm. They are provied for
*> a developer/implementer who is familiar with the details of
*> the method.
-*> \endverbatim
-*> \verbatim
+*>
*> WORK(4) = an estimate of the scaled condition number of the
*> triangular factor in the first QR factorization.
*> WORK(5) = an estimate of the scaled condition number of the
@@ -299,8 +297,7 @@
*> The following two parameters are computed if JOBT .EQ. 'T'.
*> They are provided for a developer/implementer who is familiar
*> with the details of the method.
-*> \endverbatim
-*> \verbatim
+*>
*> WORK(6) = the entropy of A^t*A :: this is the Shannon entropy
*> of diag(A^t*A) / Trace(A^t*A) taken as point in the
*> probability simplex.
@@ -312,8 +309,7 @@
*> LWORK is INTEGER
*> Length of WORK to confirm proper allocation of work space.
*> LWORK depends on the job:
-*> \endverbatim
-*> \verbatim
+*>
*> If only SIGMA is needed ( JOBU.EQ.'N', JOBV.EQ.'N' ) and
*> -> .. no scaled condition estimate required (JOBE.EQ.'N'):
*> LWORK >= max(2*M+N,4*N+1,7). This is the minimal requirement.
@@ -330,8 +326,7 @@
*> In general, the optimal length LWORK is computed as
*> LWORK >= max(2*M+N,N+LWORK(DGEQP3),N+LWORK(DGEQRF),
*> N+N*N+LWORK(DPOCON),7).
-*> \endverbatim
-*> \verbatim
+*>
*> If SIGMA and the right singular vectors are needed (JOBV.EQ.'V'),
*> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7).
*> -> For optimal performance, LWORK >= max(2*M+N,3*N+(N+1)*NB,7),
@@ -339,8 +334,7 @@
*> DORMLQ. In general, the optimal length LWORK is computed as
*> LWORK >= max(2*M+N,N+LWORK(DGEQP3), N+LWORK(DPOCON),
*> N+LWORK(DGELQ), 2*N+LWORK(DGEQRF), N+LWORK(DORMLQ)).
-*> \endverbatim
-*> \verbatim
+*>
*> If SIGMA and the left singular vectors are needed
*> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7).
*> -> For optimal performance:
diff --git a/SRC/sgelq2.f b/SRC/sgelq2.f
index b8ce12ba..18139bd4 100644
--- a/SRC/sgelq2.f
+++ b/SRC/sgelq2.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and below the diagonal of the array
+*> contain the m by min(m,n) lower trapezoidal matrix L (L is
+*> lower triangular if m <= n); the elements above the diagonal,
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (M)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) REAL array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) REAL array, dimension (M)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/sgelqf.f b/SRC/sgelqf.f
index 1bd205b8..47d7988a 100644
--- a/SRC/sgelqf.f
+++ b/SRC/sgelqf.f
@@ -51,37 +51,39 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* product of elementary reflectors (see Further Details).
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit, the elements on and below the diagonal of the array
+*> contain the m-by-min(m,n) lower trapezoidal matrix L (L is
+*> lower triangular if m <= n); the elements above the diagonal,
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) REAL array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,M).
*> For optimum performance LWORK >= M*NB, where NB is the
*> optimal blocksize.
@@ -90,11 +92,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/sgeql2.f b/SRC/sgeql2.f
index 18872101..3d28266a 100644
--- a/SRC/sgeql2.f
+++ b/SRC/sgeql2.f
@@ -51,6 +51,44 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, if m >= n, the lower triangle of the subarray
+*> A(m-n+1:m,1:n) contains the n by n lower triangular matrix L;
+*> if m <= n, the elements on and below the (n-m)-th
+*> superdiagonal contain the m by n lower trapezoidal matrix L;
+*> the remaining elements, with the array TAU, represent the
+*> orthogonal matrix Q as a product of elementary reflectors
+*> (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +107,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) REAL array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) REAL array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/sgeqlf.f b/SRC/sgeqlf.f
index 350ab848..0ce303c3 100644
--- a/SRC/sgeqlf.f
+++ b/SRC/sgeqlf.f
@@ -51,37 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* (see Further Details).
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit,
+*> if m >= n, the lower triangle of the subarray
+*> A(m-n+1:m,1:n) contains the N-by-N lower triangular matrix L;
+*> if m <= n, the elements on and below the (n-m)-th
+*> superdiagonal contain the M-by-N lower trapezoidal matrix L;
+*> the remaining elements, with the array TAU, represent the
+*> orthogonal matrix Q as a product of elementary reflectors
+*> (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) REAL array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N).
*> For optimum performance LWORK >= N*NB, where NB is the
*> optimal blocksize.
@@ -90,11 +95,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/sgeqr2.f b/SRC/sgeqr2.f
index d1e94155..4f10f240 100644
--- a/SRC/sgeqr2.f
+++ b/SRC/sgeqr2.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and above the diagonal of the array
+*> contain the min(m,n) by n upper trapezoidal matrix R (R is
+*> upper triangular if m >= n); the elements below the diagonal,
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) REAL array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) REAL array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/sgeqr2p.f b/SRC/sgeqr2p.f
index 3f3b8a83..5ee107b4 100644
--- a/SRC/sgeqr2p.f
+++ b/SRC/sgeqr2p.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and above the diagonal of the array
+*> contain the min(m,n) by n upper trapezoidal matrix R (R is
+*> upper triangular if m >= n); the elements below the diagonal,
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) REAL array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) REAL array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/sgeqrt.f b/SRC/sgeqrt.f
index bd323e61..1c9259fd 100644
--- a/SRC/sgeqrt.f
+++ b/SRC/sgeqrt.f
@@ -117,7 +117,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-*
*> The matrix V stores the elementary reflectors H(i) in the i-th column
*> below the diagonal. For example, if M=5 and N=3, the matrix V is
*>
diff --git a/SRC/sgeqrt2.f b/SRC/sgeqrt2.f
index cb4d193a..99e0682e 100644
--- a/SRC/sgeqrt2.f
+++ b/SRC/sgeqrt2.f
@@ -74,8 +74,10 @@
*> reflector T; the elements below the diagonal are not used.
*> See below for further details.
*> \endverbatim
+*>
+*> \param[in] LDT
*> \verbatim
-*> LDT (intput) INTEGER
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N).
*> \endverbatim
*>
diff --git a/SRC/sgeqrt3.f b/SRC/sgeqrt3.f
index 33b3ba92..f15e880a 100644
--- a/SRC/sgeqrt3.f
+++ b/SRC/sgeqrt3.f
@@ -77,8 +77,10 @@
*> reflector T; the elements below the diagonal are not used.
*> See below for further details.
*> \endverbatim
+*>
+*> \param[in] LDT
*> \verbatim
-*> LDT (intput) INTEGER
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N).
*> \endverbatim
*>
diff --git a/SRC/sgerqf.f b/SRC/sgerqf.f
index 8f4ad73f..36945140 100644
--- a/SRC/sgerqf.f
+++ b/SRC/sgerqf.f
@@ -51,37 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realGEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* reflectors (see Further Details).
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit,
+*> if m <= n, the upper triangle of the subarray
+*> A(1:m,n-m+1:n) contains the M-by-M upper triangular matrix R;
+*> if m >= n, the elements on and above the (m-n)-th subdiagonal
+*> contain the M-by-N upper trapezoidal matrix R;
+*> the remaining elements, with the array TAU, represent the
+*> orthogonal matrix Q as a product of min(m,n) elementary
+*> reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) REAL array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,M).
*> For optimum performance LWORK >= M*NB, where NB is
*> the optimal blocksize.
@@ -90,11 +95,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realGEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/sgesv.f b/SRC/sgesv.f
index 2e0c0638..d413b90f 100644
--- a/SRC/sgesv.f
+++ b/SRC/sgesv.f
@@ -1,4 +1,4 @@
-*> \brief <b> SGESV computes the solution to system of linear equations A * X = B for GE matrices</b>
+*> \brief <b> SGESV computes the solution to system of linear equations A * X = B for GE matrices</b> (simple driver)
*
* =========== DOCUMENTATION ===========
*
diff --git a/SRC/sggglm.f b/SRC/sggglm.f
index 55b9534b..d4951db6 100644
--- a/SRC/sggglm.f
+++ b/SRC/sggglm.f
@@ -123,11 +123,14 @@
*> \param[out] X
*> \verbatim
*> X is REAL array, dimension (M)
+*> \endverbatim
+*>
*> \param[out] Y
*> \verbatim
*> Y is REAL array, dimension (P)
-*> On exit, X and Y are the solutions of the GLM problem.
*> \endverbatim
+*> \verbatim
+*> On exit, X and Y are the solutions of the GLM problem.
*> \endverbatim
*>
*> \param[out] WORK
diff --git a/SRC/sgghrd.f b/SRC/sgghrd.f
index 0ee9806d..33d327a6 100644
--- a/SRC/sgghrd.f
+++ b/SRC/sgghrd.f
@@ -97,9 +97,13 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI mark the rows and columns of A which are to be
*> reduced. It is assumed that A is already upper triangular
*> in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are
@@ -107,7 +111,6 @@
*> should be set to 1 and N respectively.
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
diff --git a/SRC/sggqrf.f b/SRC/sggqrf.f
index 321414e0..386c7904 100644
--- a/SRC/sggqrf.f
+++ b/SRC/sggqrf.f
@@ -102,27 +102,16 @@
*> The leading dimension of the array A. LDA >= max(1,N).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[out] TAUA
*> \verbatim
-* represent the orthogonal matrix Q (see Further Details).
+*> TAUA is REAL array, dimension (min(N,M))
+*> The scalar factors of the elementary reflectors which
+*> represent the orthogonal matrix Q (see Further Details).
+*> \endverbatim
*>
-*> B (input/output) REAL array, dimension (LDB,P)
+*> \param[in,out] B
+*> \verbatim
+*> B is REAL array, dimension (LDB,P)
*> On entry, the N-by-P matrix B.
*> On exit, if N <= P, the upper triangle of the subarray
*> B(1:N,P-N+1:P) contains the N-by-N upper triangular matrix T;
@@ -131,18 +120,30 @@
*> elements, with the array TAUB, represent the orthogonal
*> matrix Z as a product of elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,N).
+*> \endverbatim
*>
-*> TAUB (output) REAL array, dimension (min(N,P))
+*> \param[out] TAUB
+*> \verbatim
+*> TAUB is REAL array, dimension (min(N,P))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix Z (see Further Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N,M,P).
*> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3),
*> where NB1 is the optimal blocksize for the QR factorization
@@ -154,11 +155,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/sggrqf.f b/SRC/sggrqf.f
index a1e7b68f..173a4ade 100644
--- a/SRC/sggrqf.f
+++ b/SRC/sggrqf.f
@@ -103,45 +103,46 @@
*> The leading dimension of the array A. LDA >= max(1,M).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[out] TAUA
*> \verbatim
-* represent the orthogonal matrix Q (see Further Details).
+*> TAUA is REAL array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors which
+*> represent the orthogonal matrix Q (see Further Details).
+*> \endverbatim
*>
-*> B (input/output) REAL array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is REAL array, dimension (LDB,N)
*> On entry, the P-by-N matrix B.
*> On exit, the elements on and above the diagonal of the array
*> contain the min(P,N)-by-N upper trapezoidal matrix T (T is
*> upper triangular if P >= N); the elements below the diagonal,
*> with the array TAUB, represent the orthogonal matrix Z as a
*> product of elementary reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,P).
+*> \endverbatim
*>
-*> TAUB (output) REAL array, dimension (min(P,N))
+*> \param[out] TAUB
+*> \verbatim
+*> TAUB is REAL array, dimension (min(P,N))
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix Z (see Further Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N,M,P).
*> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3),
*> where NB1 is the optimal blocksize for the RQ factorization
@@ -153,11 +154,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INF0= -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/sggsvd.f b/SRC/sggsvd.f
index 49c3896d..c61ca87d 100644
--- a/SRC/sggsvd.f
+++ b/SRC/sggsvd.f
@@ -163,14 +163,17 @@
*> \param[out] K
*> \verbatim
*> K is INTEGER
+*> \endverbatim
+*>
*> \param[out] L
*> \verbatim
*> L is INTEGER
+*> \endverbatim
+*> \verbatim
*> On exit, K and L specify the dimension of the subblocks
-*> described in the Purpose section.
+*> described in Purpose.
*> K + L = effective numerical rank of (A**T,B**T)**T.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
@@ -203,9 +206,13 @@
*> \param[out] ALPHA
*> \verbatim
*> ALPHA is REAL array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] BETA
*> \verbatim
*> BETA is REAL array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> On exit, ALPHA and BETA contain the generalized singular
*> value pairs of A and B;
*> ALPHA(1:K) = 1,
@@ -220,7 +227,6 @@
*> ALPHA(K+L+1:N) = 0
*> BETA(K+L+1:N) = 0
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] U
*> \verbatim
diff --git a/SRC/sggsvp.f b/SRC/sggsvp.f
index a274816d..7d164103 100644
--- a/SRC/sggsvp.f
+++ b/SRC/sggsvp.f
@@ -136,9 +136,13 @@
*> \param[in] TOLA
*> \verbatim
*> TOLA is REAL
+*> \endverbatim
+*>
*> \param[in] TOLB
*> \verbatim
*> TOLB is REAL
+*> \endverbatim
+*> \verbatim
*> TOLA and TOLB are the thresholds to determine the effective
*> numerical rank of matrix B and a subblock of A. Generally,
*> they are set to
@@ -147,19 +151,21 @@
*> The size of TOLA and TOLB may affect the size of backward
*> errors of the decomposition.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] K
*> \verbatim
*> K is INTEGER
+*> \endverbatim
+*>
*> \param[out] L
*> \verbatim
*> L is INTEGER
+*> \endverbatim
+*> \verbatim
*> On exit, K and L specify the dimension of the subblocks
*> described in Purpose section.
*> K + L = effective numerical rank of (A**T,B**T)**T.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] U
*> \verbatim
diff --git a/SRC/shsein.f b/SRC/shsein.f
index abc29570..83c45375 100644
--- a/SRC/shsein.f
+++ b/SRC/shsein.f
@@ -118,9 +118,13 @@
*> \param[in,out] WR
*> \verbatim
*> WR is REAL array, dimension (N)
+*> \endverbatim
+*>
*> \param[in] WI
*> \verbatim
*> WI is REAL array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> On entry, the real and imaginary parts of the eigenvalues of
*> H; a complex conjugate pair of eigenvalues must be stored in
*> consecutive elements of WR and WI.
@@ -128,7 +132,6 @@
*> are perturbed slightly in searching for independent
*> eigenvectors.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] VL
*> \verbatim
diff --git a/SRC/shseqr.f b/SRC/shseqr.f
index 94d280ea..1abe921f 100644
--- a/SRC/shseqr.f
+++ b/SRC/shseqr.f
@@ -76,18 +76,21 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> It is assumed that H is already upper triangular in rows
*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
-*> set by a previous call to SGEBAL, and then passed to SGEHRD
+*> set by a previous call to SGEBAL, and then passed to ZGEHRD
*> when the matrix output by SGEBAL is reduced to Hessenberg
*> form. Otherwise ILO and IHI should be set to 1 and N
*> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.
*> If N = 0, then ILO = 1 and IHI = 0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] H
*> \verbatim
@@ -118,9 +121,13 @@
*> \param[out] WR
*> \verbatim
*> WR is REAL array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] WI
*> \verbatim
*> WI is REAL array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> The real and imaginary parts, respectively, of the computed
*> eigenvalues. If two eigenvalues are computed as a complex
*> conjugate pair, they are stored in consecutive elements of
@@ -131,7 +138,6 @@
*> diagonal block, WI(i) = sqrt(-H(i+1,i)*H(i,i+1)) and
*> WI(i+1) = -WI(i).
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] Z
*> \verbatim
@@ -192,42 +198,33 @@
*> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
*> and WI contain those eigenvalues which have been
*> successfully computed. (Failures are rare.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and JOB = 'E', then on exit, the
*> remaining unconverged eigenvalues are the eigen-
*> values of the upper Hessenberg matrix rows and
*> columns ILO through INFO of the final, output
*> value of H.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and JOB = 'S', then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (*) (initial value of H)*U = U*(final value of H)
-*> \endverbatim
-*> \verbatim
+*>
*> where U is an orthogonal matrix. The final
*> value of H is upper Hessenberg and quasi-triangular
*> in rows and columns INFO+1 through IHI.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and COMPZ = 'V', then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (final value of Z) = (initial value of Z)*U
-*> \endverbatim
-*> \verbatim
+*>
*> where U is the orthogonal matrix in (*) (regard-
*> less of the value of JOB.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and COMPZ = 'I', then on exit
*> (final value of Z) = U
*> where U is the orthogonal matrix in (*) (regard-
*> less of the value of JOB.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and COMPZ = 'N', then Z is not
*> accessed.
*> \endverbatim
diff --git a/SRC/sla_gbrfsx_extended.f b/SRC/sla_gbrfsx_extended.f
index 3f9ecf74..21e5b6f8 100644
--- a/SRC/sla_gbrfsx_extended.f
+++ b/SRC/sla_gbrfsx_extended.f
@@ -107,29 +107,29 @@
*> matrix B.
*> \endverbatim
*>
-*> \param[in] A
+*> \param[in] AB
*> \verbatim
-*> A is REAL array, dimension (LDA,N)
-*> On entry, the N-by-N matrix A.
+*> AB is REAL array, dimension (LDAB,N)
+*> On entry, the N-by-N matrix AB.
*> \endverbatim
*>
-*> \param[in] LDA
+*> \param[in] LDAB
*> \verbatim
-*> LDA is INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
+*> LDAB is INTEGER
+*> The leading dimension of the array AB. LDAB >= max(1,N).
*> \endverbatim
*>
-*> \param[in] AF
+*> \param[in] AFB
*> \verbatim
-*> AF is REAL array, dimension (LDAF,N)
+*> AFB is REAL array, dimension (LDAFB,N)
*> The factors L and U from the factorization
*> A = P*L*U as computed by SGBTRF.
*> \endverbatim
*>
-*> \param[in] LDAF
+*> \param[in] LDAFB
*> \verbatim
-*> LDAF is INTEGER
-*> The leading dimension of the array AF. LDAF >= max(1,N).
+*> LDAFB is INTEGER
+*> The leading dimension of the array AF. LDAFB >= max(1,N).
*> \endverbatim
*>
*> \param[in] IPIV
@@ -212,37 +212,31 @@
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> normwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Normwise relative error in the ith solution vector:
*> max_j (abs(XTRUE(j,i) - X(j,i)))
*> ------------------------------
*> max_j abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the type of error information as described
*> below. There currently are up to three pieces of information
*> returned.
-*> \endverbatim
-*> \verbatim
+*>
*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
+*>
*> The second index in ERR_BNDS_NORM(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated normwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -251,8 +245,7 @@
*> appropriately scaled matrix Z.
*> Let Z = S*A, where S scales each row by a power of the
*> radix so all absolute row sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
@@ -266,14 +259,12 @@
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> componentwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Componentwise relative error in the ith solution vector:
*> abs(XTRUE(j,i) - X(j,i))
*> max_j ----------------------
*> abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the right-hand side i (on which the
*> componentwise relative error depends), and the type of error
*> information as described below. There currently are up to three
@@ -281,26 +272,22 @@
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned.
-*> \endverbatim
-*> \verbatim
+*>
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
+*>
*> The second index in ERR_BNDS_COMP(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated componentwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -311,8 +298,7 @@
*> current right-hand side and S scales each row of
*> A*diag(x) by a power of the radix so all absolute row
*> sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
diff --git a/SRC/sla_gerfsx_extended.f b/SRC/sla_gerfsx_extended.f
index 437e15dc..16a33a98 100644
--- a/SRC/sla_gerfsx_extended.f
+++ b/SRC/sla_gerfsx_extended.f
@@ -19,7 +19,7 @@
* SUBROUTINE SLA_GERFSX_EXTENDED( PREC_TYPE, TRANS_TYPE, N, NRHS, A,
* LDA, AF, LDAF, IPIV, COLEQU, C, B,
* LDB, Y, LDY, BERR_OUT, N_NORMS,
-* ERR_BNDS_NORM, ERR_BNDS_COMP, RES,
+* ERRS_N, ERRS_C, RES,
* AYB, DY, Y_TAIL, RCOND, ITHRESH,
* RTHRESH, DZ_UB, IGNORE_CWISE,
* INFO )
@@ -35,8 +35,8 @@
* REAL A( LDA, * ), AF( LDAF, * ), B( LDB, * ),
* $ Y( LDY, * ), RES( * ), DY( * ), Y_TAIL( * )
* REAL C( * ), AYB( * ), RCOND, BERR_OUT( * ),
-* $ ERR_BNDS_NORM( NRHS, * ),
-* $ ERR_BNDS_COMP( NRHS, * )
+* $ ERRS_N( NRHS, * ),
+* $ ERRS_C( NRHS, * )
* ..
*
* Purpose
@@ -50,10 +50,10 @@
*> and provides error bounds and backward error estimates for the solution.
*> This subroutine is called by SGERFSX to perform iterative refinement.
*> In addition to normwise error bound, the code provides maximum
-*> componentwise error bound if possible. See comments for ERR_BNDS_NORM
-*> and ERR_BNDS_COMP for details of the error bounds. Note that this
+*> componentwise error bound if possible. See comments for ERRS_N
+*> and ERRS_C for details of the error bounds. Note that this
*> subroutine is only resonsible for setting the second fields of
-*> ERR_BNDS_NORM and ERR_BNDS_COMP.
+*> ERRS_N and ERRS_C.
*>
*>\endverbatim
*
@@ -187,49 +187,43 @@
*> \param[in] N_NORMS
*> \verbatim
*> N_NORMS is INTEGER
-*> Determines which error bounds to return (see ERR_BNDS_NORM
-*> and ERR_BNDS_COMP).
+*> Determines which error bounds to return (see ERRS_N
+*> and ERRS_C).
*> If N_NORMS >= 1 return normwise error bounds.
*> If N_NORMS >= 2 return componentwise error bounds.
*> \endverbatim
*>
-*> \param[in,out] ERR_BNDS_NORM
+*> \param[in,out] ERRS_N
*> \verbatim
-*> ERR_BNDS_NORM is REAL array, dimension (NRHS, N_ERR_BNDS)
+*> ERRS_N is REAL array, dimension (NRHS, N_ERR_BNDS)
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> normwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Normwise relative error in the ith solution vector:
*> max_j (abs(XTRUE(j,i) - X(j,i)))
*> ------------------------------
*> max_j abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the type of error information as described
*> below. There currently are up to three pieces of information
*> returned.
-*> \endverbatim
-*> \verbatim
-*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
+*>
+*> The first index in ERRS_N(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
-*> The second index in ERR_BNDS_NORM(:,err) contains the following
+*>
+*> The second index in ERRS_N(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated normwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -238,55 +232,48 @@
*> appropriately scaled matrix Z.
*> Let Z = S*A, where S scales each row by a power of the
*> radix so all absolute row sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
*> cautions.
*> \endverbatim
*>
-*> \param[in,out] ERR_BNDS_COMP
+*> \param[in,out] ERRS_C
*> \verbatim
-*> ERR_BNDS_COMP is REAL array, dimension (NRHS, N_ERR_BNDS)
+*> ERRS_C is REAL array, dimension (NRHS, N_ERR_BNDS)
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> componentwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Componentwise relative error in the ith solution vector:
*> abs(XTRUE(j,i) - X(j,i))
*> max_j ----------------------
*> abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the right-hand side i (on which the
*> componentwise relative error depends), and the type of error
*> information as described below. There currently are up to three
*> pieces of information returned for each right-hand side. If
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
-*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
+*> ERRS_C is not accessed. If N_ERR_BNDS .LT. 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned.
-*> \endverbatim
-*> \verbatim
-*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
+*>
+*> The first index in ERRS_C(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
-*> The second index in ERR_BNDS_COMP(:,err) contains the following
+*>
+*> The second index in ERRS_C(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated componentwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -297,8 +284,7 @@
*> current right-hand side and S scales each row of
*> A*diag(x) by a power of the radix so all absolute row
*> sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
@@ -349,7 +335,7 @@
*> permit convergence using approximate factorizations or
*> factorizations other than LU. If the factorization uses a
*> technique other than Gaussian elimination, the guarantees in
-*> ERR_BNDS_NORM and ERR_BNDS_COMP may no longer be trustworthy.
+*> ERRS_N and ERRS_C may no longer be trustworthy.
*> \endverbatim
*>
*> \param[in] RTHRESH
@@ -407,7 +393,7 @@
SUBROUTINE SLA_GERFSX_EXTENDED( PREC_TYPE, TRANS_TYPE, N, NRHS, A,
$ LDA, AF, LDAF, IPIV, COLEQU, C, B,
$ LDB, Y, LDY, BERR_OUT, N_NORMS,
- $ ERR_BNDS_NORM, ERR_BNDS_COMP, RES,
+ $ ERRS_N, ERRS_C, RES,
$ AYB, DY, Y_TAIL, RCOND, ITHRESH,
$ RTHRESH, DZ_UB, IGNORE_CWISE,
$ INFO )
@@ -428,8 +414,8 @@
REAL A( LDA, * ), AF( LDAF, * ), B( LDB, * ),
$ Y( LDY, * ), RES( * ), DY( * ), Y_TAIL( * )
REAL C( * ), AYB( * ), RCOND, BERR_OUT( * ),
- $ ERR_BNDS_NORM( NRHS, * ),
- $ ERR_BNDS_COMP( NRHS, * )
+ $ ERRS_N( NRHS, * ),
+ $ ERRS_C( NRHS, * )
* ..
*
* =====================================================================
@@ -665,11 +651,11 @@
* Compute error bounds
*
IF (N_NORMS .GE. 1) THEN
- ERR_BNDS_NORM( J, LA_LINRX_ERR_I ) =
+ ERRS_N( J, LA_LINRX_ERR_I ) =
$ FINAL_DX_X / (1 - DXRATMAX)
END IF
IF ( N_NORMS .GE. 2 ) THEN
- ERR_BNDS_COMP( J, LA_LINRX_ERR_I ) =
+ ERRS_C( J, LA_LINRX_ERR_I ) =
$ FINAL_DZ_Z / (1 - DZRATMAX)
END IF
*
diff --git a/SRC/sla_lin_berr.f b/SRC/sla_lin_berr.f
index b6ff175f..04280d38 100644
--- a/SRC/sla_lin_berr.f
+++ b/SRC/sla_lin_berr.f
@@ -77,13 +77,13 @@
*> The denominator in the relative backward error formula above, i.e.,
*> the matrix abs(op(A_s))*abs(Y) + abs(B_s). The matrices A, Y, and B
*> are from iterative refinement (see sla_gerfsx_extended.f).
+*> \endverbatim
*>
*> \param[out] BERR
*> \verbatim
*> BERR is REAL array, dimension (NRHS)
*> The componentwise relative backward error from the formula above.
*> \endverbatim
-*> \endverbatim
*>
*
* Authors
diff --git a/SRC/sla_syrpvgrw.f b/SRC/sla_syrpvgrw.f
index 1e50587a..2f494031 100644
--- a/SRC/sla_syrpvgrw.f
+++ b/SRC/sla_syrpvgrw.f
@@ -67,12 +67,6 @@
*> column INFO is exactly 0.
*> \endverbatim
*>
-*> \param[in] NCOLS
-*> \verbatim
-*> NCOLS is INTEGER
-*> The number of columns of the matrix A. NCOLS >= 0.
-*> \endverbatim
-*>
*> \param[in] A
*> \verbatim
*> A is REAL array, dimension (LDA,N)
diff --git a/SRC/slabrd.f b/SRC/slabrd.f
index a81da165..a92cf51a 100644
--- a/SRC/slabrd.f
+++ b/SRC/slabrd.f
@@ -66,59 +66,105 @@
*> The number of leading rows and columns of A to be reduced.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the m by n general matrix to be reduced.
+*> On exit, the first NB rows and columns of the matrix are
+*> overwritten; the rest of the array is unchanged.
+*> If m >= n, elements on and below the diagonal in the first NB
+*> columns, with the array TAUQ, represent the orthogonal
+*> matrix Q as a product of elementary reflectors; and
+*> elements above the diagonal in the first NB rows, with the
+*> array TAUP, represent the orthogonal matrix P as a product
+*> of elementary reflectors.
+*> If m < n, elements below the diagonal in the first NB
+*> columns, with the array TAUQ, represent the orthogonal
+*> matrix Q as a product of elementary reflectors, and
+*> elements on and above the diagonal in the first NB rows,
+*> with the array TAUP, represent the orthogonal matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) REAL array, dimension (NB)
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (NB)
*> The diagonal elements of the first NB rows and columns of
*> the reduced matrix. D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) REAL array, dimension (NB)
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (NB)
*> The off-diagonal elements of the first NB rows and columns of
*> the reduced matrix.
+*> \endverbatim
*>
-*> TAUQ (output) REAL array dimension (NB)
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is REAL array dimension (NB)
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) REAL array, dimension (NB)
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is REAL array, dimension (NB)
*> The scalar factors of the elementary reflectors which
*> represent the orthogonal matrix P. See Further Details.
+*> \endverbatim
*>
-*> X (output) REAL array, dimension (LDX,NB)
+*> \param[out] X
+*> \verbatim
+*> X is REAL array, dimension (LDX,NB)
*> The m-by-nb matrix X required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDX (input) INTEGER
+*> \param[in] LDX
+*> \verbatim
+*> LDX is INTEGER
*> The leading dimension of the array X. LDX >= max(1,M).
+*> \endverbatim
*>
-*> Y (output) REAL array, dimension (LDY,NB)
+*> \param[out] Y
+*> \verbatim
+*> Y is REAL array, dimension (LDY,NB)
*> The n-by-nb matrix Y required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDY (input) INTEGER
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
*> The leading dimension of the array Y. LDY >= max(1,N).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/slacon.f b/SRC/slacon.f
index dc751746..71fbf6c8 100644
--- a/SRC/slacon.f
+++ b/SRC/slacon.f
@@ -104,8 +104,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> Contributed by Nick Higham, University of Manchester.
*> Originally named SONEST, dated March 16, 1988.
diff --git a/SRC/slaed3.f b/SRC/slaed3.f
index 5e8dbc1d..00bf71f9 100644
--- a/SRC/slaed3.f
+++ b/SRC/slaed3.f
@@ -153,12 +153,6 @@
*> to update the system.
*> \endverbatim
*>
-*> \param[in] LDS
-*> \verbatim
-*> LDS is INTEGER
-*> The leading dimension of S. LDS >= max(1,K).
-*> \endverbatim
-*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/SRC/slagtm.f b/SRC/slagtm.f
index e0edd7ec..48c26ed7 100644
--- a/SRC/slagtm.f
+++ b/SRC/slagtm.f
@@ -99,12 +99,13 @@
*> \verbatim
*> X is REAL array, dimension (LDX,NRHS)
*> The N by NRHS matrix X.
+*> \endverbatim
+*>
*> \param[in] LDX
*> \verbatim
*> LDX is INTEGER
*> The leading dimension of the array X. LDX >= max(N,1).
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] BETA
*> \verbatim
diff --git a/SRC/slahr2.f b/SRC/slahr2.f
index 9742d694..b04bcea4 100644
--- a/SRC/slahr2.f
+++ b/SRC/slahr2.f
@@ -65,6 +65,55 @@
*> The number of columns to be reduced.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N-K+1)
+*> On entry, the n-by-(n-k+1) general matrix A.
+*> On exit, the elements on and above the k-th subdiagonal in
+*> the first NB columns are overwritten with the corresponding
+*> elements of the reduced matrix; the elements below the k-th
+*> subdiagonal, with the array TAU, represent the matrix Q as a
+*> product of elementary reflectors. The other columns of A are
+*> unchanged. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (NB)
+*> The scalar factors of the elementary reflectors. See Further
+*> Details.
+*> \endverbatim
+*>
+*> \param[out] T
+*> \verbatim
+*> T is REAL array, dimension (LDT,NB)
+*> The upper triangular matrix T.
+*> \endverbatim
+*>
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
+*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
+*>
+*> \param[out] Y
+*> \verbatim
+*> Y is REAL array, dimension (LDY,NB)
+*> The n-by-nb matrix Y.
+*> \endverbatim
+*>
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
+*> The leading dimension of the array Y. LDY >= N.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -83,27 +132,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* unchanged. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> TAU (output) REAL array, dimension (NB)
-*> The scalar factors of the elementary reflectors. See Further
-*> Details.
-*>
-*> T (output) REAL array, dimension (LDT,NB)
-*> The upper triangular matrix T.
-*>
-*> LDT (input) INTEGER
-*> The leading dimension of the array T. LDT >= NB.
-*>
-*> Y (output) REAL array, dimension (LDY,NB)
-*> The n-by-nb matrix Y.
-*>
-*> LDY (input) INTEGER
-*> The leading dimension of the array Y. LDY >= N.
-*>
*>
*> The matrix Q is represented as a product of nb elementary reflectors
*>
diff --git a/SRC/slahrd.f b/SRC/slahrd.f
index 05c09df8..b75a3dc4 100644
--- a/SRC/slahrd.f
+++ b/SRC/slahrd.f
@@ -66,6 +66,55 @@
*> The number of columns to be reduced.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N-K+1)
+*> On entry, the n-by-(n-k+1) general matrix A.
+*> On exit, the elements on and above the k-th subdiagonal in
+*> the first NB columns are overwritten with the corresponding
+*> elements of the reduced matrix; the elements below the k-th
+*> subdiagonal, with the array TAU, represent the matrix Q as a
+*> product of elementary reflectors. The other columns of A are
+*> unchanged. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (NB)
+*> The scalar factors of the elementary reflectors. See Further
+*> Details.
+*> \endverbatim
+*>
+*> \param[out] T
+*> \verbatim
+*> T is REAL array, dimension (LDT,NB)
+*> The upper triangular matrix T.
+*> \endverbatim
+*>
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
+*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
+*>
+*> \param[out] Y
+*> \verbatim
+*> Y is REAL array, dimension (LDY,NB)
+*> The n-by-nb matrix Y.
+*> \endverbatim
+*>
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
+*> The leading dimension of the array Y. LDY >= N.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -84,27 +133,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* unchanged. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> TAU (output) REAL array, dimension (NB)
-*> The scalar factors of the elementary reflectors. See Further
-*> Details.
-*>
-*> T (output) REAL array, dimension (LDT,NB)
-*> The upper triangular matrix T.
-*>
-*> LDT (input) INTEGER
-*> The leading dimension of the array T. LDT >= NB.
-*>
-*> Y (output) REAL array, dimension (LDY,NB)
-*> The n-by-nb matrix Y.
-*>
-*> LDY (input) INTEGER
-*> The leading dimension of the array Y. LDY >= N.
-*>
*>
*> The matrix Q is represented as a product of nb elementary reflectors
*>
diff --git a/SRC/slaqr0.f b/SRC/slaqr0.f
index 3ad8db4d..896f199b 100644
--- a/SRC/slaqr0.f
+++ b/SRC/slaqr0.f
@@ -196,37 +196,29 @@
*> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
*> and WI contain those eigenvalues which have been
*> successfully computed. (Failures are rare.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANT is .FALSE., then on exit,
*> the remaining unconverged eigenvalues are the eigen-
*> values of the upper Hessenberg matrix rows and
*> columns ILO through INFO of the final, output
*> value of H.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTT is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (*) (initial value of H)*U = U*(final value of H)
-*> \endverbatim
-*> \verbatim
+*>
*> where U is an orthogonal matrix. The final
*> value of H is upper Hessenberg and quasi-triangular
*> in rows and columns INFO+1 through IHI.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (final value of Z(ILO:IHI,ILOZ:IHIZ)
*> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
-*> \endverbatim
-*> \verbatim
+*>
*> where U is the orthogonal matrix in (*) (regard-
*> less of the value of WANTT.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
*> accessed.
*> \endverbatim
diff --git a/SRC/slaqr4.f b/SRC/slaqr4.f
index 955c9631..0e0c1ec5 100644
--- a/SRC/slaqr4.f
+++ b/SRC/slaqr4.f
@@ -198,42 +198,36 @@
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> .GT. 0: if INFO = i, SLAQR4 failed to compute all of
*> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
*> and WI contain those eigenvalues which have been
*> successfully computed. (Failures are rare.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANT is .FALSE., then on exit,
*> the remaining unconverged eigenvalues are the eigen-
*> values of the upper Hessenberg matrix rows and
*> columns ILO through INFO of the final, output
*> value of H.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTT is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (*) (initial value of H)*U = U*(final value of H)
-*> \endverbatim
-*> \verbatim
-*> where U is an orthogonal matrix. The final
-*> value of H is upper Hessenberg and quasi-triangular
-*> in rows and columns INFO+1 through IHI.
-*> \endverbatim
-*> \verbatim
+*>
+*> where U is a orthogonal matrix. The final
+*> value of H is upper Hessenberg and triangular in
+*> rows and columns INFO+1 through IHI.
+*>
*> If INFO .GT. 0 and WANTZ is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (final value of Z(ILO:IHI,ILOZ:IHIZ)
*> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
-*> \endverbatim
-*> \verbatim
+*>
*> where U is the orthogonal matrix in (*) (regard-
*> less of the value of WANTT.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
*> accessed.
*> \endverbatim
diff --git a/SRC/slarfb.f b/SRC/slarfb.f
index 27a47f6c..232d69e7 100644
--- a/SRC/slarfb.f
+++ b/SRC/slarfb.f
@@ -93,53 +93,81 @@
*> reflectors whose product defines the block reflector).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] V
*> \verbatim
-* The matrix V. See Further Details.
+*> V is REAL array, dimension
+*> (LDV,K) if STOREV = 'C'
+*> (LDV,M) if STOREV = 'R' and SIDE = 'L'
+*> (LDV,N) if STOREV = 'R' and SIDE = 'R'
+*> The matrix V. See Further Details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
*> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
*> if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> T (input) REAL array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is REAL array, dimension (LDT,K)
*> The triangular k by k matrix T in the representation of the
*> block reflector.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
-*> C (input/output) REAL array, dimension (LDC,N)
+*> \param[in,out] C
+*> \verbatim
+*> C is REAL array, dimension (LDC,N)
*> On entry, the m by n matrix C.
*> On exit, C is overwritten by H*C or H**T*C or C*H or C*H**T.
+*> \endverbatim
*>
-*> LDC (input) INTEGER
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace) REAL array, dimension (LDWORK,K)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (LDWORK,K)
+*> \endverbatim
*>
-*> LDWORK (input) INTEGER
+*> \param[in] LDWORK
+*> \verbatim
+*> LDWORK is INTEGER
*> The leading dimension of the array WORK.
*> If SIDE = 'L', LDWORK >= max(1,N);
*> if SIDE = 'R', LDWORK >= max(1,M).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The shape of the matrix V and the storage of the vectors which define
*> the H(i) is best illustrated by the following example with n = 5 and
diff --git a/SRC/slarft.f b/SRC/slarft.f
index 80b95ab6..1a76c351 100644
--- a/SRC/slarft.f
+++ b/SRC/slarft.f
@@ -63,56 +63,82 @@
*> = 'B': H = H(k) . . . H(2) H(1) (Backward)
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] STOREV
*> \verbatim
-* reflectors are stored (see also Further Details):
+*> STOREV is CHARACTER*1
+*> Specifies how the vectors which define the elementary
+*> reflectors are stored (see also Further Details):
*> = 'C': columnwise
*> = 'R': rowwise
+*> \endverbatim
*>
-*> N (input) INTEGER
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
*> The order of the block reflector H. N >= 0.
+*> \endverbatim
*>
-*> K (input) INTEGER
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
*> The order of the triangular factor T (= the number of
*> elementary reflectors). K >= 1.
+*> \endverbatim
*>
-*> V (input/output) REAL array, dimension
+*> \param[in,out] V
+*> \verbatim
+*> V is REAL array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,N) if STOREV = 'R'
*> The matrix V. See further details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> TAU (input) REAL array, dimension (K)
+*> \param[in] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (K)
*> TAU(i) must contain the scalar factor of the elementary
*> reflector H(i).
+*> \endverbatim
*>
-*> T (output) REAL array, dimension (LDT,K)
+*> \param[out] T
+*> \verbatim
+*> T is REAL array, dimension (LDT,K)
*> The k by k triangular factor T of the block reflector.
*> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
*> lower triangular. The rest of the array is not used.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The shape of the matrix V and the storage of the vectors which define
*> the H(i) is best illustrated by the following example with n = 5 and
diff --git a/SRC/slarrf.f b/SRC/slarrf.f
index 75987c66..f8f5d7be 100644
--- a/SRC/slarrf.f
+++ b/SRC/slarrf.f
@@ -159,6 +159,11 @@
*> Workspace.
*> \endverbatim
*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> Signals processing OK (=0) or failure (=1)
+*> \endverbatim
*
* Authors
* =======
diff --git a/SRC/slarrv.f b/SRC/slarrv.f
index c7f16c07..66500044 100644
--- a/SRC/slarrv.f
+++ b/SRC/slarrv.f
@@ -234,14 +234,12 @@
*> \verbatim
*> INFO is INTEGER
*> = 0: successful exit
-*> \endverbatim
-*> \verbatim
+*>
*> > 0: A problem occured in SLARRV.
*> < 0: One of the called subroutines signaled an internal problem.
*> Needs inspection of the corresponding parameter IINFO
*> for further information.
-*> \endverbatim
-*> \verbatim
+*>
*> =-1: Problem in SLARRB when refining a child's eigenvalues.
*> =-2: Problem in SLARRF when computing the RRR of a child.
*> When a child is inside a tight cluster, it can be difficult
diff --git a/SRC/slarzt.f b/SRC/slarzt.f
index 4ba181ab..904e4ebf 100644
--- a/SRC/slarzt.f
+++ b/SRC/slarzt.f
@@ -66,56 +66,82 @@
*> = 'B': H = H(k) . . . H(2) H(1) (Backward)
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] STOREV
*> \verbatim
-* reflectors are stored (see also Further Details):
+*> STOREV is CHARACTER*1
+*> Specifies how the vectors which define the elementary
+*> reflectors are stored (see also Further Details):
*> = 'C': columnwise (not supported yet)
*> = 'R': rowwise
+*> \endverbatim
*>
-*> N (input) INTEGER
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
*> The order of the block reflector H. N >= 0.
+*> \endverbatim
*>
-*> K (input) INTEGER
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
*> The order of the triangular factor T (= the number of
*> elementary reflectors). K >= 1.
+*> \endverbatim
*>
-*> V (input/output) REAL array, dimension
+*> \param[in,out] V
+*> \verbatim
+*> V is REAL array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,N) if STOREV = 'R'
*> The matrix V. See further details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> TAU (input) REAL array, dimension (K)
+*> \param[in] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (K)
*> TAU(i) must contain the scalar factor of the elementary
*> reflector H(i).
+*> \endverbatim
*>
-*> T (output) REAL array, dimension (LDT,K)
+*> \param[out] T
+*> \verbatim
+*> T is REAL array, dimension (LDT,K)
*> The k by k triangular factor T of the block reflector.
*> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
*> lower triangular. The rest of the array is not used.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> Based on contributions by
*> A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
diff --git a/SRC/slascl.f b/SRC/slascl.f
index 6d87e7d0..c99af376 100644
--- a/SRC/slascl.f
+++ b/SRC/slascl.f
@@ -84,6 +84,8 @@
*> \param[in] CTO
*> \verbatim
*> CTO is REAL
+*> \endverbatim
+*> \verbatim
*> The matrix A is multiplied by CTO/CFROM. A(I,J) is computed
*> without over/underflow if the final result CTO*A(I,J)/CFROM
*> can be represented without over/underflow. CFROM must be
diff --git a/SRC/slasq2.f b/SRC/slasq2.f
index 027d1c58..a4d9c540 100644
--- a/SRC/slasq2.f
+++ b/SRC/slasq2.f
@@ -104,7 +104,7 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Local Variables: I0:N0 defines a current unreduced segment of Z.
+*> Local Variables: I0:N0 defines a current unreduced segment of Z.
*> The shifts are accumulated in SIGMA. Iteration count is in ITER.
*> Ping-pong is controlled by PP (alternates between 0 and 1).
*>
diff --git a/SRC/slasq4.f b/SRC/slasq4.f
index 75884913..97fcafe9 100644
--- a/SRC/slasq4.f
+++ b/SRC/slasq4.f
@@ -65,9 +65,9 @@
*> PP=0 for ping, PP=1 for pong.
*> \endverbatim
*>
-*> \param[in] NOIN
+*> \param[in] N0IN
*> \verbatim
-*> NOIN is INTEGER
+*> N0IN is INTEGER
*> The value of N0 at start of EIGTEST.
*> \endverbatim
*>
@@ -144,7 +144,7 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* CNST1 = 9/16
+*> CNST1 = 9/16
*>
*> \endverbatim
*>
diff --git a/SRC/slatbs.f b/SRC/slatbs.f
index 656a6153..ebec3d32 100644
--- a/SRC/slatbs.f
+++ b/SRC/slatbs.f
@@ -173,8 +173,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> A rough bound on x is computed; if that is less than overflow, STBSV
*> is called, otherwise, specific code is used which checks for possible
diff --git a/SRC/slatps.f b/SRC/slatps.f
index 91480b70..09225bbe 100644
--- a/SRC/slatps.f
+++ b/SRC/slatps.f
@@ -160,8 +160,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> A rough bound on x is computed; if that is less than overflow, STPSV
*> is called, otherwise, specific code is used which checks for possible
diff --git a/SRC/slatrd.f b/SRC/slatrd.f
index da02ec77..fc7e45a3 100644
--- a/SRC/slatrd.f
+++ b/SRC/slatrd.f
@@ -70,47 +70,84 @@
*> The number of rows and columns to be reduced.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the symmetric matrix A. If UPLO = 'U', the leading
+*> n-by-n upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading n-by-n lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit:
+*> if UPLO = 'U', the last NB columns have been reduced to
+*> tridiagonal form, with the diagonal elements overwriting
+*> the diagonal elements of A; the elements above the diagonal
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors;
+*> if UPLO = 'L', the first NB columns have been reduced to
+*> tridiagonal form, with the diagonal elements overwriting
+*> the diagonal elements of A; the elements below the diagonal
+*> with the array TAU, represent the orthogonal matrix Q as a
+*> product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= (1,N).
+*> \endverbatim
*>
-*> E (output) REAL array, dimension (N-1)
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (N-1)
*> If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal
*> elements of the last NB columns of the reduced matrix;
*> if UPLO = 'L', E(1:nb) contains the subdiagonal elements of
*> the first NB columns of the reduced matrix.
+*> \endverbatim
*>
-*> TAU (output) REAL array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (N-1)
*> The scalar factors of the elementary reflectors, stored in
*> TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'.
*> See Further Details.
+*> \endverbatim
*>
-*> W (output) REAL array, dimension (LDW,NB)
+*> \param[out] W
+*> \verbatim
+*> W is REAL array, dimension (LDW,NB)
*> The n-by-nb matrix W required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDW (input) INTEGER
+*> \param[in] LDW
+*> \verbatim
+*> LDW is INTEGER
*> The leading dimension of the array W. LDW >= max(1,N).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup doubleOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/slatrs.f b/SRC/slatrs.f
index 5e3016cd..1d308365 100644
--- a/SRC/slatrs.f
+++ b/SRC/slatrs.f
@@ -169,8 +169,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> A rough bound on x is computed; if that is less than overflow, STRSV
*> is called, otherwise, specific code is used which checks for possible
diff --git a/SRC/sorcsd.f b/SRC/sorcsd.f
index b732bd10..b4b5a603 100644
--- a/SRC/sorcsd.f
+++ b/SRC/sorcsd.f
@@ -127,16 +127,52 @@
*> The number of columns in X11 and X21. 0 <= Q <= M.
*> \endverbatim
*>
-*> \param[in,out] X
+*> \param[in,out] X11
*> \verbatim
-*> X is REAL array, dimension (LDX,M)
-*> On entry, the orthogonal matrix whose CSD is desired.
+*> X11 is REAL array, dimension (LDX11,Q)
+*> On entry, part of the orthogonal matrix whose CSD is desired.
*> \endverbatim
*>
-*> \param[in] LDX
+*> \param[in] LDX11
*> \verbatim
-*> LDX is INTEGER
-*> The leading dimension of X. LDX >= MAX(1,M).
+*> LDX11 is INTEGER
+*> The leading dimension of X11. LDX11 >= MAX(1,P).
+*> \endverbatim
+*>
+*> \param[in,out] X12
+*> \verbatim
+*> X12 is REAL array, dimension (LDX12,M-Q)
+*> On entry, part of the orthogonal matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX12
+*> \verbatim
+*> LDX12 is INTEGER
+*> The leading dimension of X12. LDX12 >= MAX(1,P).
+*> \endverbatim
+*>
+*> \param[in,out] X21
+*> \verbatim
+*> X21 is REAL array, dimension (LDX21,Q)
+*> On entry, part of the orthogonal matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX21
+*> \verbatim
+*> LDX21 is INTEGER
+*> The leading dimension of X11. LDX21 >= MAX(1,M-P).
+*> \endverbatim
+*>
+*> \param[in,out] X22
+*> \verbatim
+*> X22 is REAL array, dimension (LDX22,M-Q)
+*> On entry, part of the orthogonal matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX22
+*> \verbatim
+*> LDX22 is INTEGER
+*> The leading dimension of X11. LDX22 >= MAX(1,M-P).
*> \endverbatim
*>
*> \param[out] THETA
diff --git a/SRC/sorghr.f b/SRC/sorghr.f
index 8dcf15a9..c0c3c5e7 100644
--- a/SRC/sorghr.f
+++ b/SRC/sorghr.f
@@ -51,15 +51,18 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI must have the same values as in the previous call
*> of SGEHRD. Q is equal to the unit matrix except in the
*> submatrix Q(ilo+1:ihi,ilo+1:ihi).
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
diff --git a/SRC/sormhr.f b/SRC/sormhr.f
index 88c3cae3..9e0920f8 100644
--- a/SRC/sormhr.f
+++ b/SRC/sormhr.f
@@ -80,9 +80,13 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI must have the same values as in the previous call
*> of SGEHRD. Q is equal to the unit matrix except in the
*> submatrix Q(ilo+1:ihi,ilo+1:ihi).
@@ -91,7 +95,6 @@
*> if SIDE = 'R', then 1 <= ILO <= IHI <= N, if N > 0, and
*> ILO = 1 and IHI = 0, if N = 0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] A
*> \verbatim
diff --git a/SRC/spbstf.f b/SRC/spbstf.f
index 307795bc..021bd44b 100644
--- a/SRC/spbstf.f
+++ b/SRC/spbstf.f
@@ -80,6 +80,25 @@
*> as follows:
*> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
*> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
+*>
+*> On exit, if INFO = 0, the factor S from the split Cholesky
+*> factorization A = S**T*S. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDAB
+*> \verbatim
+*> LDAB is INTEGER
+*> The leading dimension of the array AB. LDAB >= KD+1.
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> > 0: if INFO = i, the factorization could not be completed,
+*> because the updated element a(i,i) was negative; the
+*> matrix A is not positive definite.
*> \endverbatim
*>
*
@@ -100,18 +119,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* factorization A = S**T*S. See Further Details.
-*>
-*> LDAB (input) INTEGER
-*> The leading dimension of the array AB. LDAB >= KD+1.
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*> > 0: if INFO = i, the factorization could not be completed,
-*> because the updated element a(i,i) was negative; the
-*> matrix A is not positive definite.
-*>
*>
*> The band storage scheme is illustrated by the following example, when
*> N = 7, KD = 2:
diff --git a/SRC/spptrf.f b/SRC/spptrf.f
index 938f9e2b..e0a5a7ca 100644
--- a/SRC/spptrf.f
+++ b/SRC/spptrf.f
@@ -102,8 +102,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> The packed storage scheme is illustrated by the following example
*> when N = 4, UPLO = 'U':
diff --git a/SRC/ssbgvx.f b/SRC/ssbgvx.f
index d59dd35b..654f0c78 100644
--- a/SRC/ssbgvx.f
+++ b/SRC/ssbgvx.f
@@ -153,27 +153,33 @@
*> \param[in] VL
*> \verbatim
*> VL is REAL
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is REAL
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/sspgvx.f b/SRC/sspgvx.f
index 423f45f7..e9eca801 100644
--- a/SRC/sspgvx.f
+++ b/SRC/sspgvx.f
@@ -119,27 +119,33 @@
*> \param[in] VL
*> \verbatim
*> VL is REAL
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is REAL
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/ssptrd.f b/SRC/ssptrd.f
index 3d752b5a..70dc78f9 100644
--- a/SRC/ssptrd.f
+++ b/SRC/ssptrd.f
@@ -54,6 +54,54 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is REAL array, dimension (N*(N+1)/2)
+*> On entry, the upper or lower triangle of the symmetric matrix
+*> A, packed columnwise in a linear array. The j-th column of A
+*> is stored in the array AP as follows:
+*> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+*> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the orthogonal
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the orthogonal matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
+*>
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (N)
+*> The diagonal elements of the tridiagonal matrix T:
+*> D(i) = A(i,i).
+*> \endverbatim
+*>
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (N-1)
+*> The off-diagonal elements of the tridiagonal matrix T:
+*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (N-1)
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -72,24 +120,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* of elementary reflectors. See Further Details.
-*>
-*> D (output) REAL array, dimension (N)
-*> The diagonal elements of the tridiagonal matrix T:
-*> D(i) = A(i,i).
-*>
-*> E (output) REAL array, dimension (N-1)
-*> The off-diagonal elements of the tridiagonal matrix T:
-*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
-*>
-*> TAU (output) REAL array, dimension (N-1)
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/sstebz.f b/SRC/sstebz.f
index c9a96fe3..c1d9f5d5 100644
--- a/SRC/sstebz.f
+++ b/SRC/sstebz.f
@@ -86,28 +86,34 @@
*> \param[in] VL
*> \verbatim
*> VL is REAL
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is REAL
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. Eigenvalues less than or equal
*> to VL, or greater than VU, will not be returned. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/sstegr.f b/SRC/sstegr.f
index 43881320..610cee9c 100644
--- a/SRC/sstegr.f
+++ b/SRC/sstegr.f
@@ -104,27 +104,33 @@
*> \param[in] VL
*> \verbatim
*> VL is REAL
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is REAL
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/sstemr.f b/SRC/sstemr.f
index 99598334..aaed5bda 100644
--- a/SRC/sstemr.f
+++ b/SRC/sstemr.f
@@ -135,27 +135,33 @@
*> \param[in] VL
*> \verbatim
*> VL is REAL
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is REAL
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] M
*> \verbatim
diff --git a/SRC/ssyconv.f b/SRC/ssyconv.f
index 57b5655e..2e9a19c8 100644
--- a/SRC/ssyconv.f
+++ b/SRC/ssyconv.f
@@ -89,19 +89,6 @@
*> WORK is REAL array, dimension (N)
*> \endverbatim
*>
-*> \param[in] LWORK
-*> \verbatim
-*> LWORK is INTEGER
-*> The length of WORK. LWORK >=1.
-*> LWORK = N
-*> \endverbatim
-*> \verbatim
-*> If LWORK = -1, then a workspace query is assumed; the routine
-*> only calculates the optimal size of the WORK array, returns
-*> this value as the first entry of the WORK array, and no error
-*> message related to LWORK is issued by XERBLA.
-*> \endverbatim
-*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/SRC/ssyequb.f b/SRC/ssyequb.f
index dd9d2a43..d2411e9a 100644
--- a/SRC/ssyequb.f
+++ b/SRC/ssyequb.f
@@ -129,8 +129,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> Reference: Livne, O.E. and Golub, G.H., "Scaling by Binormalization",
*> Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004.
diff --git a/SRC/ssytd2.f b/SRC/ssytd2.f
index e3b86f8a..7cc850c5 100644
--- a/SRC/ssytd2.f
+++ b/SRC/ssytd2.f
@@ -55,6 +55,62 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the symmetric matrix A. If UPLO = 'U', the leading
+*> n-by-n upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading n-by-n lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the orthogonal
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the orthogonal matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (N)
+*> The diagonal elements of the tridiagonal matrix T:
+*> D(i) = A(i,i).
+*> \endverbatim
+*>
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (N-1)
+*> The off-diagonal elements of the tridiagonal matrix T:
+*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (N-1)
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -73,27 +129,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* of elementary reflectors. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> D (output) REAL array, dimension (N)
-*> The diagonal elements of the tridiagonal matrix T:
-*> D(i) = A(i,i).
-*>
-*> E (output) REAL array, dimension (N-1)
-*> The off-diagonal elements of the tridiagonal matrix T:
-*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
-*>
-*> TAU (output) REAL array, dimension (N-1)
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value.
-*>
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/ssytrd.f b/SRC/ssytrd.f
index 1a501791..104f2a53 100644
--- a/SRC/ssytrd.f
+++ b/SRC/ssytrd.f
@@ -55,45 +55,64 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realSYcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* of elementary reflectors. See Further Details.
+*> A is REAL array, dimension (LDA,N)
+*> On entry, the symmetric matrix A. If UPLO = 'U', the leading
+*> N-by-N upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading N-by-N lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the orthogonal
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the orthogonal matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> D (output) REAL array, dimension (N)
+*> \param[out] D
+*> \verbatim
+*> D is REAL array, dimension (N)
*> The diagonal elements of the tridiagonal matrix T:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) REAL array, dimension (N-1)
+*> \param[out] E
+*> \verbatim
+*> E is REAL array, dimension (N-1)
*> The off-diagonal elements of the tridiagonal matrix T:
*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
*>
-*> TAU (output) REAL array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is REAL array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= 1.
*> For optimum performance LWORK >= N*NB, where NB is the
*> optimal blocksize.
@@ -102,11 +121,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realSYcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/stgsen.f b/SRC/stgsen.f
index aff63cb6..d3c65a22 100644
--- a/SRC/stgsen.f
+++ b/SRC/stgsen.f
@@ -152,12 +152,18 @@
*> \param[out] ALPHAR
*> \verbatim
*> ALPHAR is REAL array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] ALPHAI
*> \verbatim
*> ALPHAI is REAL array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] BETA
*> \verbatim
*> BETA is REAL array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> On exit, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N, will
*> be the generalized eigenvalues. ALPHAR(j) + ALPHAI(j)*i
*> and BETA(j),j=1,...,N are the diagonals of the complex Schur
@@ -168,8 +174,6 @@
*> positive, then the j-th and (j+1)-st eigenvalues are a
*> complex conjugate pair, with ALPHAI(j+1) negative.
*> \endverbatim
-*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] Q
*> \verbatim
@@ -217,9 +221,13 @@
*> \param[out] PL
*> \verbatim
*> PL is REAL
+*> \endverbatim
+*>
*> \param[out] PR
*> \verbatim
*> PR is REAL
+*> \endverbatim
+*> \verbatim
*> If IJOB = 1, 4 or 5, PL, PR are lower bounds on the
*> reciprocal of the norm of "projections" onto left and right
*> eigenspaces with respect to the selected cluster.
@@ -227,7 +235,6 @@
*> If M = 0 or M = N, PL = PR = 1.
*> If IJOB = 0, 2 or 3, PL and PR are not referenced.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] DIF
*> \verbatim
diff --git a/SRC/stgsja.f b/SRC/stgsja.f
index 44c04a9b..7f2f30a0 100644
--- a/SRC/stgsja.f
+++ b/SRC/stgsja.f
@@ -175,52 +175,77 @@
*> The number of columns of the matrices A and B. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> \endverbatim
+*>
+*> \param[in] L
+*> \verbatim
+*> L is INTEGER
+*> \endverbatim
*> \verbatim
-* See Further Details.
+*> K and L specify the subblocks in the input matrices A and B:
+*> A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,N-L+1:N)
+*> of A and B, whose GSVD is going to be computed by STGSJA.
+*> See Further Details.
+*> \endverbatim
*>
-*> A (input/output) REAL array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N)
*> On entry, the M-by-N matrix A.
*> On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular
*> matrix R or part of R. See Purpose for details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) REAL array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is REAL array, dimension (LDB,N)
*> On entry, the P-by-N matrix B.
*> On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains
*> a part of R. See Purpose for details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,P).
+*> \endverbatim
*>
-*> TOLA (input) REAL
-*> TOLB (input) REAL
+*> \param[in] TOLA
+*> \verbatim
+*> TOLA is REAL
+*> \endverbatim
+*>
+*> \param[in] TOLB
+*> \verbatim
+*> TOLB is REAL
+*> \endverbatim
+*> \verbatim
*> TOLA and TOLB are the convergence criteria for the Jacobi-
*> Kogbetliantz iteration procedure. Generally, they are the
*> same as used in the preprocessing step, say
*> TOLA = max(M,N)*norm(A)*MACHEPS,
*> TOLB = max(P,N)*norm(B)*MACHEPS.
+*> \endverbatim
*>
-*> ALPHA (output) REAL array, dimension (N)
-*> BETA (output) REAL array, dimension (N)
+*> \param[out] ALPHA
+*> \verbatim
+*> ALPHA is REAL array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] BETA
+*> \verbatim
+*> BETA is REAL array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> On exit, ALPHA and BETA contain the generalized singular
*> value pairs of A and B;
*> ALPHA(1:K) = 1,
@@ -234,53 +259,82 @@
*> Furthermore, if K+L < N,
*> ALPHA(K+L+1:N) = 0 and
*> BETA(K+L+1:N) = 0.
+*> \endverbatim
*>
-*> U (input/output) REAL array, dimension (LDU,M)
+*> \param[in,out] U
+*> \verbatim
+*> U is REAL array, dimension (LDU,M)
*> On entry, if JOBU = 'U', U must contain a matrix U1 (usually
*> the orthogonal matrix returned by SGGSVP).
*> On exit,
*> if JOBU = 'I', U contains the orthogonal matrix U;
*> if JOBU = 'U', U contains the product U1*U.
*> If JOBU = 'N', U is not referenced.
+*> \endverbatim
*>
-*> LDU (input) INTEGER
+*> \param[in] LDU
+*> \verbatim
+*> LDU is INTEGER
*> The leading dimension of the array U. LDU >= max(1,M) if
*> JOBU = 'U'; LDU >= 1 otherwise.
+*> \endverbatim
*>
-*> V (input/output) REAL array, dimension (LDV,P)
+*> \param[in,out] V
+*> \verbatim
+*> V is REAL array, dimension (LDV,P)
*> On entry, if JOBV = 'V', V must contain a matrix V1 (usually
*> the orthogonal matrix returned by SGGSVP).
*> On exit,
*> if JOBV = 'I', V contains the orthogonal matrix V;
*> if JOBV = 'V', V contains the product V1*V.
*> If JOBV = 'N', V is not referenced.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V. LDV >= max(1,P) if
*> JOBV = 'V'; LDV >= 1 otherwise.
+*> \endverbatim
*>
-*> Q (input/output) REAL array, dimension (LDQ,N)
+*> \param[in,out] Q
+*> \verbatim
+*> Q is REAL array, dimension (LDQ,N)
*> On entry, if JOBQ = 'Q', Q must contain a matrix Q1 (usually
*> the orthogonal matrix returned by SGGSVP).
*> On exit,
*> if JOBQ = 'I', Q contains the orthogonal matrix Q;
*> if JOBQ = 'Q', Q contains the product Q1*Q.
*> If JOBQ = 'N', Q is not referenced.
+*> \endverbatim
*>
-*> LDQ (input) INTEGER
+*> \param[in] LDQ
+*> \verbatim
+*> LDQ is INTEGER
*> The leading dimension of the array Q. LDQ >= max(1,N) if
*> JOBQ = 'Q'; LDQ >= 1 otherwise.
+*> \endverbatim
*>
-*> WORK (workspace) REAL array, dimension (2*N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (2*N)
+*> \endverbatim
*>
-*> NCYCLE (output) INTEGER
+*> \param[out] NCYCLE
+*> \verbatim
+*> NCYCLE is INTEGER
*> The number of cycles required for convergence.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
*> = 1: the procedure does not converge after MAXIT cycles.
+*> \endverbatim
*>
+*> \verbatim
*> Internal Parameters
*> ===================
*>
@@ -288,7 +342,26 @@
*> MAXIT specifies the total loops that the iterative procedure
*> may take. If after MAXIT cycles, the routine fails to
*> converge, we return INFO = 1.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> STGSJA essentially uses a variant of Kogbetliantz algorithm to reduce
*> min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and L-by-L
diff --git a/SRC/stpmqrt.f b/SRC/stpmqrt.f
index c032b4b3..9901dc42 100644
--- a/SRC/stpmqrt.f
+++ b/SRC/stpmqrt.f
@@ -67,6 +67,7 @@
*> \verbatim
*> N is INTEGER
*> The number of columns of the matrix B. N >= 0.
+*> \endverbatim
*>
*> \param[in] K
*> \verbatim
@@ -74,78 +75,115 @@
*> The number of elementary reflectors whose product defines
*> the matrix Q.
*> \endverbatim
-*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* K >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The order of the trapezoidal part of V.
+*> K >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> NB (input) INTEGER
+*> \param[in] NB
+*> \verbatim
+*> NB is INTEGER
*> The block size used for the storage of T. K >= NB >= 1.
*> This must be the same value of NB used to generate T
*> in CTPQRT.
+*> \endverbatim
*>
-*> V (input) REAL array, dimension (LDA,K)
+*> \param[in] V
+*> \verbatim
+*> V is REAL array, dimension (LDA,K)
*> The i-th column must contain the vector which defines the
*> elementary reflector H(i), for i = 1,2,...,k, as returned by
*> CTPQRT in B. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A.
-*> If SIDE = 'L', LDA >= max(1,M);
-*> if SIDE = 'R', LDA >= max(1,N).
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
+*> The leading dimension of the array V.
+*> If SIDE = 'L', LDV >= max(1,M);
+*> if SIDE = 'R', LDV >= max(1,N).
+*> \endverbatim
*>
-*> T (input) REAL array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is REAL array, dimension (LDT,K)
*> The upper triangular factors of the block reflectors
*> as returned by CTPQRT, stored as a NB-by-K matrix.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
*>
-*> A (input/output) REAL array, dimension
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension
*> (LDA,N) if SIDE = 'L' or
*> (LDA,K) if SIDE = 'R'
*> On entry, the K-by-N or M-by-K matrix A.
*> On exit, A is overwritten by the corresponding block of
*> Q*C or Q^H*C or C*Q or C*Q^H. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A.
*> If SIDE = 'L', LDC >= max(1,K);
*> If SIDE = 'R', LDC >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) REAL array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is REAL array, dimension (LDB,N)
*> On entry, the M-by-N matrix B.
*> On exit, B is overwritten by the corresponding block of
*> Q*C or Q^H*C or C*Q or C*Q^H. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B.
*> LDB >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace/output) REAL array. The dimension of WORK is
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array. The dimension of WORK is
*> N*NB if SIDE = 'L', or M*NB if SIDE = 'R'.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The columns of the pentagonal matrix V contain the elementary reflectors
*> H(1), H(2), ..., H(K); V is composed of a rectangular block V1 and a
diff --git a/SRC/stpqrt.f b/SRC/stpqrt.f
index 0c08ed1f..ec2e0a92 100644
--- a/SRC/stpqrt.f
+++ b/SRC/stpqrt.f
@@ -57,59 +57,90 @@
*> N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* MIN(M,N) >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The number of rows of the upper trapezoidal part of B.
+*> MIN(M,N) >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> NB (input) INTEGER
+*> \param[in] NB
+*> \verbatim
+*> NB is INTEGER
*> The block size to be used in the blocked QR. N >= NB >= 1.
+*> \endverbatim
*>
-*> A (input/output) REAL array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N)
*> On entry, the upper triangular N-by-N matrix A.
*> On exit, the elements on and above the diagonal of the array
*> contain the upper triangular matrix R.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> B (input/output) REAL array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is REAL array, dimension (LDB,N)
*> On entry, the pentagonal M-by-N matrix B. The first M-L rows
*> are rectangular, and the last L rows are upper trapezoidal.
*> On exit, B contains the pentagonal matrix V. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,M).
+*> \endverbatim
*>
-*> T (output) REAL array, dimension (LDT,N)
+*> \param[out] T
+*> \verbatim
+*> T is REAL array, dimension (LDT,N)
*> The upper triangular block reflectors stored in compact form
*> as a sequence of upper triangular blocks. See Further Details.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
*>
-*> WORK (workspace) REAL array, dimension (NB*N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (NB*N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
-*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*> The input matrix C is a (N+M)-by-N matrix
*>
*> C = [ A ]
diff --git a/SRC/stpqrt2.f b/SRC/stpqrt2.f
index 2923b4fd..c73cf7d4 100644
--- a/SRC/stpqrt2.f
+++ b/SRC/stpqrt2.f
@@ -55,53 +55,79 @@
*> N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* MIN(M,N) >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The number of rows of the upper trapezoidal part of B.
+*> MIN(M,N) >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> A (input/output) REAL array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA,N)
*> On entry, the upper triangular N-by-N matrix A.
*> On exit, the elements on and above the diagonal of the array
*> contain the upper triangular matrix R.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> B (input/output) REAL array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is REAL array, dimension (LDB,N)
*> On entry, the pentagonal M-by-N matrix B. The first M-L rows
*> are rectangular, and the last L rows are upper trapezoidal.
*> On exit, B contains the pentagonal matrix V. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,M).
+*> \endverbatim
*>
-*> T (output) REAL array, dimension (LDT,N)
+*> \param[out] T
+*> \verbatim
+*> T is REAL array, dimension (LDT,N)
*> The N-by-N upper triangular factor T of the block reflector.
*> See Further Details.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realOTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The input matrix C is a (N+M)-by-N matrix
*>
diff --git a/SRC/stprfb.f b/SRC/stprfb.f
index a9943ca6..abacca82 100644
--- a/SRC/stprfb.f
+++ b/SRC/stprfb.f
@@ -97,76 +97,111 @@
*> K >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup realOTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* K >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The order of the trapezoidal part of V.
+*> K >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> V (input) REAL array, dimension
+*> \param[in] V
+*> \verbatim
+*> V is REAL array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,M) if STOREV = 'R' and SIDE = 'L'
*> (LDV,N) if STOREV = 'R' and SIDE = 'R'
*> The pentagonal matrix V, which contains the elementary reflectors
*> H(1), H(2), ..., H(K). See Further Details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
*> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
*> if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> T (input) REAL array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is REAL array, dimension (LDT,K)
*> The triangular K-by-K matrix T in the representation of the
*> block reflector.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T.
*> LDT >= K.
+*> \endverbatim
*>
-*> A (input/output) REAL array, dimension
+*> \param[in,out] A
+*> \verbatim
+*> A is REAL array, dimension
*> (LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R'
*> On entry, the K-by-N or M-by-K matrix A.
*> On exit, A is overwritten by the corresponding block of
*> H*C or H^H*C or C*H or C*H^H. See Futher Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A.
*> If SIDE = 'L', LDC >= max(1,K);
*> If SIDE = 'R', LDC >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) REAL array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is REAL array, dimension (LDB,N)
*> On entry, the M-by-N matrix B.
*> On exit, B is overwritten by the corresponding block of
*> H*C or H^H*C or C*H or C*H^H. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B.
*> LDB >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace) REAL array, dimension
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension
*> (LDWORK,N) if SIDE = 'L',
*> (LDWORK,K) if SIDE = 'R'.
+*> \endverbatim
*>
-*> LDWORK (input) INTEGER
+*> \param[in] LDWORK
+*> \verbatim
+*> LDWORK is INTEGER
*> The leading dimension of the array WORK.
*> If SIDE = 'L', LDWORK >= K;
*> if SIDE = 'R', LDWORK >= M.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup realOTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix C is a composite matrix formed from blocks A and B.
*> The block B is of size M-by-N; if SIDE = 'R', A is of size M-by-K,
diff --git a/SRC/strexc.f b/SRC/strexc.f
index 3b3c7f3a..56e774e9 100644
--- a/SRC/strexc.f
+++ b/SRC/strexc.f
@@ -97,9 +97,13 @@
*> \param[in,out] IFST
*> \verbatim
*> IFST is INTEGER
+*> \endverbatim
+*>
*> \param[in,out] ILST
*> \verbatim
*> ILST is INTEGER
+*> \endverbatim
+*> \verbatim
*> Specify the reordering of the diagonal blocks of T.
*> The block with row index IFST is moved to row ILST, by a
*> sequence of transpositions between adjacent blocks.
@@ -109,7 +113,6 @@
*> position (which may differ from its input value by +1 or -1).
*> 1 <= IFST <= N; 1 <= ILST <= N.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] WORK
*> \verbatim
diff --git a/SRC/strsen.f b/SRC/strsen.f
index 632b5d01..340cb474 100644
--- a/SRC/strsen.f
+++ b/SRC/strsen.f
@@ -130,9 +130,13 @@
*> \param[out] WR
*> \verbatim
*> WR is REAL array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] WI
*> \verbatim
*> WI is REAL array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> The real and imaginary parts, respectively, of the reordered
*> eigenvalues of T. The eigenvalues are stored in the same
*> order as on the diagonal of T, with WR(i) = T(i,i) and, if
@@ -141,7 +145,6 @@
*> sufficiently ill-conditioned, then its value may differ
*> significantly from its value before reordering.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] M
*> \verbatim
diff --git a/SRC/zbbcsd.f b/SRC/zbbcsd.f
index f0965fab..79f2587a 100644
--- a/SRC/zbbcsd.f
+++ b/SRC/zbbcsd.f
@@ -236,6 +236,40 @@
*> partially reduced top-right block.
*> \endverbatim
*>
+*> \param[out] B21D
+*> \verbatim
+*> B21D is DOUBLE PRECISION array, dimension (Q)
+*> When CBBCSD converges, B21D contains the negative sines of
+*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then
+*> B21D contains the diagonal of the partially reduced bottom-left
+*> block.
+*> \endverbatim
+*>
+*> \param[out] B21E
+*> \verbatim
+*> B21E is DOUBLE PRECISION array, dimension (Q-1)
+*> When CBBCSD converges, B21E contains zeros. If CBBCSD fails
+*> to converge, then B21E contains the subdiagonal of the
+*> partially reduced bottom-left block.
+*> \endverbatim
+*>
+*> \param[out] B22D
+*> \verbatim
+*> B22D is DOUBLE PRECISION array, dimension (Q)
+*> When CBBCSD converges, B22D contains the negative sines of
+*> THETA(1), ..., THETA(Q). If CBBCSD fails to converge, then
+*> B22D contains the diagonal of the partially reduced bottom-right
+*> block.
+*> \endverbatim
+*>
+*> \param[out] B22E
+*> \verbatim
+*> B22E is DOUBLE PRECISION array, dimension (Q-1)
+*> When CBBCSD converges, B22E contains zeros. If CBBCSD fails
+*> to converge, then B22E contains the subdiagonal of the
+*> partially reduced bottom-right block.
+*> \endverbatim
+*>
*> \param[out] RWORK
*> \verbatim
*> RWORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
diff --git a/SRC/zcgesv.f b/SRC/zcgesv.f
index 0395a0ba..6939cc8c 100644
--- a/SRC/zcgesv.f
+++ b/SRC/zcgesv.f
@@ -1,4 +1,4 @@
-*> \brief <b> ZCGESV computes the solution to system of linear equations A * X = B for GE matrices</b>
+*> \brief <b> ZCGESV computes the solution to system of linear equations A * X = B for GE matrices</b> (mixed precision with iterative refinement)
*
* =========== DOCUMENTATION ===========
*
diff --git a/SRC/zgbsv.f b/SRC/zgbsv.f
index 20926314..5efd27e3 100644
--- a/SRC/zgbsv.f
+++ b/SRC/zgbsv.f
@@ -1,4 +1,4 @@
-*> \brief <b> ZGBSV computes the solution to system of linear equations A * X = B for GB matrices</b>
+*> \brief <b> ZGBSV computes the solution to system of linear equations A * X = B for GB matrices</b> (simple driver)
*
* =========== DOCUMENTATION ===========
*
diff --git a/SRC/zgebal.f b/SRC/zgebal.f
index f58a574f..fffc8e07 100644
--- a/SRC/zgebal.f
+++ b/SRC/zgebal.f
@@ -65,37 +65,35 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16GEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the input matrix A.
+*> On exit, A is overwritten by the balanced matrix.
+*> If JOB = 'N', A is not referenced.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> ILO (output) INTEGER
+*> \param[out] ILO
+*> \verbatim
+*> \endverbatim
*>
-*> IHI (output) INTEGER
-*> ILO and IHI are set to integers such that on exit
+*> \param[out] IHI
+*> \verbatim
+*> ILO and IHI are set to INTEGER such that on exit
*> A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I = IHI+1,...,N.
*> If JOB = 'N' or 'S', ILO = 1 and IHI = N.
+*> \endverbatim
*>
-*> SCALE (output) DOUBLE PRECISION array, dimension (N)
+*> \param[out] SCALE
+*> \verbatim
+*> SCALE is DOUBLE PRECISION array, dimension (N)
*> Details of the permutations and scaling factors applied to
*> A. If P(j) is the index of the row and column interchanged
*> with row and column j and D(j) is the scaling factor
@@ -105,11 +103,32 @@
*> = P(j) for j = IHI+1,...,N.
*> The order in which the interchanges are made is N to IHI+1,
*> then 1 to ILO-1.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit.
*> < 0: if INFO = -i, the i-th argument had an illegal value.
-*>
+*> \endverbatim
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16GEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The permutations consist of row and column interchanges which put
*> the matrix in the form
diff --git a/SRC/zgebd2.f b/SRC/zgebd2.f
index c6eda5bb..54c9b4f7 100644
--- a/SRC/zgebd2.f
+++ b/SRC/zgebd2.f
@@ -54,52 +54,93 @@
*> The number of columns in the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16GEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the m by n general matrix to be reduced.
+*> On exit,
+*> if m >= n, the diagonal and the first superdiagonal are
+*> overwritten with the upper bidiagonal matrix B; the
+*> elements below the diagonal, with the array TAUQ, represent
+*> the unitary matrix Q as a product of elementary
+*> reflectors, and the elements above the first superdiagonal,
+*> with the array TAUP, represent the unitary matrix P as
+*> a product of elementary reflectors;
+*> if m < n, the diagonal and the first subdiagonal are
+*> overwritten with the lower bidiagonal matrix B; the
+*> elements below the first subdiagonal, with the array TAUQ,
+*> represent the unitary matrix Q as a product of
+*> elementary reflectors, and the elements above the diagonal,
+*> with the array TAUP, represent the unitary matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) DOUBLE PRECISION array, dimension (min(M,N))
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (min(M,N))
*> The diagonal elements of the bidiagonal matrix B:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) DOUBLE PRECISION array, dimension (min(M,N)-1)
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (min(M,N)-1)
*> The off-diagonal elements of the bidiagonal matrix B:
*> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
*> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*> \endverbatim
*>
-*> TAUQ (output) COMPLEX*16 array dimension (min(M,N))
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is COMPLEX*16 array dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) COMPLEX*16 array, dimension (min(M,N))
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is COMPLEX*16 array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix P. See Further Details.
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX*16 array, dimension (max(M,N))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (max(M,N))
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16GEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/zgebrd.f b/SRC/zgebrd.f
index f8be2562..f978a8ba 100644
--- a/SRC/zgebrd.f
+++ b/SRC/zgebrd.f
@@ -55,63 +55,108 @@
*> The number of columns in the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16GEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the M-by-N general matrix to be reduced.
+*> On exit,
+*> if m >= n, the diagonal and the first superdiagonal are
+*> overwritten with the upper bidiagonal matrix B; the
+*> elements below the diagonal, with the array TAUQ, represent
+*> the unitary matrix Q as a product of elementary
+*> reflectors, and the elements above the first superdiagonal,
+*> with the array TAUP, represent the unitary matrix P as
+*> a product of elementary reflectors;
+*> if m < n, the diagonal and the first subdiagonal are
+*> overwritten with the lower bidiagonal matrix B; the
+*> elements below the first subdiagonal, with the array TAUQ,
+*> represent the unitary matrix Q as a product of
+*> elementary reflectors, and the elements above the diagonal,
+*> with the array TAUP, represent the unitary matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) DOUBLE PRECISION array, dimension (min(M,N))
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (min(M,N))
*> The diagonal elements of the bidiagonal matrix B:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) DOUBLE PRECISION array, dimension (min(M,N)-1)
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (min(M,N)-1)
*> The off-diagonal elements of the bidiagonal matrix B:
*> if m >= n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
*> if m < n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
+*> \endverbatim
*>
-*> TAUQ (output) COMPLEX*16 array dimension (min(M,N))
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is COMPLEX*16 array dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) COMPLEX*16 array, dimension (min(M,N))
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is COMPLEX*16 array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix P. See Further Details.
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The length of the array WORK. LWORK >= max(1,M,N).
*> For optimum performance LWORK >= (M+N)*NB, where NB
*> is the optimal blocksize.
-*>
+*> \endverbatim
+*> \verbatim
*> If LWORK = -1, then a workspace query is assumed; the routine
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit.
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16GEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/zgehd2.f b/SRC/zgehd2.f
index a804bbf1..36e156bb 100644
--- a/SRC/zgehd2.f
+++ b/SRC/zgehd2.f
@@ -45,48 +45,77 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16GEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] ILO
+*> \verbatim
+*> ILO is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHI
*> \verbatim
-* set to 1 and N respectively. See Further Details.
+*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
+*> It is assumed that A is already upper triangular in rows
+*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+*> set by a previous call to ZGEBAL; otherwise they should be
+*> set to 1 and N respectively. See Further Details.
*> 1 <= ILO <= IHI <= max(1,N).
+*> \endverbatim
*>
-*> A (input/output) COMPLEX*16 array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N)
*> On entry, the n by n general matrix to be reduced.
*> On exit, the upper triangle and the first subdiagonal of A
*> are overwritten with the upper Hessenberg matrix H, and the
*> elements below the first subdiagonal, with the array TAU,
*> represent the unitary matrix Q as a product of elementary
*> reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> TAU (output) COMPLEX*16 array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX*16 array, dimension (N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16GEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of (ihi-ilo) elementary
*> reflectors
diff --git a/SRC/zgehrd.f b/SRC/zgehrd.f
index 2d224f58..9e1a4838 100644
--- a/SRC/zgehrd.f
+++ b/SRC/zgehrd.f
@@ -45,60 +45,93 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16GEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] ILO
+*> \verbatim
+*> ILO is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHI
+*> \verbatim
+*> IHI is INTEGER
+*> \endverbatim
*> \verbatim
-* set to 1 and N respectively. See Further Details.
+*> It is assumed that A is already upper triangular in rows
+*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
+*> set by a previous call to ZGEBAL; otherwise they should be
+*> set to 1 and N respectively. See Further Details.
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
+*> \endverbatim
*>
-*> A (input/output) COMPLEX*16 array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N)
*> On entry, the N-by-N general matrix to be reduced.
*> On exit, the upper triangle and the first subdiagonal of A
*> are overwritten with the upper Hessenberg matrix H, and the
*> elements below the first subdiagonal, with the array TAU,
*> represent the unitary matrix Q as a product of elementary
*> reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> TAU (output) COMPLEX*16 array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to
*> zero.
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX*16 array, dimension (LWORK)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (LWORK)
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The length of the array WORK. LWORK >= max(1,N).
*> For optimum performance LWORK >= N*NB, where NB is the
*> optimal blocksize.
-*>
+*> \endverbatim
+*> \verbatim
*> If LWORK = -1, then a workspace query is assumed; the routine
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16GEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of (ihi-ilo) elementary
*> reflectors
diff --git a/SRC/zgelq2.f b/SRC/zgelq2.f
index cc57d722..cbc1f8d4 100644
--- a/SRC/zgelq2.f
+++ b/SRC/zgelq2.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and below the diagonal of the array
+*> contain the m by min(m,n) lower trapezoidal matrix L (L is
+*> lower triangular if m <= n); the elements above the diagonal,
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (M)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) COMPLEX*16 array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) COMPLEX*16 array, dimension (M)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/zgelqf.f b/SRC/zgelqf.f
index c72b27be..a83ea794 100644
--- a/SRC/zgelqf.f
+++ b/SRC/zgelqf.f
@@ -51,37 +51,39 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16GEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* product of elementary reflectors (see Further Details).
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit, the elements on and below the diagonal of the array
+*> contain the m-by-min(m,n) lower trapezoidal matrix L (L is
+*> lower triangular if m <= n); the elements above the diagonal,
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) COMPLEX*16 array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,M).
*> For optimum performance LWORK >= M*NB, where NB is the
*> optimal blocksize.
@@ -90,11 +92,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16GEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/zgeql2.f b/SRC/zgeql2.f
index 742aad2c..416f7b86 100644
--- a/SRC/zgeql2.f
+++ b/SRC/zgeql2.f
@@ -51,6 +51,44 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, if m >= n, the lower triangle of the subarray
+*> A(m-n+1:m,1:n) contains the n by n lower triangular matrix L;
+*> if m <= n, the elements on and below the (n-m)-th
+*> superdiagonal contain the m by n lower trapezoidal matrix L;
+*> the remaining elements, with the array TAU, represent the
+*> unitary matrix Q as a product of elementary reflectors
+*> (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +107,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) COMPLEX*16 array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) COMPLEX*16 array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/zgeqlf.f b/SRC/zgeqlf.f
index f48e33d3..e83e0989 100644
--- a/SRC/zgeqlf.f
+++ b/SRC/zgeqlf.f
@@ -51,50 +51,78 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16GEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* (see Further Details).
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit,
+*> if m >= n, the lower triangle of the subarray
+*> A(m-n+1:m,1:n) contains the N-by-N lower triangular matrix L;
+*> if m <= n, the elements on and below the (n-m)-th
+*> superdiagonal contain the M-by-N lower trapezoidal matrix L;
+*> the remaining elements, with the array TAU, represent the
+*> unitary matrix Q as a product of elementary reflectors
+*> (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) COMPLEX*16 array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N).
*> For optimum performance LWORK >= N*NB, where NB is
*> the optimal blocksize.
-*>
+*> \endverbatim
+*> \verbatim
*> If LWORK = -1, then a workspace query is assumed; the routine
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16GEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/zgeqr2.f b/SRC/zgeqr2.f
index cb8e7eda..8d6d0cb0 100644
--- a/SRC/zgeqr2.f
+++ b/SRC/zgeqr2.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and above the diagonal of the array
+*> contain the min(m,n) by n upper trapezoidal matrix R (R is
+*> upper triangular if m >= n); the elements below the diagonal,
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) COMPLEX*16 array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) COMPLEX*16 array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/zgeqr2p.f b/SRC/zgeqr2p.f
index 7721c112..d2599777 100644
--- a/SRC/zgeqr2p.f
+++ b/SRC/zgeqr2p.f
@@ -51,6 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the m by n matrix A.
+*> On exit, the elements on and above the diagonal of the array
+*> contain the min(m,n) by n upper trapezoidal matrix R (R is
+*> upper triangular if m >= n); the elements below the diagonal,
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors (see Further Details).
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,21 +105,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* product of elementary reflectors (see Further Details).
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,M).
-*>
-*> TAU (output) COMPLEX*16 array, dimension (min(M,N))
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> WORK (workspace) COMPLEX*16 array, dimension (N)
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/zgeqrt.f b/SRC/zgeqrt.f
index f990d123..6e447ac3 100644
--- a/SRC/zgeqrt.f
+++ b/SRC/zgeqrt.f
@@ -117,7 +117,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-*
*> The matrix V stores the elementary reflectors H(i) in the i-th column
*> below the diagonal. For example, if M=5 and N=3, the matrix V is
*>
diff --git a/SRC/zgeqrt2.f b/SRC/zgeqrt2.f
index d216b66c..9249d4dd 100644
--- a/SRC/zgeqrt2.f
+++ b/SRC/zgeqrt2.f
@@ -74,8 +74,10 @@
*> reflector T; the elements below the diagonal are not used.
*> See below for further details.
*> \endverbatim
+*>
+*> \param[in] LDT
*> \verbatim
-*> LDT (intput) INTEGER
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N).
*> \endverbatim
*>
diff --git a/SRC/zgeqrt3.f b/SRC/zgeqrt3.f
index b233b6b6..967cfa91 100644
--- a/SRC/zgeqrt3.f
+++ b/SRC/zgeqrt3.f
@@ -77,8 +77,10 @@
*> reflector T; the elements below the diagonal are not used.
*> See below for further details.
*> \endverbatim
+*>
+*> \param[in] LDT
*> \verbatim
-*> LDT (intput) INTEGER
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N).
*> \endverbatim
*>
diff --git a/SRC/zgerqf.f b/SRC/zgerqf.f
index 9a7ce434..f215723d 100644
--- a/SRC/zgerqf.f
+++ b/SRC/zgerqf.f
@@ -51,37 +51,42 @@
*> The number of columns of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16GEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* reflectors (see Further Details).
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the M-by-N matrix A.
+*> On exit,
+*> if m <= n, the upper triangle of the subarray
+*> A(1:m,n-m+1:n) contains the M-by-M upper triangular matrix R;
+*> if m >= n, the elements on and above the (m-n)-th subdiagonal
+*> contain the M-by-N upper trapezoidal matrix R;
+*> the remaining elements, with the array TAU, represent the
+*> unitary matrix Q as a product of min(m,n) elementary
+*> reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> TAU (output) COMPLEX*16 array, dimension (min(M,N))
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (min(M,N))
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,M).
*> For optimum performance LWORK >= M*NB, where NB is
*> the optimal blocksize.
@@ -90,11 +95,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16GEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/zgesv.f b/SRC/zgesv.f
index 40237a03..f5e13034 100644
--- a/SRC/zgesv.f
+++ b/SRC/zgesv.f
@@ -1,4 +1,4 @@
-*> \brief <b> ZGESV computes the solution to system of linear equations A * X = B for GE matrices</b>
+*> \brief <b> ZGESV computes the solution to system of linear equations A * X = B for GE matrices</b> (simple driver)
*
* =========== DOCUMENTATION ===========
*
diff --git a/SRC/zggglm.f b/SRC/zggglm.f
index 39d9f3d2..6dcd4b86 100644
--- a/SRC/zggglm.f
+++ b/SRC/zggglm.f
@@ -123,11 +123,14 @@
*> \param[out] X
*> \verbatim
*> X is COMPLEX*16 array, dimension (M)
+*> \endverbatim
+*>
*> \param[out] Y
*> \verbatim
*> Y is COMPLEX*16 array, dimension (P)
-*> On exit, X and Y are the solutions of the GLM problem.
*> \endverbatim
+*> \verbatim
+*> On exit, X and Y are the solutions of the GLM problem.
*> \endverbatim
*>
*> \param[out] WORK
diff --git a/SRC/zgghrd.f b/SRC/zgghrd.f
index 37f475e6..2b0f4362 100644
--- a/SRC/zgghrd.f
+++ b/SRC/zgghrd.f
@@ -94,9 +94,13 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI mark the rows and columns of A which are to be
*> reduced. It is assumed that A is already upper triangular
*> in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are
@@ -104,7 +108,6 @@
*> should be set to 1 and N respectively.
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
diff --git a/SRC/zggqrf.f b/SRC/zggqrf.f
index ee653411..2eb509bb 100644
--- a/SRC/zggqrf.f
+++ b/SRC/zggqrf.f
@@ -102,27 +102,16 @@
*> The leading dimension of the array A. LDA >= max(1,N).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[out] TAUA
*> \verbatim
-* represent the unitary matrix Q (see Further Details).
+*> TAUA is COMPLEX*16 array, dimension (min(N,M))
+*> The scalar factors of the elementary reflectors which
+*> represent the unitary matrix Q (see Further Details).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX*16 array, dimension (LDB,P)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX*16 array, dimension (LDB,P)
*> On entry, the N-by-P matrix B.
*> On exit, if N <= P, the upper triangle of the subarray
*> B(1:N,P-N+1:P) contains the N-by-N upper triangular matrix T;
@@ -131,18 +120,30 @@
*> elements, with the array TAUB, represent the unitary
*> matrix Z as a product of elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,N).
+*> \endverbatim
*>
-*> TAUB (output) COMPLEX*16 array, dimension (min(N,P))
+*> \param[out] TAUB
+*> \verbatim
+*> TAUB is COMPLEX*16 array, dimension (min(N,P))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix Z (see Further Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N,M,P).
*> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3),
*> where NB1 is the optimal blocksize for the QR factorization
@@ -154,11 +155,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/zggrqf.f b/SRC/zggrqf.f
index 5a2b8ca3..3c6fd3a7 100644
--- a/SRC/zggrqf.f
+++ b/SRC/zggrqf.f
@@ -103,45 +103,46 @@
*> The leading dimension of the array A. LDA >= max(1,M).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[out] TAUA
*> \verbatim
-* represent the unitary matrix Q (see Further Details).
+*> TAUA is COMPLEX*16 array, dimension (min(M,N))
+*> The scalar factors of the elementary reflectors which
+*> represent the unitary matrix Q (see Further Details).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX*16 array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX*16 array, dimension (LDB,N)
*> On entry, the P-by-N matrix B.
*> On exit, the elements on and above the diagonal of the array
*> contain the min(P,N)-by-N upper trapezoidal matrix T (T is
*> upper triangular if P >= N); the elements below the diagonal,
*> with the array TAUB, represent the unitary matrix Z as a
*> product of elementary reflectors (see Further Details).
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,P).
+*> \endverbatim
*>
-*> TAUB (output) COMPLEX*16 array, dimension (min(P,N))
+*> \param[out] TAUB
+*> \verbatim
+*> TAUB is COMPLEX*16 array, dimension (min(P,N))
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix Z (see Further Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= max(1,N,M,P).
*> For optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3),
*> where NB1 is the optimal blocksize for the RQ factorization
@@ -153,11 +154,33 @@
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO=-i, the i-th argument had an illegal value.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix Q is represented as a product of elementary reflectors
*>
diff --git a/SRC/zggsvd.f b/SRC/zggsvd.f
index d9b359c7..1b20bb0f 100644
--- a/SRC/zggsvd.f
+++ b/SRC/zggsvd.f
@@ -162,14 +162,17 @@
*> \param[out] K
*> \verbatim
*> K is INTEGER
+*> \endverbatim
+*>
*> \param[out] L
*> \verbatim
*> L is INTEGER
+*> \endverbatim
+*> \verbatim
*> On exit, K and L specify the dimension of the subblocks
*> described in Purpose.
*> K + L = effective numerical rank of (A**H,B**H)**H.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
@@ -202,9 +205,13 @@
*> \param[out] ALPHA
*> \verbatim
*> ALPHA is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] BETA
*> \verbatim
*> BETA is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> On exit, ALPHA and BETA contain the generalized singular
*> value pairs of A and B;
*> ALPHA(1:K) = 1,
@@ -213,13 +220,12 @@
*> ALPHA(K+1:K+L) = C,
*> BETA(K+1:K+L) = S,
*> or if M-K-L < 0,
-*> ALPHA(K+1:M)= C, ALPHA(M+1:K+L)= 0
-*> BETA(K+1:M) = S, BETA(M+1:K+L) = 1
+*> ALPHA(K+1:M)=C, ALPHA(M+1:K+L)=0
+*> BETA(K+1:M) =S, BETA(M+1:K+L) =1
*> and
*> ALPHA(K+L+1:N) = 0
*> BETA(K+L+1:N) = 0
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] U
*> \verbatim
diff --git a/SRC/zggsvp.f b/SRC/zggsvp.f
index 0f950317..8206dc72 100644
--- a/SRC/zggsvp.f
+++ b/SRC/zggsvp.f
@@ -137,9 +137,13 @@
*> \param[in] TOLA
*> \verbatim
*> TOLA is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] TOLB
*> \verbatim
*> TOLB is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> TOLA and TOLB are the thresholds to determine the effective
*> numerical rank of matrix B and a subblock of A. Generally,
*> they are set to
@@ -148,19 +152,21 @@
*> The size of TOLA and TOLB may affect the size of backward
*> errors of the decomposition.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] K
*> \verbatim
*> K is INTEGER
+*> \endverbatim
+*>
*> \param[out] L
*> \verbatim
*> L is INTEGER
+*> \endverbatim
+*> \verbatim
*> On exit, K and L specify the dimension of the subblocks
*> described in Purpose section.
*> K + L = effective numerical rank of (A**H,B**H)**H.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] U
*> \verbatim
diff --git a/SRC/zhbgvx.f b/SRC/zhbgvx.f
index 2eacc43e..a7e81dcd 100644
--- a/SRC/zhbgvx.f
+++ b/SRC/zhbgvx.f
@@ -154,27 +154,33 @@
*> \param[in] VL
*> \verbatim
*> VL is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/zheequb.f b/SRC/zheequb.f
index e6d24358..ea1a2543 100644
--- a/SRC/zheequb.f
+++ b/SRC/zheequb.f
@@ -48,6 +48,13 @@
* Arguments
* =========
*
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> = 'U': Upper triangles of A and B are stored;
+*> = 'L': Lower triangles of A and B are stored.
+*> \endverbatim
+*>
*> \param[in] N
*> \verbatim
*> N is INTEGER
@@ -88,6 +95,13 @@
*> Absolute value of largest matrix element. If AMAX is very
*> close to overflow or very close to underflow, the matrix
*> should be scaled.
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (3*N)
+*> \endverbatim
+*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
@@ -95,7 +109,6 @@
*> < 0: if INFO = -i, the i-th argument had an illegal value
*> > 0: if INFO = i, the i-th diagonal element is nonpositive.
*> \endverbatim
-*> \endverbatim
*>
*
* Authors
diff --git a/SRC/zhegvx.f b/SRC/zhegvx.f
index 36d94f02..a04d7cfc 100644
--- a/SRC/zhegvx.f
+++ b/SRC/zhegvx.f
@@ -73,13 +73,14 @@
*> = 'V': all eigenvalues in the half-open interval (VL,VU]
*> will be found.
*> = 'I': the IL-th through IU-th eigenvalues will be found.
+*> \endverbatim
+*>
*> \param[in] UPLO
*> \verbatim
*> UPLO is CHARACTER*1
*> = 'U': Upper triangles of A and B are stored;
*> = 'L': Lower triangles of A and B are stored.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] N
*> \verbatim
@@ -95,8 +96,7 @@
*> upper triangular part of the matrix A. If UPLO = 'L',
*> the leading N-by-N lower triangular part of A contains
*> the lower triangular part of the matrix A.
-*> \endverbatim
-*> \verbatim
+*>
*> On exit, the lower triangle (if UPLO='L') or the upper
*> triangle (if UPLO='U') of A, including the diagonal, is
*> destroyed.
@@ -116,8 +116,7 @@
*> upper triangular part of the matrix B. If UPLO = 'L',
*> the leading N-by-N lower triangular part of B contains
*> the lower triangular part of the matrix B.
-*> \endverbatim
-*> \verbatim
+*>
*> On exit, if INFO <= N, the part of B containing the matrix is
*> overwritten by the triangular factor U or L from the Cholesky
*> factorization B = U**H*U or B = L*L**H.
@@ -132,27 +131,33 @@
*> \param[in] VL
*> \verbatim
*> VL is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
@@ -161,19 +166,16 @@
*> An approximate eigenvalue is accepted as converged
*> when it is determined to lie in an interval [a,b]
*> of width less than or equal to
-*> \endverbatim
-*> \verbatim
+*>
*> ABSTOL + EPS * max( |a|,|b| ) ,
-*> \endverbatim
-*> \verbatim
+*>
*> where EPS is the machine precision. If ABSTOL is less than
*> or equal to zero, then EPS*|T| will be used in its place,
*> where |T| is the 1-norm of the tridiagonal matrix obtained
*> by reducing C to tridiagonal form, where C is the symmetric
*> matrix of the standard symmetric problem to which the
*> generalized problem is transformed.
-*> \endverbatim
-*> \verbatim
+*>
*> Eigenvalues will be computed most accurately when ABSTOL is
*> set to twice the underflow threshold 2*DLAMCH('S'), not zero.
*> If this routine returns with INFO>0, indicating that some
@@ -206,8 +208,7 @@
*> The eigenvectors are normalized as follows:
*> if ITYPE = 1 or 2, Z**T*B*Z = I;
*> if ITYPE = 3, Z**T*inv(B)*Z = I.
-*> \endverbatim
-*> \verbatim
+*>
*> If an eigenvector fails to converge, then that column of Z
*> contains the latest approximation to the eigenvector, and the
*> index of the eigenvector is returned in IFAIL.
diff --git a/SRC/zhesvxx.f b/SRC/zhesvxx.f
index 2a8a4305..f7734fd7 100644
--- a/SRC/zhesvxx.f
+++ b/SRC/zhesvxx.f
@@ -135,6 +135,13 @@
*> copied to AF and factored.
*> \endverbatim
*>
+*> \param[in] UPLO
+*> \verbatim
+*> UPLO is CHARACTER*1
+*> = 'U': Upper triangle of A is stored;
+*> = 'L': Lower triangle of A is stored.
+*> \endverbatim
+*>
*> \param[in] N
*> \verbatim
*> N is INTEGER
diff --git a/SRC/zhetd2.f b/SRC/zhetd2.f
index c9e4a119..c80744ad 100644
--- a/SRC/zhetd2.f
+++ b/SRC/zhetd2.f
@@ -57,6 +57,62 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading
+*> n-by-n upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading n-by-n lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the unitary
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the unitary matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (N)
+*> The diagonal elements of the tridiagonal matrix T:
+*> D(i) = A(i,i).
+*> \endverbatim
+*>
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (N-1)
+*> The off-diagonal elements of the tridiagonal matrix T:
+*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (N-1)
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -75,27 +131,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* of elementary reflectors. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> D (output) DOUBLE PRECISION array, dimension (N)
-*> The diagonal elements of the tridiagonal matrix T:
-*> D(i) = A(i,i).
-*>
-*> E (output) DOUBLE PRECISION array, dimension (N-1)
-*> The off-diagonal elements of the tridiagonal matrix T:
-*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
-*>
-*> TAU (output) COMPLEX*16 array, dimension (N-1)
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value.
-*>
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/zhetrd.f b/SRC/zhetrd.f
index ea8fdce2..dc1a4b96 100644
--- a/SRC/zhetrd.f
+++ b/SRC/zhetrd.f
@@ -55,58 +55,100 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16HEcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* of elementary reflectors. See Further Details.
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading
+*> N-by-N upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading N-by-N lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the unitary
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the unitary matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> D (output) DOUBLE PRECISION array, dimension (N)
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (N)
*> The diagonal elements of the tridiagonal matrix T:
*> D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) DOUBLE PRECISION array, dimension (N-1)
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (N-1)
*> The off-diagonal elements of the tridiagonal matrix T:
*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
*>
-*> TAU (output) COMPLEX*16 array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (N-1)
*> The scalar factors of the elementary reflectors (see Further
*> Details).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK))
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*> \endverbatim
*>
-*> LWORK (input) INTEGER
+*> \param[in] LWORK
+*> \verbatim
+*> LWORK is INTEGER
*> The dimension of the array WORK. LWORK >= 1.
*> For optimum performance LWORK >= N*NB, where NB is the
*> optimal blocksize.
-*>
+*> \endverbatim
+*> \verbatim
*> If LWORK = -1, then a workspace query is assumed; the routine
*> only calculates the optimal size of the WORK array, returns
*> this value as the first entry of the WORK array, and no error
*> message related to LWORK is issued by XERBLA.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16HEcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/zhpgvx.f b/SRC/zhpgvx.f
index ff3e03d8..f0343375 100644
--- a/SRC/zhpgvx.f
+++ b/SRC/zhpgvx.f
@@ -119,27 +119,33 @@
*> \param[in] VL
*> \verbatim
*> VL is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/zhptrd.f b/SRC/zhptrd.f
index dd267d5e..67b9b673 100644
--- a/SRC/zhptrd.f
+++ b/SRC/zhptrd.f
@@ -55,6 +55,54 @@
*> The order of the matrix A. N >= 0.
*> \endverbatim
*>
+*> \param[in,out] AP
+*> \verbatim
+*> AP is COMPLEX*16 array, dimension (N*(N+1)/2)
+*> On entry, the upper or lower triangle of the Hermitian matrix
+*> A, packed columnwise in a linear array. The j-th column of A
+*> is stored in the array AP as follows:
+*> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
+*> if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
+*> On exit, if UPLO = 'U', the diagonal and first superdiagonal
+*> of A are overwritten by the corresponding elements of the
+*> tridiagonal matrix T, and the elements above the first
+*> superdiagonal, with the array TAU, represent the unitary
+*> matrix Q as a product of elementary reflectors; if UPLO
+*> = 'L', the diagonal and first subdiagonal of A are over-
+*> written by the corresponding elements of the tridiagonal
+*> matrix T, and the elements below the first subdiagonal, with
+*> the array TAU, represent the unitary matrix Q as a product
+*> of elementary reflectors. See Further Details.
+*> \endverbatim
+*>
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (N)
+*> The diagonal elements of the tridiagonal matrix T:
+*> D(i) = A(i,i).
+*> \endverbatim
+*>
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (N-1)
+*> The off-diagonal elements of the tridiagonal matrix T:
+*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (N-1)
+*> The scalar factors of the elementary reflectors (see Further
+*> Details).
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -73,24 +121,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* of elementary reflectors. See Further Details.
-*>
-*> D (output) DOUBLE PRECISION array, dimension (N)
-*> The diagonal elements of the tridiagonal matrix T:
-*> D(i) = A(i,i).
-*>
-*> E (output) DOUBLE PRECISION array, dimension (N-1)
-*> The off-diagonal elements of the tridiagonal matrix T:
-*> E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
-*>
-*> TAU (output) COMPLEX*16 array, dimension (N-1)
-*> The scalar factors of the elementary reflectors (see Further
-*> Details).
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*>
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/zhseqr.f b/SRC/zhseqr.f
index 95497e69..5cdf9545 100644
--- a/SRC/zhseqr.f
+++ b/SRC/zhseqr.f
@@ -75,9 +75,13 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> It is assumed that H is already upper triangular in rows
*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
*> set by a previous call to ZGEBAL, and then passed to ZGEHRD
@@ -86,7 +90,6 @@
*> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.
*> If N = 0, then ILO = 1 and IHI = 0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] H
*> \verbatim
diff --git a/SRC/zla_gbrfsx_extended.f b/SRC/zla_gbrfsx_extended.f
index 91072c51..c023b46a 100644
--- a/SRC/zla_gbrfsx_extended.f
+++ b/SRC/zla_gbrfsx_extended.f
@@ -109,14 +109,14 @@
*>
*> \param[in] AB
*> \verbatim
-*> AB is COMPLEX*16 array, dimension (LDA,N)
+*> AB is COMPLEX*16 array, dimension (LDAB,N)
*> On entry, the N-by-N matrix A.
*> \endverbatim
*>
*> \param[in] LDAB
*> \verbatim
*> LDAB is INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
+*> The leading dimension of the array A. LDAB >= max(1,N).
*> \endverbatim
*>
*> \param[in] AFB
@@ -212,37 +212,31 @@
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> normwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Normwise relative error in the ith solution vector:
*> max_j (abs(XTRUE(j,i) - X(j,i)))
*> ------------------------------
*> max_j abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the type of error information as described
*> below. There currently are up to three pieces of information
*> returned.
-*> \endverbatim
-*> \verbatim
+*>
*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
+*>
*> The second index in ERR_BNDS_NORM(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated normwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -251,8 +245,7 @@
*> appropriately scaled matrix Z.
*> Let Z = S*A, where S scales each row by a power of the
*> radix so all absolute row sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
@@ -266,14 +259,12 @@
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> componentwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Componentwise relative error in the ith solution vector:
*> abs(XTRUE(j,i) - X(j,i))
*> max_j ----------------------
*> abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the right-hand side i (on which the
*> componentwise relative error depends), and the type of error
*> information as described below. There currently are up to three
@@ -281,26 +272,22 @@
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned.
-*> \endverbatim
-*> \verbatim
+*>
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
+*>
*> The second index in ERR_BNDS_COMP(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated componentwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -311,8 +298,7 @@
*> current right-hand side and S scales each row of
*> A*diag(x) by a power of the radix so all absolute row
*> sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
diff --git a/SRC/zla_gerfsx_extended.f b/SRC/zla_gerfsx_extended.f
index 61b6d3be..3f2964ac 100644
--- a/SRC/zla_gerfsx_extended.f
+++ b/SRC/zla_gerfsx_extended.f
@@ -49,10 +49,10 @@
*> and provides error bounds and backward error estimates for the solution.
*> This subroutine is called by ZGERFSX to perform iterative refinement.
*> In addition to normwise error bound, the code provides maximum
-*> componentwise error bound if possible. See comments for ERR_BNDS_NORM
-*> and ERR_BNDS_COMP for details of the error bounds. Note that this
+*> componentwise error bound if possible. See comments for ERRS_N
+*> and ERRS_C for details of the error bounds. Note that this
*> subroutine is only resonsible for setting the second fields of
-*> ERR_BNDS_NORM and ERR_BNDS_COMP.
+*> ERRS_N and ERRS_C.
*>
*>\endverbatim
*
@@ -186,50 +186,44 @@
*> \param[in] N_NORMS
*> \verbatim
*> N_NORMS is INTEGER
-*> Determines which error bounds to return (see ERR_BNDS_NORM
-*> and ERR_BNDS_COMP).
+*> Determines which error bounds to return (see ERRS_N
+*> and ERRS_C).
*> If N_NORMS >= 1 return normwise error bounds.
*> If N_NORMS >= 2 return componentwise error bounds.
*> \endverbatim
*>
-*> \param[in,out] ERR_BNDS_NORM
+*> \param[in,out] ERRS_N
*> \verbatim
-*> ERR_BNDS_NORM is DOUBLE PRECISION array, dimension
+*> ERRS_N is DOUBLE PRECISION array, dimension
*> (NRHS, N_ERR_BNDS)
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> normwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Normwise relative error in the ith solution vector:
*> max_j (abs(XTRUE(j,i) - X(j,i)))
*> ------------------------------
*> max_j abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the type of error information as described
*> below. There currently are up to three pieces of information
*> returned.
-*> \endverbatim
-*> \verbatim
-*> The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
+*>
+*> The first index in ERRS_N(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
-*> The second index in ERR_BNDS_NORM(:,err) contains the following
+*>
+*> The second index in ERRS_N(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated normwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -238,56 +232,49 @@
*> appropriately scaled matrix Z.
*> Let Z = S*A, where S scales each row by a power of the
*> radix so all absolute row sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
*> cautions.
*> \endverbatim
*>
-*> \param[in,out] ERR_BNDS_COMP
+*> \param[in,out] ERRS_C
*> \verbatim
-*> ERR_BNDS_COMP is DOUBLE PRECISION array, dimension
+*> ERRS_C is DOUBLE PRECISION array, dimension
*> (NRHS, N_ERR_BNDS)
*> For each right-hand side, this array contains information about
*> various error bounds and condition numbers corresponding to the
*> componentwise relative error, which is defined as follows:
-*> \endverbatim
-*> \verbatim
+*>
*> Componentwise relative error in the ith solution vector:
*> abs(XTRUE(j,i) - X(j,i))
*> max_j ----------------------
*> abs(X(j,i))
-*> \endverbatim
-*> \verbatim
+*>
*> The array is indexed by the right-hand side i (on which the
*> componentwise relative error depends), and the type of error
*> information as described below. There currently are up to three
*> pieces of information returned for each right-hand side. If
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
-*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
+*> ERRS_C is not accessed. If N_ERR_BNDS .LT. 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned.
-*> \endverbatim
-*> \verbatim
-*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
+*>
+*> The first index in ERRS_C(i,:) corresponds to the ith
*> right-hand side.
-*> \endverbatim
-*> \verbatim
-*> The second index in ERR_BNDS_COMP(:,err) contains the following
+*>
+*> The second index in ERRS_C(:,err) contains the following
*> three fields:
*> err = 1 "Trust/don't trust" boolean. Trust the answer if the
*> reciprocal condition number is less than the threshold
*> sqrt(n) * slamch('Epsilon').
-*> \endverbatim
-*> \verbatim
+*>
*> err = 2 "Guaranteed" error bound: The estimated forward error,
*> almost certainly within a factor of 10 of the true error
*> so long as the next entry is greater than the threshold
*> sqrt(n) * slamch('Epsilon'). This error bound should only
*> be trusted if the previous boolean is true.
-*> \endverbatim
-*> \verbatim
+*>
*> err = 3 Reciprocal condition number: Estimated componentwise
*> reciprocal condition number. Compared with the threshold
*> sqrt(n) * slamch('Epsilon') to determine if the error
@@ -298,8 +285,7 @@
*> current right-hand side and S scales each row of
*> A*diag(x) by a power of the radix so all absolute row
*> sums of Z are approximately 1.
-*> \endverbatim
-*> \verbatim
+*>
*> This subroutine is only responsible for setting the second field
*> above.
*> See Lapack Working Note 165 for further details and extra
@@ -350,7 +336,7 @@
*> permit convergence using approximate factorizations or
*> factorizations other than LU. If the factorization uses a
*> technique other than Gaussian elimination, the guarantees in
-*> ERR_BNDS_NORM and ERR_BNDS_COMP may no longer be trustworthy.
+*> ERRS_N and ERRS_C may no longer be trustworthy.
*> \endverbatim
*>
*> \param[in] RTHRESH
diff --git a/SRC/zla_herpvgrw.f b/SRC/zla_herpvgrw.f
index 5be25632..0244bd0c 100644
--- a/SRC/zla_herpvgrw.f
+++ b/SRC/zla_herpvgrw.f
@@ -68,12 +68,6 @@
*> column INFO is exactly 0.
*> \endverbatim
*>
-*> \param[in] NCOLS
-*> \verbatim
-*> NCOLS is INTEGER
-*> The number of columns of the matrix A. NCOLS >= 0.
-*> \endverbatim
-*>
*> \param[in] A
*> \verbatim
*> A is COMPLEX*16 array, dimension (LDA,N)
diff --git a/SRC/zla_lin_berr.f b/SRC/zla_lin_berr.f
index 8162ede2..a796d6e0 100644
--- a/SRC/zla_lin_berr.f
+++ b/SRC/zla_lin_berr.f
@@ -77,13 +77,13 @@
*> The denominator in the relative backward error formula above, i.e.,
*> the matrix abs(op(A_s))*abs(Y) + abs(B_s). The matrices A, Y, and B
*> are from iterative refinement (see zla_gerfsx_extended.f).
+*> \endverbatim
*>
*> \param[out] BERR
*> \verbatim
*> BERR is COMPLEX*16 array, dimension (NRHS)
*> The componentwise relative backward error from the formula above.
*> \endverbatim
-*> \endverbatim
*>
*
* Authors
diff --git a/SRC/zla_syrpvgrw.f b/SRC/zla_syrpvgrw.f
index c9cacac6..f98a01ac 100644
--- a/SRC/zla_syrpvgrw.f
+++ b/SRC/zla_syrpvgrw.f
@@ -68,12 +68,6 @@
*> column INFO is exactly 0.
*> \endverbatim
*>
-*> \param[in] NCOLS
-*> \verbatim
-*> NCOLS is INTEGER
-*> The number of columns of the matrix A. NCOLS >= 0.
-*> \endverbatim
-*>
*> \param[in] A
*> \verbatim
*> A is COMPLEX*16 array, dimension (LDA,N)
diff --git a/SRC/zlabrd.f b/SRC/zlabrd.f
index 9d818924..3f734be9 100644
--- a/SRC/zlabrd.f
+++ b/SRC/zlabrd.f
@@ -67,59 +67,105 @@
*> The number of leading rows and columns of A to be reduced.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the m by n general matrix to be reduced.
+*> On exit, the first NB rows and columns of the matrix are
+*> overwritten; the rest of the array is unchanged.
+*> If m >= n, elements on and below the diagonal in the first NB
+*> columns, with the array TAUQ, represent the unitary
+*> matrix Q as a product of elementary reflectors; and
+*> elements above the diagonal in the first NB rows, with the
+*> array TAUP, represent the unitary matrix P as a product
+*> of elementary reflectors.
+*> If m < n, elements below the diagonal in the first NB
+*> columns, with the array TAUQ, represent the unitary
+*> matrix Q as a product of elementary reflectors, and
+*> elements on and above the diagonal in the first NB rows,
+*> with the array TAUP, represent the unitary matrix P as
+*> a product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> D (output) DOUBLE PRECISION array, dimension (NB)
+*> \param[out] D
+*> \verbatim
+*> D is DOUBLE PRECISION array, dimension (NB)
*> The diagonal elements of the first NB rows and columns of
*> the reduced matrix. D(i) = A(i,i).
+*> \endverbatim
*>
-*> E (output) DOUBLE PRECISION array, dimension (NB)
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (NB)
*> The off-diagonal elements of the first NB rows and columns of
*> the reduced matrix.
+*> \endverbatim
*>
-*> TAUQ (output) COMPLEX*16 array dimension (NB)
+*> \param[out] TAUQ
+*> \verbatim
+*> TAUQ is COMPLEX*16 array dimension (NB)
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix Q. See Further Details.
+*> \endverbatim
*>
-*> TAUP (output) COMPLEX*16 array, dimension (NB)
+*> \param[out] TAUP
+*> \verbatim
+*> TAUP is COMPLEX*16 array, dimension (NB)
*> The scalar factors of the elementary reflectors which
*> represent the unitary matrix P. See Further Details.
+*> \endverbatim
*>
-*> X (output) COMPLEX*16 array, dimension (LDX,NB)
+*> \param[out] X
+*> \verbatim
+*> X is COMPLEX*16 array, dimension (LDX,NB)
*> The m-by-nb matrix X required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDX (input) INTEGER
+*> \param[in] LDX
+*> \verbatim
+*> LDX is INTEGER
*> The leading dimension of the array X. LDX >= max(1,M).
+*> \endverbatim
*>
-*> Y (output) COMPLEX*16 array, dimension (LDY,NB)
+*> \param[out] Y
+*> \verbatim
+*> Y is COMPLEX*16 array, dimension (LDY,NB)
*> The n-by-nb matrix Y required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDY (input) INTEGER
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
*> The leading dimension of the array Y. LDY >= max(1,N).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrices Q and P are represented as products of elementary
*> reflectors:
diff --git a/SRC/zlagtm.f b/SRC/zlagtm.f
index 0dc96c24..3660b44e 100644
--- a/SRC/zlagtm.f
+++ b/SRC/zlagtm.f
@@ -99,12 +99,13 @@
*> \verbatim
*> X is COMPLEX*16 array, dimension (LDX,NRHS)
*> The N by NRHS matrix X.
+*> \endverbatim
+*>
*> \param[in] LDX
*> \verbatim
*> LDX is INTEGER
*> The leading dimension of the array X. LDX >= max(N,1).
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] BETA
*> \verbatim
diff --git a/SRC/zlahr2.f b/SRC/zlahr2.f
index bd6c6219..3b25e4fb 100644
--- a/SRC/zlahr2.f
+++ b/SRC/zlahr2.f
@@ -65,6 +65,55 @@
*> The number of columns to be reduced.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N-K+1)
+*> On entry, the n-by-(n-k+1) general matrix A.
+*> On exit, the elements on and above the k-th subdiagonal in
+*> the first NB columns are overwritten with the corresponding
+*> elements of the reduced matrix; the elements below the k-th
+*> subdiagonal, with the array TAU, represent the matrix Q as a
+*> product of elementary reflectors. The other columns of A are
+*> unchanged. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (NB)
+*> The scalar factors of the elementary reflectors. See Further
+*> Details.
+*> \endverbatim
+*>
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX*16 array, dimension (LDT,NB)
+*> The upper triangular matrix T.
+*> \endverbatim
+*>
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
+*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
+*>
+*> \param[out] Y
+*> \verbatim
+*> Y is COMPLEX*16 array, dimension (LDY,NB)
+*> The n-by-nb matrix Y.
+*> \endverbatim
+*>
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
+*> The leading dimension of the array Y. LDY >= N.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -83,27 +132,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* unchanged. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> TAU (output) COMPLEX*16 array, dimension (NB)
-*> The scalar factors of the elementary reflectors. See Further
-*> Details.
-*>
-*> T (output) COMPLEX*16 array, dimension (LDT,NB)
-*> The upper triangular matrix T.
-*>
-*> LDT (input) INTEGER
-*> The leading dimension of the array T. LDT >= NB.
-*>
-*> Y (output) COMPLEX*16 array, dimension (LDY,NB)
-*> The n-by-nb matrix Y.
-*>
-*> LDY (input) INTEGER
-*> The leading dimension of the array Y. LDY >= N.
-*>
*>
*> The matrix Q is represented as a product of nb elementary reflectors
*>
diff --git a/SRC/zlahrd.f b/SRC/zlahrd.f
index b63c7f1d..f6abf38b 100644
--- a/SRC/zlahrd.f
+++ b/SRC/zlahrd.f
@@ -66,6 +66,55 @@
*> The number of columns to be reduced.
*> \endverbatim
*>
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N-K+1)
+*> On entry, the n-by-(n-k+1) general matrix A.
+*> On exit, the elements on and above the k-th subdiagonal in
+*> the first NB columns are overwritten with the corresponding
+*> elements of the reduced matrix; the elements below the k-th
+*> subdiagonal, with the array TAU, represent the matrix Q as a
+*> product of elementary reflectors. The other columns of A are
+*> unchanged. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
+*>
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (NB)
+*> The scalar factors of the elementary reflectors. See Further
+*> Details.
+*> \endverbatim
+*>
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX*16 array, dimension (LDT,NB)
+*> The upper triangular matrix T.
+*> \endverbatim
+*>
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
+*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
+*>
+*> \param[out] Y
+*> \verbatim
+*> Y is COMPLEX*16 array, dimension (LDY,NB)
+*> The n-by-nb matrix Y.
+*> \endverbatim
+*>
+*> \param[in] LDY
+*> \verbatim
+*> LDY is INTEGER
+*> The leading dimension of the array Y. LDY >= max(1,N).
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -84,27 +133,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* unchanged. See Further Details.
-*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A. LDA >= max(1,N).
-*>
-*> TAU (output) COMPLEX*16 array, dimension (NB)
-*> The scalar factors of the elementary reflectors. See Further
-*> Details.
-*>
-*> T (output) COMPLEX*16 array, dimension (LDT,NB)
-*> The upper triangular matrix T.
-*>
-*> LDT (input) INTEGER
-*> The leading dimension of the array T. LDT >= NB.
-*>
-*> Y (output) COMPLEX*16 array, dimension (LDY,NB)
-*> The n-by-nb matrix Y.
-*>
-*> LDY (input) INTEGER
-*> The leading dimension of the array Y. LDY >= max(1,N).
-*>
*>
*> The matrix Q is represented as a product of nb elementary reflectors
*>
diff --git a/SRC/zlaqr0.f b/SRC/zlaqr0.f
index 009ae42c..34edc5db 100644
--- a/SRC/zlaqr0.f
+++ b/SRC/zlaqr0.f
@@ -71,9 +71,13 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> It is assumed that H is already upper triangular in rows
*> and columns 1:ILO-1 and IHI+1:N and, if ILO.GT.1,
*> H(ILO,ILO-1) is zero. ILO and IHI are normally set by a
@@ -83,7 +87,6 @@
*> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.
*> If N = 0, then ILO = 1 and IHI = 0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] H
*> \verbatim
@@ -116,6 +119,19 @@
*> form returned in H, with W(i) = H(i,i).
*> \endverbatim
*>
+*> \param[in] ILOZ
+*> \verbatim
+*> ILOZ is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHIZ
+*> \verbatim
+*> IHIZ is INTEGER
+*> Specify the rows of Z to which transformations must be
+*> applied if WANTZ is .TRUE..
+*> 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N.
+*> \endverbatim
+*>
*> \param[in,out] Z
*> \verbatim
*> Z is COMPLEX*16 array, dimension (LDZ,IHI)
@@ -166,37 +182,29 @@
*> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
*> and WI contain those eigenvalues which have been
*> successfully computed. (Failures are rare.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANT is .FALSE., then on exit,
*> the remaining unconverged eigenvalues are the eigen-
*> values of the upper Hessenberg matrix rows and
*> columns ILO through INFO of the final, output
*> value of H.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTT is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (*) (initial value of H)*U = U*(final value of H)
-*> \endverbatim
-*> \verbatim
+*>
*> where U is a unitary matrix. The final
*> value of H is upper Hessenberg and triangular in
*> rows and columns INFO+1 through IHI.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (final value of Z(ILO:IHI,ILOZ:IHIZ)
*> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
-*> \endverbatim
-*> \verbatim
+*>
*> where U is the unitary matrix in (*) (regard-
*> less of the value of WANTT.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
*> accessed.
*> \endverbatim
diff --git a/SRC/zlaqr1.f b/SRC/zlaqr1.f
index 6035a017..572504f2 100644
--- a/SRC/zlaqr1.f
+++ b/SRC/zlaqr1.f
@@ -69,7 +69,14 @@
*> \param[in] S1
*> \verbatim
*> S1 is COMPLEX*16
-*> S2 S1 and S2 are the shifts defining K in (*) above.
+*> \endverbatim
+*>
+*> \param[in] S2
+*> \verbatim
+*> S2 is COMPLEX*16
+*> \endverbatim
+*> \verbatim
+*> S1 and S2 are the shifts defining K in (*) above.
*> \endverbatim
*>
*> \param[out] V
diff --git a/SRC/zlaqr2.f b/SRC/zlaqr2.f
index 96e5eeab..f8cb278d 100644
--- a/SRC/zlaqr2.f
+++ b/SRC/zlaqr2.f
@@ -126,13 +126,14 @@
*> \param[in] ILOZ
*> \verbatim
*> ILOZ is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHIZ
*> \verbatim
*> IHIZ is INTEGER
*> Specify the rows of Z to which transformations must be
*> applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] Z
*> \verbatim
diff --git a/SRC/zlaqr4.f b/SRC/zlaqr4.f
index e7fabfd3..24442cfd 100644
--- a/SRC/zlaqr4.f
+++ b/SRC/zlaqr4.f
@@ -124,6 +124,19 @@
*> form returned in H, with W(i) = H(i,i).
*> \endverbatim
*>
+*> \param[in] ILOZ
+*> \verbatim
+*> ILOZ is INTEGER
+*> \endverbatim
+*>
+*> \param[in] IHIZ
+*> \verbatim
+*> IHIZ is INTEGER
+*> Specify the rows of Z to which transformations must be
+*> applied if WANTZ is .TRUE..
+*> 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N.
+*> \endverbatim
+*>
*> \param[in,out] Z
*> \verbatim
*> Z is COMPLEX*16 array, dimension (LDZ,IHI)
@@ -174,37 +187,29 @@
*> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR
*> and WI contain those eigenvalues which have been
*> successfully computed. (Failures are rare.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANT is .FALSE., then on exit,
*> the remaining unconverged eigenvalues are the eigen-
*> values of the upper Hessenberg matrix rows and
*> columns ILO through INFO of the final, output
*> value of H.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTT is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (*) (initial value of H)*U = U*(final value of H)
-*> \endverbatim
-*> \verbatim
+*>
*> where U is a unitary matrix. The final
*> value of H is upper Hessenberg and triangular in
*> rows and columns INFO+1 through IHI.
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .TRUE., then on exit
-*> \endverbatim
-*> \verbatim
+*>
*> (final value of Z(ILO:IHI,ILOZ:IHIZ)
*> = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U
-*> \endverbatim
-*> \verbatim
+*>
*> where U is the unitary matrix in (*) (regard-
*> less of the value of WANTT.)
-*> \endverbatim
-*> \verbatim
+*>
*> If INFO .GT. 0 and WANTZ is .FALSE., then Z is not
*> accessed.
*> \endverbatim
diff --git a/SRC/zlarfb.f b/SRC/zlarfb.f
index eaa5d16b..e9647229 100644
--- a/SRC/zlarfb.f
+++ b/SRC/zlarfb.f
@@ -93,53 +93,81 @@
*> reflectors whose product defines the block reflector).
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] V
*> \verbatim
-* The matrix V. See Further Details.
+*> V is COMPLEX*16 array, dimension
+*> (LDV,K) if STOREV = 'C'
+*> (LDV,M) if STOREV = 'R' and SIDE = 'L'
+*> (LDV,N) if STOREV = 'R' and SIDE = 'R'
+*> See Further Details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
*> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
*> if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> T (input) COMPLEX*16 array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is COMPLEX*16 array, dimension (LDT,K)
*> The triangular K-by-K matrix T in the representation of the
*> block reflector.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
-*> C (input/output) COMPLEX*16 array, dimension (LDC,N)
+*> \param[in,out] C
+*> \verbatim
+*> C is COMPLEX*16 array, dimension (LDC,N)
*> On entry, the M-by-N matrix C.
*> On exit, C is overwritten by H*C or H**H*C or C*H or C*H**H.
+*> \endverbatim
*>
-*> LDC (input) INTEGER
+*> \param[in] LDC
+*> \verbatim
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX*16 array, dimension (LDWORK,K)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (LDWORK,K)
+*> \endverbatim
*>
-*> LDWORK (input) INTEGER
+*> \param[in] LDWORK
+*> \verbatim
+*> LDWORK is INTEGER
*> The leading dimension of the array WORK.
*> If SIDE = 'L', LDWORK >= max(1,N);
*> if SIDE = 'R', LDWORK >= max(1,M).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The shape of the matrix V and the storage of the vectors which define
*> the H(i) is best illustrated by the following example with n = 5 and
diff --git a/SRC/zlarft.f b/SRC/zlarft.f
index 99dc21a1..544e6a9b 100644
--- a/SRC/zlarft.f
+++ b/SRC/zlarft.f
@@ -63,56 +63,82 @@
*> = 'B': H = H(k) . . . H(2) H(1) (Backward)
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] STOREV
*> \verbatim
-* reflectors are stored (see also Further Details):
+*> STOREV is CHARACTER*1
+*> Specifies how the vectors which define the elementary
+*> reflectors are stored (see also Further Details):
*> = 'C': columnwise
*> = 'R': rowwise
+*> \endverbatim
*>
-*> N (input) INTEGER
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
*> The order of the block reflector H. N >= 0.
+*> \endverbatim
*>
-*> K (input) INTEGER
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
*> The order of the triangular factor T (= the number of
*> elementary reflectors). K >= 1.
+*> \endverbatim
*>
-*> V (input/output) COMPLEX*16 array, dimension
+*> \param[in,out] V
+*> \verbatim
+*> V is COMPLEX*16 array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,N) if STOREV = 'R'
*> The matrix V. See further details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> TAU (input) COMPLEX*16 array, dimension (K)
+*> \param[in] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (K)
*> TAU(i) must contain the scalar factor of the elementary
*> reflector H(i).
+*> \endverbatim
*>
-*> T (output) COMPLEX*16 array, dimension (LDT,K)
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX*16 array, dimension (LDT,K)
*> The k by k triangular factor T of the block reflector.
*> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
*> lower triangular. The rest of the array is not used.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The shape of the matrix V and the storage of the vectors which define
*> the H(i) is best illustrated by the following example with n = 5 and
diff --git a/SRC/zlarrv.f b/SRC/zlarrv.f
index 978d136a..82f88490 100644
--- a/SRC/zlarrv.f
+++ b/SRC/zlarrv.f
@@ -84,8 +84,10 @@
*> is stored the corresponding shift as given by DLARRE.
*> On exit, L is overwritten.
*> \endverbatim
+*>
+*> \param[in] PIVMIN
*> \verbatim
-*> PIVMIN (in) DOUBLE PRECISION
+*> PIVMIN is DOUBLE PRECISION
*> The minimum pivot allowed in the Sturm sequence.
*> \endverbatim
*>
@@ -232,14 +234,12 @@
*> \verbatim
*> INFO is INTEGER
*> = 0: successful exit
-*> \endverbatim
-*> \verbatim
+*>
*> > 0: A problem occured in ZLARRV.
*> < 0: One of the called subroutines signaled an internal problem.
*> Needs inspection of the corresponding parameter IINFO
*> for further information.
-*> \endverbatim
-*> \verbatim
+*>
*> =-1: Problem in DLARRB when refining a child's eigenvalues.
*> =-2: Problem in DLARRF when computing the RRR of a child.
*> When a child is inside a tight cluster, it can be difficult
diff --git a/SRC/zlartg.f b/SRC/zlartg.f
index 294d6926..fe86c545 100644
--- a/SRC/zlartg.f
+++ b/SRC/zlartg.f
@@ -94,8 +94,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> 3-5-96 - Modified with a new algorithm by W. Kahan and J. Demmel
*>
diff --git a/SRC/zlarzt.f b/SRC/zlarzt.f
index 118f9f8f..701ca1ff 100644
--- a/SRC/zlarzt.f
+++ b/SRC/zlarzt.f
@@ -66,56 +66,82 @@
*> = 'B': H = H(k) . . . H(2) H(1) (Backward)
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] STOREV
*> \verbatim
-* reflectors are stored (see also Further Details):
+*> STOREV is CHARACTER*1
+*> Specifies how the vectors which define the elementary
+*> reflectors are stored (see also Further Details):
*> = 'C': columnwise (not supported yet)
*> = 'R': rowwise
+*> \endverbatim
*>
-*> N (input) INTEGER
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
*> The order of the block reflector H. N >= 0.
+*> \endverbatim
*>
-*> K (input) INTEGER
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
*> The order of the triangular factor T (= the number of
*> elementary reflectors). K >= 1.
+*> \endverbatim
*>
-*> V (input/output) COMPLEX*16 array, dimension
+*> \param[in,out] V
+*> \verbatim
+*> V is COMPLEX*16 array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,N) if STOREV = 'R'
*> The matrix V. See further details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> TAU (input) COMPLEX*16 array, dimension (K)
+*> \param[in] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (K)
*> TAU(i) must contain the scalar factor of the elementary
*> reflector H(i).
+*> \endverbatim
*>
-*> T (output) COMPLEX*16 array, dimension (LDT,K)
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX*16 array, dimension (LDT,K)
*> The k by k triangular factor T of the block reflector.
*> If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is
*> lower triangular. The rest of the array is not used.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= K.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> Based on contributions by
*> A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
diff --git a/SRC/zlascl.f b/SRC/zlascl.f
index f4784623..1c5989ed 100644
--- a/SRC/zlascl.f
+++ b/SRC/zlascl.f
@@ -84,6 +84,8 @@
*> \param[in] CTO
*> \verbatim
*> CTO is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> The matrix A is multiplied by CTO/CFROM. A(I,J) is computed
*> without over/underflow if the final result CTO*A(I,J)/CFROM
*> can be represented without over/underflow. CFROM must be
diff --git a/SRC/zlatrd.f b/SRC/zlatrd.f
index 3ac6a659..e5c63464 100644
--- a/SRC/zlatrd.f
+++ b/SRC/zlatrd.f
@@ -71,47 +71,84 @@
*> The number of rows and columns to be reduced.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in,out] A
*> \verbatim
-* See Further Details.
+*> A is COMPLEX*16 array, dimension (LDA,N)
+*> On entry, the Hermitian matrix A. If UPLO = 'U', the leading
+*> n-by-n upper triangular part of A contains the upper
+*> triangular part of the matrix A, and the strictly lower
+*> triangular part of A is not referenced. If UPLO = 'L', the
+*> leading n-by-n lower triangular part of A contains the lower
+*> triangular part of the matrix A, and the strictly upper
+*> triangular part of A is not referenced.
+*> On exit:
+*> if UPLO = 'U', the last NB columns have been reduced to
+*> tridiagonal form, with the diagonal elements overwriting
+*> the diagonal elements of A; the elements above the diagonal
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors;
+*> if UPLO = 'L', the first NB columns have been reduced to
+*> tridiagonal form, with the diagonal elements overwriting
+*> the diagonal elements of A; the elements below the diagonal
+*> with the array TAU, represent the unitary matrix Q as a
+*> product of elementary reflectors.
+*> See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> E (output) DOUBLE PRECISION array, dimension (N-1)
+*> \param[out] E
+*> \verbatim
+*> E is DOUBLE PRECISION array, dimension (N-1)
*> If UPLO = 'U', E(n-nb:n-1) contains the superdiagonal
*> elements of the last NB columns of the reduced matrix;
*> if UPLO = 'L', E(1:nb) contains the subdiagonal elements of
*> the first NB columns of the reduced matrix.
+*> \endverbatim
*>
-*> TAU (output) COMPLEX*16 array, dimension (N-1)
+*> \param[out] TAU
+*> \verbatim
+*> TAU is COMPLEX*16 array, dimension (N-1)
*> The scalar factors of the elementary reflectors, stored in
*> TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'.
*> See Further Details.
+*> \endverbatim
*>
-*> W (output) COMPLEX*16 array, dimension (LDW,NB)
+*> \param[out] W
+*> \verbatim
+*> W is COMPLEX*16 array, dimension (LDW,NB)
*> The n-by-nb matrix W required to update the unreduced part
*> of A.
+*> \endverbatim
*>
-*> LDW (input) INTEGER
+*> \param[in] LDW
+*> \verbatim
+*> LDW is INTEGER
*> The leading dimension of the array W. LDW >= max(1,N).
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> If UPLO = 'U', the matrix Q is represented as a product of elementary
*> reflectors
diff --git a/SRC/zpbstf.f b/SRC/zpbstf.f
index e77d5b43..8b248129 100644
--- a/SRC/zpbstf.f
+++ b/SRC/zpbstf.f
@@ -81,6 +81,26 @@
*> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
*> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
*> \endverbatim
+*> \verbatim
+*> On exit, if INFO = 0, the factor S from the split Cholesky
+*> factorization A = S**H*S. See Further Details.
+*> \endverbatim
+*>
+*> \param[in] LDAB
+*> \verbatim
+*> LDAB is INTEGER
+*> The leading dimension of the array AB. LDAB >= KD+1.
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> > 0: if INFO = i, the factorization could not be completed,
+*> because the updated element a(i,i) was negative; the
+*> matrix A is not positive definite.
+*> \endverbatim
*>
*
* Authors
@@ -100,18 +120,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* factorization A = S**H*S. See Further Details.
-*>
-*> LDAB (input) INTEGER
-*> The leading dimension of the array AB. LDAB >= KD+1.
-*>
-*> INFO (output) INTEGER
-*> = 0: successful exit
-*> < 0: if INFO = -i, the i-th argument had an illegal value
-*> > 0: if INFO = i, the factorization could not be completed,
-*> because the updated element a(i,i) was negative; the
-*> matrix A is not positive definite.
-*>
*>
*> The band storage scheme is illustrated by the following example, when
*> N = 7, KD = 2:
@@ -142,7 +150,6 @@
*>
*> Array elements marked * are not used by the routine; s12**H denotes
*> conjg(s12); the diagonal elements of S are real.
-
*>
*> \endverbatim
*>
diff --git a/SRC/zrot.f b/SRC/zrot.f
index abd30c0b..dd890e76 100644
--- a/SRC/zrot.f
+++ b/SRC/zrot.f
@@ -76,6 +76,8 @@
*> \param[in] C
*> \verbatim
*> C is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] S
*> \verbatim
*> S is COMPLEX*16
@@ -84,7 +86,6 @@
*> [ -conjg(S) C ]
*> where C*C + S*CONJG(S) = 1.0.
*> \endverbatim
-*> \endverbatim
*>
*
* Authors
diff --git a/SRC/zstegr.f b/SRC/zstegr.f
index 3ddcea0d..126a08d4 100644
--- a/SRC/zstegr.f
+++ b/SRC/zstegr.f
@@ -104,27 +104,33 @@
*> \param[in] VL
*> \verbatim
*> VL is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] ABSTOL
*> \verbatim
diff --git a/SRC/zstemr.f b/SRC/zstemr.f
index ef120314..4e5ff061 100644
--- a/SRC/zstemr.f
+++ b/SRC/zstemr.f
@@ -152,27 +152,33 @@
*> \param[in] VL
*> \verbatim
*> VL is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[in] VU
*> \verbatim
*> VU is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If RANGE='V', the lower and upper bounds of the interval to
*> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] IL
*> \verbatim
*> IL is INTEGER
+*> \endverbatim
+*>
*> \param[in] IU
*> \verbatim
*> IU is INTEGER
+*> \endverbatim
+*> \verbatim
*> If RANGE='I', the indices (in ascending order) of the
*> smallest and largest eigenvalues to be returned.
*> 1 <= IL <= IU <= N, if N > 0.
*> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] M
*> \verbatim
diff --git a/SRC/zsyconv.f b/SRC/zsyconv.f
index 3f3dc99e..a5e296b2 100644
--- a/SRC/zsyconv.f
+++ b/SRC/zsyconv.f
@@ -89,19 +89,6 @@
*> WORK is COMPLEX*16 array, dimension (N)
*> \endverbatim
*>
-*> \param[in] LWORK
-*> \verbatim
-*> LWORK is INTEGER
-*> The length of WORK. LWORK >=1.
-*> LWORK = N
-*> \endverbatim
-*> \verbatim
-*> If LWORK = -1, then a workspace query is assumed; the routine
-*> only calculates the optimal size of the WORK array, returns
-*> this value as the first entry of the WORK array, and no error
-*> message related to LWORK is issued by XERBLA.
-*> \endverbatim
-*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/SRC/zsyequb.f b/SRC/zsyequb.f
index 01773de6..96d89d2b 100644
--- a/SRC/zsyequb.f
+++ b/SRC/zsyequb.f
@@ -130,8 +130,6 @@
* ===============
*>\details \b Further \b Details
*> \verbatim
-* Further Details
-*> ======= =======
*>
*> Reference: Livne, O.E. and Golub, G.H., "Scaling by Binormalization",
*> Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004.
diff --git a/SRC/ztgsen.f b/SRC/ztgsen.f
index 66ddce9a..c5d8882d 100644
--- a/SRC/ztgsen.f
+++ b/SRC/ztgsen.f
@@ -147,15 +147,18 @@
*> \param[out] ALPHA
*> \verbatim
*> ALPHA is COMPLEX*16 array, dimension (N)
+*> \endverbatim
+*>
*> \param[out] BETA
*> \verbatim
*> BETA is COMPLEX*16 array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> The diagonal elements of A and B, respectively,
*> when the pair (A,B) has been reduced to generalized Schur
*> form. ALPHA(i)/BETA(i) i=1,...,N are the generalized
*> eigenvalues.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] Q
*> \verbatim
@@ -203,9 +206,13 @@
*> \param[out] PL
*> \verbatim
*> PL is DOUBLE PRECISION
+*> \endverbatim
+*>
*> \param[out] PR
*> \verbatim
*> PR is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> If IJOB = 1, 4 or 5, PL, PR are lower bounds on the
*> reciprocal of the norm of "projections" onto left and right
*> eigenspace with respect to the selected cluster.
@@ -213,7 +220,6 @@
*> If M = 0 or M = N, PL = PR = 1.
*> If IJOB = 0, 2 or 3 PL, PR are not referenced.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] DIF
*> \verbatim
diff --git a/SRC/ztgsja.f b/SRC/ztgsja.f
index d40521a2..6b407edd 100644
--- a/SRC/ztgsja.f
+++ b/SRC/ztgsja.f
@@ -176,52 +176,77 @@
*> The number of columns of the matrices A and B. N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] K
+*> \verbatim
+*> K is INTEGER
+*> \endverbatim
+*>
+*> \param[in] L
+*> \verbatim
+*> L is INTEGER
+*> \endverbatim
*> \verbatim
-* See Further Details.
+*> K and L specify the subblocks in the input matrices A and B:
+*> A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,,N-L+1:N)
+*> of A and B, whose GSVD is going to be computed by ZTGSJA.
+*> See Further Details.
+*> \endverbatim
*>
-*> A (input/output) COMPLEX*16 array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N)
*> On entry, the M-by-N matrix A.
*> On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular
*> matrix R or part of R. See Purpose for details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX*16 array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX*16 array, dimension (LDB,N)
*> On entry, the P-by-N matrix B.
*> On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains
*> a part of R. See Purpose for details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,P).
+*> \endverbatim
*>
-*> TOLA (input) DOUBLE PRECISION
-*> TOLB (input) DOUBLE PRECISION
+*> \param[in] TOLA
+*> \verbatim
+*> TOLA is DOUBLE PRECISION
+*> \endverbatim
+*>
+*> \param[in] TOLB
+*> \verbatim
+*> TOLB is DOUBLE PRECISION
+*> \endverbatim
+*> \verbatim
*> TOLA and TOLB are the convergence criteria for the Jacobi-
*> Kogbetliantz iteration procedure. Generally, they are the
*> same as used in the preprocessing step, say
*> TOLA = MAX(M,N)*norm(A)*MAZHEPS,
*> TOLB = MAX(P,N)*norm(B)*MAZHEPS.
+*> \endverbatim
*>
-*> ALPHA (output) DOUBLE PRECISION array, dimension (N)
-*> BETA (output) DOUBLE PRECISION array, dimension (N)
+*> \param[out] ALPHA
+*> \verbatim
+*> ALPHA is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] BETA
+*> \verbatim
+*> BETA is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*> \verbatim
*> On exit, ALPHA and BETA contain the generalized singular
*> value pairs of A and B;
*> ALPHA(1:K) = 1,
@@ -235,53 +260,81 @@
*> Furthermore, if K+L < N,
*> ALPHA(K+L+1:N) = 0 and
*> BETA(K+L+1:N) = 0.
+*> \endverbatim
*>
-*> U (input/output) COMPLEX*16 array, dimension (LDU,M)
+*> \param[in,out] U
+*> \verbatim
+*> U is COMPLEX*16 array, dimension (LDU,M)
*> On entry, if JOBU = 'U', U must contain a matrix U1 (usually
*> the unitary matrix returned by ZGGSVP).
*> On exit,
*> if JOBU = 'I', U contains the unitary matrix U;
*> if JOBU = 'U', U contains the product U1*U.
*> If JOBU = 'N', U is not referenced.
+*> \endverbatim
*>
-*> LDU (input) INTEGER
+*> \param[in] LDU
+*> \verbatim
+*> LDU is INTEGER
*> The leading dimension of the array U. LDU >= max(1,M) if
*> JOBU = 'U'; LDU >= 1 otherwise.
+*> \endverbatim
*>
-*> V (input/output) COMPLEX*16 array, dimension (LDV,P)
+*> \param[in,out] V
+*> \verbatim
+*> V is COMPLEX*16 array, dimension (LDV,P)
*> On entry, if JOBV = 'V', V must contain a matrix V1 (usually
*> the unitary matrix returned by ZGGSVP).
*> On exit,
*> if JOBV = 'I', V contains the unitary matrix V;
*> if JOBV = 'V', V contains the product V1*V.
*> If JOBV = 'N', V is not referenced.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V. LDV >= max(1,P) if
*> JOBV = 'V'; LDV >= 1 otherwise.
+*> \endverbatim
*>
-*> Q (input/output) COMPLEX*16 array, dimension (LDQ,N)
+*> \param[in,out] Q
+*> \verbatim
+*> Q is COMPLEX*16 array, dimension (LDQ,N)
*> On entry, if JOBQ = 'Q', Q must contain a matrix Q1 (usually
*> the unitary matrix returned by ZGGSVP).
*> On exit,
*> if JOBQ = 'I', Q contains the unitary matrix Q;
*> if JOBQ = 'Q', Q contains the product Q1*Q.
*> If JOBQ = 'N', Q is not referenced.
+*> \endverbatim
*>
-*> LDQ (input) INTEGER
+*> \param[in] LDQ
+*> \verbatim
+*> LDQ is INTEGER
*> The leading dimension of the array Q. LDQ >= max(1,N) if
*> JOBQ = 'Q'; LDQ >= 1 otherwise.
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX*16 array, dimension (2*N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (2*N)
+*> \endverbatim
*>
-*> NCYCLE (output) INTEGER
+*> \param[out] NCYCLE
+*> \verbatim
+*> NCYCLE is INTEGER
*> The number of cycles required for convergence.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value.
*> = 1: the procedure does not converge after MAXIT cycles.
-*>
+*> \endverbatim
+*> \verbatim
*> Internal Parameters
*> ===================
*>
@@ -289,7 +342,26 @@
*> MAXIT specifies the total loops that the iterative procedure
*> may take. If after MAXIT cycles, the routine fails to
*> converge, we return INFO = 1.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> ZTGSJA essentially uses a variant of Kogbetliantz algorithm to reduce
*> min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and L-by-L
diff --git a/SRC/ztpmqrt.f b/SRC/ztpmqrt.f
index a9d792d1..49828619 100644
--- a/SRC/ztpmqrt.f
+++ b/SRC/ztpmqrt.f
@@ -67,6 +67,7 @@
*> \verbatim
*> N is INTEGER
*> The number of columns of the matrix B. N >= 0.
+*> \endverbatim
*>
*> \param[in] K
*> \verbatim
@@ -74,78 +75,115 @@
*> The number of elementary reflectors whose product defines
*> the matrix Q.
*> \endverbatim
-*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* K >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The order of the trapezoidal part of V.
+*> K >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> NB (input) INTEGER
+*> \param[in] NB
+*> \verbatim
+*> NB is INTEGER
*> The block size used for the storage of T. K >= NB >= 1.
*> This must be the same value of NB used to generate T
*> in CTPQRT.
+*> \endverbatim
*>
-*> V (input) COMPLEX*16 array, dimension (LDA,K)
+*> \param[in] V
+*> \verbatim
+*> V is COMPLEX*16 array, dimension (LDA,K)
*> The i-th column must contain the vector which defines the
*> elementary reflector H(i), for i = 1,2,...,k, as returned by
*> CTPQRT in B. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
-*> The leading dimension of the array A.
-*> If SIDE = 'L', LDA >= max(1,M);
-*> if SIDE = 'R', LDA >= max(1,N).
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
+*> The leading dimension of the array V.
+*> If SIDE = 'L', LDV >= max(1,M);
+*> if SIDE = 'R', LDV >= max(1,N).
+*> \endverbatim
*>
-*> T (input) COMPLEX*16 array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is COMPLEX*16 array, dimension (LDT,K)
*> The upper triangular factors of the block reflectors
*> as returned by CTPQRT, stored as a NB-by-K matrix.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
*>
-*> A (input/output) COMPLEX*16 array, dimension
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension
*> (LDA,N) if SIDE = 'L' or
*> (LDA,K) if SIDE = 'R'
*> On entry, the K-by-N or M-by-K matrix A.
*> On exit, A is overwritten by the corresponding block of
*> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A.
*> If SIDE = 'L', LDC >= max(1,K);
*> If SIDE = 'R', LDC >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX*16 array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX*16 array, dimension (LDB,N)
*> On entry, the M-by-N matrix B.
*> On exit, B is overwritten by the corresponding block of
*> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B.
*> LDB >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace/output) COMPLEX*16 array. The dimension of WORK is
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array. The dimension of WORK is
*> N*NB if SIDE = 'L', or M*NB if SIDE = 'R'.
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The columns of the pentagonal matrix V contain the elementary reflectors
*> H(1), H(2), ..., H(K); V is composed of a rectangular block V1 and a
diff --git a/SRC/ztpqrt.f b/SRC/ztpqrt.f
index d4ce4d62..8e29577c 100644
--- a/SRC/ztpqrt.f
+++ b/SRC/ztpqrt.f
@@ -57,59 +57,90 @@
*> N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* MIN(M,N) >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The number of rows of the upper trapezoidal part of B.
+*> MIN(M,N) >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> NB (input) INTEGER
+*> \param[in] NB
+*> \verbatim
+*> NB is INTEGER
*> The block size to be used in the blocked QR. N >= NB >= 1.
+*> \endverbatim
*>
-*> A (input/output) COMPLEX*16 array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N)
*> On entry, the upper triangular N-by-N matrix A.
*> On exit, the elements on and above the diagonal of the array
*> contain the upper triangular matrix R.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX*16 array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX*16 array, dimension (LDB,N)
*> On entry, the pentagonal M-by-N matrix B. The first M-L rows
*> are rectangular, and the last L rows are upper trapezoidal.
*> On exit, B contains the pentagonal matrix V. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,M).
+*> \endverbatim
*>
-*> T (output) COMPLEX*16 array, dimension (LDT,N)
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX*16 array, dimension (LDT,N)
*> The upper triangular block reflectors stored in compact form
*> as a sequence of upper triangular blocks. See Further Details.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= NB.
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX*16 array, dimension (NB*N)
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension (NB*N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
-*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*> The input matrix C is a (N+M)-by-N matrix
*>
*> C = [ A ]
diff --git a/SRC/ztpqrt2.f b/SRC/ztpqrt2.f
index 04c5cd17..db8dc88a 100644
--- a/SRC/ztpqrt2.f
+++ b/SRC/ztpqrt2.f
@@ -55,53 +55,79 @@
*> N >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERcomputational
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* MIN(M,N) >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The number of rows of the upper trapezoidal part of B.
+*> MIN(M,N) >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> A (input/output) COMPLEX*16 array, dimension (LDA,N)
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension (LDA,N)
*> On entry, the upper triangular N-by-N matrix A.
*> On exit, the elements on and above the diagonal of the array
*> contain the upper triangular matrix R.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A. LDA >= max(1,N).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX*16 array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX*16 array, dimension (LDB,N)
*> On entry, the pentagonal M-by-N matrix B. The first M-L rows
*> are rectangular, and the last L rows are upper trapezoidal.
*> On exit, B contains the pentagonal matrix V. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B. LDB >= max(1,M).
+*> \endverbatim
*>
-*> T (output) COMPLEX*16 array, dimension (LDT,N)
+*> \param[out] T
+*> \verbatim
+*> T is COMPLEX*16 array, dimension (LDT,N)
*> The N-by-N upper triangular factor T of the block reflector.
*> See Further Details.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T. LDT >= max(1,N)
+*> \endverbatim
*>
-*> INFO (output) INTEGER
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERcomputational
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The input matrix C is a (N+M)-by-N matrix
*>
diff --git a/SRC/ztprfb.f b/SRC/ztprfb.f
index fc9b02a1..32c9ec8e 100644
--- a/SRC/ztprfb.f
+++ b/SRC/ztprfb.f
@@ -97,76 +97,111 @@
*> K >= 0.
*> \endverbatim
*>
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16OTHERauxiliary
-*
-*
-* Further Details
-* ===============
-*>\details \b Further \b Details
+*> \param[in] L
*> \verbatim
-* K >= L >= 0. See Further Details.
+*> L is INTEGER
+*> The order of the trapezoidal part of V.
+*> K >= L >= 0. See Further Details.
+*> \endverbatim
*>
-*> V (input) COMPLEX*16 array, dimension
+*> \param[in] V
+*> \verbatim
+*> V is COMPLEX*16 array, dimension
*> (LDV,K) if STOREV = 'C'
*> (LDV,M) if STOREV = 'R' and SIDE = 'L'
*> (LDV,N) if STOREV = 'R' and SIDE = 'R'
*> The pentagonal matrix V, which contains the elementary reflectors
*> H(1), H(2), ..., H(K). See Further Details.
+*> \endverbatim
*>
-*> LDV (input) INTEGER
+*> \param[in] LDV
+*> \verbatim
+*> LDV is INTEGER
*> The leading dimension of the array V.
*> If STOREV = 'C' and SIDE = 'L', LDV >= max(1,M);
*> if STOREV = 'C' and SIDE = 'R', LDV >= max(1,N);
*> if STOREV = 'R', LDV >= K.
+*> \endverbatim
*>
-*> T (input) COMPLEX*16 array, dimension (LDT,K)
+*> \param[in] T
+*> \verbatim
+*> T is COMPLEX*16 array, dimension (LDT,K)
*> The triangular K-by-K matrix T in the representation of the
*> block reflector.
+*> \endverbatim
*>
-*> LDT (input) INTEGER
+*> \param[in] LDT
+*> \verbatim
+*> LDT is INTEGER
*> The leading dimension of the array T.
*> LDT >= K.
+*> \endverbatim
*>
-*> A (input/output) COMPLEX*16 array, dimension
+*> \param[in,out] A
+*> \verbatim
+*> A is COMPLEX*16 array, dimension
*> (LDA,N) if SIDE = 'L' or (LDA,K) if SIDE = 'R'
*> On entry, the K-by-N or M-by-K matrix A.
*> On exit, A is overwritten by the corresponding block of
*> H*C or H**H*C or C*H or C*H**H. See Futher Details.
+*> \endverbatim
*>
-*> LDA (input) INTEGER
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
*> The leading dimension of the array A.
*> If SIDE = 'L', LDC >= max(1,K);
*> If SIDE = 'R', LDC >= max(1,M).
+*> \endverbatim
*>
-*> B (input/output) COMPLEX*16 array, dimension (LDB,N)
+*> \param[in,out] B
+*> \verbatim
+*> B is COMPLEX*16 array, dimension (LDB,N)
*> On entry, the M-by-N matrix B.
*> On exit, B is overwritten by the corresponding block of
*> H*C or H**H*C or C*H or C*H**H. See Further Details.
+*> \endverbatim
*>
-*> LDB (input) INTEGER
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
*> The leading dimension of the array B.
*> LDB >= max(1,M).
+*> \endverbatim
*>
-*> WORK (workspace) COMPLEX*16 array, dimension
+*> \param[out] WORK
+*> \verbatim
+*> WORK is COMPLEX*16 array, dimension
*> (LDWORK,N) if SIDE = 'L',
*> (LDWORK,K) if SIDE = 'R'.
+*> \endverbatim
*>
-*> LDWORK (input) INTEGER
+*> \param[in] LDWORK
+*> \verbatim
+*> LDWORK is INTEGER
*> The leading dimension of the array WORK.
*> If SIDE = 'L', LDWORK >= K;
*> if SIDE = 'R', LDWORK >= M.
+*> \endverbatim
*>
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16OTHERauxiliary
+*
+*
+* Further Details
+* ===============
+*>\details \b Further \b Details
+*> \verbatim
*>
*> The matrix C is a composite matrix formed from blocks A and B.
*> The block B is of size M-by-N; if SIDE = 'R', A is of size M-by-K,
diff --git a/SRC/ztrexc.f b/SRC/ztrexc.f
index ec2a8b35..743db8cd 100644
--- a/SRC/ztrexc.f
+++ b/SRC/ztrexc.f
@@ -89,15 +89,18 @@
*> \param[in] IFST
*> \verbatim
*> IFST is INTEGER
+*> \endverbatim
+*>
*> \param[in] ILST
*> \verbatim
*> ILST is INTEGER
+*> \endverbatim
+*> \verbatim
*> Specify the reordering of the diagonal elements of T:
*> The element with row index IFST is moved to row ILST by a
*> sequence of transpositions between adjacent elements.
*> 1 <= IFST <= N; 1 <= ILST <= N.
*> \endverbatim
-*> \endverbatim
*>
*> \param[out] INFO
*> \verbatim
diff --git a/SRC/zuncsd.f b/SRC/zuncsd.f
index 03509349..35d0f6b2 100644
--- a/SRC/zuncsd.f
+++ b/SRC/zuncsd.f
@@ -129,16 +129,52 @@
*> The number of columns in X11 and X21. 0 <= Q <= M.
*> \endverbatim
*>
-*> \param[in,out] X
+*> \param[in,out] X11
*> \verbatim
-*> X is COMPLEX*16 array, dimension (LDX,M)
-*> On entry, the unitary matrix whose CSD is desired.
+*> X11 is COMPLEX*16 array, dimension (LDX11,Q)
+*> On entry, part of the unitary matrix whose CSD is desired.
*> \endverbatim
*>
-*> \param[in] LDX
+*> \param[in] LDX11
*> \verbatim
-*> LDX is INTEGER
-*> The leading dimension of X. LDX >= MAX(1,M).
+*> LDX11 is INTEGER
+*> The leading dimension of X11. LDX11 >= MAX(1,P).
+*> \endverbatim
+*>
+*> \param[in,out] X12
+*> \verbatim
+*> X12 is COMPLEX*16 array, dimension (LDX12,M-Q)
+*> On entry, part of the unitary matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX12
+*> \verbatim
+*> LDX12 is INTEGER
+*> The leading dimension of X12. LDX12 >= MAX(1,P).
+*> \endverbatim
+*>
+*> \param[in,out] X21
+*> \verbatim
+*> X21 is COMPLEX*16 array, dimension (LDX21,Q)
+*> On entry, part of the unitary matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX21
+*> \verbatim
+*> LDX21 is INTEGER
+*> The leading dimension of X11. LDX21 >= MAX(1,M-P).
+*> \endverbatim
+*>
+*> \param[in,out] X22
+*> \verbatim
+*> X22 is COMPLEX*16 array, dimension (LDX22,M-Q)
+*> On entry, part of the unitary matrix whose CSD is desired.
+*> \endverbatim
+*>
+*> \param[in] LDX22
+*> \verbatim
+*> LDX22 is INTEGER
+*> The leading dimension of X11. LDX22 >= MAX(1,M-P).
*> \endverbatim
*>
*> \param[out] THETA
diff --git a/SRC/zunghr.f b/SRC/zunghr.f
index c57ba43a..abf3fe43 100644
--- a/SRC/zunghr.f
+++ b/SRC/zunghr.f
@@ -51,15 +51,18 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI must have the same values as in the previous call
*> of ZGEHRD. Q is equal to the unit matrix except in the
*> submatrix Q(ilo+1:ihi,ilo+1:ihi).
*> 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in,out] A
*> \verbatim
diff --git a/SRC/zunmhr.f b/SRC/zunmhr.f
index 4df33a88..4ff4cbef 100644
--- a/SRC/zunmhr.f
+++ b/SRC/zunmhr.f
@@ -79,9 +79,13 @@
*> \param[in] ILO
*> \verbatim
*> ILO is INTEGER
+*> \endverbatim
+*>
*> \param[in] IHI
*> \verbatim
*> IHI is INTEGER
+*> \endverbatim
+*> \verbatim
*> ILO and IHI must have the same values as in the previous call
*> of ZGEHRD. Q is equal to the unit matrix except in the
*> submatrix Q(ilo+1:ihi,ilo+1:ihi).
@@ -90,7 +94,6 @@
*> if SIDE = 'R', then 1 <= ILO <= IHI <= N, if N > 0, and
*> ILO = 1 and IHI = 0, if N = 0.
*> \endverbatim
-*> \endverbatim
*>
*> \param[in] A
*> \verbatim
diff --git a/TESTING/EIG/cchkbd.f b/TESTING/EIG/cchkbd.f
index c2679caf..659bbb98 100644
--- a/TESTING/EIG/cchkbd.f
+++ b/TESTING/EIG/cchkbd.f
@@ -317,9 +317,9 @@
*> (LDPT,max(min(MVAL(j),NVAL(j))))
*> \endverbatim
*>
-*> \param[out] V
+*> \param[out] VT
*> \verbatim
-*> V is COMPLEX array, dimension
+*> VT is COMPLEX array, dimension
*> (LDPT,max(min(MVAL(j),NVAL(j))))
*> \endverbatim
*>
diff --git a/TESTING/EIG/cchkhb.f b/TESTING/EIG/cchkhb.f
index f0d61d71..52d8c981 100644
--- a/TESTING/EIG/cchkhb.f
+++ b/TESTING/EIG/cchkhb.f
@@ -185,7 +185,7 @@
*>
*> \param[in,out] A
*> \verbatim
-*> A is REAL array, dimension
+*> A is COMPLEX array, dimension
*> (LDA, max(NN))
*> Used to hold the matrix whose eigenvalues are to be
*> computed.
@@ -214,7 +214,7 @@
*>
*> \param[out] U
*> \verbatim
-*> U is REAL array, dimension (LDU, max(NN))
+*> U is COMPLEX array, dimension (LDU, max(NN))
*> Used to hold the unitary matrix computed by CHBTRD.
*> \endverbatim
*>
@@ -227,7 +227,7 @@
*>
*> \param[out] WORK
*> \verbatim
-*> WORK is REAL array, dimension (LWORK)
+*> WORK is COMPLEX array, dimension (LWORK)
*> \endverbatim
*>
*> \param[in] LWORK
@@ -237,6 +237,11 @@
*> max( LDA+1, max(NN)+1 )*max(NN).
*> \endverbatim
*>
+*> \param[out] RWORK
+*> \verbatim
+*> RWORK is REAL array
+*> \endverbatim
+*>
*> \param[out] RESULT
*> \verbatim
*> RESULT is REAL array, dimension (4)
diff --git a/TESTING/EIG/cchkst.f b/TESTING/EIG/cchkst.f
index 2d5f299d..d72c02b5 100644
--- a/TESTING/EIG/cchkst.f
+++ b/TESTING/EIG/cchkst.f
@@ -387,6 +387,64 @@
*> eigenvalues in D3 correspond with the matrix in A.
*> \endverbatim
*>
+*> \param[out] D4
+*> \verbatim
+*> D4 is REAL array of
+*> dimension( max(NN) )
+*> The eigenvalues of A, as computed by CPTEQR(V).
+*> ZPTEQR factors S as Z4 D4 Z4*
+*> On exit, the eigenvalues in D4 correspond with the matrix in A.
+*> \endverbatim
+*>
+*> \param[out] D5
+*> \verbatim
+*> D5 is REAL array of
+*> dimension( max(NN) )
+*> The eigenvalues of A, as computed by ZPTEQR(N)
+*> when Z is not computed. On exit, the
+*> eigenvalues in D4 correspond with the matrix in A.
+*> \endverbatim
+*>
+*> \param[out] WA1
+*> \verbatim
+*> WA1 is REAL array of
+*> dimension( max(NN) )
+*> All eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by SSTEBZ.
+*> \endverbatim
+*>
+*> \param[out] WA2
+*> \verbatim
+*> WA2 is REAL array of
+*> dimension( max(NN) )
+*> Selected eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by SSTEBZ.
+*> Choose random values for IL and IU, and ask for the
+*> IL-th through IU-th eigenvalues.
+*> \endverbatim
+*>
+*> \param[out] WA3
+*> \verbatim
+*> WA3 is REAL array of
+*> dimension( max(NN) )
+*> Selected eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by SSTEBZ.
+*> Determine the values VL and VU of the IL-th and IU-th
+*> eigenvalues and ask for all eigenvalues in this range.
+*> \endverbatim
+*>
+*> \param[out] WR
+*> \verbatim
+*> WR is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> All eigenvalues of A, computed to high
+*> absolute accuracy, with different options.
+*> as computed by DSTEBZ.
+*> \endverbatim
+*>
*> \param[out] U
*> \verbatim
*> U is COMPLEX array of
@@ -455,15 +513,26 @@
*> \param[out] IWORK
*> \verbatim
*> IWORK is INTEGER array,
-*> dimension (6 + 6*Nmax + 5 * Nmax * lg Nmax )
-*> where Nmax = max( NN(j), 2 ) and lg = log base 2.
*> Workspace.
*> \endverbatim
*>
+*> \param[out] LIWORK
+*> \verbatim
+*> LIWORK is INTEGER
+*> The number of entries in IWORK. This must be at least
+*> 6 + 6*Nmax + 5 * Nmax * lg Nmax
+*> where Nmax = max( NN(j), 2 ) and lg = log base 2.
+*> \endverbatim
+*>
*> \param[out] RWORK
*> \verbatim
-*> RWORK is REAL array of
-*> dimension( ??? )
+*> RWORK is REAL array
+*> \endverbatim
+*>
+*> \param[in] LRWORK
+*> \verbatim
+*> LRWORK is INTEGER
+*> The number of entries in LRWORK (dimension( ??? )
*> \endverbatim
*>
*> \param[out] RESULT
diff --git a/TESTING/EIG/cdrgvx.f b/TESTING/EIG/cdrgvx.f
index 23f897fa..264b4cd1 100644
--- a/TESTING/EIG/cdrgvx.f
+++ b/TESTING/EIG/cdrgvx.f
@@ -222,9 +222,9 @@
*> S is REAL array, dimension (N)
*> \endverbatim
*>
-*> \param[out] DTRU
+*> \param[out] STRU
*> \verbatim
-*> DTRU is REAL array, dimension (N)
+*> STRU is REAL array, dimension (N)
*> \endverbatim
*>
*> \param[out] DIF
diff --git a/TESTING/EIG/cdrvbd.f b/TESTING/EIG/cdrvbd.f
index e7242e6b..56204768 100644
--- a/TESTING/EIG/cdrvbd.f
+++ b/TESTING/EIG/cdrvbd.f
@@ -181,13 +181,6 @@
*> or the size of the matrix. It must be at least zero.
*> \endverbatim
*>
-*> \param[in] NOUNIT
-*> \verbatim
-*> NOUNIT is INTEGER
-*> The FORTRAN unit number for printing out error messages
-*> (e.g., if a routine returns IINFO not equal to 0.)
-*> \endverbatim
-*>
*> \param[out] A
*> \verbatim
*> A is COMPLEX array, dimension (LDA,max(NN))
@@ -297,12 +290,11 @@
*> IWORK is INTEGER array, dimension at least 8*min(M,N)
*> \endverbatim
*>
-*> \param[out] RESULT
+*> \param[in] NOUNIT
*> \verbatim
-*> RESULT is REAL array, dimension (7)
-*> The values computed by the 7 tests described above.
-*> The values are currently limited to 1/ULP, to avoid
-*> overflow.
+*> NOUNIT is INTEGER
+*> The FORTRAN unit number for printing out error messages
+*> (e.g., if a routine returns IINFO not equal to 0.)
*> \endverbatim
*>
*> \param[out] INFO
diff --git a/TESTING/EIG/cdrves.f b/TESTING/EIG/cdrves.f
index 152f97b9..a79cfe14 100644
--- a/TESTING/EIG/cdrves.f
+++ b/TESTING/EIG/cdrves.f
@@ -318,6 +318,11 @@
*> IWORK is INTEGER array, dimension (max(NN))
*> \endverbatim
*>
+*> \param[out] BWORK
+*> \verbatim
+*> BWORK is LOGICAL array, dimension (max(NN))
+*> \endverbatim
+*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/TESTING/EIG/cdrvvx.f b/TESTING/EIG/cdrvvx.f
index 97e313c4..3a15d8f6 100644
--- a/TESTING/EIG/cdrvvx.f
+++ b/TESTING/EIG/cdrvvx.f
@@ -361,6 +361,62 @@
*> Leading dimension of LRE. Must be at least max(1,max(NN,12))
*> \endverbatim
*>
+*> \param[out] RCONDV
+*> \verbatim
+*> RCONDV is REAL array, dimension (N)
+*> RCONDV holds the computed reciprocal condition numbers
+*> for eigenvectors.
+*> \endverbatim
+*>
+*> \param[out] RCNDV1
+*> \verbatim
+*> RCNDV1 is REAL array, dimension (N)
+*> RCNDV1 holds more computed reciprocal condition numbers
+*> for eigenvectors.
+*> \endverbatim
+*>
+*> \param[in] RCDVIN
+*> \verbatim
+*> RCDVIN is REAL array, dimension (N)
+*> When COMP = .TRUE. RCDVIN holds the precomputed reciprocal
+*> condition numbers for eigenvectors to be compared with
+*> RCONDV.
+*> \endverbatim
+*>
+*> \param[out] RCONDE
+*> \verbatim
+*> RCONDE is REAL array, dimension (N)
+*> RCONDE holds the computed reciprocal condition numbers
+*> for eigenvalues.
+*> \endverbatim
+*>
+*> \param[out] RCNDE1
+*> \verbatim
+*> RCNDE1 is REAL array, dimension (N)
+*> RCNDE1 holds more computed reciprocal condition numbers
+*> for eigenvalues.
+*> \endverbatim
+*>
+*> \param[in] RCDEIN
+*> \verbatim
+*> RCDEIN is REAL array, dimension (N)
+*> When COMP = .TRUE. RCDEIN holds the precomputed reciprocal
+*> condition numbers for eigenvalues to be compared with
+*> RCONDE.
+*> \endverbatim
+*>
+*> \param[out] SCALE
+*> \verbatim
+*> SCALE is REAL array, dimension (N)
+*> Holds information describing balancing of matrix.
+*> \endverbatim
+*>
+*> \param[out] SCALE1
+*> \verbatim
+*> SCALE1 is REAL array, dimension (N)
+*> Holds information describing balancing of matrix.
+*> \endverbatim
+*>
*> \param[out] RESULT
*> \verbatim
*> RESULT is REAL array, dimension (11)
diff --git a/TESTING/EIG/cget22.f b/TESTING/EIG/cget22.f
index fd6f7644..267045e1 100644
--- a/TESTING/EIG/cget22.f
+++ b/TESTING/EIG/cget22.f
@@ -121,6 +121,12 @@
*> RWORK is REAL array, dimension (N)
*> \endverbatim
*>
+*> \param[out] RESULT
+*> \verbatim
+*> RESULT is REAL array, dimension (2)
+*> RESULT(1) = | A E - E W | / ( |A| |E| ulp )
+*> RESULT(2) = max | m-norm(E(j)) - 1 | / ( n ulp )
+*> \endverbatim
*
* Authors
* =======
diff --git a/TESTING/EIG/chkxer.f b/TESTING/EIG/chkxer.f
index 0a222273..15bc8b3b 100644
--- a/TESTING/EIG/chkxer.f
+++ b/TESTING/EIG/chkxer.f
@@ -14,25 +14,7 @@
* LOGICAL LERR, OK
* CHARACTER*(*) SRNAMT
* INTEGER INFOT, NOUT
-* ..
-* .. Intrinsic Functions ..
-* INTRINSIC LEN_TRIM
-* ..
-* .. Executable Statements ..
-* IF( .NOT.LERR ) THEN
-* WRITE( NOUT, FMT = 9999 )INFOT,
-* $ SRNAMT( 1:LEN_TRIM( SRNAMT ) )
-* OK = .FALSE.
-* END IF
-* LERR = .FALSE.
-* RETURN
-*
-* 9999 FORMAT( ' *** Illegal value of parameter number ', I2,
-* $ ' not detected by ', A6, ' ***' )
-*
-* End of CHKXER.
-*
-* END
+*
* Purpose
* =======
*
diff --git a/TESTING/EIG/clctsx.f b/TESTING/EIG/clctsx.f
index f9086aac..c2208012 100644
--- a/TESTING/EIG/clctsx.f
+++ b/TESTING/EIG/clctsx.f
@@ -33,13 +33,16 @@
*> \param[in] ALPHA
*> \verbatim
*> ALPHA is COMPLEX
+*> \endverbatim
+*>
*> \param[in] BETA
*> \verbatim
*> BETA is COMPLEX
+*> \endverbatim
+*> \verbatim
*> parameters to decide whether the pair (ALPHA, BETA) is
*> selected.
*> \endverbatim
-*> \endverbatim
*>
*
* Authors
diff --git a/TESTING/EIG/dchkbd.f b/TESTING/EIG/dchkbd.f
index 78c9d786..760b6bf9 100644
--- a/TESTING/EIG/dchkbd.f
+++ b/TESTING/EIG/dchkbd.f
@@ -339,9 +339,9 @@
*> (LDPT,max(min(MVAL(j),NVAL(j))))
*> \endverbatim
*>
-*> \param[out] V
+*> \param[out] VT
*> \verbatim
-*> V is DOUBLE PRECISION array, dimension
+*> VT is DOUBLE PRECISION array, dimension
*> (LDPT,max(min(MVAL(j),NVAL(j))))
*> \endverbatim
*>
diff --git a/TESTING/EIG/dchkgg.f b/TESTING/EIG/dchkgg.f
index fe030bf9..9c9202d7 100644
--- a/TESTING/EIG/dchkgg.f
+++ b/TESTING/EIG/dchkgg.f
@@ -453,9 +453,9 @@
*> the matrices in S1 and P1. (See DTGEVC for the format.)
*> \endverbatim
*>
-*> \param[out] EVEZTR
+*> \param[out] EVECTR
*> \verbatim
-*> EVEZTR is DOUBLE PRECISION array, dimension (LDU, max(NN))
+*> EVECTR is DOUBLE PRECISION array, dimension (LDU, max(NN))
*> The (block upper triangular) right eigenvector matrix for
*> the matrices in S1 and P1. (See DTGEVC for the format.)
*> \endverbatim
diff --git a/TESTING/EIG/dchkst.f b/TESTING/EIG/dchkst.f
index d40bf361..c585fe3d 100644
--- a/TESTING/EIG/dchkst.f
+++ b/TESTING/EIG/dchkst.f
@@ -386,6 +386,64 @@
*> eigenvalues in D3 correspond with the matrix in A.
*> \endverbatim
*>
+*> \param[out] D4
+*> \verbatim
+*> D4 is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> The eigenvalues of A, as computed by DPTEQR(V).
+*> DPTEQR factors S as Z4 D4 Z4*
+*> On exit, the eigenvalues in D4 correspond with the matrix in A.
+*> \endverbatim
+*>
+*> \param[out] D5
+*> \verbatim
+*> D5 is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> The eigenvalues of A, as computed by DPTEQR(N)
+*> when Z is not computed. On exit, the
+*> eigenvalues in D4 correspond with the matrix in A.
+*> \endverbatim
+*>
+*> \param[out] WA1
+*> \verbatim
+*> WA1 is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> All eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by DSTEBZ.
+*> \endverbatim
+*>
+*> \param[out] WA2
+*> \verbatim
+*> WA2 is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> Selected eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by DSTEBZ.
+*> Choose random values for IL and IU, and ask for the
+*> IL-th through IU-th eigenvalues.
+*> \endverbatim
+*>
+*> \param[out] WA3
+*> \verbatim
+*> WA3 is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> Selected eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by DSTEBZ.
+*> Determine the values VL and VU of the IL-th and IU-th
+*> eigenvalues and ask for all eigenvalues in this range.
+*> \endverbatim
+*>
+*> \param[out] WR
+*> \verbatim
+*> WR is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> All eigenvalues of A, computed to high
+*> absolute accuracy, with different options.
+*> as computed by DSTEBZ.
+*> \endverbatim
+*>
*> \param[out] U
*> \verbatim
*> U is DOUBLE PRECISION array of
@@ -454,11 +512,17 @@
*> \param[out] IWORK
*> \verbatim
*> IWORK is INTEGER array,
-*> dimension (6 + 6*Nmax + 5 * Nmax * lg Nmax )
-*> where Nmax = max( NN(j), 2 ) and lg = log base 2.
*> Workspace.
*> \endverbatim
*>
+*> \param[out] LIWORK
+*> \verbatim
+*> LIWORK is INTEGER
+*> The number of entries in IWORK. This must be at least
+*> 6 + 6*Nmax + 5 * Nmax * lg Nmax
+*> where Nmax = max( NN(j), 2 ) and lg = log base 2.
+*> \endverbatim
+*>
*> \param[out] RESULT
*> \verbatim
*> RESULT is DOUBLE PRECISION array, dimension (26)
diff --git a/TESTING/EIG/ddrgvx.f b/TESTING/EIG/ddrgvx.f
index bebae73b..f038d75d 100644
--- a/TESTING/EIG/ddrgvx.f
+++ b/TESTING/EIG/ddrgvx.f
@@ -265,9 +265,9 @@
*> LIWORK is INTEGER
*> Leading dimension of IWORK. Must be at least N+6.
*> \endverbatim
-*> \verbatim
*>
*> \param[out] RESULT
+*> \verbatim
*> RESULT is DOUBLE PRECISION array, dimension (4)
*> \endverbatim
*>
diff --git a/TESTING/EIG/ddrves.f b/TESTING/EIG/ddrves.f
index ca8be704..93fa2b6d 100644
--- a/TESTING/EIG/ddrves.f
+++ b/TESTING/EIG/ddrves.f
@@ -328,6 +328,11 @@
*> IWORK is INTEGER array, dimension (max(NN))
*> \endverbatim
*>
+*> \param[out] BWORK
+*> \verbatim
+*> BWORK is LOGICAL array, dimension (max(NN))
+*> \endverbatim
+*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/TESTING/EIG/ddrvsx.f b/TESTING/EIG/ddrvsx.f
index 6db69830..2644eba1 100644
--- a/TESTING/EIG/ddrvsx.f
+++ b/TESTING/EIG/ddrvsx.f
@@ -402,6 +402,11 @@
*> IWORK is INTEGER array, dimension (max(NN)*max(NN))
*> \endverbatim
*>
+*> \param[out] BWORK
+*> \verbatim
+*> BWORK is LOGICAL array, dimension (max(NN))
+*> \endverbatim
+*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/TESTING/EIG/ddrvvx.f b/TESTING/EIG/ddrvvx.f
index a5ec7629..230912b3 100644
--- a/TESTING/EIG/ddrvvx.f
+++ b/TESTING/EIG/ddrvvx.f
@@ -433,6 +433,18 @@
*> RCONDE.
*> \endverbatim
*>
+*> \param[out] SCALE
+*> \verbatim
+*> SCALE is DOUBLE PRECISION array, dimension (N)
+*> Holds information describing balancing of matrix.
+*> \endverbatim
+*>
+*> \param[out] SCALE1
+*> \verbatim
+*> SCALE1 is DOUBLE PRECISION array, dimension (N)
+*> Holds information describing balancing of matrix.
+*> \endverbatim
+*>
*> \param[out] RESULT
*> \verbatim
*> RESULT is DOUBLE PRECISION array, dimension (11)
diff --git a/TESTING/EIG/dlatb9.f b/TESTING/EIG/dlatb9.f
index 1ffcdc46..8a9cf15c 100644
--- a/TESTING/EIG/dlatb9.f
+++ b/TESTING/EIG/dlatb9.f
@@ -44,6 +44,10 @@
*> IMAT is INTEGER
*> An integer key describing which matrix to generate for this
*> path.
+*> = 1: A: diagonal, B: upper triangular
+*> = 2: A: upper triangular, B: upper triangular
+*> = 3: A: lower triangular, B: upper triangular
+*> Else: A: general dense, B: general dense
*> \endverbatim
*>
*> \param[in] M
@@ -52,6 +56,11 @@
*> The number of rows in the matrix to be generated.
*> \endverbatim
*>
+*> \param[in] P
+*> \verbatim
+*> P is INTEGER
+*> \endverbatim
+*>
*> \param[in] N
*> \verbatim
*> N is INTEGER
@@ -67,15 +76,27 @@
*> = 'N': nonsymmetric matrix.
*> \endverbatim
*>
-*> \param[out] KL
+*> \param[out] KLA
*> \verbatim
-*> KL is INTEGER
+*> KLA is INTEGER
*> The lower band width of the matrix to be generated.
*> \endverbatim
*>
-*> \param[out] KU
+*> \param[out] KUA
*> \verbatim
-*> KU is INTEGER
+*> KUA is INTEGER
+*> The upper band width of the matrix to be generated.
+*> \endverbatim
+*>
+*> \param[out] KLB
+*> \verbatim
+*> KLB is INTEGER
+*> The lower band width of the matrix to be generated.
+*> \endverbatim
+*>
+*> \param[out] KUB
+*> \verbatim
+*> KUA is INTEGER
*> The upper band width of the matrix to be generated.
*> \endverbatim
*>
@@ -87,21 +108,48 @@
*> value.
*> \endverbatim
*>
-*> \param[out] MODE
+*> \param[out] BNORM
+*> \verbatim
+*> BNORM is DOUBLE PRECISION
+*> The desired norm of the matrix to be generated. The diagonal
+*> matrix of singular values or eigenvalues is scaled by this
+*> value.
+*> \endverbatim
+*>
+*> \param[out] MODEA
+*> \verbatim
+*> MODEA is INTEGER
+*> A key indicating how to choose the vector of eigenvalues.
+*> \endverbatim
+*>
+*> \param[out] MODEB
*> \verbatim
-*> MODE is INTEGER
+*> MODEB is INTEGER
*> A key indicating how to choose the vector of eigenvalues.
*> \endverbatim
*>
-*> \param[out] CNDNUM
+*> \param[out] CNDNMA
*> \verbatim
-*> CNDNUM is DOUBLE PRECISION
+*> CNDNMA is DOUBLE PRECISION
*> The desired condition number.
*> \endverbatim
*>
-*> \param[out] DIST
+*> \param[out] CNDNMB
+*> \verbatim
+*> CNDNMB is DOUBLE PRECISION
+*> The desired condition number.
+*> \endverbatim
+*>
+*> \param[out] DISTA
+*> \verbatim
+*> DISTA is CHARACTER*1
+*> The type of distribution to be used by the random number
+*> generator.
+*> \endverbatim
+*>
+*> \param[out] DISTB
*> \verbatim
-*> DIST is CHARACTER*1
+*> DISTB is CHARACTER*1
*> The type of distribution to be used by the random number
*> generator.
*> \endverbatim
diff --git a/TESTING/EIG/dsxt1.f b/TESTING/EIG/dsxt1.f
index 256fcfb5..61815162 100644
--- a/TESTING/EIG/dsxt1.f
+++ b/TESTING/EIG/dsxt1.f
@@ -40,9 +40,9 @@
* Arguments
* =========
*
-*> \param[in] ITYPE
+*> \param[in] IJOB
*> \verbatim
-*> ITYPE is INTEGER
+*> IJOB is INTEGER
*> Specifies the type of tests to be performed. (See above.)
*> \endverbatim
*>
diff --git a/TESTING/EIG/ilaenv.f b/TESTING/EIG/ilaenv.f
index edbd030d..442a0e36 100644
--- a/TESTING/EIG/ilaenv.f
+++ b/TESTING/EIG/ilaenv.f
@@ -110,9 +110,9 @@
*> be required.
*> \endverbatim
*>
-*> \param[out] (ILAENV)
+*> \result ILAENV
*> \verbatim
-*> (ILAENV) is INTEGER
+*> ILAENV is INTEGER
*> >= 0: the value of the parameter specified by ISPEC
*> < 0: if ILAENV = -k, the k-th argument had an illegal value.
*> \endverbatim
diff --git a/TESTING/EIG/schkbd.f b/TESTING/EIG/schkbd.f
index e20d44ef..59d6edeb 100644
--- a/TESTING/EIG/schkbd.f
+++ b/TESTING/EIG/schkbd.f
@@ -339,9 +339,9 @@
*> (LDPT,max(min(MVAL(j),NVAL(j))))
*> \endverbatim
*>
-*> \param[out] V
+*> \param[out] VT
*> \verbatim
-*> V is REAL array, dimension
+*> VT is REAL array, dimension
*> (LDPT,max(min(MVAL(j),NVAL(j))))
*> \endverbatim
*>
diff --git a/TESTING/EIG/schkst.f b/TESTING/EIG/schkst.f
index 5933e850..c937cbae 100644
--- a/TESTING/EIG/schkst.f
+++ b/TESTING/EIG/schkst.f
@@ -386,6 +386,64 @@
*> eigenvalues in D3 correspond with the matrix in A.
*> \endverbatim
*>
+*> \param[out] D4
+*> \verbatim
+*> D4 is REAL array of
+*> dimension( max(NN) )
+*> The eigenvalues of A, as computed by SPTEQR(V).
+*> ZPTEQR factors S as Z4 D4 Z4*
+*> On exit, the eigenvalues in D4 correspond with the matrix in A.
+*> \endverbatim
+*>
+*> \param[out] D5
+*> \verbatim
+*> D5 is REAL array of
+*> dimension( max(NN) )
+*> The eigenvalues of A, as computed by SPTEQR(N)
+*> when Z is not computed. On exit, the
+*> eigenvalues in D4 correspond with the matrix in A.
+*> \endverbatim
+*>
+*> \param[out] WA1
+*> \verbatim
+*> WA1 is REAL array of
+*> dimension( max(NN) )
+*> All eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by SSTEBZ.
+*> \endverbatim
+*>
+*> \param[out] WA2
+*> \verbatim
+*> WA2 is REAL array of
+*> dimension( max(NN) )
+*> Selected eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by SSTEBZ.
+*> Choose random values for IL and IU, and ask for the
+*> IL-th through IU-th eigenvalues.
+*> \endverbatim
+*>
+*> \param[out] WA3
+*> \verbatim
+*> WA3 is REAL array of
+*> dimension( max(NN) )
+*> Selected eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by SSTEBZ.
+*> Determine the values VL and VU of the IL-th and IU-th
+*> eigenvalues and ask for all eigenvalues in this range.
+*> \endverbatim
+*>
+*> \param[out] WR
+*> \verbatim
+*> WR is REAL array of
+*> dimension( max(NN) )
+*> All eigenvalues of A, computed to high
+*> absolute accuracy, with different options.
+*> as computed by SSTEBZ.
+*> \endverbatim
+*>
*> \param[out] U
*> \verbatim
*> U is REAL array of
@@ -454,11 +512,17 @@
*> \param[out] IWORK
*> \verbatim
*> IWORK is INTEGER array,
-*> dimension (6 + 6*Nmax + 5 * Nmax * lg Nmax )
-*> where Nmax = max( NN(j), 2 ) and lg = log base 2.
*> Workspace.
*> \endverbatim
*>
+*> \param[out] LIWORK
+*> \verbatim
+*> LIWORK is INTEGER
+*> The number of entries in IWORK. This must be at least
+*> 6 + 6*Nmax + 5 * Nmax * lg Nmax
+*> where Nmax = max( NN(j), 2 ) and lg = log base 2.
+*> \endverbatim
+*>
*> \param[out] RESULT
*> \verbatim
*> RESULT is REAL array, dimension (26)
diff --git a/TESTING/EIG/sdrgvx.f b/TESTING/EIG/sdrgvx.f
index d6ffb42a..d214e4ce 100644
--- a/TESTING/EIG/sdrgvx.f
+++ b/TESTING/EIG/sdrgvx.f
@@ -230,9 +230,9 @@
*> S is REAL array, dimension (N)
*> \endverbatim
*>
-*> \param[out] DTRU
+*> \param[out] STRU
*> \verbatim
-*> DTRU is REAL array, dimension (N)
+*> STRU is REAL array, dimension (N)
*> \endverbatim
*>
*> \param[out] DIF
diff --git a/TESTING/EIG/sdrves.f b/TESTING/EIG/sdrves.f
index e17ec3a4..ad3d1784 100644
--- a/TESTING/EIG/sdrves.f
+++ b/TESTING/EIG/sdrves.f
@@ -328,6 +328,11 @@
*> IWORK is INTEGER array, dimension (max(NN))
*> \endverbatim
*>
+*> \param[out] BWORK
+*> \verbatim
+*> BWORK is LOGICAL array, dimension (max(NN))
+*> \endverbatim
+*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/TESTING/EIG/sdrvsx.f b/TESTING/EIG/sdrvsx.f
index 52db48d0..ad9355a3 100644
--- a/TESTING/EIG/sdrvsx.f
+++ b/TESTING/EIG/sdrvsx.f
@@ -402,6 +402,11 @@
*> IWORK is INTEGER array, dimension (max(NN)*max(NN))
*> \endverbatim
*>
+*> \param[out] BWORK
+*> \verbatim
+*> BWORK is LOGICAL array, dimension (max(NN))
+*> \endverbatim
+*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/TESTING/EIG/sdrvvx.f b/TESTING/EIG/sdrvvx.f
index 0a54ebe9..28b8b7bd 100644
--- a/TESTING/EIG/sdrvvx.f
+++ b/TESTING/EIG/sdrvvx.f
@@ -431,6 +431,18 @@
*> RCONDE.
*> \endverbatim
*>
+*> \param[out] SCALE
+*> \verbatim
+*> SCALE is REAL array, dimension (N)
+*> Holds information describing balancing of matrix.
+*> \endverbatim
+*>
+*> \param[out] SCALE1
+*> \verbatim
+*> SCALE1 is REAL array, dimension (N)
+*> Holds information describing balancing of matrix.
+*> \endverbatim
+*>
*> \param[out] RESULT
*> \verbatim
*> RESULT is REAL array, dimension (11)
diff --git a/TESTING/EIG/slatb9.f b/TESTING/EIG/slatb9.f
index db2f8307..7e6f2818 100644
--- a/TESTING/EIG/slatb9.f
+++ b/TESTING/EIG/slatb9.f
@@ -44,6 +44,10 @@
*> IMAT is INTEGER
*> An integer key describing which matrix to generate for this
*> path.
+*> = 1: A: diagonal, B: upper triangular
+*> = 2: A: upper triangular, B: upper triangular
+*> = 3: A: lower triangular, B: upper triangular
+*> Else: A: general dense, B: general dense
*> \endverbatim
*>
*> \param[in] M
@@ -52,6 +56,11 @@
*> The number of rows in the matrix to be generated.
*> \endverbatim
*>
+*> \param[in] P
+*> \verbatim
+*> P is INTEGER
+*> \endverbatim
+*>
*> \param[in] N
*> \verbatim
*> N is INTEGER
@@ -67,15 +76,27 @@
*> = 'N': nonsymmetric matrix.
*> \endverbatim
*>
-*> \param[out] KL
+*> \param[out] KLA
*> \verbatim
-*> KL is INTEGER
+*> KLA is INTEGER
*> The lower band width of the matrix to be generated.
*> \endverbatim
*>
-*> \param[out] KU
+*> \param[out] KUA
*> \verbatim
-*> KU is INTEGER
+*> KUA is INTEGER
+*> The upper band width of the matrix to be generated.
+*> \endverbatim
+*>
+*> \param[out] KLB
+*> \verbatim
+*> KLB is INTEGER
+*> The lower band width of the matrix to be generated.
+*> \endverbatim
+*>
+*> \param[out] KUB
+*> \verbatim
+*> KUA is INTEGER
*> The upper band width of the matrix to be generated.
*> \endverbatim
*>
@@ -87,21 +108,48 @@
*> value.
*> \endverbatim
*>
-*> \param[out] MODE
+*> \param[out] BNORM
+*> \verbatim
+*> BNORM is REAL
+*> The desired norm of the matrix to be generated. The diagonal
+*> matrix of singular values or eigenvalues is scaled by this
+*> value.
+*> \endverbatim
+*>
+*> \param[out] MODEA
+*> \verbatim
+*> MODEA is INTEGER
+*> A key indicating how to choose the vector of eigenvalues.
+*> \endverbatim
+*>
+*> \param[out] MODEB
*> \verbatim
-*> MODE is INTEGER
+*> MODEB is INTEGER
*> A key indicating how to choose the vector of eigenvalues.
*> \endverbatim
*>
-*> \param[out] CNDNUM
+*> \param[out] CNDNMA
*> \verbatim
-*> CNDNUM is REAL
+*> CNDNMA is REAL
*> The desired condition number.
*> \endverbatim
*>
-*> \param[out] DIST
+*> \param[out] CNDNMB
+*> \verbatim
+*> CNDNMB is REAL
+*> The desired condition number.
+*> \endverbatim
+*>
+*> \param[out] DISTA
+*> \verbatim
+*> DISTA is CHARACTER*1
+*> The type of distribution to be used by the random number
+*> generator.
+*> \endverbatim
+*>
+*> \param[out] DISTB
*> \verbatim
-*> DIST is CHARACTER*1
+*> DISTB is CHARACTER*1
*> The type of distribution to be used by the random number
*> generator.
*> \endverbatim
diff --git a/TESTING/EIG/ssxt1.f b/TESTING/EIG/ssxt1.f
index edbc641d..853d30b1 100644
--- a/TESTING/EIG/ssxt1.f
+++ b/TESTING/EIG/ssxt1.f
@@ -40,9 +40,9 @@
* Arguments
* =========
*
-*> \param[in] ITYPE
+*> \param[in] IJOB
*> \verbatim
-*> ITYPE is INTEGER
+*> IJOB is INTEGER
*> Specifies the type of tests to be performed. (See above.)
*> \endverbatim
*>
diff --git a/TESTING/EIG/zchkbd.f b/TESTING/EIG/zchkbd.f
index 297540f2..f38e29e5 100644
--- a/TESTING/EIG/zchkbd.f
+++ b/TESTING/EIG/zchkbd.f
@@ -317,9 +317,9 @@
*> (LDPT,max(min(MVAL(j),NVAL(j))))
*> \endverbatim
*>
-*> \param[out] V
+*> \param[out] VT
*> \verbatim
-*> V is COMPLEX*16 array, dimension
+*> VT is COMPLEX*16 array, dimension
*> (LDPT,max(min(MVAL(j),NVAL(j))))
*> \endverbatim
*>
diff --git a/TESTING/EIG/zchkgg.f b/TESTING/EIG/zchkgg.f
index f919ee74..3ea100f0 100644
--- a/TESTING/EIG/zchkgg.f
+++ b/TESTING/EIG/zchkgg.f
@@ -439,9 +439,9 @@
*> matrices in S1 and P1.
*> \endverbatim
*>
-*> \param[out] EVEZTR
+*> \param[out] EVECTR
*> \verbatim
-*> EVEZTR is COMPLEX*16 array, dimension (LDU, max(NN))
+*> EVECTR is COMPLEX*16 array, dimension (LDU, max(NN))
*> The (upper triangular) right eigenvector matrix for the
*> matrices in S1 and P1.
*> \endverbatim
diff --git a/TESTING/EIG/zchkhb.f b/TESTING/EIG/zchkhb.f
index 3e37f7cf..72103636 100644
--- a/TESTING/EIG/zchkhb.f
+++ b/TESTING/EIG/zchkhb.f
@@ -185,7 +185,7 @@
*>
*> \param[in,out] A
*> \verbatim
-*> A is DOUBLE PRECISION array, dimension
+*> A is COMPLEX*16 array, dimension
*> (LDA, max(NN))
*> Used to hold the matrix whose eigenvalues are to be
*> computed.
@@ -214,7 +214,7 @@
*>
*> \param[out] U
*> \verbatim
-*> U is DOUBLE PRECISION array, dimension (LDU, max(NN))
+*> U is COMPLEX*16 array, dimension (LDU, max(NN))
*> Used to hold the unitary matrix computed by ZHBTRD.
*> \endverbatim
*>
@@ -227,7 +227,7 @@
*>
*> \param[out] WORK
*> \verbatim
-*> WORK is DOUBLE PRECISION array, dimension (LWORK)
+*> WORK is COMPLEX*16 array, dimension (LWORK)
*> \endverbatim
*>
*> \param[in] LWORK
@@ -237,6 +237,11 @@
*> max( LDA+1, max(NN)+1 )*max(NN).
*> \endverbatim
*>
+*> \param[out] RWORK
+*> \verbatim
+*> RWORK is DOUBLE PRECISION array
+*> \endverbatim
+*>
*> \param[out] RESULT
*> \verbatim
*> RESULT is DOUBLE PRECISION array, dimension (4)
diff --git a/TESTING/EIG/zchkst.f b/TESTING/EIG/zchkst.f
index 00d7271e..0e0b8dbb 100644
--- a/TESTING/EIG/zchkst.f
+++ b/TESTING/EIG/zchkst.f
@@ -387,6 +387,64 @@
*> eigenvalues in D3 correspond with the matrix in A.
*> \endverbatim
*>
+*> \param[out] D4
+*> \verbatim
+*> D4 is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> The eigenvalues of A, as computed by ZPTEQR(V).
+*> ZPTEQR factors S as Z4 D4 Z4*
+*> On exit, the eigenvalues in D4 correspond with the matrix in A.
+*> \endverbatim
+*>
+*> \param[out] D5
+*> \verbatim
+*> D5 is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> The eigenvalues of A, as computed by ZPTEQR(N)
+*> when Z is not computed. On exit, the
+*> eigenvalues in D4 correspond with the matrix in A.
+*> \endverbatim
+*>
+*> \param[out] WA1
+*> \verbatim
+*> WA1 is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> All eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by DSTEBZ.
+*> \endverbatim
+*>
+*> \param[out] WA2
+*> \verbatim
+*> WA2 is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> Selected eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by DSTEBZ.
+*> Choose random values for IL and IU, and ask for the
+*> IL-th through IU-th eigenvalues.
+*> \endverbatim
+*>
+*> \param[out] WA3
+*> \verbatim
+*> WA3 is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> Selected eigenvalues of A, computed to high
+*> absolute accuracy, with different range options.
+*> as computed by DSTEBZ.
+*> Determine the values VL and VU of the IL-th and IU-th
+*> eigenvalues and ask for all eigenvalues in this range.
+*> \endverbatim
+*>
+*> \param[out] WR
+*> \verbatim
+*> WR is DOUBLE PRECISION array of
+*> dimension( max(NN) )
+*> All eigenvalues of A, computed to high
+*> absolute accuracy, with different options.
+*> as computed by DSTEBZ.
+*> \endverbatim
+*>
*> \param[out] U
*> \verbatim
*> U is COMPLEX*16 array of
@@ -455,15 +513,26 @@
*> \param[out] IWORK
*> \verbatim
*> IWORK is INTEGER array,
-*> dimension (6 + 6*Nmax + 5 * Nmax * lg Nmax )
-*> where Nmax = max( NN(j), 2 ) and lg = log base 2.
*> Workspace.
*> \endverbatim
*>
+*> \param[out] LIWORK
+*> \verbatim
+*> LIWORK is INTEGER
+*> The number of entries in IWORK. This must be at least
+*> 6 + 6*Nmax + 5 * Nmax * lg Nmax
+*> where Nmax = max( NN(j), 2 ) and lg = log base 2.
+*> \endverbatim
+*>
*> \param[out] RWORK
*> \verbatim
-*> RWORK is DOUBLE PRECISION array of
-*> dimension( ??? )
+*> RWORK is DOUBLE PRECISION array
+*> \endverbatim
+*>
+*> \param[in] LRWORK
+*> \verbatim
+*> LRWORK is INTEGER
+*> The number of entries in LRWORK (dimension( ??? )
*> \endverbatim
*>
*> \param[out] RESULT
diff --git a/TESTING/EIG/zdrgvx.f b/TESTING/EIG/zdrgvx.f
index 86e32712..99fe8597 100644
--- a/TESTING/EIG/zdrgvx.f
+++ b/TESTING/EIG/zdrgvx.f
@@ -262,9 +262,9 @@
*> LIWORK is INTEGER
*> Leading dimension of IWORK. LIWORK >= N+2.
*> \endverbatim
-*> \verbatim
*>
*> \param[out] RESULT
+*> \verbatim
*> RESULT is DOUBLE PRECISION array, dimension (4)
*> \endverbatim
*>
diff --git a/TESTING/EIG/zdrvbd.f b/TESTING/EIG/zdrvbd.f
index fa6b8e04..d88ceb0b 100644
--- a/TESTING/EIG/zdrvbd.f
+++ b/TESTING/EIG/zdrvbd.f
@@ -181,13 +181,6 @@
*> or the size of the matrix. It must be at least zero.
*> \endverbatim
*>
-*> \param[in] NOUNIT
-*> \verbatim
-*> NOUNIT is INTEGER
-*> The FORTRAN unit number for printing out error messages
-*> (e.g., if a routine returns IINFO not equal to 0.)
-*> \endverbatim
-*>
*> \param[out] A
*> \verbatim
*> A is COMPLEX*16 array, dimension (LDA,max(NN))
@@ -297,12 +290,11 @@
*> IWORK is INTEGER array, dimension at least 8*min(M,N)
*> \endverbatim
*>
-*> \param[out] RESULT
+*> \param[in] NOUNIT
*> \verbatim
-*> RESULT is DOUBLE PRECISION array, dimension (7)
-*> The values computed by the 7 tests described above.
-*> The values are currently limited to 1/ULP, to avoid
-*> overflow.
+*> NOUNIT is INTEGER
+*> The FORTRAN unit number for printing out error messages
+*> (e.g., if a routine returns IINFO not equal to 0.)
*> \endverbatim
*>
*> \param[out] INFO
diff --git a/TESTING/EIG/zdrves.f b/TESTING/EIG/zdrves.f
index ab14b840..9f6f1423 100644
--- a/TESTING/EIG/zdrves.f
+++ b/TESTING/EIG/zdrves.f
@@ -318,6 +318,11 @@
*> IWORK is INTEGER array, dimension (max(NN))
*> \endverbatim
*>
+*> \param[out] BWORK
+*> \verbatim
+*> BWORK is LOGICAL array, dimension (max(NN))
+*> \endverbatim
+*>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER
diff --git a/TESTING/EIG/zdrvvx.f b/TESTING/EIG/zdrvvx.f
index e1125b7a..e9794cf2 100644
--- a/TESTING/EIG/zdrvvx.f
+++ b/TESTING/EIG/zdrvvx.f
@@ -361,12 +361,60 @@
*> Leading dimension of LRE. Must be at least max(1,max(NN,12))
*> \endverbatim
*>
-*> \param[out] RESULT
+*> \param[out] RCONDV
*> \verbatim
-*> RESULT is DOUBLE PRECISION array, dimension (11)
-*> The values computed by the seven tests described above.
-*> The values are currently limited to 1/ulp, to avoid
-*> overflow.
+*> RCONDV is DOUBLE PRECISION array, dimension (N)
+*> RCONDV holds the computed reciprocal condition numbers
+*> for eigenvectors.
+*> \endverbatim
+*>
+*> \param[out] RCNDV1
+*> \verbatim
+*> RCNDV1 is DOUBLE PRECISION array, dimension (N)
+*> RCNDV1 holds more computed reciprocal condition numbers
+*> for eigenvectors.
+*> \endverbatim
+*>
+*> \param[in] RCDVIN
+*> \verbatim
+*> RCDVIN is DOUBLE PRECISION array, dimension (N)
+*> When COMP = .TRUE. RCDVIN holds the precomputed reciprocal
+*> condition numbers for eigenvectors to be compared with
+*> RCONDV.
+*> \endverbatim
+*>
+*> \param[out] RCONDE
+*> \verbatim
+*> RCONDE is DOUBLE PRECISION array, dimension (N)
+*> RCONDE holds the computed reciprocal condition numbers
+*> for eigenvalues.
+*> \endverbatim
+*>
+*> \param[out] RCNDE1
+*> \verbatim
+*> RCNDE1 is DOUBLE PRECISION array, dimension (N)
+*> RCNDE1 holds more computed reciprocal condition numbers
+*> for eigenvalues.
+*> \endverbatim
+*>
+*> \param[in] RCDEIN
+*> \verbatim
+*> RCDEIN is DOUBLE PRECISION array, dimension (N)
+*> When COMP = .TRUE. RCDEIN holds the precomputed reciprocal
+*> condition numbers for eigenvalues to be compared with
+*> RCONDE.
+*> \endverbatim
+*>
+*> \param[out] SCALE
+*> \verbatim
+*> SCALE is DOUBLE PRECISION array, dimension (N)
+*> Holds information describing balancing of matrix.
+*> \endverbatim
+*>
+*> \param[out] SCALE1
+*> \verbatim
+*> SCALE1 is DOUBLE PRECISION array, dimension (N)
+*> Holds information describing balancing of matrix.
*> \endverbatim
*>
*> \param[out] WORK
@@ -374,6 +422,14 @@
*> WORK is COMPLEX*16 array, dimension (NWORK)
*> \endverbatim
*>
+*> \param[out] RESULT
+*> \verbatim
+*> RESULT is DOUBLE PRECISION array, dimension (11)
+*> The values computed by the seven tests described above.
+*> The values are currently limited to 1/ulp, to avoid
+*> overflow.
+*> \endverbatim
+*>
*> \param[in] NWORK
*> \verbatim
*> NWORK is INTEGER
diff --git a/TESTING/EIG/zget22.f b/TESTING/EIG/zget22.f
index 804b9352..9f2f1cb7 100644
--- a/TESTING/EIG/zget22.f
+++ b/TESTING/EIG/zget22.f
@@ -121,6 +121,13 @@
*> RWORK is DOUBLE PRECISION array, dimension (N)
*> \endverbatim
*>
+*> \param[out] RESULT
+*> \verbatim
+*> RESULT is DOUBLE PRECISION array, dimension (2)
+*> RESULT(1) = | A E - E W | / ( |A| |E| ulp )
+*> RESULT(2) = max | m-norm(E(j)) - 1 | / ( n ulp )
+*> \endverbatim
+*>
*
* Authors
* =======
diff --git a/TESTING/EIG/zlctsx.f b/TESTING/EIG/zlctsx.f
index 756e79e0..7624ed5f 100644
--- a/TESTING/EIG/zlctsx.f
+++ b/TESTING/EIG/zlctsx.f
@@ -33,13 +33,16 @@
*> \param[in] ALPHA
*> \verbatim
*> ALPHA is COMPLEX*16
+*> \endverbatim
+*>
*> \param[in] BETA
*> \verbatim
*> BETA is COMPLEX*16
+*> \endverbatim
+*> \verbatim
*> parameters to decide whether the pair (ALPHA, BETA) is
*> selected.
*> \endverbatim
-*> \endverbatim
*>
*
* Authors
diff --git a/TESTING/LIN/Makefile b/TESTING/LIN/Makefile
index 4e531708..7c10bb2c 100644
--- a/TESTING/LIN/Makefile
+++ b/TESTING/LIN/Makefile
@@ -241,46 +241,76 @@ proto-double: ../xlintstds ../xlintstrfd
proto-complex: ../xlintstrfc
proto-complex16: ../xlintstzc ../xlintstrfz
-../xlintsts : $(ALINTST) $(SLINTST) $(SCLNTST) ../../$(LAPACKLIB)
+xlintsts : $(ALINTST) $(SLINTST) $(SCLNTST) ../../$(LAPACKLIB)
$(LOADER) $(LOADOPTS) $(ALINTST) $(SCLNTST) $(SLINTST) \
- ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o xlintsts && mv xlintsts $@
+ ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o $@
-../xlintstc : $(ALINTST) $(CLINTST) $(SCLNTST) ../../$(LAPACKLIB)
+xlintstc : $(ALINTST) $(CLINTST) $(SCLNTST) ../../$(LAPACKLIB)
$(LOADER) $(LOADOPTS) $(ALINTST) $(SCLNTST) $(CLINTST) \
- ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o xlintstc && mv xlintstc $@
+ ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o $@
-../xlintstd : $(ALINTST) $(DLINTST) $(DZLNTST) ../../$(LAPACKLIB)
+xlintstd : $(ALINTST) $(DLINTST) $(DZLNTST) ../../$(LAPACKLIB)
$(LOADER) $(LOADOPTS) $^ \
- ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o xlintstd && mv xlintstd $@
+ ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o $@
-../xlintstz : $(ALINTST) $(ZLINTST) $(DZLNTST) ../../$(LAPACKLIB)
+xlintstz : $(ALINTST) $(ZLINTST) $(DZLNTST) ../../$(LAPACKLIB)
$(LOADER) $(LOADOPTS) $(ALINTST) $(DZLNTST) $(ZLINTST) \
- ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o xlintstz && mv xlintstz $@
+ ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o $@
-../xlintstds : $(DSLINTST) ../../$(LAPACKLIB)
+xlintstds : $(DSLINTST) ../../$(LAPACKLIB)
$(LOADER) $(LOADOPTS) $(DSLINTST) \
- ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstds && mv xlintstds $@
+ ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@
-../xlintstzc : $(ZCLINTST) ../../$(LAPACKLIB)
+xlintstzc : $(ZCLINTST) ../../$(LAPACKLIB)
$(LOADER) $(LOADOPTS) $(ZCLINTST) \
- ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstzc && mv xlintstzc $@
+ ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@
-../xlintstrfs : $(SLINTSTRFP) ../../$(LAPACKLIB)
+xlintstrfs : $(SLINTSTRFP) ../../$(LAPACKLIB)
$(LOADER) $(LOADOPTS) $(SLINTSTRFP) \
- ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstrfs && mv xlintstrfs $@
+ ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@
-../xlintstrfd : $(DLINTSTRFP) ../../$(LAPACKLIB)
+xlintstrfd : $(DLINTSTRFP) ../../$(LAPACKLIB)
$(LOADER) $(LOADOPTS) $(DLINTSTRFP) \
- ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstrfd && mv xlintstrfd $@
+ ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@
-../xlintstrfc : $(CLINTSTRFP) ../../$(LAPACKLIB)
+xlintstrfc : $(CLINTSTRFP) ../../$(LAPACKLIB)
$(LOADER) $(LOADOPTS) $(CLINTSTRFP) \
- ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstrfc && mv xlintstrfc $@
+ ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@
-../xlintstrfz : $(ZLINTSTRFP) ../../$(LAPACKLIB)
+xlintstrfz : $(ZLINTSTRFP) ../../$(LAPACKLIB)
$(LOADER) $(LOADOPTS) $(ZLINTSTRFP) \
- ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o xlintstrfz && mv xlintstrfz $@
+ ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@
+../xlintsts: xlintsts
+ mv xlintsts $@
+
+../xlintstc: xlintstc
+ mv xlintstc $@
+
+../xlintstz: xlintstz
+ mv xlintstz $@
+
+../xlintstd: xlintstd
+ mv xlintstd $@
+
+../xlintstds: xlintstds
+ mv xlintstds $@
+
+../xlintstzc: xlintstzc
+ mv xlintstzc $@
+
+../xlintstrfs: xlintstrfs
+ mv xlintstrfs $@
+
+../xlintstrfc: xlintstrfc
+ mv xlintstrfc $@
+
+../xlintstrfd: xlintstrfd
+ mv xlintstrfd $@
+
+../xlintstrfz: xlintstrfz
+ mv xlintstrfz $@
+
$(ALINTST): $(FRC)
$(SCLNTST): $(FRC)
$(DZLNTST): $(FRC)
diff --git a/TESTING/LIN/cchkge.f b/TESTING/LIN/cchkge.f
index 926339cd..679e133e 100644
--- a/TESTING/LIN/cchkge.f
+++ b/TESTING/LIN/cchkge.f
@@ -95,13 +95,6 @@
*> The values of the number of right hand sides NRHS.
*> \endverbatim
*>
-*> \param[in] NRHS
-*> \verbatim
-*> NRHS is INTEGER
-*> The number of right hand side vectors to be generated for
-*> each linear system.
-*> \endverbatim
-*>
*> \param[in] THRESH
*> \verbatim
*> THRESH is REAL
diff --git a/TESTING/LIN/cdrvgt.f b/TESTING/LIN/cdrvgt.f
index 044f0520..7b671f41 100644
--- a/TESTING/LIN/cdrvgt.f
+++ b/TESTING/LIN/cdrvgt.f
@@ -57,6 +57,12 @@
*> The values of the matrix dimension N.
*> \endverbatim
*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is INTEGER
+*> The number of right hand sides, NRHS >= 0.
+*> \endverbatim
+*>
*> \param[in] THRESH
*> \verbatim
*> THRESH is REAL
diff --git a/TESTING/LIN/cdrvrf2.f b/TESTING/LIN/cdrvrf2.f
index 542bb85c..92942e7a 100644
--- a/TESTING/LIN/cdrvrf2.f
+++ b/TESTING/LIN/cdrvrf2.f
@@ -70,9 +70,9 @@
*> AP is COMPLEX array, dimension ((NMAX*(NMAX+1))/2).
*> \endverbatim
*>
-*> \param[out] A2
+*> \param[out] ASAV
*> \verbatim
-*> A2 is COMPLEX6 array, dimension (LDA,NMAX)
+*> ASAV is COMPLEX6 array, dimension (LDA,NMAX)
*> \endverbatim
*>
*
diff --git a/TESTING/LIN/cebchvxx.f b/TESTING/LIN/cebchvxx.f
index 91002573..4c2096f4 100644
--- a/TESTING/LIN/cebchvxx.f
+++ b/TESTING/LIN/cebchvxx.f
@@ -8,84 +8,103 @@
* Definition
* ==========
*
-* SUBROUTINE CEBCHVXX( THRESH, PATH )
-*
-* .. Scalar Arguments ..
-* REAL THRESH
-* CHARACTER*3 PATH
-*
+* SUBROUTINE CEBCHVXX( THRESH, PATH )
+*
+* .. Scalar Arguments ..
+* REAL THRESH
+* CHARACTER*3 PATH
+* ..
+*
* Purpose
-* =======
+* ======
*
*>\details \b Purpose:
*>\verbatim
-*> Purpose
-*> ======
+*> CEBCHVXX will run CGESVXX on a series of Hilbert matrices and then
+*> compare the error bounds returned by CGESVXX to see if the returned
+*> answer indeed falls within those bounds.
*>
-*> CEBCHVXX will run CGESVXX on a series of Hilbert matrices and then
-*> compare the error bounds returned by CGESVXX to see if the returned
-*> answer indeed falls within those bounds.
+*> Eight test ratios will be computed. The tests will pass if they are .LT.
+*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS).
+*> If that value is .LE. to the component wise reciprocal condition number,
+*> it uses the guaranteed case, other wise it uses the unguaranteed case.
*>
-*> Eight test ratios will be computed. The tests will pass if they are .LT.
-*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS).
-*> If that value is .LE. to the component wise reciprocal condition number,
-*> it uses the guaranteed case, other wise it uses the unguaranteed case.
+*> Test ratios:
+*> Let Xc be X_computed and Xt be X_truth.
+*> The norm used is the infinity norm.
*>
-*> Test ratios:
-*> Let Xc be X_computed and Xt be X_truth.
-*> The norm used is the infinity norm.
-
-*> Let A be the guaranteed case and B be the unguaranteed case.
+*> Let A be the guaranteed case and B be the unguaranteed case.
+*>
+*> 1. Normwise guaranteed forward error bound.
+*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and
+*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS.
+*> If these conditions are met, the test ratio is set to be
+*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
+*> B: For this case, CGESVXX should just return 1. If it is less than
+*> one, treat it the same as in 1A. Otherwise it fails. (Set test
+*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?)
*>
-*> 1. Normwise guaranteed forward error bound.
-*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and
-*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS.
-*> If these conditions are met, the test ratio is set to be
-*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
-*> B: For this case, CGESVXX should just return 1. If it is less than
-*> one, treat it the same as in 1A. Otherwise it fails. (Set test
-*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?)
+*> 2. Componentwise guaranteed forward error bound.
+*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i )
+*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS.
+*> If these conditions are met, the test ratio is set to be
+*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
+*> B: Same as normwise test ratio.
*>
-*> 2. Componentwise guaranteed forward error bound.
-*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i )
-*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS.
-*> If these conditions are met, the test ratio is set to be
-*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
-*> B: Same as normwise test ratio.
+*> 3. Backwards error.
+*> A: The test ratio is set to BERR/EPS.
+*> B: Same test ratio.
*>
-*> 3. Backwards error.
-*> A: The test ratio is set to BERR/EPS.
-*> B: Same test ratio.
+*> 4. Reciprocal condition number.
+*> A: A condition number is computed with Xt and compared with the one
+*> returned from CGESVXX. Let RCONDc be the RCOND returned by CGESVXX
+*> and RCONDt be the RCOND from the truth value. Test ratio is set to
+*> MAX(RCONDc/RCONDt, RCONDt/RCONDc).
+*> B: Test ratio is set to 1 / (EPS * RCONDc).
*>
-*> 4. Reciprocal condition number.
-*> A: A condition number is computed with Xt and compared with the one
-*> returned from CGESVXX. Let RCONDc be the RCOND returned by CGESVXX
-*> and RCONDt be the RCOND from the truth value. Test ratio is set to
-*> MAX(RCONDc/RCONDt, RCONDt/RCONDc).
-*> B: Test ratio is set to 1 / (EPS * RCONDc).
+*> 5. Reciprocal normwise condition number.
+*> A: The test ratio is set to
+*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )).
+*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )).
*>
-*> 5. Reciprocal normwise condition number.
-*> A: The test ratio is set to
-*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )).
-*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )).
+*> 6. Reciprocal componentwise condition number.
+*> A: Test ratio is set to
+*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )).
+*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )).
*>
-*> 6. Reciprocal componentwise condition number.
-*> A: Test ratio is set to
-*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )).
-*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )).
+*> .. Parameters ..
+*> NMAX is determined by the largest number in the inverse of the hilbert
+*> matrix. Precision is exhausted when the largest entry in it is greater
+*> than 2 to the power of the number of bits in the fraction of the data
+*> type used plus one, which is 24 for single precision.
+*> NMAX should be 6 for single and 11 for double.
+*> \endverbatim
*>
-*> .. Parameters ..
-*> NMAX is determined by the largest number in the inverse of the hilbert
-*> matrix. Precision is exhausted when the largest entry in it is greater
-*> than 2 to the power of the number of bits in the fraction of the data
-*> type used plus one, which is 24 for single precision.
-*> NMAX should be 6 for single and 11 for double.
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex_lin
+*
+* =====================================================================
+ SUBROUTINE CEBCHVXX( THRESH, PATH )
+ IMPLICIT NONE
+* .. Scalar Arguments ..
+ REAL THRESH
+ CHARACTER*3 PATH
INTEGER NMAX, NPARAMS, NERRBND, NTESTS, KL, KU
PARAMETER (NMAX = 6, NPARAMS = 2, NERRBND = 3,
$ NTESTS = 6)
-*> .. Local Scalars ..
+* .. Local Scalars ..
INTEGER N, NRHS, INFO, I ,J, k, NFAIL, LDA,
$ N_AUX_TESTS, LDAB, LDAFB
CHARACTER FACT, TRANS, UPLO, EQUED
@@ -100,7 +119,7 @@
$ CONDTHRESH, ERRTHRESH
COMPLEX ZDUM
-*> .. Local Arrays ..
+* .. Local Arrays ..
REAL TSTRAT(NTESTS), RINV(NMAX), PARAMS(NPARAMS),
$ S(NMAX), R(NMAX),C(NMAX),RWORK(3*NMAX),
$ DIFF(NMAX, NMAX),
@@ -113,30 +132,30 @@
$ ABCOPY( (NMAX-1)+(NMAX-1)+1, NMAX ),
$ AFB( 2*(NMAX-1)+(NMAX-1)+1, NMAX )
-*> .. External Functions ..
+* .. External Functions ..
REAL SLAMCH
-*> .. External Subroutines ..
+* .. External Subroutines ..
EXTERNAL CLAHILB, CGESVXX, CSYSVXX, CPOSVXX,
$ CGBSVXX, CLACPY, LSAMEN
LOGICAL LSAMEN
-*> .. Intrinsic Functions ..
+* .. Intrinsic Functions ..
INTRINSIC SQRT, MAX, ABS, REAL, AIMAG
-*> .. Statement Functions ..
+* .. Statement Functions ..
REAL CABS1
-*> ..
-*> .. Statement Function Definitions ..
+* ..
+* .. Statement Function Definitions ..
CABS1( ZDUM ) = ABS( REAL( ZDUM ) ) + ABS( AIMAG( ZDUM ) )
-*> .. Parameters ..
+* .. Parameters ..
INTEGER NWISE_I, CWISE_I
PARAMETER (NWISE_I = 1, CWISE_I = 1)
INTEGER BND_I, COND_I
PARAMETER (BND_I = 2, COND_I = 3)
-*> Create the loop to test out the Hilbert matrices
+* Create the loop to test out the Hilbert matrices
FACT = 'E'
UPLO = 'U'
@@ -150,7 +169,7 @@
LDAFB = 2*(NMAX-1)+(NMAX-1)+1
C2 = PATH( 2: 3 )
-*> Main loop to test the different Hilbert Matrices.
+* Main loop to test the different Hilbert Matrices.
printed_guide = .false.
@@ -163,15 +182,15 @@
NRHS = n
M = MAX(SQRT(REAL(N)), 10.0)
-*> Generate the Hilbert matrix, its inverse, and the
-*> right hand side, all scaled by the LCM(1,..,2N-1).
+* Generate the Hilbert matrix, its inverse, and the
+* right hand side, all scaled by the LCM(1,..,2N-1).
CALL CLAHILB(N, N, A, LDA, INVHILB, LDA, B,
$ LDA, WORK, INFO, PATH)
-*> Copy A into ACOPY.
+* Copy A into ACOPY.
CALL CLACPY('ALL', N, N, A, NMAX, ACOPY, NMAX)
-*> Store A in band format for GB tests
+* Store A in band format for GB tests
DO J = 1, N
DO I = 1, KL+KU+1
AB( I, J ) = (0.0E+0,0.0E+0)
@@ -183,7 +202,7 @@
END DO
END DO
-*> Copy AB into ABCOPY.
+* Copy AB into ABCOPY.
DO J = 1, N
DO I = 1, KL+KU+1
ABCOPY( I, J ) = (0.0E+0,0.0E+0)
@@ -191,7 +210,7 @@
END DO
CALL CLACPY('ALL', KL+KU+1, N, AB, LDAB, ABCOPY, LDAB)
-*> Call C**SVXX with default PARAMS and N_ERR_BND = 3.
+* Call C**SVXX with default PARAMS and N_ERR_BND = 3.
IF ( LSAMEN( 2, C2, 'SY' ) ) THEN
CALL CSYSVXX(FACT, UPLO, N, NRHS, ACOPY, LDA, AF, LDA,
$ IPIV, EQUED, S, B, LDA, X, LDA, ORCOND,
@@ -237,14 +256,14 @@
END IF
END IF
-*> Calculating the difference between C**SVXX's X and the true X.
+* Calculating the difference between C**SVXX's X and the true X.
DO I = 1,N
DO J =1,NRHS
DIFF(I,J) = X(I,J) - INVHILB(I,J)
END DO
END DO
-*> Calculating the RCOND
+* Calculating the RCOND
RNORM = 0
RINORM = 0
IF ( LSAMEN( 2, C2, 'PO' ) .OR. LSAMEN( 2, C2, 'SY' ) .OR.
@@ -276,7 +295,7 @@
RNORM = RNORM / CABS1(A(1, 1))
RCOND = 1.0/(RNORM * RINORM)
-*> Calculating the R for normwise rcond.
+* Calculating the R for normwise rcond.
DO I = 1, N
RINV(I) = 0.0
END DO
@@ -286,7 +305,7 @@
END DO
END DO
-*> Calculating the Normwise rcond.
+* Calculating the Normwise rcond.
RINORM = 0.0
DO I = 1, N
SUMRI = 0.0
@@ -453,7 +472,7 @@ c$$$ WRITE(*,*) 'Reciprocal condition number: ',ERRBND(NRHS,cwise_i,cond
c$$$ WRITE(*,*) 'Raw error estimate: ',ERRBND(NRHS,cwise_i,rawbnd_i)
c$$$ print *, 'Info: ', info
c$$$ WRITE(*,*)
-*> WRITE(*,*) 'TSTRAT: ',TSTRAT
+* WRITE(*,*) 'TSTRAT: ',TSTRAT
END DO
@@ -469,7 +488,7 @@ c$$$ WRITE(*,*)
9998 FORMAT( ' C', A2, 'SVXX: ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9997 FORMAT( ' C', A2, 'SVXX passed the tests of error bounds' )
-*> Test ratios.
+* Test ratios.
9996 FORMAT( 3X, I2, ': Normwise guaranteed forward error', / 5X,
$ 'Guaranteed case: if norm ( abs( Xc - Xt )',
$ ' / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ), then',
@@ -487,33 +506,3 @@ c$$$ WRITE(*,*)
$ ', ORCOND = ', G12.5, ', real RCOND = ', G12.5 )
END
-*>\endverbatim
-*
-* Arguments
-* =========
-*
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex_lin
-*
-* =====================================================================
- SUBROUTINE CEBCHVXX( THRESH, PATH )
-*
-* -- LAPACK test routine (input) --
-* -- LAPACK is a software package provided by Univ. of Tennessee, --
-* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
-* November 2011
-*
-* .. Scalar Arguments ..
- REAL THRESH
- CHARACTER*3 PATH
-*
diff --git a/TESTING/LIN/chet01.f b/TESTING/LIN/chet01.f
index 4f7d4fb2..8725f6f0 100644
--- a/TESTING/LIN/chet01.f
+++ b/TESTING/LIN/chet01.f
@@ -92,8 +92,10 @@
*> \verbatim
*> C is COMPLEX array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/LIN/chpt01.f b/TESTING/LIN/chpt01.f
index d1eddf0f..d3ae6e0a 100644
--- a/TESTING/LIN/chpt01.f
+++ b/TESTING/LIN/chpt01.f
@@ -80,8 +80,10 @@
*> \verbatim
*> C is COMPLEX array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/LIN/clahilb.f b/TESTING/LIN/clahilb.f
index d0f2e162..d140b3b0 100644
--- a/TESTING/LIN/clahilb.f
+++ b/TESTING/LIN/clahilb.f
@@ -11,46 +11,114 @@
* SUBROUTINE CLAHILB(N, NRHS, A, LDA, X, LDX, B, LDB, WORK,
* INFO, PATH)
*
-* ! .. Scalar Arguments ..
+* .. Scalar Arguments ..
* INTEGER T, N, NRHS, LDA, LDX, LDB, INFO
-* ! .. Array Arguments ..
+* .. Array Arguments ..
* REAL WORK(N)
* COMPLEX A(LDA,N), X(LDX, NRHS), B(LDB, NRHS)
* CHARACTER*3 PATH
-* ! ..
-* !
+* ..
+*
* Purpose
* =======
*
*>\details \b Purpose:
*>\verbatim
-! Purpose
-! =======
-!
-! CLAHILB generates an N by N scaled Hilbert matrix in A along with
-! NRHS right-hand sides in B and solutions in X such that A*X=B.
-!
-! The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all
-! entries are integers. The right-hand sides are the first NRHS
-! columns of M * the identity matrix, and the solutions are the
-! first NRHS columns of the inverse Hilbert matrix.
-!
-! The condition number of the Hilbert matrix grows exponentially with
-! its size, roughly as O(e ** (3.5*N)). Additionally, the inverse
-! Hilbert matrices beyond a relatively small dimension cannot be
-! generated exactly without extra precision. Precision is exhausted
-! when the largest entry in the inverse Hilbert matrix is greater than
-! 2 to the power of the number of bits in the fraction of the data type
-! used plus one, which is 24 for single precision.
-!
-! In single, the generated solution is exact for N <= 6 and has
-! small componentwise error for 7 <= N <= 11.
-!
+*>
+*> CLAHILB generates an N by N scaled Hilbert matrix in A along with
+*> NRHS right-hand sides in B and solutions in X such that A*X=B.
+*>
+*> The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all
+*> entries are integers. The right-hand sides are the first NRHS
+*> columns of M * the identity matrix, and the solutions are the
+*> first NRHS columns of the inverse Hilbert matrix.
+*>
+*> The condition number of the Hilbert matrix grows exponentially with
+*> its size, roughly as O(e ** (3.5*N)). Additionally, the inverse
+*> Hilbert matrices beyond a relatively small dimension cannot be
+*> generated exactly without extra precision. Precision is exhausted
+*> when the largest entry in the inverse Hilbert matrix is greater than
+*> 2 to the power of the number of bits in the fraction of the data type
+*> used plus one, which is 24 for single precision.
+*>
+*> In single, the generated solution is exact for N <= 6 and has
+*> small componentwise error for 7 <= N <= 11.
+*>
*>\endverbatim
*
* Arguments
* =========
*
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> The dimension of the matrix A.
+*> \endverbatim
+*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is NRHS
+*> The requested number of right-hand sides.
+*> \endverbatim
+*>
+*> \param[out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA, N)
+*> The generated scaled Hilbert matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= N.
+*> \endverbatim
+*>
+*> \param[out] X
+*> \verbatim
+*> X is COMPLEX array, dimension (LDX, NRHS)
+*> The generated exact solutions. Currently, the first NRHS
+*> columns of the inverse Hilbert matrix.
+*> \endverbatim
+*>
+*> \param[in] LDX
+*> \verbatim
+*> LDX is INTEGER
+*> The leading dimension of the array X. LDX >= N.
+*> \endverbatim
+*>
+*> \param[out] B
+*> \verbatim
+*> B is REAL array, dimension (LDB, NRHS)
+*> The generated right-hand sides. Currently, the first NRHS
+*> columns of LCM(1, 2, ..., 2*N-1) * the identity matrix.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> The leading dimension of the array B. LDB >= N.
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> = 1: N is too large; the data is still generated but may not
+*> be not exact.
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
+*> \param[in] PATH
+*> \verbatim
+*> PATH is CHARACTER*3
+*> The LAPACK path name.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -73,33 +141,32 @@
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011
*
-! .. Scalar Arguments ..
+* .. Scalar Arguments ..
INTEGER T, N, NRHS, LDA, LDX, LDB, INFO
-! .. Array Arguments ..
+* .. Array Arguments ..
REAL WORK(N)
COMPLEX A(LDA,N), X(LDX, NRHS), B(LDB, NRHS)
CHARACTER*3 PATH
-! ..
-!
-! =====================================================================
-
-! .. Local Scalars ..
+* ..
+*
+* =====================================================================
+* .. Local Scalars ..
INTEGER TM, TI, R
INTEGER M
INTEGER I, J
COMPLEX TMP
CHARACTER*2 C2
-
-! .. Parameters ..
-! NMAX_EXACT the largest dimension where the generated data is
-! exact.
-! NMAX_APPROX the largest dimension where the generated data has
-! a small componentwise relative error.
-! ??? complex uses how many bits ???
+* ..
+* .. Parameters ..
+* NMAX_EXACT the largest dimension where the generated data is
+* exact.
+* NMAX_APPROX the largest dimension where the generated data has
+* a small componentwise relative error.
+* ??? complex uses how many bits ???
INTEGER NMAX_EXACT, NMAX_APPROX, SIZE_D
PARAMETER (NMAX_EXACT = 6, NMAX_APPROX = 11, SIZE_D = 8)
-
-! d's are generated from random permuation of those eight elements.
+*
+* d's are generated from random permuation of those eight elements.
COMPLEX D1(8), D2(8), INVD1(8), INVD2(8)
DATA D1 /(-1,0),(0,1),(-1,-1),(0,-1),(1,0),(-1,1),(1,1),(1,-1)/
DATA D2 /(-1,0),(0,-1),(-1,1),(0,1),(1,0),(-1,-1),(1,-1),(1,1)/
@@ -108,18 +175,17 @@
$ (-.5,-.5),(.5,-.5),(.5,.5)/
DATA INVD2 /(-1,0),(0,1),(-.5,-.5),(0,-1),(1,0),
$ (-.5,.5),(.5,.5),(.5,-.5)/
-
-! ..
-! .. External Functions
+* ..
+* .. External Functions
EXTERNAL CLASET, LSAMEN
INTRINSIC REAL
LOGICAL LSAMEN
-! ..
-! .. Executable Statements ..
+* ..
+* .. Executable Statements ..
C2 = PATH( 2: 3 )
-!
-! Test the input arguments
-!
+*
+* Test the input arguments
+*
INFO = 0
IF (N .LT. 0 .OR. N .GT. NMAX_APPROX) THEN
INFO = -1
@@ -139,9 +205,9 @@
IF (N .GT. NMAX_EXACT) THEN
INFO = 1
END IF
-
-! Compute M = the LCM of the integers [1, 2*N-1]. The largest
-! reasonable N is small enough that integers suffice (up to N = 11).
+*
+* Compute M = the LCM of the integers [1, 2*N-1]. The largest
+* reasonable N is small enough that integers suffice (up to N = 11).
M = 1
DO I = 2, (2*N-1)
TM = M
@@ -154,9 +220,9 @@
END DO
M = (M / TI) * I
END DO
-
-! Generate the scaled Hilbert matrix in A
-! If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i*
+*
+* Generate the scaled Hilbert matrix in A
+* If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i*
IF ( LSAMEN( 2, C2, 'SY' ) ) THEN
DO J = 1, N
DO I = 1, N
@@ -172,22 +238,22 @@
END DO
END DO
END IF
-
-! Generate matrix B as simply the first NRHS columns of M * the
-! identity.
+*
+* Generate matrix B as simply the first NRHS columns of M * the
+* identity.
TMP = REAL(M)
CALL CLASET('Full', N, NRHS, (0.0,0.0), TMP, B, LDB)
-
-! Generate the true solutions in X. Because B = the first NRHS
-! columns of M*I, the true solutions are just the first NRHS columns
-! of the inverse Hilbert matrix.
+*
+* Generate the true solutions in X. Because B = the first NRHS
+* columns of M*I, the true solutions are just the first NRHS columns
+* of the inverse Hilbert matrix.
WORK(1) = N
DO J = 2, N
WORK(J) = ( ( (WORK(J-1)/(J-1)) * (J-1 - N) ) /(J-1) )
$ * (N +J -1)
END DO
-
-! If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i*
+*
+* If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i*
IF ( LSAMEN( 2, C2, 'SY' ) ) THEN
DO J = 1, NRHS
DO I = 1, N
@@ -208,4 +274,4 @@
END DO
END IF
END
-
+ \ No newline at end of file
diff --git a/TESTING/LIN/cpbt02.f b/TESTING/LIN/cpbt02.f
index 0e3b3445..de13ff0a 100644
--- a/TESTING/LIN/cpbt02.f
+++ b/TESTING/LIN/cpbt02.f
@@ -59,6 +59,12 @@
*> or the number of sub-diagonals if UPLO = 'L'. KD >= 0.
*> \endverbatim
*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is INTEGER
+*> The number of right hand sides. NRHS >= 0.
+*> \endverbatim
+*>
*> \param[in] A
*> \verbatim
*> A is COMPLEX array, dimension (LDA,N)
diff --git a/TESTING/LIN/cpst01.f b/TESTING/LIN/cpst01.f
index 5ffe51b3..7bef530b 100644
--- a/TESTING/LIN/cpst01.f
+++ b/TESTING/LIN/cpst01.f
@@ -115,6 +115,12 @@
*> If UPLO = 'U', norm(U'*U - A) / ( N * norm(A) * EPS )
*> \endverbatim
*>
+*> \param[in] RANK
+*> \verbatim
+*> RANK is INTEGER
+*> number of nonzero singular values of A.
+*> \endverbatim
+*>
*
* Authors
* =======
diff --git a/TESTING/LIN/cspt01.f b/TESTING/LIN/cspt01.f
index 9a250f09..41ae25ad 100644
--- a/TESTING/LIN/cspt01.f
+++ b/TESTING/LIN/cspt01.f
@@ -79,8 +79,10 @@
*> \verbatim
*> C is COMPLEX array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/LIN/cspt03.f b/TESTING/LIN/cspt03.f
index 41096806..bd3d727e 100644
--- a/TESTING/LIN/cspt03.f
+++ b/TESTING/LIN/cspt03.f
@@ -68,13 +68,13 @@
*>
*> \param[out] WORK
*> \verbatim
-*> WORK is COMPLEX array, dimension (LDWORK,N)
+*> WORK is COMPLEX array, dimension (LDW,N)
*> \endverbatim
*>
-*> \param[in] LDWORK
+*> \param[in] LDW
*> \verbatim
-*> LDWORK is INTEGER
-*> The leading dimension of the array WORK. LDWORK >= max(1,N).
+*> LDW is INTEGER
+*> The leading dimension of the array WORK. LDW >= max(1,N).
*> \endverbatim
*>
*> \param[out] RWORK
diff --git a/TESTING/LIN/csyt01.f b/TESTING/LIN/csyt01.f
index c959c186..f5d314a9 100644
--- a/TESTING/LIN/csyt01.f
+++ b/TESTING/LIN/csyt01.f
@@ -91,8 +91,10 @@
*> \verbatim
*> C is COMPLEX array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/LIN/ddrvgt.f b/TESTING/LIN/ddrvgt.f
index ca2204a5..4820cb6d 100644
--- a/TESTING/LIN/ddrvgt.f
+++ b/TESTING/LIN/ddrvgt.f
@@ -56,6 +56,12 @@
*> The values of the matrix dimension N.
*> \endverbatim
*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is INTEGER
+*> The number of right hand sides, NRHS >= 0.
+*> \endverbatim
+*>
*> \param[in] THRESH
*> \verbatim
*> THRESH is DOUBLE PRECISION
diff --git a/TESTING/LIN/ddrvrf2.f b/TESTING/LIN/ddrvrf2.f
index 0838733f..ecdf27bd 100644
--- a/TESTING/LIN/ddrvrf2.f
+++ b/TESTING/LIN/ddrvrf2.f
@@ -70,9 +70,9 @@
*> AP is DOUBLE PRECISION array, dimension ((NMAX*(NMAX+1))/2).
*> \endverbatim
*>
-*> \param[out] A2
+*> \param[out] ASAV
*> \verbatim
-*> A2 is DOUBLE PRECISION array, dimension (LDA,NMAX)
+*> ASAV is DOUBLE PRECISION array, dimension (LDA,NMAX)
*> \endverbatim
*>
*
diff --git a/TESTING/LIN/debchvxx.f b/TESTING/LIN/debchvxx.f
index 42389dd3..69bf58c7 100644
--- a/TESTING/LIN/debchvxx.f
+++ b/TESTING/LIN/debchvxx.f
@@ -8,84 +8,103 @@
* Definition
* ==========
*
-* SUBROUTINE DEBCHVXX( THRESH, PATH )
-*
-* .. Scalar Arguments ..
-* DOUBLE PRECISION THRESH
-* CHARACTER*3 PATH
-*
+* SUBROUTINE DEBCHVXX( THRESH, PATH )
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION THRESH
+* CHARACTER*3 PATH
+* ..
+*
* Purpose
* =======
*
*>\details \b Purpose:
*>\verbatim
-*> Purpose
-*> ======
+*> DEBCHVXX will run D**SVXX on a series of Hilbert matrices and then
+*> compare the error bounds returned by D**SVXX to see if the returned
+*> answer indeed falls within those bounds.
*>
-*> DEBCHVXX will run D**SVXX on a series of Hilbert matrices and then
-*> compare the error bounds returned by D**SVXX to see if the returned
-*> answer indeed falls within those bounds.
+*> Eight test ratios will be computed. The tests will pass if they are .LT.
+*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS).
+*> If that value is .LE. to the component wise reciprocal condition number,
+*> it uses the guaranteed case, other wise it uses the unguaranteed case.
*>
-*> Eight test ratios will be computed. The tests will pass if they are .LT.
-*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS).
-*> If that value is .LE. to the component wise reciprocal condition number,
-*> it uses the guaranteed case, other wise it uses the unguaranteed case.
+*> Test ratios:
+*> Let Xc be X_computed and Xt be X_truth.
+*> The norm used is the infinity norm.
*>
-*> Test ratios:
-*> Let Xc be X_computed and Xt be X_truth.
-*> The norm used is the infinity norm.
-
-*> Let A be the guaranteed case and B be the unguaranteed case.
+*> Let A be the guaranteed case and B be the unguaranteed case.
+*>
+*> 1. Normwise guaranteed forward error bound.
+*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and
+*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS.
+*> If these conditions are met, the test ratio is set to be
+*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
+*> B: For this case, CGESVXX should just return 1. If it is less than
+*> one, treat it the same as in 1A. Otherwise it fails. (Set test
+*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?)
*>
-*> 1. Normwise guaranteed forward error bound.
-*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and
-*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS.
-*> If these conditions are met, the test ratio is set to be
-*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
-*> B: For this case, CGESVXX should just return 1. If it is less than
-*> one, treat it the same as in 1A. Otherwise it fails. (Set test
-*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?)
+*> 2. Componentwise guaranteed forward error bound.
+*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i )
+*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS.
+*> If these conditions are met, the test ratio is set to be
+*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
+*> B: Same as normwise test ratio.
*>
-*> 2. Componentwise guaranteed forward error bound.
-*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i )
-*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS.
-*> If these conditions are met, the test ratio is set to be
-*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
-*> B: Same as normwise test ratio.
+*> 3. Backwards error.
+*> A: The test ratio is set to BERR/EPS.
+*> B: Same test ratio.
*>
-*> 3. Backwards error.
-*> A: The test ratio is set to BERR/EPS.
-*> B: Same test ratio.
+*> 4. Reciprocal condition number.
+*> A: A condition number is computed with Xt and compared with the one
+*> returned from CGESVXX. Let RCONDc be the RCOND returned by D**SVXX
+*> and RCONDt be the RCOND from the truth value. Test ratio is set to
+*> MAX(RCONDc/RCONDt, RCONDt/RCONDc).
+*> B: Test ratio is set to 1 / (EPS * RCONDc).
*>
-*> 4. Reciprocal condition number.
-*> A: A condition number is computed with Xt and compared with the one
-*> returned from CGESVXX. Let RCONDc be the RCOND returned by D**SVXX
-*> and RCONDt be the RCOND from the truth value. Test ratio is set to
-*> MAX(RCONDc/RCONDt, RCONDt/RCONDc).
-*> B: Test ratio is set to 1 / (EPS * RCONDc).
+*> 5. Reciprocal normwise condition number.
+*> A: The test ratio is set to
+*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )).
+*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )).
*>
-*> 5. Reciprocal normwise condition number.
-*> A: The test ratio is set to
-*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )).
-*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )).
+*> 6. Reciprocal componentwise condition number.
+*> A: Test ratio is set to
+*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )).
+*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )).
*>
-*> 6. Reciprocal componentwise condition number.
-*> A: Test ratio is set to
-*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )).
-*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )).
+*> .. Parameters ..
+*> NMAX is determined by the largest number in the inverse of the hilbert
+*> matrix. Precision is exhausted when the largest entry in it is greater
+*> than 2 to the power of the number of bits in the fraction of the data
+*> type used plus one, which is 24 for single precision.
+*> NMAX should be 6 for single and 11 for double.
+*> \endverbatim
*>
-*> .. Parameters ..
-*> NMAX is determined by the largest number in the inverse of the hilbert
-*> matrix. Precision is exhausted when the largest entry in it is greater
-*> than 2 to the power of the number of bits in the fraction of the data
-*> type used plus one, which is 24 for single precision.
-*> NMAX should be 6 for single and 11 for double.
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup double_lin
+*
+* =====================================================================
+ SUBROUTINE DEBCHVXX( THRESH, PATH )
+ IMPLICIT NONE
+* .. Scalar Arguments ..
+ DOUBLE PRECISION THRESH
+ CHARACTER*3 PATH
INTEGER NMAX, NPARAMS, NERRBND, NTESTS, KL, KU
PARAMETER (NMAX = 10, NPARAMS = 2, NERRBND = 3,
$ NTESTS = 6)
-*> .. Local Scalars ..
+* .. Local Scalars ..
INTEGER N, NRHS, INFO, I ,J, k, NFAIL, LDA,
$ N_AUX_TESTS, LDAB, LDAFB
CHARACTER FACT, TRANS, UPLO, EQUED
@@ -99,7 +118,7 @@
$ CWISE_RCOND, NWISE_RCOND,
$ CONDTHRESH, ERRTHRESH
-*> .. Local Arrays ..
+* .. Local Arrays ..
DOUBLE PRECISION TSTRAT(NTESTS), RINV(NMAX), PARAMS(NPARAMS),
$ S(NMAX),R(NMAX),C(NMAX), DIFF(NMAX, NMAX),
$ ERRBND_N(NMAX*3), ERRBND_C(NMAX*3),
@@ -111,24 +130,24 @@
$ ACOPY(NMAX, NMAX)
INTEGER IPIV(NMAX), IWORK(3*NMAX)
-*> .. External Functions ..
+* .. External Functions ..
DOUBLE PRECISION DLAMCH
-*> .. External Subroutines ..
+* .. External Subroutines ..
EXTERNAL DLAHILB, DGESVXX, DPOSVXX, DSYSVXX,
$ DGBSVXX, DLACPY, LSAMEN
LOGICAL LSAMEN
-*> .. Intrinsic Functions ..
+* .. Intrinsic Functions ..
INTRINSIC SQRT, MAX, ABS, DBLE
-*> .. Parameters ..
+* .. Parameters ..
INTEGER NWISE_I, CWISE_I
PARAMETER (NWISE_I = 1, CWISE_I = 1)
INTEGER BND_I, COND_I
PARAMETER (BND_I = 2, COND_I = 3)
-*> Create the loop to test out the Hilbert matrices
+* Create the loop to test out the Hilbert matrices
FACT = 'E'
UPLO = 'U'
@@ -142,7 +161,7 @@
LDAFB = 2*(NMAX-1)+(NMAX-1)+1
C2 = PATH( 2: 3 )
-*> Main loop to test the different Hilbert Matrices.
+* Main loop to test the different Hilbert Matrices.
printed_guide = .false.
@@ -155,14 +174,14 @@
NRHS = n
M = MAX(SQRT(DBLE(N)), 10.0D+0)
-*> Generate the Hilbert matrix, its inverse, and the
-*> right hand side, all scaled by the LCM(1,..,2N-1).
+* Generate the Hilbert matrix, its inverse, and the
+* right hand side, all scaled by the LCM(1,..,2N-1).
CALL DLAHILB(N, N, A, LDA, INVHILB, LDA, B, LDA, WORK, INFO)
-*> Copy A into ACOPY.
+* Copy A into ACOPY.
CALL DLACPY('ALL', N, N, A, NMAX, ACOPY, NMAX)
-*> Store A in band format for GB tests
+* Store A in band format for GB tests
DO J = 1, N
DO I = 1, KL+KU+1
AB( I, J ) = 0.0D+0
@@ -174,7 +193,7 @@
END DO
END DO
-*> Copy AB into ABCOPY.
+* Copy AB into ABCOPY.
DO J = 1, N
DO I = 1, KL+KU+1
ABCOPY( I, J ) = 0.0D+0
@@ -182,7 +201,7 @@
END DO
CALL DLACPY('ALL', KL+KU+1, N, AB, LDAB, ABCOPY, LDAB)
-*> Call D**SVXX with default PARAMS and N_ERR_BND = 3.
+* Call D**SVXX with default PARAMS and N_ERR_BND = 3.
IF ( LSAMEN( 2, C2, 'SY' ) ) THEN
CALL DSYSVXX(FACT, UPLO, N, NRHS, ACOPY, LDA, AF, LDA,
$ IPIV, EQUED, S, B, LDA, X, LDA, ORCOND,
@@ -223,14 +242,14 @@
END IF
END IF
-*> Calculating the difference between D**SVXX's X and the true X.
+* Calculating the difference between D**SVXX's X and the true X.
DO I = 1,N
DO J =1,NRHS
DIFF(I,J) = X(I,J) - INVHILB(I,J)
END DO
END DO
-*> Calculating the RCOND
+* Calculating the RCOND
RNORM = 0.0D+0
RINORM = 0.0D+0
IF ( LSAMEN( 2, C2, 'PO' ) .OR. LSAMEN( 2, C2, 'SY' ) ) THEN
@@ -262,7 +281,7 @@
RNORM = RNORM / ABS(A(1, 1))
RCOND = 1.0D+0/(RNORM * RINORM)
-*> Calculating the R for normwise rcond.
+* Calculating the R for normwise rcond.
DO I = 1, N
RINV(I) = 0.0D+0
END DO
@@ -272,7 +291,7 @@
END DO
END DO
-*> Calculating the Normwise rcond.
+* Calculating the Normwise rcond.
RINORM = 0.0D+0
DO I = 1, N
SUMRI = 0.0D+0
@@ -439,7 +458,7 @@ c$$$ WRITE(*,*) 'Reciprocal condition number: ',ERRBND(NRHS,cwise_i,cond
c$$$ WRITE(*,*) 'Raw error estimate: ',ERRBND(NRHS,cwise_i,rawbnd_i)
c$$$ print *, 'Info: ', info
c$$$ WRITE(*,*)
-*> WRITE(*,*) 'TSTRAT: ',TSTRAT
+* WRITE(*,*) 'TSTRAT: ',TSTRAT
END DO
@@ -455,7 +474,7 @@ c$$$ WRITE(*,*)
9998 FORMAT( ' D', A2, 'SVXX: ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9997 FORMAT( ' D', A2, 'SVXX passed the tests of error bounds' )
-*> Test ratios.
+* Test ratios.
9996 FORMAT( 3X, I2, ': Normwise guaranteed forward error', / 5X,
$ 'Guaranteed case: if norm ( abs( Xc - Xt )',
$ ' / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ), then',
@@ -473,33 +492,3 @@ c$$$ WRITE(*,*)
$ ', ORCOND = ', G12.5, ', real RCOND = ', G12.5 )
END
-*>\endverbatim
-*
-* Arguments
-* =========
-*
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup double_lin
-*
-* =====================================================================
- SUBROUTINE DEBCHVXX( THRESH, PATH )
-*
-* -- LAPACK test routine (input) --
-* -- LAPACK is a software package provided by Univ. of Tennessee, --
-* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
-* November 2011
-*
-* .. Scalar Arguments ..
- DOUBLE PRECISION THRESH
- CHARACTER*3 PATH
-*
diff --git a/TESTING/LIN/dgtt01.f b/TESTING/LIN/dgtt01.f
index 22673b1d..6fc036c0 100644
--- a/TESTING/LIN/dgtt01.f
+++ b/TESTING/LIN/dgtt01.f
@@ -82,9 +82,9 @@
*> The (n-1) elements of the first super-diagonal of U.
*> \endverbatim
*>
-*> \param[in] DU2F
+*> \param[in] DU2
*> \verbatim
-*> DU2F is DOUBLE PRECISION array, dimension (N-2)
+*> DU2 is DOUBLE PRECISION array, dimension (N-2)
*> The (n-2) elements of the second super-diagonal of U.
*> \endverbatim
*>
diff --git a/TESTING/LIN/dlahilb.f b/TESTING/LIN/dlahilb.f
index 9ab5498f..a4922e8a 100644
--- a/TESTING/LIN/dlahilb.f
+++ b/TESTING/LIN/dlahilb.f
@@ -10,44 +10,106 @@
*
* SUBROUTINE DLAHILB(N, NRHS, A, LDA, X, LDX, B, LDB, WORK, INFO)
*
-* ! .. Scalar Arguments ..
+* .. Scalar Arguments ..
* INTEGER N, NRHS, LDA, LDX, LDB, INFO
-* ! .. Array Arguments ..
+* .. Array Arguments ..
* DOUBLE PRECISION A(LDA, N), X(LDX, NRHS), B(LDB, NRHS), WORK(N)
-* ! ..
-* !
+* ..
+*
* Purpose
* =======
*
*>\details \b Purpose:
*>\verbatim
-! Purpose
-! =======
-!
-! DLAHILB generates an N by N scaled Hilbert matrix in A along with
-! NRHS right-hand sides in B and solutions in X such that A*X=B.
-!
-! The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all
-! entries are integers. The right-hand sides are the first NRHS
-! columns of M * the identity matrix, and the solutions are the
-! first NRHS columns of the inverse Hilbert matrix.
-!
-! The condition number of the Hilbert matrix grows exponentially with
-! its size, roughly as O(e ** (3.5*N)). Additionally, the inverse
-! Hilbert matrices beyond a relatively small dimension cannot be
-! generated exactly without extra precision. Precision is exhausted
-! when the largest entry in the inverse Hilbert matrix is greater than
-! 2 to the power of the number of bits in the fraction of the data type
-! used plus one, which is 24 for single precision.
-!
-! In single, the generated solution is exact for N <= 6 and has
-! small componentwise error for 7 <= N <= 11.
-!
+*>
+*> DLAHILB generates an N by N scaled Hilbert matrix in A along with
+*> NRHS right-hand sides in B and solutions in X such that A*X=B.
+*>
+*> The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all
+*> entries are integers. The right-hand sides are the first NRHS
+*> columns of M * the identity matrix, and the solutions are the
+*> first NRHS columns of the inverse Hilbert matrix.
+*>
+*> The condition number of the Hilbert matrix grows exponentially with
+*> its size, roughly as O(e ** (3.5*N)). Additionally, the inverse
+*> Hilbert matrices beyond a relatively small dimension cannot be
+*> generated exactly without extra precision. Precision is exhausted
+*> when the largest entry in the inverse Hilbert matrix is greater than
+*> 2 to the power of the number of bits in the fraction of the data type
+*> used plus one, which is 24 for single precision.
+*>
+*> In single, the generated solution is exact for N <= 6 and has
+*> small componentwise error for 7 <= N <= 11.
+*>
*>\endverbatim
*
* Arguments
* =========
*
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> The dimension of the matrix A.
+*> \endverbatim
+*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is NRHS
+*> The requested number of right-hand sides.
+*> \endverbatim
+*>
+*> \param[out] A
+*> \verbatim
+*> A is DOUBLE PRECISION array, dimension (LDA, N)
+*> The generated scaled Hilbert matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= N.
+*> \endverbatim
+*>
+*> \param[out] X
+*> \verbatim
+*> X is DOUBLE PRECISION array, dimension (LDX, NRHS)
+*> The generated exact solutions. Currently, the first NRHS
+*> columns of the inverse Hilbert matrix.
+*> \endverbatim
+*>
+*> \param[in] LDX
+*> \verbatim
+*> LDX is INTEGER
+*> The leading dimension of the array X. LDX >= N.
+*> \endverbatim
+*>
+*> \param[out] B
+*> \verbatim
+*> B is DOUBLE PRECISION array, dimension (LDB, NRHS)
+*> The generated right-hand sides. Currently, the first NRHS
+*> columns of LCM(1, 2, ..., 2*N-1) * the identity matrix.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> The leading dimension of the array B. LDB >= N.
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is DOUBLE PRECISION array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> = 1: N is too large; the data is still generated but may not
+*> be not exact.
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,37 +131,36 @@
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011
*
-! .. Scalar Arguments ..
+* .. Scalar Arguments ..
INTEGER N, NRHS, LDA, LDX, LDB, INFO
-! .. Array Arguments ..
+* .. Array Arguments ..
DOUBLE PRECISION A(LDA, N), X(LDX, NRHS), B(LDB, NRHS), WORK(N)
-! ..
-!
-! =====================================================================
-
-! .. Local Scalars ..
+* ..
+*
+* =====================================================================
+* .. Local Scalars ..
INTEGER TM, TI, R
INTEGER M
INTEGER I, J
COMPLEX*16 TMP
-
-! .. Parameters ..
-! NMAX_EXACT the largest dimension where the generated data is
-! exact.
-! NMAX_APPROX the largest dimension where the generated data has
-! a small componentwise relative error.
+* ..
+* .. Parameters ..
+* NMAX_EXACT the largest dimension where the generated data is
+* exact.
+* NMAX_APPROX the largest dimension where the generated data has
+* a small componentwise relative error.
INTEGER NMAX_EXACT, NMAX_APPROX
PARAMETER (NMAX_EXACT = 6, NMAX_APPROX = 11)
-! ..
-! .. External Functions
+* ..
+* .. External Functions
EXTERNAL DLASET
INTRINSIC DBLE
-! ..
-! .. Executable Statements ..
-!
-! Test the input arguments
-!
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
INFO = 0
IF (N .LT. 0 .OR. N .GT. NMAX_APPROX) THEN
INFO = -1
@@ -119,9 +180,9 @@
IF (N .GT. NMAX_EXACT) THEN
INFO = 1
END IF
-
-! Compute M = the LCM of the integers [1, 2*N-1]. The largest
-! reasonable N is small enough that integers suffice (up to N = 11).
+*
+* Compute M = the LCM of the integers [1, 2*N-1]. The largest
+* reasonable N is small enough that integers suffice (up to N = 11).
M = 1
DO I = 2, (2*N-1)
TM = M
@@ -134,33 +195,33 @@
END DO
M = (M / TI) * I
END DO
-
-! Generate the scaled Hilbert matrix in A
+*
+* Generate the scaled Hilbert matrix in A
DO J = 1, N
DO I = 1, N
A(I, J) = DBLE(M) / (I + J - 1)
END DO
END DO
-
-! Generate matrix B as simply the first NRHS columns of M * the
-! identity.
+*
+* Generate matrix B as simply the first NRHS columns of M * the
+* identity.
TMP = DBLE(M)
CALL DLASET('Full', N, NRHS, 0.0D+0, TMP, B, LDB)
-
-! Generate the true solutions in X. Because B = the first NRHS
-! columns of M*I, the true solutions are just the first NRHS columns
-! of the inverse Hilbert matrix.
+*
+* Generate the true solutions in X. Because B = the first NRHS
+* columns of M*I, the true solutions are just the first NRHS columns
+* of the inverse Hilbert matrix.
WORK(1) = N
DO J = 2, N
WORK(J) = ( ( (WORK(J-1)/(J-1)) * (J-1 - N) ) /(J-1) )
$ * (N +J -1)
END DO
-
+*
DO J = 1, NRHS
DO I = 1, N
X(I, J) = (WORK(I)*WORK(J)) / (I + J - 1)
END DO
END DO
-
+*
END
diff --git a/TESTING/LIN/dpbt02.f b/TESTING/LIN/dpbt02.f
index d2af8356..8bac818a 100644
--- a/TESTING/LIN/dpbt02.f
+++ b/TESTING/LIN/dpbt02.f
@@ -59,6 +59,12 @@
*> or the number of sub-diagonals if UPLO = 'L'. KD >= 0.
*> \endverbatim
*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is INTEGER
+*> The number of right hand sides. NRHS >= 0.
+*> \endverbatim
+*>
*> \param[in] A
*> \verbatim
*> A is DOUBLE PRECISION array, dimension (LDA,N)
diff --git a/TESTING/LIN/dpst01.f b/TESTING/LIN/dpst01.f
index 23d00749..252fe64f 100644
--- a/TESTING/LIN/dpst01.f
+++ b/TESTING/LIN/dpst01.f
@@ -113,6 +113,12 @@
*> If UPLO = 'U', norm(U'*U - A) / ( N * norm(A) * EPS )
*> \endverbatim
*>
+*> \param[in] RANK
+*> \verbatim
+*> RANK is INTEGER
+*> number of nonzero singular values of A.
+*> \endverbatim
+*>
*
* Authors
* =======
diff --git a/TESTING/LIN/dspt01.f b/TESTING/LIN/dspt01.f
index 05d6a2c8..6941630a 100644
--- a/TESTING/LIN/dspt01.f
+++ b/TESTING/LIN/dspt01.f
@@ -77,8 +77,10 @@
*> \verbatim
*> C is DOUBLE PRECISION array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/LIN/dsyt01.f b/TESTING/LIN/dsyt01.f
index b4329034..585101cb 100644
--- a/TESTING/LIN/dsyt01.f
+++ b/TESTING/LIN/dsyt01.f
@@ -90,8 +90,10 @@
*> \verbatim
*> C is DOUBLE PRECISION array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/LIN/ilaenv.f b/TESTING/LIN/ilaenv.f
index 744d699e..6f9b3099 100644
--- a/TESTING/LIN/ilaenv.f
+++ b/TESTING/LIN/ilaenv.f
@@ -8,7 +8,7 @@
* Definition
* ==========
*
-* INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3,
+* INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3,
* N4 )
*
* .. Scalar Arguments ..
@@ -63,8 +63,7 @@
*> computation tree in the divide-and-conquer algorithm
*> =10: ieee NaN arithmetic can be trusted not to trap
*> =11: infinity arithmetic can be trusted not to trap
-*> \endverbatim
-*> \verbatim
+*>
*> Other specifications (up to 100) can be added later.
*> \endverbatim
*>
@@ -101,15 +100,14 @@
*> \param[in] N4
*> \verbatim
*> N4 is INTEGER
-*> \endverbatim
-*> \verbatim
+*>
*> Problem dimensions for the subroutine NAME; these may not all
*> be required.
*> \endverbatim
*>
-*> \param[out] (ILAENV)
+*> \return ILAENV
*> \verbatim
-*> (ILAENV) is INTEGER
+*> ILAENV is INTEGER
*> >= 0: the value of the parameter specified by ISPEC
*> < 0: if ILAENV = -k, the k-th argument had an illegal value.
*> \endverbatim
diff --git a/TESTING/LIN/sdrvgt.f b/TESTING/LIN/sdrvgt.f
index fc361c30..f46a42a9 100644
--- a/TESTING/LIN/sdrvgt.f
+++ b/TESTING/LIN/sdrvgt.f
@@ -56,6 +56,12 @@
*> The values of the matrix dimension N.
*> \endverbatim
*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is INTEGER
+*> The number of right hand sides, NRHS >= 0.
+*> \endverbatim
+*>
*> \param[in] THRESH
*> \verbatim
*> THRESH is REAL
diff --git a/TESTING/LIN/sdrvrf1.f b/TESTING/LIN/sdrvrf1.f
index 1a8e9fe2..46d5d1d5 100644
--- a/TESTING/LIN/sdrvrf1.f
+++ b/TESTING/LIN/sdrvrf1.f
@@ -170,7 +170,9 @@
*
N = NVAL( IIN )
*
- DO 120 IIT = 1, 3
+ DO 120 IIT = 1, 3
+* Nothing to do for N=0
+ IF ( N .EQ. 0 ) EXIT
* Quick Return if possible
IF ( N .EQ. 0 ) EXIT
diff --git a/TESTING/LIN/sdrvrf2.f b/TESTING/LIN/sdrvrf2.f
index 32772464..024bb495 100644
--- a/TESTING/LIN/sdrvrf2.f
+++ b/TESTING/LIN/sdrvrf2.f
@@ -70,9 +70,9 @@
*> AP is REAL array, dimension ((NMAX*(NMAX+1))/2).
*> \endverbatim
*>
-*> \param[out] A2
+*> \param[out] ASAV
*> \verbatim
-*> A2 is REAL array, dimension (LDA,NMAX)
+*> ASAV is REAL array, dimension (LDA,NMAX)
*> \endverbatim
*>
*
diff --git a/TESTING/LIN/sebchvxx.f b/TESTING/LIN/sebchvxx.f
index f25f315a..b29e17c2 100644
--- a/TESTING/LIN/sebchvxx.f
+++ b/TESTING/LIN/sebchvxx.f
@@ -8,84 +8,103 @@
* Definition
* ==========
*
-* SUBROUTINE SEBCHVXX( THRESH, PATH )
-*
-* .. Scalar Arguments ..
-* REAL THRESH
-* CHARACTER*3 PATH
-*
+* SUBROUTINE SEBCHVXX( THRESH, PATH )
+*
+* .. Scalar Arguments ..
+* REAL THRESH
+* CHARACTER*3 PATH
+* ..
+*
* Purpose
* =======
*
*>\details \b Purpose:
*>\verbatim
-*> Purpose
-*> ======
+*> SEBCHVXX will run S**SVXX on a series of Hilbert matrices and then
+*> compare the error bounds returned by SGESVXX to see if the returned
+*> answer indeed falls within those bounds.
*>
-*> SEBCHVXX will run S**SVXX on a series of Hilbert matrices and then
-*> compare the error bounds returned by SGESVXX to see if the returned
-*> answer indeed falls within those bounds.
+*> Eight test ratios will be computed. The tests will pass if they are .LT.
+*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS).
+*> If that value is .LE. to the component wise reciprocal condition number,
+*> it uses the guaranteed case, other wise it uses the unguaranteed case.
*>
-*> Eight test ratios will be computed. The tests will pass if they are .LT.
-*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS).
-*> If that value is .LE. to the component wise reciprocal condition number,
-*> it uses the guaranteed case, other wise it uses the unguaranteed case.
+*> Test ratios:
+*> Let Xc be X_computed and Xt be X_truth.
+*> The norm used is the infinity norm.
*>
-*> Test ratios:
-*> Let Xc be X_computed and Xt be X_truth.
-*> The norm used is the infinity norm.
-
-*> Let A be the guaranteed case and B be the unguaranteed case.
+*> Let A be the guaranteed case and B be the unguaranteed case.
+*>
+*> 1. Normwise guaranteed forward error bound.
+*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and
+*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS.
+*> If these conditions are met, the test ratio is set to be
+*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
+*> B: For this case, SGESVXX should just return 1. If it is less than
+*> one, treat it the same as in 1A. Otherwise it fails. (Set test
+*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?)
*>
-*> 1. Normwise guaranteed forward error bound.
-*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and
-*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS.
-*> If these conditions are met, the test ratio is set to be
-*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
-*> B: For this case, SGESVXX should just return 1. If it is less than
-*> one, treat it the same as in 1A. Otherwise it fails. (Set test
-*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?)
+*> 2. Componentwise guaranteed forward error bound.
+*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i )
+*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS.
+*> If these conditions are met, the test ratio is set to be
+*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
+*> B: Same as normwise test ratio.
*>
-*> 2. Componentwise guaranteed forward error bound.
-*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i )
-*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS.
-*> If these conditions are met, the test ratio is set to be
-*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
-*> B: Same as normwise test ratio.
+*> 3. Backwards error.
+*> A: The test ratio is set to BERR/EPS.
+*> B: Same test ratio.
*>
-*> 3. Backwards error.
-*> A: The test ratio is set to BERR/EPS.
-*> B: Same test ratio.
+*> 4. Reciprocal condition number.
+*> A: A condition number is computed with Xt and compared with the one
+*> returned from SGESVXX. Let RCONDc be the RCOND returned by SGESVXX
+*> and RCONDt be the RCOND from the truth value. Test ratio is set to
+*> MAX(RCONDc/RCONDt, RCONDt/RCONDc).
+*> B: Test ratio is set to 1 / (EPS * RCONDc).
*>
-*> 4. Reciprocal condition number.
-*> A: A condition number is computed with Xt and compared with the one
-*> returned from SGESVXX. Let RCONDc be the RCOND returned by SGESVXX
-*> and RCONDt be the RCOND from the truth value. Test ratio is set to
-*> MAX(RCONDc/RCONDt, RCONDt/RCONDc).
-*> B: Test ratio is set to 1 / (EPS * RCONDc).
+*> 5. Reciprocal normwise condition number.
+*> A: The test ratio is set to
+*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )).
+*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )).
*>
-*> 5. Reciprocal normwise condition number.
-*> A: The test ratio is set to
-*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )).
-*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )).
+*> 7. Reciprocal componentwise condition number.
+*> A: Test ratio is set to
+*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )).
+*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )).
*>
-*> 7. Reciprocal componentwise condition number.
-*> A: Test ratio is set to
-*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )).
-*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )).
+*> .. Parameters ..
+*> NMAX is determined by the largest number in the inverse of the Hilbert
+*> matrix. Precision is exhausted when the largest entry in it is greater
+*> than 2 to the power of the number of bits in the fraction of the data
+*> type used plus one, which is 24 for single precision.
+*> NMAX should be 6 for single and 11 for double.
+*> \endverbatim
*>
-*> .. Parameters ..
-*> NMAX is determined by the largest number in the inverse of the Hilbert
-*> matrix. Precision is exhausted when the largest entry in it is greater
-*> than 2 to the power of the number of bits in the fraction of the data
-*> type used plus one, which is 24 for single precision.
-*> NMAX should be 6 for single and 11 for double.
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup single_lin
+*
+* =====================================================================
+ SUBROUTINE SEBCHVXX( THRESH, PATH )
+ IMPLICIT NONE
+* .. Scalar Arguments ..
+ REAL THRESH
+ CHARACTER*3 PATH
INTEGER NMAX, NPARAMS, NERRBND, NTESTS, KL, KU
PARAMETER (NMAX = 6, NPARAMS = 2, NERRBND = 3,
$ NTESTS = 6)
-*> .. Local Scalars ..
+* .. Local Scalars ..
INTEGER N, NRHS, INFO, I ,J, k, NFAIL, LDA, LDAB,
$ LDAFB, N_AUX_TESTS
CHARACTER FACT, TRANS, UPLO, EQUED
@@ -99,7 +118,7 @@
$ CWISE_RCOND, NWISE_RCOND,
$ CONDTHRESH, ERRTHRESH
-*> .. Local Arrays ..
+* .. Local Arrays ..
REAL TSTRAT(NTESTS), RINV(NMAX), PARAMS(NPARAMS),
$ A(NMAX, NMAX), ACOPY(NMAX, NMAX),
$ INVHILB(NMAX, NMAX), R(NMAX), C(NMAX), S(NMAX),
@@ -111,24 +130,24 @@
$ ERRBND_N(NMAX*3), ERRBND_C(NMAX*3)
INTEGER IWORK(NMAX), IPIV(NMAX)
-*> .. External Functions ..
+* .. External Functions ..
REAL SLAMCH
-*> .. External Subroutines ..
+* .. External Subroutines ..
EXTERNAL SLAHILB, SGESVXX, SSYSVXX, SPOSVXX, SGBSVXX,
$ SLACPY, LSAMEN
LOGICAL LSAMEN
-*> .. Intrinsic Functions ..
+* .. Intrinsic Functions ..
INTRINSIC SQRT, MAX, ABS
-*> .. Parameters ..
+* .. Parameters ..
INTEGER NWISE_I, CWISE_I
PARAMETER (NWISE_I = 1, CWISE_I = 1)
INTEGER BND_I, COND_I
PARAMETER (BND_I = 2, COND_I = 3)
-*> Create the loop to test out the Hilbert matrices
+* Create the loop to test out the Hilbert matrices
FACT = 'E'
UPLO = 'U'
@@ -142,7 +161,7 @@
LDAFB = 2*(NMAX-1)+(NMAX-1)+1
C2 = PATH( 2: 3 )
-*> Main loop to test the different Hilbert Matrices.
+* Main loop to test the different Hilbert Matrices.
printed_guide = .false.
@@ -155,14 +174,14 @@
NRHS = n
M = MAX(SQRT(REAL(N)), 10.0)
-*> Generate the Hilbert matrix, its inverse, and the
-*> right hand side, all scaled by the LCM(1,..,2N-1).
+* Generate the Hilbert matrix, its inverse, and the
+* right hand side, all scaled by the LCM(1,..,2N-1).
CALL SLAHILB(N, N, A, LDA, INVHILB, LDA, B, LDA, WORK, INFO)
-*> Copy A into ACOPY.
+* Copy A into ACOPY.
CALL SLACPY('ALL', N, N, A, NMAX, ACOPY, NMAX)
-*> Store A in band format for GB tests
+* Store A in band format for GB tests
DO J = 1, N
DO I = 1, KL+KU+1
AB( I, J ) = 0.0E+0
@@ -174,7 +193,7 @@
END DO
END DO
-*> Copy AB into ABCOPY.
+* Copy AB into ABCOPY.
DO J = 1, N
DO I = 1, KL+KU+1
ABCOPY( I, J ) = 0.0E+0
@@ -182,7 +201,7 @@
END DO
CALL SLACPY('ALL', KL+KU+1, N, AB, LDAB, ABCOPY, LDAB)
-*> Call S**SVXX with default PARAMS and N_ERR_BND = 3.
+* Call S**SVXX with default PARAMS and N_ERR_BND = 3.
IF ( LSAMEN( 2, C2, 'SY' ) ) THEN
CALL SSYSVXX(FACT, UPLO, N, NRHS, ACOPY, LDA, AF, LDA,
$ IPIV, EQUED, S, B, LDA, X, LDA, ORCOND,
@@ -223,14 +242,14 @@
END IF
END IF
-*> Calculating the difference between S**SVXX's X and the true X.
+* Calculating the difference between S**SVXX's X and the true X.
DO I = 1, N
DO J = 1, NRHS
DIFF( I, J ) = X( I, J ) - INVHILB( I, J )
END DO
END DO
-*> Calculating the RCOND
+* Calculating the RCOND
RNORM = 0
RINORM = 0
IF ( LSAMEN( 2, C2, 'PO' ) .OR. LSAMEN( 2, C2, 'SY' ) ) THEN
@@ -261,7 +280,7 @@
RNORM = RNORM / A(1, 1)
RCOND = 1.0/(RNORM * RINORM)
-*> Calculating the R for normwise rcond.
+* Calculating the R for normwise rcond.
DO I = 1, N
RINV(I) = 0.0
END DO
@@ -271,7 +290,7 @@
END DO
END DO
-*> Calculating the Normwise rcond.
+* Calculating the Normwise rcond.
RINORM = 0.0
DO I = 1, N
SUMRI = 0.0
@@ -441,7 +460,7 @@ c$$$ WRITE(*,*) 'Reciprocal condition number: ',ERRBND(NRHS,cwise_i,cond
c$$$ WRITE(*,*) 'Raw error estimate: ',ERRBND(NRHS,cwise_i,rawbnd_i)
c$$$ print *, 'Info: ', info
c$$$ WRITE(*,*)
-*> WRITE(*,*) 'TSTRAT: ',TSTRAT
+* WRITE(*,*) 'TSTRAT: ',TSTRAT
END DO
@@ -457,7 +476,7 @@ c$$$ WRITE(*,*)
9998 FORMAT( ' S', A2, 'SVXX: ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9997 FORMAT( ' S', A2, 'SVXX passed the tests of error bounds' )
-*> Test ratios.
+* Test ratios.
9996 FORMAT( 3X, I2, ': Normwise guaranteed forward error', / 5X,
$ 'Guaranteed case: if norm ( abs( Xc - Xt )',
$ ' / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ), then',
@@ -475,33 +494,3 @@ c$$$ WRITE(*,*)
$ ', ORCOND = ', G12.5, ', real RCOND = ', G12.5 )
END
-*>\endverbatim
-*
-* Arguments
-* =========
-*
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup single_lin
-*
-* =====================================================================
- SUBROUTINE SEBCHVXX( THRESH, PATH )
-*
-* -- LAPACK test routine (input) --
-* -- LAPACK is a software package provided by Univ. of Tennessee, --
-* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
-* November 2011
-*
-* .. Scalar Arguments ..
- REAL THRESH
- CHARACTER*3 PATH
-*
diff --git a/TESTING/LIN/sgtt01.f b/TESTING/LIN/sgtt01.f
index adfd9abc..c2f8e714 100644
--- a/TESTING/LIN/sgtt01.f
+++ b/TESTING/LIN/sgtt01.f
@@ -82,9 +82,9 @@
*> The (n-1) elements of the first super-diagonal of U.
*> \endverbatim
*>
-*> \param[in] DU2F
+*> \param[in] DU2
*> \verbatim
-*> DU2F is REAL array, dimension (N-2)
+*> DU2 is REAL array, dimension (N-2)
*> The (n-2) elements of the second super-diagonal of U.
*> \endverbatim
*>
diff --git a/TESTING/LIN/slahilb.f b/TESTING/LIN/slahilb.f
index ed25756e..7ced82fb 100644
--- a/TESTING/LIN/slahilb.f
+++ b/TESTING/LIN/slahilb.f
@@ -10,44 +10,106 @@
*
* SUBROUTINE SLAHILB(N, NRHS, A, LDA, X, LDX, B, LDB, WORK, INFO)
*
-* ! .. Scalar Arguments ..
+* .. Scalar Arguments ..
* INTEGER N, NRHS, LDA, LDX, LDB, INFO
-* ! .. Array Arguments ..
+* .. Array Arguments ..
* REAL A(LDA, N), X(LDX, NRHS), B(LDB, NRHS), WORK(N)
-* ! ..
-* !
+* ..
+*
* Purpose
* =======
*
*>\details \b Purpose:
*>\verbatim
-! Purpose
-! =======
-!
-! SLAHILB generates an N by N scaled Hilbert matrix in A along with
-! NRHS right-hand sides in B and solutions in X such that A*X=B.
-!
-! The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all
-! entries are integers. The right-hand sides are the first NRHS
-! columns of M * the identity matrix, and the solutions are the
-! first NRHS columns of the inverse Hilbert matrix.
-!
-! The condition number of the Hilbert matrix grows exponentially with
-! its size, roughly as O(e ** (3.5*N)). Additionally, the inverse
-! Hilbert matrices beyond a relatively small dimension cannot be
-! generated exactly without extra precision. Precision is exhausted
-! when the largest entry in the inverse Hilbert matrix is greater than
-! 2 to the power of the number of bits in the fraction of the data type
-! used plus one, which is 24 for single precision.
-!
-! In single, the generated solution is exact for N <= 6 and has
-! small componentwise error for 7 <= N <= 11.
-!
+*>
+*> SLAHILB generates an N by N scaled Hilbert matrix in A along with
+*> NRHS right-hand sides in B and solutions in X such that A*X=B.
+*>
+*> The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all
+*> entries are integers. The right-hand sides are the first NRHS
+*> columns of M * the identity matrix, and the solutions are the
+*> first NRHS columns of the inverse Hilbert matrix.
+*>
+*> The condition number of the Hilbert matrix grows exponentially with
+*> its size, roughly as O(e ** (3.5*N)). Additionally, the inverse
+*> Hilbert matrices beyond a relatively small dimension cannot be
+*> generated exactly without extra precision. Precision is exhausted
+*> when the largest entry in the inverse Hilbert matrix is greater than
+*> 2 to the power of the number of bits in the fraction of the data type
+*> used plus one, which is 24 for single precision.
+*>
+*> In single, the generated solution is exact for N <= 6 and has
+*> small componentwise error for 7 <= N <= 11.
+*>
*>\endverbatim
*
* Arguments
* =========
*
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> The dimension of the matrix A.
+*> \endverbatim
+*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is NRHS
+*> The requested number of right-hand sides.
+*> \endverbatim
+*>
+*> \param[out] A
+*> \verbatim
+*> A is REAL array, dimension (LDA, N)
+*> The generated scaled Hilbert matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= N.
+*> \endverbatim
+*>
+*> \param[out] X
+*> \verbatim
+*> X is REAL array, dimension (LDX, NRHS)
+*> The generated exact solutions. Currently, the first NRHS
+*> columns of the inverse Hilbert matrix.
+*> \endverbatim
+*>
+*> \param[in] LDX
+*> \verbatim
+*> LDX is INTEGER
+*> The leading dimension of the array X. LDX >= N.
+*> \endverbatim
+*>
+*> \param[out] B
+*> \verbatim
+*> B is REAL array, dimension (LDB, NRHS)
+*> The generated right-hand sides. Currently, the first NRHS
+*> columns of LCM(1, 2, ..., 2*N-1) * the identity matrix.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> The leading dimension of the array B. LDB >= N.
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> = 1: N is too large; the data is still generated but may not
+*> be not exact.
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -69,36 +131,34 @@
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011
*
-! .. Scalar Arguments ..
+* .. Scalar Arguments ..
INTEGER N, NRHS, LDA, LDX, LDB, INFO
-! .. Array Arguments ..
+* .. Array Arguments ..
REAL A(LDA, N), X(LDX, NRHS), B(LDB, NRHS), WORK(N)
-! ..
-!
-! =====================================================================
-
-! .. Local Scalars ..
+* ..
+*
+* =====================================================================
+* .. Local Scalars ..
INTEGER TM, TI, R
INTEGER M
INTEGER I, J
-
-! .. Parameters ..
-! NMAX_EXACT the largest dimension where the generated data is
-! exact.
-! NMAX_APPROX the largest dimension where the generated data has
-! a small componentwise relative error.
+* ..
+* .. Parameters ..
+* NMAX_EXACT the largest dimension where the generated data is
+* exact.
+* NMAX_APPROX the largest dimension where the generated data has
+* a small componentwise relative error.
INTEGER NMAX_EXACT, NMAX_APPROX
PARAMETER (NMAX_EXACT = 6, NMAX_APPROX = 11)
-
-! ..
-! .. External Functions
+* ..
+* .. External Functions
EXTERNAL SLASET
INTRINSIC REAL
-! ..
-! .. Executable Statements ..
-!
-! Test the input arguments
-!
+* ..
+* .. Executable Statements ..
+*
+* Test the input arguments
+*
INFO = 0
IF (N .LT. 0 .OR. N .GT. NMAX_APPROX) THEN
INFO = -1
@@ -118,9 +178,9 @@
IF (N .GT. NMAX_EXACT) THEN
INFO = 1
END IF
-
-! Compute M = the LCM of the integers [1, 2*N-1]. The largest
-! reasonable N is small enough that integers suffice (up to N = 11).
+*
+* Compute M = the LCM of the integers [1, 2*N-1]. The largest
+* reasonable N is small enough that integers suffice (up to N = 11).
M = 1
DO I = 2, (2*N-1)
TM = M
@@ -133,32 +193,32 @@
END DO
M = (M / TI) * I
END DO
-
-! Generate the scaled Hilbert matrix in A
+*
+* Generate the scaled Hilbert matrix in A
DO J = 1, N
DO I = 1, N
A(I, J) = REAL(M) / (I + J - 1)
END DO
END DO
-
-! Generate matrix B as simply the first NRHS columns of M * the
-! identity.
+*
+* Generate matrix B as simply the first NRHS columns of M * the
+* identity.
CALL SLASET('Full', N, NRHS, 0.0, REAL(M), B, LDB)
-
-! Generate the true solutions in X. Because B = the first NRHS
-! columns of M*I, the true solutions are just the first NRHS columns
-! of the inverse Hilbert matrix.
+*
+* Generate the true solutions in X. Because B = the first NRHS
+* columns of M*I, the true solutions are just the first NRHS columns
+* of the inverse Hilbert matrix.
WORK(1) = N
DO J = 2, N
WORK(J) = ( ( (WORK(J-1)/(J-1)) * (J-1 - N) ) /(J-1) )
$ * (N +J -1)
END DO
-
+*
DO J = 1, NRHS
DO I = 1, N
X(I, J) = (WORK(I)*WORK(J)) / (I + J - 1)
END DO
END DO
-
+*
END
diff --git a/TESTING/LIN/spbt02.f b/TESTING/LIN/spbt02.f
index 45c7cbd8..144994ba 100644
--- a/TESTING/LIN/spbt02.f
+++ b/TESTING/LIN/spbt02.f
@@ -59,6 +59,12 @@
*> or the number of sub-diagonals if UPLO = 'L'. KD >= 0.
*> \endverbatim
*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is INTEGER
+*> The number of right hand sides. NRHS >= 0.
+*> \endverbatim
+*>
*> \param[in] A
*> \verbatim
*> A is REAL array, dimension (LDA,N)
diff --git a/TESTING/LIN/spst01.f b/TESTING/LIN/spst01.f
index 29fabd49..01e4b690 100644
--- a/TESTING/LIN/spst01.f
+++ b/TESTING/LIN/spst01.f
@@ -113,6 +113,12 @@
*> If UPLO = 'U', norm(U'*U - A) / ( N * norm(A) * EPS )
*> \endverbatim
*>
+*> \param[in] RANK
+*> \verbatim
+*> RANK is INTEGER
+*> number of nonzero singular values of A.
+*> \endverbatim
+*>
*
* Authors
* =======
diff --git a/TESTING/LIN/sspt01.f b/TESTING/LIN/sspt01.f
index a46e689a..ddb38a95 100644
--- a/TESTING/LIN/sspt01.f
+++ b/TESTING/LIN/sspt01.f
@@ -77,8 +77,10 @@
*> \verbatim
*> C is REAL array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/LIN/ssyt01.f b/TESTING/LIN/ssyt01.f
index 7aaeae9e..bce84e66 100644
--- a/TESTING/LIN/ssyt01.f
+++ b/TESTING/LIN/ssyt01.f
@@ -90,8 +90,10 @@
*> \verbatim
*> C is REAL array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/LIN/zchkge.f b/TESTING/LIN/zchkge.f
index 8d05756a..8d5d970d 100644
--- a/TESTING/LIN/zchkge.f
+++ b/TESTING/LIN/zchkge.f
@@ -95,13 +95,6 @@
*> The values of the number of right hand sides NRHS.
*> \endverbatim
*>
-*> \param[in] NRHS
-*> \verbatim
-*> NRHS is INTEGER
-*> The number of right hand side vectors to be generated for
-*> each linear system.
-*> \endverbatim
-*>
*> \param[in] THRESH
*> \verbatim
*> THRESH is DOUBLE PRECISION
diff --git a/TESTING/LIN/zdrvgt.f b/TESTING/LIN/zdrvgt.f
index 91cf6cba..debecad2 100644
--- a/TESTING/LIN/zdrvgt.f
+++ b/TESTING/LIN/zdrvgt.f
@@ -57,6 +57,12 @@
*> The values of the matrix dimension N.
*> \endverbatim
*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is INTEGER
+*> The number of right hand sides, NRHS >= 0.
+*> \endverbatim
+*>
*> \param[in] THRESH
*> \verbatim
*> THRESH is DOUBLE PRECISION
diff --git a/TESTING/LIN/zdrvrf2.f b/TESTING/LIN/zdrvrf2.f
index 734d0f92..c6c0f200 100644
--- a/TESTING/LIN/zdrvrf2.f
+++ b/TESTING/LIN/zdrvrf2.f
@@ -70,9 +70,9 @@
*> AP is COMPLEX*16 array, dimension ((NMAX*(NMAX+1))/2).
*> \endverbatim
*>
-*> \param[out] A2
+*> \param[out] ASAV
*> \verbatim
-*> A2 is COMPLEX*16 array, dimension (LDA,NMAX)
+*> ASAV is COMPLEX*16 array, dimension (LDA,NMAX)
*> \endverbatim
*>
*
diff --git a/TESTING/LIN/zebchvxx.f b/TESTING/LIN/zebchvxx.f
index 2694c93c..3410f067 100644
--- a/TESTING/LIN/zebchvxx.f
+++ b/TESTING/LIN/zebchvxx.f
@@ -8,84 +8,103 @@
* Definition
* ==========
*
-* SUBROUTINE ZEBCHVXX( THRESH, PATH )
-*
-* .. Scalar Arguments ..
-* DOUBLE PRECISION THRESH
-* CHARACTER*3 PATH
-*
+* SUBROUTINE ZEBCHVXX( THRESH, PATH )
+*
+* .. Scalar Arguments ..
+* DOUBLE PRECISION THRESH
+* CHARACTER*3 PATH
+* ..
+*
* Purpose
-* =======
+* ======
*
*>\details \b Purpose:
*>\verbatim
-*> Purpose
-*> ======
+*> ZEBCHVXX will run Z**SVXX on a series of Hilbert matrices and then
+*> compare the error bounds returned by Z**SVXX to see if the returned
+*> answer indeed falls within those bounds.
*>
-*> ZEBCHVXX will run Z**SVXX on a series of Hilbert matrices and then
-*> compare the error bounds returned by Z**SVXX to see if the returned
-*> answer indeed falls within those bounds.
+*> Eight test ratios will be computed. The tests will pass if they are .LT.
+*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS).
+*> If that value is .LE. to the component wise reciprocal condition number,
+*> it uses the guaranteed case, other wise it uses the unguaranteed case.
*>
-*> Eight test ratios will be computed. The tests will pass if they are .LT.
-*> THRESH. There are two cases that are determined by 1 / (SQRT( N ) * EPS).
-*> If that value is .LE. to the component wise reciprocal condition number,
-*> it uses the guaranteed case, other wise it uses the unguaranteed case.
+*> Test ratios:
+*> Let Xc be X_computed and Xt be X_truth.
+*> The norm used is the infinity norm.
*>
-*> Test ratios:
-*> Let Xc be X_computed and Xt be X_truth.
-*> The norm used is the infinity norm.
-
-*> Let A be the guaranteed case and B be the unguaranteed case.
+*> Let A be the guaranteed case and B be the unguaranteed case.
+*>
+*> 1. Normwise guaranteed forward error bound.
+*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and
+*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS.
+*> If these conditions are met, the test ratio is set to be
+*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
+*> B: For this case, CGESVXX should just return 1. If it is less than
+*> one, treat it the same as in 1A. Otherwise it fails. (Set test
+*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?)
*>
-*> 1. Normwise guaranteed forward error bound.
-*> A: norm ( abs( Xc - Xt ) / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ) and
-*> ERRBND( *, nwise_i, bnd_i ) .LE. MAX(SQRT(N),10) * EPS.
-*> If these conditions are met, the test ratio is set to be
-*> ERRBND( *, nwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
-*> B: For this case, CGESVXX should just return 1. If it is less than
-*> one, treat it the same as in 1A. Otherwise it fails. (Set test
-*> ratio to ERRBND( *, nwise_i, bnd_i ) * THRESH?)
+*> 2. Componentwise guaranteed forward error bound.
+*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i )
+*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS.
+*> If these conditions are met, the test ratio is set to be
+*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
+*> B: Same as normwise test ratio.
*>
-*> 2. Componentwise guaranteed forward error bound.
-*> A: norm ( abs( Xc(j) - Xt(j) ) ) / norm (Xt(j)) .LE. ERRBND( *, cwise_i, bnd_i )
-*> for all j .AND. ERRBND( *, cwise_i, bnd_i ) .LE. MAX(SQRT(N), 10) * EPS.
-*> If these conditions are met, the test ratio is set to be
-*> ERRBND( *, cwise_i, bnd_i ) / MAX(SQRT(N), 10). Otherwise it is 1/EPS.
-*> B: Same as normwise test ratio.
+*> 3. Backwards error.
+*> A: The test ratio is set to BERR/EPS.
+*> B: Same test ratio.
*>
-*> 3. Backwards error.
-*> A: The test ratio is set to BERR/EPS.
-*> B: Same test ratio.
+*> 4. Reciprocal condition number.
+*> A: A condition number is computed with Xt and compared with the one
+*> returned from CGESVXX. Let RCONDc be the RCOND returned by CGESVXX
+*> and RCONDt be the RCOND from the truth value. Test ratio is set to
+*> MAX(RCONDc/RCONDt, RCONDt/RCONDc).
+*> B: Test ratio is set to 1 / (EPS * RCONDc).
*>
-*> 4. Reciprocal condition number.
-*> A: A condition number is computed with Xt and compared with the one
-*> returned from CGESVXX. Let RCONDc be the RCOND returned by CGESVXX
-*> and RCONDt be the RCOND from the truth value. Test ratio is set to
-*> MAX(RCONDc/RCONDt, RCONDt/RCONDc).
-*> B: Test ratio is set to 1 / (EPS * RCONDc).
+*> 5. Reciprocal normwise condition number.
+*> A: The test ratio is set to
+*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )).
+*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )).
*>
-*> 5. Reciprocal normwise condition number.
-*> A: The test ratio is set to
-*> MAX(ERRBND( *, nwise_i, cond_i ) / NCOND, NCOND / ERRBND( *, nwise_i, cond_i )).
-*> B: Test ratio is set to 1 / (EPS * ERRBND( *, nwise_i, cond_i )).
+*> 6. Reciprocal componentwise condition number.
+*> A: Test ratio is set to
+*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )).
+*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )).
*>
-*> 6. Reciprocal componentwise condition number.
-*> A: Test ratio is set to
-*> MAX(ERRBND( *, cwise_i, cond_i ) / CCOND, CCOND / ERRBND( *, cwise_i, cond_i )).
-*> B: Test ratio is set to 1 / (EPS * ERRBND( *, cwise_i, cond_i )).
+*> .. Parameters ..
+*> NMAX is determined by the largest number in the inverse of the hilbert
+*> matrix. Precision is exhausted when the largest entry in it is greater
+*> than 2 to the power of the number of bits in the fraction of the data
+*> type used plus one, which is 24 for single precision.
+*> NMAX should be 6 for single and 11 for double.
+*> \endverbatim
*>
-*> .. Parameters ..
-*> NMAX is determined by the largest number in the inverse of the hilbert
-*> matrix. Precision is exhausted when the largest entry in it is greater
-*> than 2 to the power of the number of bits in the fraction of the data
-*> type used plus one, which is 24 for single precision.
-*> NMAX should be 6 for single and 11 for double.
+*
+* Authors
+* =======
+*
+*> \author Univ. of Tennessee
+*> \author Univ. of California Berkeley
+*> \author Univ. of Colorado Denver
+*> \author NAG Ltd.
+*
+*> \date November 2011
+*
+*> \ingroup complex16_lin
+*
+* =====================================================================
+ SUBROUTINE ZEBCHVXX( THRESH, PATH )
+ IMPLICIT NONE
+* .. Scalar Arguments ..
+ DOUBLE PRECISION THRESH
+ CHARACTER*3 PATH
INTEGER NMAX, NPARAMS, NERRBND, NTESTS, KL, KU
PARAMETER (NMAX = 10, NPARAMS = 2, NERRBND = 3,
$ NTESTS = 6)
-*> .. Local Scalars ..
+* .. Local Scalars ..
INTEGER N, NRHS, INFO, I ,J, k, NFAIL, LDA,
$ N_AUX_TESTS, LDAB, LDAFB
CHARACTER FACT, TRANS, UPLO, EQUED
@@ -100,7 +119,7 @@
$ CONDTHRESH, ERRTHRESH
COMPLEX*16 ZDUM
-*> .. Local Arrays ..
+* .. Local Arrays ..
DOUBLE PRECISION TSTRAT(NTESTS), RINV(NMAX), PARAMS(NPARAMS),
$ S(NMAX),R(NMAX),C(NMAX),RWORK(3*NMAX),
$ DIFF(NMAX, NMAX),
@@ -113,30 +132,30 @@
$ ABCOPY( (NMAX-1)+(NMAX-1)+1, NMAX ),
$ AFB( 2*(NMAX-1)+(NMAX-1)+1, NMAX )
-*> .. External Functions ..
+* .. External Functions ..
DOUBLE PRECISION DLAMCH
-*> .. External Subroutines ..
+* .. External Subroutines ..
EXTERNAL ZLAHILB, ZGESVXX, ZPOSVXX, ZSYSVXX,
$ ZGBSVXX, ZLACPY, LSAMEN
LOGICAL LSAMEN
-*> .. Intrinsic Functions ..
+* .. Intrinsic Functions ..
INTRINSIC SQRT, MAX, ABS, DBLE, DIMAG
-*> .. Statement Functions ..
+* .. Statement Functions ..
DOUBLE PRECISION CABS1
-*> .. Statement Function Definitions ..
+* .. Statement Function Definitions ..
CABS1( ZDUM ) = ABS( DBLE( ZDUM ) ) + ABS( DIMAG( ZDUM ) )
-*> .. Parameters ..
+* .. Parameters ..
INTEGER NWISE_I, CWISE_I
PARAMETER (NWISE_I = 1, CWISE_I = 1)
INTEGER BND_I, COND_I
PARAMETER (BND_I = 2, COND_I = 3)
-*> Create the loop to test out the Hilbert matrices
+* Create the loop to test out the Hilbert matrices
FACT = 'E'
UPLO = 'U'
@@ -150,7 +169,7 @@
LDAFB = 2*(NMAX-1)+(NMAX-1)+1
C2 = PATH( 2: 3 )
-*> Main loop to test the different Hilbert Matrices.
+* Main loop to test the different Hilbert Matrices.
printed_guide = .false.
@@ -163,15 +182,15 @@
NRHS = n
M = MAX(SQRT(DBLE(N)), 10.0D+0)
-*> Generate the Hilbert matrix, its inverse, and the
-*> right hand side, all scaled by the LCM(1,..,2N-1).
+* Generate the Hilbert matrix, its inverse, and the
+* right hand side, all scaled by the LCM(1,..,2N-1).
CALL ZLAHILB(N, N, A, LDA, INVHILB, LDA, B,
$ LDA, WORK, INFO, PATH)
-*> Copy A into ACOPY.
+* Copy A into ACOPY.
CALL ZLACPY('ALL', N, N, A, NMAX, ACOPY, NMAX)
-*> Store A in band format for GB tests
+* Store A in band format for GB tests
DO J = 1, N
DO I = 1, KL+KU+1
AB( I, J ) = (0.0D+0,0.0D+0)
@@ -183,7 +202,7 @@
END DO
END DO
-*> Copy AB into ABCOPY.
+* Copy AB into ABCOPY.
DO J = 1, N
DO I = 1, KL+KU+1
ABCOPY( I, J ) = (0.0D+0,0.0D+0)
@@ -191,7 +210,7 @@
END DO
CALL ZLACPY('ALL', KL+KU+1, N, AB, LDAB, ABCOPY, LDAB)
-*> Call Z**SVXX with default PARAMS and N_ERR_BND = 3.
+* Call Z**SVXX with default PARAMS and N_ERR_BND = 3.
IF ( LSAMEN( 2, C2, 'SY' ) ) THEN
CALL ZSYSVXX(FACT, UPLO, N, NRHS, ACOPY, LDA, AF, LDA,
$ IPIV, EQUED, S, B, LDA, X, LDA, ORCOND,
@@ -237,14 +256,14 @@
END IF
END IF
-*> Calculating the difference between Z**SVXX's X and the true X.
+* Calculating the difference between Z**SVXX's X and the true X.
DO I = 1,N
DO J =1,NRHS
DIFF(I,J) = X(I,J) - INVHILB(I,J)
END DO
END DO
-*> Calculating the RCOND
+* Calculating the RCOND
RNORM = 0
RINORM = 0
IF ( LSAMEN( 2, C2, 'PO' ) .OR. LSAMEN( 2, C2, 'SY' ) .OR.
@@ -276,7 +295,7 @@
RNORM = RNORM / CABS1(A(1, 1))
RCOND = 1.0D+0/(RNORM * RINORM)
-*> Calculating the R for normwise rcond.
+* Calculating the R for normwise rcond.
DO I = 1, N
RINV(I) = 0.0D+0
END DO
@@ -286,7 +305,7 @@
END DO
END DO
-*> Calculating the Normwise rcond.
+* Calculating the Normwise rcond.
RINORM = 0.0D+0
DO I = 1, N
SUMRI = 0.0D+0
@@ -453,7 +472,7 @@ c$$$ WRITE(*,*) 'Reciprocal condition number: ',ERRBND(NRHS,cwise_i,cond
c$$$ WRITE(*,*) 'Raw error estimate: ',ERRBND(NRHS,cwise_i,rawbnd_i)
c$$$ print *, 'Info: ', info
c$$$ WRITE(*,*)
-*> WRITE(*,*) 'TSTRAT: ',TSTRAT
+* WRITE(*,*) 'TSTRAT: ',TSTRAT
END DO
@@ -469,7 +488,7 @@ c$$$ WRITE(*,*)
9998 FORMAT( ' Z', A2, 'SVXX: ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9997 FORMAT( ' Z', A2, 'SVXX passed the tests of error bounds' )
-*> Test ratios.
+* Test ratios.
9996 FORMAT( 3X, I2, ': Normwise guaranteed forward error', / 5X,
$ 'Guaranteed case: if norm ( abs( Xc - Xt )',
$ ' / norm ( Xt ) .LE. ERRBND( *, nwise_i, bnd_i ), then',
@@ -487,33 +506,3 @@ c$$$ WRITE(*,*)
$ ', ORCOND = ', G12.5, ', real RCOND = ', G12.5 )
END
-*>\endverbatim
-*
-* Arguments
-* =========
-*
-*
-* Authors
-* =======
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date November 2011
-*
-*> \ingroup complex16_lin
-*
-* =====================================================================
- SUBROUTINE ZEBCHVXX( THRESH, PATH )
-*
-* -- LAPACK test routine (input) --
-* -- LAPACK is a software package provided by Univ. of Tennessee, --
-* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
-* November 2011
-*
-* .. Scalar Arguments ..
- DOUBLE PRECISION THRESH
- CHARACTER*3 PATH
-*
diff --git a/TESTING/LIN/zhet01.f b/TESTING/LIN/zhet01.f
index 9d3b91fc..4f2a11f3 100644
--- a/TESTING/LIN/zhet01.f
+++ b/TESTING/LIN/zhet01.f
@@ -92,8 +92,10 @@
*> \verbatim
*> C is COMPLEX*16 array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/LIN/zhpt01.f b/TESTING/LIN/zhpt01.f
index f35f6d33..5224a42e 100644
--- a/TESTING/LIN/zhpt01.f
+++ b/TESTING/LIN/zhpt01.f
@@ -80,8 +80,10 @@
*> \verbatim
*> C is COMPLEX*16 array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/LIN/zlahilb.f b/TESTING/LIN/zlahilb.f
index 1b44dd04..8479b3b2 100644
--- a/TESTING/LIN/zlahilb.f
+++ b/TESTING/LIN/zlahilb.f
@@ -11,46 +11,114 @@
* SUBROUTINE ZLAHILB(N, NRHS, A, LDA, X, LDX, B, LDB, WORK,
* INFO, PATH)
*
-* ! .. Scalar Arguments ..
+* .. Scalar Arguments ..
* INTEGER N, NRHS, LDA, LDX, LDB, INFO
-* ! .. Array Arguments ..
+* .. Array Arguments ..
* DOUBLE PRECISION WORK(N)
* COMPLEX*16 A(LDA,N), X(LDX, NRHS), B(LDB, NRHS)
* CHARACTER*3 PATH
-* ! ..
-* !
+* ..
+*
* Purpose
* =======
*
*>\details \b Purpose:
*>\verbatim
-! Purpose
-! =======
-!
-! ZLAHILB generates an N by N scaled Hilbert matrix in A along with
-! NRHS right-hand sides in B and solutions in X such that A*X=B.
-!
-! The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all
-! entries are integers. The right-hand sides are the first NRHS
-! columns of M * the identity matrix, and the solutions are the
-! first NRHS columns of the inverse Hilbert matrix.
-!
-! The condition number of the Hilbert matrix grows exponentially with
-! its size, roughly as O(e ** (3.5*N)). Additionally, the inverse
-! Hilbert matrices beyond a relatively small dimension cannot be
-! generated exactly without extra precision. Precision is exhausted
-! when the largest entry in the inverse Hilbert matrix is greater than
-! 2 to the power of the number of bits in the fraction of the data type
-! used plus one, which is 24 for single precision.
-!
-! In single, the generated solution is exact for N <= 6 and has
-! small componentwise error for 7 <= N <= 11.
-!
+*>
+*> ZLAHILB generates an N by N scaled Hilbert matrix in A along with
+*> NRHS right-hand sides in B and solutions in X such that A*X=B.
+*>
+*> The Hilbert matrix is scaled by M = LCM(1, 2, ..., 2*N-1) so that all
+*> entries are integers. The right-hand sides are the first NRHS
+*> columns of M * the identity matrix, and the solutions are the
+*> first NRHS columns of the inverse Hilbert matrix.
+*>
+*> The condition number of the Hilbert matrix grows exponentially with
+*> its size, roughly as O(e ** (3.5*N)). Additionally, the inverse
+*> Hilbert matrices beyond a relatively small dimension cannot be
+*> generated exactly without extra precision. Precision is exhausted
+*> when the largest entry in the inverse Hilbert matrix is greater than
+*> 2 to the power of the number of bits in the fraction of the data type
+*> used plus one, which is 24 for single precision.
+*>
+*> In single, the generated solution is exact for N <= 6 and has
+*> small componentwise error for 7 <= N <= 11.
+*>
*>\endverbatim
*
* Arguments
* =========
*
+*> \param[in] N
+*> \verbatim
+*> N is INTEGER
+*> The dimension of the matrix A.
+*> \endverbatim
+*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is NRHS
+*> The requested number of right-hand sides.
+*> \endverbatim
+*>
+*> \param[out] A
+*> \verbatim
+*> A is COMPLEX array, dimension (LDA, N)
+*> The generated scaled Hilbert matrix.
+*> \endverbatim
+*>
+*> \param[in] LDA
+*> \verbatim
+*> LDA is INTEGER
+*> The leading dimension of the array A. LDA >= N.
+*> \endverbatim
+*>
+*> \param[out] X
+*> \verbatim
+*> X is COMPLEX array, dimension (LDX, NRHS)
+*> The generated exact solutions. Currently, the first NRHS
+*> columns of the inverse Hilbert matrix.
+*> \endverbatim
+*>
+*> \param[in] LDX
+*> \verbatim
+*> LDX is INTEGER
+*> The leading dimension of the array X. LDX >= N.
+*> \endverbatim
+*>
+*> \param[out] B
+*> \verbatim
+*> B is REAL array, dimension (LDB, NRHS)
+*> The generated right-hand sides. Currently, the first NRHS
+*> columns of LCM(1, 2, ..., 2*N-1) * the identity matrix.
+*> \endverbatim
+*>
+*> \param[in] LDB
+*> \verbatim
+*> LDB is INTEGER
+*> The leading dimension of the array B. LDB >= N.
+*> \endverbatim
+*>
+*> \param[out] WORK
+*> \verbatim
+*> WORK is REAL array, dimension (N)
+*> \endverbatim
+*>
+*> \param[out] INFO
+*> \verbatim
+*> INFO is INTEGER
+*> = 0: successful exit
+*> = 1: N is too large; the data is still generated but may not
+*> be not exact.
+*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> \endverbatim
+*>
+*> \param[in] PATH
+*> \verbatim
+*> PATH is CHARACTER*3
+*> The LAPACK path name.
+*> \endverbatim
+*>
*
* Authors
* =======
@@ -73,33 +141,32 @@
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011
*
-! .. Scalar Arguments ..
+* .. Scalar Arguments ..
INTEGER N, NRHS, LDA, LDX, LDB, INFO
-! .. Array Arguments ..
+* .. Array Arguments ..
DOUBLE PRECISION WORK(N)
COMPLEX*16 A(LDA,N), X(LDX, NRHS), B(LDB, NRHS)
CHARACTER*3 PATH
-! ..
-!
-! =====================================================================
-
-! .. Local Scalars ..
+* ..
+*
+* =====================================================================
+* .. Local Scalars ..
INTEGER TM, TI, R
INTEGER M
INTEGER I, J
COMPLEX*16 TMP
CHARACTER*2 C2
-
-! .. Parameters ..
-! NMAX_EXACT the largest dimension where the generated data is
-! exact.
-! NMAX_APPROX the largest dimension where the generated data has
-! a small componentwise relative error.
-! ??? complex uses how many bits ???
+* ..
+* .. Parameters ..
+* NMAX_EXACT the largest dimension where the generated data is
+* exact.
+* NMAX_APPROX the largest dimension where the generated data has
+* a small componentwise relative error.
+* ??? complex uses how many bits ???
INTEGER NMAX_EXACT, NMAX_APPROX, SIZE_D
PARAMETER (NMAX_EXACT = 6, NMAX_APPROX = 11, SIZE_D = 8)
-
-! d's are generated from random permuation of those eight elements.
+*
+* d's are generated from random permuation of those eight elements.
COMPLEX*16 d1(8), d2(8), invd1(8), invd2(8)
DATA D1 /(-1,0),(0,1),(-1,-1),(0,-1),(1,0),(-1,1),(1,1),(1,-1)/
DATA D2 /(-1,0),(0,-1),(-1,1),(0,1),(1,0),(-1,-1),(1,-1),(1,1)/
@@ -108,17 +175,17 @@
$ (-.5,-.5),(.5,-.5),(.5,.5)/
DATA INVD2 /(-1,0),(0,1),(-.5,-.5),(0,-1),(1,0),
$ (-.5,.5),(.5,.5),(.5,-.5)/
-! ..
-! .. External Functions
+* ..
+* .. External Functions
EXTERNAL ZLASET, LSAMEN
INTRINSIC DBLE
LOGICAL LSAMEN
-! ..
-! .. Executable Statements ..
+* ..
+* .. Executable Statements ..
C2 = PATH( 2: 3 )
-!
-! Test the input arguments
-!
+*
+* Test the input arguments
+*
INFO = 0
IF (N .LT. 0 .OR. N .GT. NMAX_APPROX) THEN
INFO = -1
@@ -138,9 +205,9 @@
IF (N .GT. NMAX_EXACT) THEN
INFO = 1
END IF
-
-! Compute M = the LCM of the integers [1, 2*N-1]. The largest
-! reasonable N is small enough that integers suffice (up to N = 11).
+*
+* Compute M = the LCM of the integers [1, 2*N-1]. The largest
+* reasonable N is small enough that integers suffice (up to N = 11).
M = 1
DO I = 2, (2*N-1)
TM = M
@@ -153,9 +220,9 @@
END DO
M = (M / TI) * I
END DO
-
-! Generate the scaled Hilbert matrix in A
-! If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i*
+*
+* Generate the scaled Hilbert matrix in A
+* If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i*
IF ( LSAMEN( 2, C2, 'SY' ) ) THEN
DO J = 1, N
DO I = 1, N
@@ -171,22 +238,22 @@
END DO
END DO
END IF
-
-! Generate matrix B as simply the first NRHS columns of M * the
-! identity.
+*
+* Generate matrix B as simply the first NRHS columns of M * the
+* identity.
TMP = DBLE(M)
CALL ZLASET('Full', N, NRHS, (0.0D+0,0.0D+0), TMP, B, LDB)
-
-! Generate the true solutions in X. Because B = the first NRHS
-! columns of M*I, the true solutions are just the first NRHS columns
-! of the inverse Hilbert matrix.
+*
+* Generate the true solutions in X. Because B = the first NRHS
+* columns of M*I, the true solutions are just the first NRHS columns
+* of the inverse Hilbert matrix.
WORK(1) = N
DO J = 2, N
WORK(J) = ( ( (WORK(J-1)/(J-1)) * (J-1 - N) ) /(J-1) )
$ * (N +J -1)
END DO
-
-! If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i*
+*
+* If we are testing SY routines, take D1_i = D2_i, else, D1_i = D2_i*
IF ( LSAMEN( 2, C2, 'SY' ) ) THEN
DO J = 1, NRHS
DO I = 1, N
diff --git a/TESTING/LIN/zpbt02.f b/TESTING/LIN/zpbt02.f
index e28df4ae..ae70258d 100644
--- a/TESTING/LIN/zpbt02.f
+++ b/TESTING/LIN/zpbt02.f
@@ -59,6 +59,12 @@
*> or the number of sub-diagonals if UPLO = 'L'. KD >= 0.
*> \endverbatim
*>
+*> \param[in] NRHS
+*> \verbatim
+*> NRHS is INTEGER
+*> The number of right hand sides. NRHS >= 0.
+*> \endverbatim
+*>
*> \param[in] A
*> \verbatim
*> A is COMPLEX*16 array, dimension (LDA,N)
diff --git a/TESTING/LIN/zpst01.f b/TESTING/LIN/zpst01.f
index 380b54e9..bbedf4ae 100644
--- a/TESTING/LIN/zpst01.f
+++ b/TESTING/LIN/zpst01.f
@@ -115,6 +115,12 @@
*> If UPLO = 'U', norm(U'*U - A) / ( N * norm(A) * EPS )
*> \endverbatim
*>
+*> \param[in] RANK
+*> \verbatim
+*> RANK is INTEGER
+*> number of nonzero singular values of A.
+*> \endverbatim
+*>
*
* Authors
* =======
diff --git a/TESTING/LIN/zspt01.f b/TESTING/LIN/zspt01.f
index 5ff3eb53..37e0b09f 100644
--- a/TESTING/LIN/zspt01.f
+++ b/TESTING/LIN/zspt01.f
@@ -79,8 +79,10 @@
*> \verbatim
*> C is COMPLEX*16 array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/LIN/zspt03.f b/TESTING/LIN/zspt03.f
index c97c505c..2c3caf77 100644
--- a/TESTING/LIN/zspt03.f
+++ b/TESTING/LIN/zspt03.f
@@ -68,13 +68,13 @@
*>
*> \param[out] WORK
*> \verbatim
-*> WORK is COMPLEX*16 array, dimension (LDWORK,N)
+*> WORK is COMPLEX*16 array, dimension (LDW,N)
*> \endverbatim
*>
-*> \param[in] LDWORK
+*> \param[in] LDW
*> \verbatim
-*> LDWORK is INTEGER
-*> The leading dimension of the array WORK. LDWORK >= max(1,N).
+*> LDW is INTEGER
+*> The leading dimension of the array WORK. LDW >= max(1,N).
*> \endverbatim
*>
*> \param[out] RWORK
diff --git a/TESTING/LIN/zsyt01.f b/TESTING/LIN/zsyt01.f
index d73ac214..a676e438 100644
--- a/TESTING/LIN/zsyt01.f
+++ b/TESTING/LIN/zsyt01.f
@@ -91,8 +91,10 @@
*> \verbatim
*> C is COMPLEX*16 array, dimension (LDC,N)
*> \endverbatim
+*>
+*> \param[in] LDC
*> \verbatim
-*> LDC (integer) INTEGER
+*> LDC is INTEGER
*> The leading dimension of the array C. LDC >= max(1,N).
*> \endverbatim
*>
diff --git a/TESTING/MATGEN/clahilb.f b/TESTING/MATGEN/clahilb.f
index 4c04f0a9..68661e5d 100644
--- a/TESTING/MATGEN/clahilb.f
+++ b/TESTING/MATGEN/clahilb.f
@@ -113,6 +113,12 @@
*> < 0: if INFO = -i, the i-th argument had an illegal value
*> \endverbatim
*>
+*> \param[in] PATH
+*> \verbatim
+*> PATH is CHARACTER*3
+*> The LAPACK path name.
+*> \endverbatim
+*>
*
* Authors
* =======
diff --git a/TESTING/MATGEN/zlahilb.f b/TESTING/MATGEN/zlahilb.f
index 53df5089..3d68ab69 100644
--- a/TESTING/MATGEN/zlahilb.f
+++ b/TESTING/MATGEN/zlahilb.f
@@ -113,6 +113,12 @@
*> < 0: if INFO = -i, the i-th argument had an illegal value
*> \endverbatim
*>
+*> \param[in] PATH
+*> \verbatim
+*> PATH is CHARACTER*3
+*> The LAPACK path name.
+*> \endverbatim
+*>
*
* Authors
* =======
diff --git a/TESTING/MATGEN/zlaror.f b/TESTING/MATGEN/zlaror.f
index 34d32223..6eab03cb 100644
--- a/TESTING/MATGEN/zlaror.f
+++ b/TESTING/MATGEN/zlaror.f
@@ -56,13 +56,11 @@
*> identity matrix before applying U.
*> INIT = 'N' No initialization. Apply U to the
*> input matrix A.
-*> \endverbatim
-*> \verbatim
+*>
*> INIT = 'I' may be used to generate square (i.e., unitary)
*> or rectangular orthogonal matrices (orthogonality being
*> in the sense of ZDOTC):
-*> \endverbatim
-*> \verbatim
+*>
*> For square matrices, M=N, and SIDE many be either 'L' or
*> 'R'; the rows will be orthogonal to each other, as will the
*> columns.
@@ -75,8 +73,7 @@
*> For matrices where M > N, just use the previous
*> explanation, interchanging 'L' and 'R' and "rows" and
*> "columns".
-*> \endverbatim
-*> \verbatim
+*>
*> Not modified.
*> \endverbatim
*>
@@ -91,8 +88,10 @@
*> N is INTEGER
*> Number of columns of A. Not modified.
*> \endverbatim
+*>
+*> \param[in,out] A
*> \verbatim
-*> A COMPLEX*16 array, dimension ( LDA, N )
+*> A is COMPLEX*16 array, dimension ( LDA, N )
*> Input and output array. Overwritten by U A ( if SIDE = 'L' )
*> or by A U ( if SIDE = 'R' )
*> or by U A U* ( if SIDE = 'C')