First commit, works on my mac! Need to see how to adapt to intel compilers and of course Windows.
LAPACKE is not built by default. Is that OK?
User need to type 'make lapackelib' to generate the lib
I add a couple of examples taken from MKL LAPACKE 'make lapacke_example'
Use \par instead of \details for section.
add a Contributors Section and a Reference Section.
Remove (some) verbatim section when not needed.
Those changes have been done by hand so I am not sure I manage to catch them all.
Patch was based on 3.3.0, so required a little bit of merging.
Thank you Sven for the corrections.
Julie
JL
TESTING/EIG
zerrgg.f
Declare ILO, IHI
SRC
---
I have corrected all the following warnings and errors:
c/d/s/zsysv.f, Unused external reference ILAENV
>JL OK
c/d/s/zsysv.f, Unused local variable NB
>JL ALREADY CORRECTED
sgsvj0.f, Unused intrinsic AMIN1
> JL OK
d/sorbdb.f, Unused intrinsic MIN
> JL OK
sorcsd.f, Unused intrinsic SIN
sorcsd.f, Unused intrinsic COS
> JL OK MERGE
cpoequb.f, Unused intrinsic AIMAG
cpoequb.f, Unused intrinsic REAL
cpoequb.f, Unused local variable ZDUM
zgeequb.f, REAL --> DBLE
> JL OK
sorcsd.f, line 330: Inconsistent data type REAL (previously INTEGER) for argument 14 in reference to SORBDB
sorcsd.f, line 340: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 345: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 356: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 363: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 369: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 374: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGLQ
sorcsd.f, line 385: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 392: Inconsistent data type REAL (previously INTEGER) for argument 4 in reference to SORGQR
sorcsd.f, line 399: Inconsistent data type REAL (previously INTEGER) for argument 9 in reference to SBBCSD
> JL OK MERGE
ila(s/d/c/z)lr.f
In the WHILE loop, at about line 59 I inserted
IF (I.EQ.0) THEN
EXIT
END IF
since, otherwise when I = 0, A(0,J) is referenced.
> JL OK
TESTING/MATGEN
--------------
s/dlatm7.f
line 187: I replaced
IF( N.GT.1 ) THEN
by
IF( N.GT.1 .AND. RANK.GT.1 ) THEN
Otherwise I get a division by zero.
> JL OK
s/dlaror.f
I moved:
INFO = 0
from line 125 to line 121 in front of
IF( N.EQ.0 .OR. M.EQ.0 )
$ RETURN
otherwise INFO is not defined on return when N or M are zero.
Similar change for
c/zlaror.f
> JL OK
TESTING/LIN
-----------
s/derrsy.f
In calls to S/DSYTRI2: I replaced IW by IW(1) since the dummy argument
(LWORK) is a scalar.
> JL OK
c/zerrrfp.f
I made ALPHA and BETA REAL/DOUBLE and introduced COMPLEX/COMPLEX*16
CALPHA since calls to C/ZHFRK need real alpha and beta. In calls to
CTFSM, I then replaced ALPHA with CALPHA.
In cerrrfp.f, I replaced 1.0D0 with 1.0E0 (not strictly necessary, but
cleaner).
> JL OK
dpot06.f
Removed the unused declaration of LSAME
> JL OK
d/zdrvac.f
Removed the unused declaration of LSAME
> JL OK MERGE
s/d/c/z/ckcsd.f
Removed the unused declarations of S/D/C/ZLANGE, SIN and COS
> JL OK
c/zgennd.f
Removed the unused variable OUT
> JL already DONE
Corrected the following warnings and errors:
dchksy.f, Unused local variable MYWORK
> JL already DONE
ddrvgbx.f, line 792: Different number of arguments from the first call of DGBT02
> JL OK
cdrvgbx.f, line 726: Inconsistent data type REAL (previously COMPLEX) for argument 4 in reference to CLASET
cdrvgbx.f, line 728: Inconsistent data type REAL (previously COMPLEX) for argument 4 in reference to CLASET
cdrvgbx.f, line 780: Inconsistent data type REAL (previously COMPLEX) for argument 10 in reference to CGBT01
cdrvgbx.f, line 794: Different number of arguments from the first call of CGBT02
> JL OK
zdrvgbx.f, line 726: Inconsistent data type DOUBLE PRECISION (previously COMPLEX(KIND(0d0))) for argument 4 in reference to ZLASET
zdrvgbx.f, line 728: Inconsistent data type DOUBLE PRECISION (previously COMPLEX(KIND(0d0))) for argument 4 in reference to ZLASET
zdrvgbx.f, line 780: Inconsistent data type DOUBLE PRECISION (previously COMPLEX(KIND(0d0))) for argument 10 in reference to ZGBT01
zdrvgbx.f, line 794: Different number of arguments from the first call of ZGBT02
> JL OK
TESTING/EIG
-----------
s/d/c/zchkee.f
I inserted
CALL XLAENV( 12, 1 )
at line 1208, since IPARMS(ISPEC) with ISPEC = 12 needs to be set.
(I think I had to do this with them all, certainly with zchkee.f)
> JL OK zchkee.f cchkee.f
c/zchkee.f
In line 2316, the 15th argument of C/ZCKCSD should be real, not complex,
so I replaced A(1,7) by RWORK.
> JL OK
c/zcsdts.f
In calls to C/ZHERK I have replaced ONE by REALONE as arguments 5 and 8
should be real.
> JL OK
s/d/c/zcsdts.f
Division by zero occurs at line 155 in computing EPS when M = 0, so I
have modified
EPS2 = MAX( ULP, CLANGE( '1', M, M, WORK, LDX, RWORK ) / REAL( M ) )
to
IF (M.GT.0) THEN
EPS2 = MAX( ULP,
$ CLANGE( '1', M, M, WORK, LDX, RWORK ) / REAL( M ) )
ELSE
EPS2 = ULP
END IF
> JL OK
SRC/VARIANTS/lu/CR
------------------
s/d/c/zgetrf
Removed the unused intrinsic MOD
> JL OK
To get the manpages correcty generated.
From Tobias:
|RPMLINT prints the following warning - and I think it is correct that
Fortran's .NOT. is misread as NOT. macro.
Tobias
RPMLINT report:
===============
lapack-man.noarch: W: manual-page-warning
/usr/share/man/man3/slaqr3.3.gz 351: warning: macro `NOT.BULGE' not defined
lapack-man.noarch: W: manual-page-warning
/usr/share/man/man3/dlaqr3.3.gz 351: warning: macro `NOT.BULGE' not defined
lapack-man.noarch: W: manual-page-warning
/usr/share/man/man3/lsametst.3.gz 53: warning: macro `NOT.LSAME(' not
defined
lapack-man.noarch: W: manual-page-warning
/usr/share/man/man3/slaqr2.3.gz 317: warning: macro `NOT.BULGE' not defined
lapack-man.noarch: W: manual-page-warning
/usr/share/man/man3/dlaqr2.3.gz 317: warning: macro `NOT.BULGE' not defined
This man page may contain problems that can cause it not to be formatted as
intended.|
Bug reported by John Tellefson to LAPACK Mailing List on February 7th.
Dummy routine was removed in LAPACK 3.3.0 because it seems it was working on all machines.
[Re] Incorporation of the dummy routine and incorporate John's suggested cosmectic changes to allow
an easier change in number of operation to perform.
"modified secondtst.f from lapack-3.2.2 with the old
code that makes it reliably report timing loop results. I also added a
variable TOTAL to simplify changes in setting array size and iterations
which affect total flops and made few other changes.
Jason (Riedy) wrote our ( ... his? :) ) ideas about it three years ago:
http://www.netlib.org/lapack-dev/lapack-coding/program-style.html#id2537289
Piotr (Luszczek) has written two subroutines, tested them on few platforms, collected the result on his webpage, and sent emails to the lapackers a few times. See:
http://www.cs.utk.edu/~luszczek/lapack/lamch.html
Theses slamch.f and dlamch.f subroutines were taken from PLASMA-2.1.0.
Change to the LAPACK library:
* move the current LAPACK subroutine slamch.f (resp dlamch.f) as
slamchf77.f (resp. dlamchf77.f),
* take the new slamch.f subroutines (resp. dlamch.f), remove the PLASMA
header, have a LAPACK header, and insert the new routines in the
library.
Minor:
* I would leave these routines compiled with the NOOPT flag.
Problem:
* CLAPACK: no idea how CLAPACK's going to handle this. CLAPACK can rely on
IEEE arithmetic, can relay on float.h, or can rely on the previous
xlamch.f