Compare commits

...

No commits in common. "c8" and "c10s" have entirely different histories.
c8 ... c10s

33 changed files with 26030 additions and 401 deletions

21
.gitignore vendored
View File

@ -1,2 +1,19 @@
SOURCES/lapack-3.8.0.tar.gz
SOURCES/manpages.tgz
lapack-3.2.1.tgz
manpages.tgz
lapack-3.2.2.tgz
/lapack-3.3.1.tgz
/lapack-3.4.0.tgz
/lapack-3.4.1.tgz
/lapack-3.4.2.tgz
/lapack-3.4.2-clean.tgz
/lapack-3.5.0.tgz
/lapack-3.6.0.tgz
/lapack-3.6.1.tgz
/lapack-3.7.1.tgz
/lapack-3.8.0.tar.gz
/v3.9.0.tar.gz
/v3.9.1.tar.gz
/v3.10.0.tar.gz
/v3.10.1.tar.gz
/v3.11.tar.gz
/v3.12.0.tar.gz

View File

@ -1,2 +0,0 @@
55ac9d6be510883c5442c8aca967722cdf58fb29 SOURCES/lapack-3.8.0.tar.gz
eb9ce19ce73e645bfb22af5480f16190baf09ae3 SOURCES/manpages.tgz

View File

@ -0,0 +1,78 @@
From 0631b6beaed60ba118b0b027c0f8d35397bf5df0 Mon Sep 17 00:00:00 2001
From: Keno Fischer <keno@juliacomputing.com>
Date: Thu, 30 Sep 2021 03:51:23 -0400
Subject: [PATCH] Fix out of bounds read in slarrv
This was originally reported as https://github.com/JuliaLang/julia/issues/42415.
I've tracked this down to an our of bounds read on the following line:
https://github.com/Reference-LAPACK/lapack/blob/44ecb6a5ff821b1cbb39f8cc2166cb098e060b4d/SRC/slarrv.f#L423
In the crashing example, `M` is `0`, causing `slarrv` to read uninitialized
memory from the work array. I believe the `0` for `M` is correct and indeed,
the documentation above supports that `M` may be zero:
https://github.com/Reference-LAPACK/lapack/blob/44ecb6a5ff821b1cbb39f8cc2166cb098e060b4d/SRC/slarrv.f#L113-L116
I believe it may be sufficient to early-out this function as suggested
in this PR. However, I have limited context for the full routine here,
so I would appreciate a sanity check.
---
SRC/clarrv.f | 2 +-
SRC/dlarrv.f | 2 +-
SRC/slarrv.f | 2 +-
SRC/zlarrv.f | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/SRC/clarrv.f b/SRC/clarrv.f
index 1f09e4da6..42f710757 100644
--- a/SRC/clarrv.f
+++ b/SRC/clarrv.f
@@ -348,7 +348,7 @@ SUBROUTINE CLARRV( N, VL, VU, D, L, PIVMIN,
*
* Quick return if possible
*
- IF( N.LE.0 ) THEN
+ IF( (N.LE.0).OR.(M.LE.0) ) THEN
RETURN
END IF
*
diff --git a/SRC/dlarrv.f b/SRC/dlarrv.f
index b036c1e66..299430361 100644
--- a/SRC/dlarrv.f
+++ b/SRC/dlarrv.f
@@ -350,7 +350,7 @@ SUBROUTINE DLARRV( N, VL, VU, D, L, PIVMIN,
*
* Quick return if possible
*
- IF( N.LE.0 ) THEN
+ IF( (N.LE.0).OR.(M.LE.0) ) THEN
RETURN
END IF
*
diff --git a/SRC/slarrv.f b/SRC/slarrv.f
index 9d72b339a..95f94fd1b 100644
--- a/SRC/slarrv.f
+++ b/SRC/slarrv.f
@@ -350,7 +350,7 @@ SUBROUTINE SLARRV( N, VL, VU, D, L, PIVMIN,
*
* Quick return if possible
*
- IF( N.LE.0 ) THEN
+ IF( (N.LE.0).OR.(M.LE.0) ) THEN
RETURN
END IF
*
diff --git a/SRC/zlarrv.f b/SRC/zlarrv.f
index 51ec558f5..e4be63e0d 100644
--- a/SRC/zlarrv.f
+++ b/SRC/zlarrv.f
@@ -348,7 +348,7 @@ SUBROUTINE ZLARRV( N, VL, VU, D, L, PIVMIN,
*
* Quick return if possible
*
- IF( N.LE.0 ) THEN
+ IF( (N.LE.0).OR.(M.LE.0) ) THEN
RETURN
END IF
*

148
765.patch Normal file
View File

@ -0,0 +1,148 @@
From 5d8a3a804befd179a28c5e4c7845e982b8d1922e Mon Sep 17 00:00:00 2001
From: Weslley S Pereira <weslley.spereira@gmail.com>
Date: Tue, 22 Nov 2022 18:19:33 -0700
Subject: [PATCH] Check for NaNs in xGECON
---
SRC/cgecon.f | 7 ++++---
SRC/dgecon.f | 7 ++++---
SRC/sgecon.f | 7 ++++---
SRC/zgecon.f | 7 ++++---
4 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/SRC/cgecon.f b/SRC/cgecon.f
index 48f409b68..6f426c2ab 100644
--- a/SRC/cgecon.f
+++ b/SRC/cgecon.f
@@ -106,6 +106,7 @@
*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> =-5: if ANORM is NAN or negative.
*> \endverbatim
*
* Authors:
@@ -153,10 +154,10 @@ SUBROUTINE CGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
INTEGER ISAVE( 3 )
* ..
* .. External Functions ..
- LOGICAL LSAME
+ LOGICAL LSAME, SISNAN
INTEGER ICAMAX
REAL SLAMCH
- EXTERNAL LSAME, ICAMAX, SLAMCH
+ EXTERNAL LSAME, ICAMAX, SLAMCH, SISNAN
* ..
* .. External Subroutines ..
EXTERNAL CLACN2, CLATRS, CSRSCL, XERBLA
@@ -182,7 +183,7 @@ SUBROUTINE CGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
INFO = -2
ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
INFO = -4
- ELSE IF( ANORM.LT.ZERO ) THEN
+ ELSE IF( ANORM.LT.ZERO .OR. SISNAN( ANORM ) ) THEN
INFO = -5
END IF
IF( INFO.NE.0 ) THEN
diff --git a/SRC/dgecon.f b/SRC/dgecon.f
index aa10dee9a..1ad302ae3 100644
--- a/SRC/dgecon.f
+++ b/SRC/dgecon.f
@@ -106,6 +106,7 @@
*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> =-5: if ANORM is NAN or negative.
*> \endverbatim
*
* Authors:
@@ -152,10 +153,10 @@ SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
INTEGER ISAVE( 3 )
* ..
* .. External Functions ..
- LOGICAL LSAME
+ LOGICAL LSAME, DISNAN
INTEGER IDAMAX
DOUBLE PRECISION DLAMCH
- EXTERNAL LSAME, IDAMAX, DLAMCH
+ EXTERNAL LSAME, IDAMAX, DLAMCH, DISNAN
* ..
* .. External Subroutines ..
EXTERNAL DLACN2, DLATRS, DRSCL, XERBLA
@@ -175,7 +176,7 @@ SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
INFO = -2
ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
INFO = -4
- ELSE IF( ANORM.LT.ZERO ) THEN
+ ELSE IF( ANORM.LT.ZERO .OR. DISNAN( ANORM ) ) THEN
INFO = -5
END IF
IF( INFO.NE.0 ) THEN
diff --git a/SRC/sgecon.f b/SRC/sgecon.f
index a284b094b..86aeea73b 100644
--- a/SRC/sgecon.f
+++ b/SRC/sgecon.f
@@ -106,6 +106,7 @@
*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> =-5: if ANORM is NAN or negative.
*> \endverbatim
*
* Authors:
@@ -152,10 +153,10 @@ SUBROUTINE SGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
INTEGER ISAVE( 3 )
* ..
* .. External Functions ..
- LOGICAL LSAME
+ LOGICAL LSAME, SISNAN
INTEGER ISAMAX
REAL SLAMCH
- EXTERNAL LSAME, ISAMAX, SLAMCH
+ EXTERNAL LSAME, ISAMAX, SLAMCH, SISNAN
* ..
* .. External Subroutines ..
EXTERNAL SLACN2, SLATRS, SRSCL, XERBLA
@@ -175,7 +176,7 @@ SUBROUTINE SGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, IWORK,
INFO = -2
ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
INFO = -4
- ELSE IF( ANORM.LT.ZERO ) THEN
+ ELSE IF( ANORM.LT.ZERO .OR. SISNAN( ANORM ) ) THEN
INFO = -5
END IF
IF( INFO.NE.0 ) THEN
diff --git a/SRC/zgecon.f b/SRC/zgecon.f
index 3d3127f9d..9cbfe35bc 100644
--- a/SRC/zgecon.f
+++ b/SRC/zgecon.f
@@ -106,6 +106,7 @@
*> INFO is INTEGER
*> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value
+*> =-5: if ANORM is NAN or negative.
*> \endverbatim
*
* Authors:
@@ -153,10 +154,10 @@ SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
INTEGER ISAVE( 3 )
* ..
* .. External Functions ..
- LOGICAL LSAME
+ LOGICAL LSAME, DISNAN
INTEGER IZAMAX
DOUBLE PRECISION DLAMCH
- EXTERNAL LSAME, IZAMAX, DLAMCH
+ EXTERNAL LSAME, IZAMAX, DLAMCH, DISNAN
* ..
* .. External Subroutines ..
EXTERNAL XERBLA, ZDRSCL, ZLACN2, ZLATRS
@@ -182,7 +183,7 @@ SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
INFO = -2
ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
INFO = -4
- ELSE IF( ANORM.LT.ZERO ) THEN
+ ELSE IF( ANORM.LT.ZERO .OR. DISNAN( ANORM ) ) THEN
INFO = -5
END IF
IF( INFO.NE.0 ) THEN

View File

@ -0,0 +1,138 @@
From 87536aa3c8bb0af00f66088fb6ac05d87509e011 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@debian.org>
Date: Sat, 23 Nov 2019 12:22:20 +0100
Subject: [PATCH] Restore missing prototypes for deprecated LAPACK functions
Some LAPACK functions prototypes were inadvertedly dropped in 3.9.0. As a
consequence, LAPACKE has several unresolved symbols.
Closes #365
---
LAPACKE/include/lapack.h | 100 +++++++++++++++++++++++++++++++++++++++
1 file changed, 100 insertions(+)
diff --git a/LAPACKE/include/lapack.h b/LAPACKE/include/lapack.h
index 3f425325f..5c131d844 100644
--- a/LAPACKE/include/lapack.h
+++ b/LAPACKE/include/lapack.h
@@ -1842,6 +1842,28 @@ void LAPACK_zgeqlf(
lapack_complex_double* work, lapack_int const* lwork,
lapack_int* info );
+#define LAPACK_sgeqpf LAPACK_GLOBAL(sgeqpf,SGEQPF)
+void LAPACK_sgeqpf( lapack_int* m, lapack_int* n, float* a, lapack_int* lda,
+ lapack_int* jpvt, float* tau, float* work,
+ lapack_int *info );
+
+#define LAPACK_dgeqpf LAPACK_GLOBAL(dgeqpf,DGEQPF)
+void LAPACK_dgeqpf( lapack_int* m, lapack_int* n, double* a, lapack_int* lda,
+ lapack_int* jpvt, double* tau, double* work,
+ lapack_int *info );
+
+#define LAPACK_cgeqpf LAPACK_GLOBAL(cgeqpf,CGEQPF)
+void LAPACK_cgeqpf( lapack_int* m, lapack_int* n, lapack_complex_float* a,
+ lapack_int* lda, lapack_int* jpvt,
+ lapack_complex_float* tau, lapack_complex_float* work,
+ float* rwork, lapack_int *info );
+
+#define LAPACK_zgeqpf LAPACK_GLOBAL(zgeqpf,ZGEQPF)
+void LAPACK_zgeqpf( lapack_int* m, lapack_int* n, lapack_complex_double* a,
+ lapack_int* lda, lapack_int* jpvt,
+ lapack_complex_double* tau, lapack_complex_double* work,
+ double* rwork, lapack_int *info );
+
#define LAPACK_cgeqp3 LAPACK_GLOBAL(cgeqp3,CGEQP3)
void LAPACK_cgeqp3(
lapack_int const* m, lapack_int const* n,
@@ -3617,6 +3639,47 @@ void LAPACK_zggrqf(
lapack_complex_double* work, lapack_int const* lwork,
lapack_int* info );
+#define LAPACK_sggsvd LAPACK_GLOBAL(sggsvd,SGGSVD)
+lapack_int LAPACKE_sggsvd( int matrix_layout, char jobu, char jobv, char jobq,
+ lapack_int m, lapack_int n, lapack_int p,
+ lapack_int* k, lapack_int* l, float* a,
+ lapack_int lda, float* b, lapack_int ldb,
+ float* alpha, float* beta, float* u, lapack_int ldu,
+ float* v, lapack_int ldv, float* q, lapack_int ldq,
+ lapack_int* iwork );
+
+#define LAPACK_dggsvd LAPACK_GLOBAL(dggsvd,DGGSVD)
+lapack_int LAPACKE_dggsvd( int matrix_layout, char jobu, char jobv, char jobq,
+ lapack_int m, lapack_int n, lapack_int p,
+ lapack_int* k, lapack_int* l, double* a,
+ lapack_int lda, double* b, lapack_int ldb,
+ double* alpha, double* beta, double* u,
+ lapack_int ldu, double* v, lapack_int ldv, double* q,
+ lapack_int ldq, lapack_int* iwork );
+
+#define LAPACK_cggsvd LAPACK_GLOBAL(cggsvd,CGGSVD)
+lapack_int LAPACKE_cggsvd( int matrix_layout, char jobu, char jobv, char jobq,
+ lapack_int m, lapack_int n, lapack_int p,
+ lapack_int* k, lapack_int* l,
+ lapack_complex_float* a, lapack_int lda,
+ lapack_complex_float* b, lapack_int ldb,
+ float* alpha, float* beta, lapack_complex_float* u,
+ lapack_int ldu, lapack_complex_float* v,
+ lapack_int ldv, lapack_complex_float* q,
+ lapack_int ldq, lapack_int* iwork );
+
+#define LAPACK_zggsvd LAPACK_GLOBAL(zggsvd,ZGGSVD)
+lapack_int LAPACKE_zggsvd( int matrix_layout, char jobu, char jobv, char jobq,
+ lapack_int m, lapack_int n, lapack_int p,
+ lapack_int* k, lapack_int* l,
+ lapack_complex_double* a, lapack_int lda,
+ lapack_complex_double* b, lapack_int ldb,
+ double* alpha, double* beta,
+ lapack_complex_double* u, lapack_int ldu,
+ lapack_complex_double* v, lapack_int ldv,
+ lapack_complex_double* q, lapack_int ldq,
+ lapack_int* iwork );
+
#define LAPACK_cggsvd3 LAPACK_GLOBAL(cggsvd3,CGGSVD3)
void LAPACK_cggsvd3(
char const* jobu, char const* jobv, char const* jobq,
@@ -3679,6 +3742,43 @@ void LAPACK_zggsvd3(
lapack_int* iwork,
lapack_int* info );
+#define LAPACK_sggsvp LAPACK_GLOBAL(sggsvp,SGGSVP)
+lapack_int LAPACKE_sggsvp( int matrix_layout, char jobu, char jobv, char jobq,
+ lapack_int m, lapack_int p, lapack_int n, float* a,
+ lapack_int lda, float* b, lapack_int ldb, float tola,
+ float tolb, lapack_int* k, lapack_int* l, float* u,
+ lapack_int ldu, float* v, lapack_int ldv, float* q,
+ lapack_int ldq );
+
+#define LAPACK_dggsvp LAPACK_GLOBAL(dggsvp,DGGSVP)
+lapack_int LAPACKE_dggsvp( int matrix_layout, char jobu, char jobv, char jobq,
+ lapack_int m, lapack_int p, lapack_int n, double* a,
+ lapack_int lda, double* b, lapack_int ldb,
+ double tola, double tolb, lapack_int* k,
+ lapack_int* l, double* u, lapack_int ldu, double* v,
+ lapack_int ldv, double* q, lapack_int ldq );
+
+#define LAPACK_cggsvp LAPACK_GLOBAL(cggsvp,CGGSVP)
+lapack_int LAPACKE_cggsvp( int matrix_layout, char jobu, char jobv, char jobq,
+ lapack_int m, lapack_int p, lapack_int n,
+ lapack_complex_float* a, lapack_int lda,
+ lapack_complex_float* b, lapack_int ldb, float tola,
+ float tolb, lapack_int* k, lapack_int* l,
+ lapack_complex_float* u, lapack_int ldu,
+ lapack_complex_float* v, lapack_int ldv,
+ lapack_complex_float* q, lapack_int ldq );
+
+#define LAPACK_zggsvp LAPACK_GLOBAL(zggsvp,ZGGSVP)
+lapack_int LAPACKE_zggsvp( int matrix_layout, char jobu, char jobv, char jobq,
+ lapack_int m, lapack_int p, lapack_int n,
+ lapack_complex_double* a, lapack_int lda,
+ lapack_complex_double* b, lapack_int ldb,
+ double tola, double tolb, lapack_int* k,
+ lapack_int* l, lapack_complex_double* u,
+ lapack_int ldu, lapack_complex_double* v,
+ lapack_int ldv, lapack_complex_double* q,
+ lapack_int ldq );
+
#define LAPACK_cggsvp3 LAPACK_GLOBAL(cggsvp3,CGGSVP3)
void LAPACK_cggsvp3(
char const* jobu, char const* jobv, char const* jobq,

View File

@ -1,7 +1,7 @@
OBJCOPY = objcopy
ifndef SYMBOLPREFIX
SYMBOLPREFIX =
ifndef SYMBOLSUFFIX
SYMBOLSUFFIX =
endif
clean:
@ -56,29 +56,29 @@ OBJS= $(SBLAS1) $(SBLAS2) $(SBLAS3) $(DBLAS1) $(DBLAS2) $(DBLAS3) \
$(ALLBLAS)
static: $(OBJS)
ifeq "$(SYMBOLPREFIX)" ""
ifeq "$(SYMBOLSUFFIX)" ""
ar ruv libblas.a $(OBJS)
ranlib libblas.a
else
ar ruv libblas$(SYMBOLPREFIX).a $(OBJS)
ranlib libblas$(SYMBOLPREFIX).a
for i in `nm libblas$(SYMBOLPREFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > blas-static-prefix.def.dirty
ar ruv libblas$(SYMBOLSUFFIX).a $(OBJS)
ranlib libblas$(SYMBOLSUFFIX).a
for i in `nm libblas$(SYMBOLSUFFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > blas-static-prefix.def.dirty
sort -n blas-static-prefix.def.dirty | uniq > blas-static-prefix.def
$(OBJCOPY) --redefine-syms blas-static-prefix.def libblas$(SYMBOLPREFIX).a libblas$(SYMBOLPREFIX).a.fixed
rm -rf libblas$(SYMBOLPREFIX).a
mv libblas$(SYMBOLPREFIX).a.fixed libblas$(SYMBOLPREFIX).a
$(OBJCOPY) --redefine-syms blas-static-prefix.def libblas$(SYMBOLSUFFIX).a libblas$(SYMBOLSUFFIX).a.fixed
rm -rf libblas$(SYMBOLSUFFIX).a
mv libblas$(SYMBOLSUFFIX).a.fixed libblas$(SYMBOLSUFFIX).a
endif
shared: $(OBJS)
ifeq "$(SYMBOLPREFIX)" ""
ifeq "$(SYMBOLSUFFIX)" ""
# No renaming needed
cc $(CFLAGS) -shared -Wl,-soname,libblas.so.@SHORTVER@ -o libblas.so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc
else
cc $(CFLAGS) -shared -Wl,-soname,libblas$(SYMBOLPREFIX).so.@SHORTVER@ -o libblas$(SYMBOLPREFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc
# generate a list of all symbols in shared library and rename with SYMBOLPREFIX
for i in `readelf -Ws libblas$(SYMBOLPREFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > blas-prefix.def.dirty
cc $(CFLAGS) -shared -Wl,-soname,libblas$(SYMBOLSUFFIX).so.@SHORTVER@ -o libblas$(SYMBOLSUFFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc
# generate a list of all symbols in shared library and rename with SYMBOLSUFFIX
for i in `readelf -Ws libblas$(SYMBOLSUFFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > blas-prefix.def.dirty
sort -n blas-prefix.def.dirty | uniq > blas-prefix.def
$(OBJCOPY) --redefine-syms blas-prefix.def libblas$(SYMBOLPREFIX).so.@LONGVER@ libblas$(SYMBOLPREFIX).so.@LONGVER@.fixed
rm -rf libblas$(SYMBOLPREFIX).so.@LONGVER@
mv libblas$(SYMBOLPREFIX).so.@LONGVER@.fixed libblas$(SYMBOLPREFIX).so.@LONGVER@
$(OBJCOPY) --redefine-syms blas-prefix.def libblas$(SYMBOLSUFFIX).so.@LONGVER@ libblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed
rm -rf libblas$(SYMBOLSUFFIX).so.@LONGVER@
mv libblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed libblas$(SYMBOLSUFFIX).so.@LONGVER@
endif

View File

@ -1,7 +1,7 @@
OBJCOPY = objcopy
ifndef SYMBOLPREFIX
SYMBOLPREFIX =
ifndef SYMBOLSUFFIX
SYMBOLSUFFIX =
endif
clean:
@ -70,30 +70,30 @@ OBJS= $(SLEV1) $(DLEV1) $(CLEV1) $(ZLEV1) $(SCLEV1) $(SLEV2) $(DLEV2) $(CLEV2) \
$(ZLEV2) $(SLEV3) $(DLEV3) $(CLEV3) $(ZLEV3) $(ERRHAND)
static: $(OBJS)
ifeq "$(SYMBOLPREFIX)" ""
ifeq "$(SYMBOLSUFFIX)" ""
ar ruv libcblas.a $(OBJS)
ranlib libcblas.a
else
ar ruv libcblas$(SYMBOLPREFIX).a $(OBJS)
ranlib libcblas$(SYMBOLPREFIX).a
for i in `nm libcblas$(SYMBOLPREFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > cblas-static-prefix.def.dirty
ar ruv libcblas$(SYMBOLSUFFIX).a $(OBJS)
ranlib libcblas$(SYMBOLSUFFIX).a
for i in `nm libcblas$(SYMBOLSUFFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > cblas-static-prefix.def.dirty
sort -n cblas-static-prefix.def.dirty | uniq > cblas-static-prefix.def
$(OBJCOPY) --redefine-syms cblas-static-prefix.def libcblas$(SYMBOLPREFIX).a libcblas$(SYMBOLPREFIX).a.fixed
rm -rf libcblas$(SYMBOLPREFIX).a
mv libcblas$(SYMBOLPREFIX).a.fixed libcblas$(SYMBOLPREFIX).a
$(OBJCOPY) --redefine-syms cblas-static-prefix.def libcblas$(SYMBOLSUFFIX).a libcblas$(SYMBOLSUFFIX).a.fixed
rm -rf libcblas$(SYMBOLSUFFIX).a
mv libcblas$(SYMBOLSUFFIX).a.fixed libcblas$(SYMBOLSUFFIX).a
endif
shared: $(OBJS)
ifeq "$(SYMBOLPREFIX)" ""
ifeq "$(SYMBOLSUFFIX)" ""
# No renaming needed
cc $(CFLAGS) -shared -Wl,-soname,libcblas.so.@SHORTVER@ -o libcblas.so.@LONGVER@ $(OBJS) $(LDFLAGS) -L../../ -lblas -lm -lgfortran -lc
else
cc $(CFLAGS) -shared -Wl,-soname,libcblas$(SYMBOLPREFIX).so.@SHORTVER@ -o libcblas$(SYMBOLPREFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -L../.. -lblas -lm -lgfortran -lc
# generate a list of all symbols in shared library and rename with SYMBOLPREFIX
for i in `readelf -Ws libcblas$(SYMBOLPREFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > cblas-prefix.def.dirty
cc $(CFLAGS) -shared -Wl,-soname,libcblas$(SYMBOLSUFFIX).so.@SHORTVER@ -o libcblas$(SYMBOLSUFFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -L../.. -lblas -lm -lgfortran -lc
# generate a list of all symbols in shared library and rename with SYMBOLSUFFIX
for i in `readelf -Ws libcblas$(SYMBOLSUFFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > cblas-prefix.def.dirty
sort -n cblas-prefix.def.dirty | uniq > cblas-prefix.def
$(OBJCOPY) --redefine-syms cblas-prefix.def libcblas$(SYMBOLPREFIX).so.@LONGVER@ libcblas$(SYMBOLPREFIX).so.@LONGVER@.fixed
rm -rf libcblas$(SYMBOLPREFIX).so.@LONGVER@
mv libcblas$(SYMBOLPREFIX).so.@LONGVER@.fixed libcblas$(SYMBOLPREFIX).so.@LONGVER@
$(OBJCOPY) --redefine-syms cblas-prefix.def libcblas$(SYMBOLSUFFIX).so.@LONGVER@ libcblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed
rm -rf libcblas$(SYMBOLSUFFIX).so.@LONGVER@
mv libcblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed libcblas$(SYMBOLSUFFIX).so.@LONGVER@
endif

View File

@ -2,8 +2,8 @@ include ../make.inc
OBJCOPY = objcopy
ifndef SYMBOLPREFIX
SYMBOLPREFIX =
ifndef SYMBOLSUFFIX
SYMBOLSUFFIX =
endif
clean:
@ -38,7 +38,7 @@ SLASRC = sbdsvdx.o sgbbrd.o sgbcon.o sgbequ.o sgbrfs.o sgbsv.o \
slatbs.o slatdf.o slatps.o slatrd.o slatrs.o slatrz.o \
slauu2.o slauum.o sopgtr.o sopmtr.o sorg2l.o sorg2r.o \
sorgbr.o sorghr.o sorgl2.o sorglq.o sorgql.o sorgqr.o sorgr2.o \
sorgrq.o sorgtr.o sorm2l.o sorm2r.o sorm22.o \
sorgrq.o sorgtr.o sorgtsqr.o sorm2l.o sorm2r.o sorm22.o \
sormbr.o sormhr.o sorml2.o sormlq.o sormql.o sormqr.o sormr2.o \
sormr3.o sormrq.o sormrz.o sormtr.o spbcon.o spbequ.o spbrfs.o \
spbstf.o spbsv.o spbsvx.o \
@ -80,9 +80,11 @@ SLASRC = sbdsvdx.o sgbbrd.o sgbcon.o sgbequ.o sgbrfs.o sgbsv.o \
sgetsls.o sgeqr.o slatsqr.o slamtsqr.o sgemqr.o \
sgelq.o slaswlq.o slamswlq.o sgemlq.o \
stplqt.o stplqt2.o stpmlqt.o \
sorhr_col.o slaorhr_col_getrfnp.o slaorhr_col_getrfnp2.o \
ssytrd_2stage.o ssytrd_sy2sb.o ssytrd_sb2st.o ssb2st_kernels.o \
ssyevd_2stage.o ssyev_2stage.o ssyevx_2stage.o ssyevr_2stage.o \
ssbev_2stage.o ssbevx_2stage.o ssbevd_2stage.o ssygv_2stage.o \
sgesvdq.o scombssq.o \
DEPRECATED/sgegs.o DEPRECATED/sgegv.o DEPRECATED/sgeqpf.o DEPRECATED/sgelsx.o \
DEPRECATED/sggsvd.o DEPRECATED/sggsvp.o DEPRECATED/slahrd.o DEPRECATED/slatzm.o \
DEPRECATED/stzrqf.o
@ -159,7 +161,7 @@ CLASRC = cbdsqr.o cgbbrd.o cgbcon.o cgbequ.o cgbrfs.o cgbsv.o cgbsvx.o \
ctptrs.o ctrcon.o ctrevc.o ctrevc3.o ctrexc.o ctrrfs.o ctrsen.o ctrsna.o \
ctrsyl.o ctrti2.o ctrtri.o ctrtrs.o ctzrzf.o cung2l.o cung2r.o \
cungbr.o cunghr.o cungl2.o cunglq.o cungql.o cungqr.o cungr2.o \
cungrq.o cungtr.o cunm2l.o cunm2r.o cunmbr.o cunmhr.o cunml2.o cunm22.o \
cungrq.o cungtr.o cungtsqr.o cunm2l.o cunm2r.o cunmbr.o cunmhr.o cunml2.o cunm22.o \
cunmlq.o cunmql.o cunmqr.o cunmr2.o cunmr3.o cunmrq.o cunmrz.o \
cunmtr.o cupgtr.o cupmtr.o icmax1.o scsum1.o cstemr.o \
chfrk.o ctfttp.o clanhf.o cpftrf.o cpftri.o cpftrs.o ctfsm.o ctftri.o \
@ -173,9 +175,11 @@ CLASRC = cbdsqr.o cgbbrd.o cgbcon.o cgbequ.o cgbrfs.o cgbsv.o cgbsvx.o \
cgetsls.o cgeqr.o clatsqr.o clamtsqr.o cgemqr.o \
cgelq.o claswlq.o clamswlq.o cgemlq.o \
ctplqt.o ctplqt2.o ctpmlqt.o \
cunhr_col.o claunhr_col_getrfnp.o claunhr_col_getrfnp2.o \
chetrd_2stage.o chetrd_he2hb.o chetrd_hb2st.o chb2st_kernels.o \
cheevd_2stage.o cheev_2stage.o cheevx_2stage.o cheevr_2stage.o \
chbev_2stage.o chbevx_2stage.o chbevd_2stage.o chegv_2stage.o \
cgesvdq.o \
DEPRECATED/cgegs.o DEPRECATED/cgegv.o \
DEPRECATED/cgeqpf.o DEPRECATED/cgelsx.o DEPRECATED/cggsvd.o \
DEPRECATED/cggsvp.o DEPRECATED/clahrd.o DEPRECATED/clatzm.o DEPRECATED/ctzrqf.o
@ -209,7 +213,7 @@ DLASRC = dbdsvdx.o dgbbrd.o dgbcon.o dgbequ.o dgbrfs.o dgbsv.o \
dlatbs.o dlatdf.o dlatps.o dlatrd.o dlatrs.o dlatrz.o dlauu2.o \
dlauum.o dopgtr.o dopmtr.o dorg2l.o dorg2r.o \
dorgbr.o dorghr.o dorgl2.o dorglq.o dorgql.o dorgqr.o dorgr2.o \
dorgrq.o dorgtr.o dorm2l.o dorm2r.o dorm22.o \
dorgrq.o dorgtr.o dorgtsqr.o dorm2l.o dorm2r.o dorm22.o \
dormbr.o dormhr.o dorml2.o dormlq.o dormql.o dormqr.o dormr2.o \
dormr3.o dormrq.o dormrz.o dormtr.o dpbcon.o dpbequ.o dpbrfs.o \
dpbstf.o dpbsv.o dpbsvx.o \
@ -253,9 +257,11 @@ DLASRC = dbdsvdx.o dgbbrd.o dgbcon.o dgbequ.o dgbrfs.o dgbsv.o \
dgetsls.o dgeqr.o dlatsqr.o dlamtsqr.o dgemqr.o \
dgelq.o dlaswlq.o dlamswlq.o dgemlq.o \
dtplqt.o dtplqt2.o dtpmlqt.o \
dorhr_col.o dlaorhr_col_getrfnp.o dlaorhr_col_getrfnp2.o \
dsytrd_2stage.o dsytrd_sy2sb.o dsytrd_sb2st.o dsb2st_kernels.o \
dsyevd_2stage.o dsyev_2stage.o dsyevx_2stage.o dsyevr_2stage.o \
dsbev_2stage.o dsbevx_2stage.o dsbevd_2stage.o dsygv_2stage.o \
dgesvdq.o dcombssq.o \
DEPRECATED/dgegs.o DEPRECATED/dgegv.o \
DEPRECATED/dgeqpf.o DEPRECATED/dgelsx.o DEPRECATED/dggsvd.o \
DEPRECATED/dggsvp.o DEPRECATED/dlahrd.o DEPRECATED/dlatzm.o DEPRECATED/dtzrqf.o
@ -332,7 +338,7 @@ ZLASRC = zbdsqr.o zgbbrd.o zgbcon.o zgbequ.o zgbrfs.o zgbsv.o zgbsvx.o \
ztptrs.o ztrcon.o ztrevc.o ztrevc3.o ztrexc.o ztrrfs.o ztrsen.o ztrsna.o \
ztrsyl.o ztrti2.o ztrtri.o ztrtrs.o ztzrzf.o zung2l.o \
zung2r.o zungbr.o zunghr.o zungl2.o zunglq.o zungql.o zungqr.o zungr2.o \
zungrq.o zungtr.o zunm2l.o zunm2r.o zunmbr.o zunmhr.o zunml2.o zunm22.o \
zungrq.o zungtr.o zungtsqr.o zunm2l.o zunm2r.o zunmbr.o zunmhr.o zunml2.o zunm22.o \
zunmlq.o zunmql.o zunmqr.o zunmr2.o zunmr3.o zunmrq.o zunmrz.o \
zunmtr.o zupgtr.o \
zupmtr.o izmax1.o dzsum1.o zstemr.o \
@ -348,9 +354,11 @@ ZLASRC = zbdsqr.o zgbbrd.o zgbcon.o zgbequ.o zgbrfs.o zgbsv.o zgbsvx.o \
zgelqt.o zgelqt3.o zgemlqt.o \
zgetsls.o zgeqr.o zlatsqr.o zlamtsqr.o zgemqr.o \
zgelq.o zlaswlq.o zlamswlq.o zgemlq.o \
zunhr_col.o zlaunhr_col_getrfnp.o zlaunhr_col_getrfnp2.o \
zhetrd_2stage.o zhetrd_he2hb.o zhetrd_hb2st.o zhb2st_kernels.o \
zheevd_2stage.o zheev_2stage.o zheevx_2stage.o zheevr_2stage.o \
zhbev_2stage.o zhbevx_2stage.o zhbevd_2stage.o zhegv_2stage.o \
zgesvdq.o \
SCLAUX = sbdsdc.o \
sbdsqr.o sdisna.o slabad.o slacpy.o sladiv.o slae2.o slaebz.o \
@ -442,29 +450,29 @@ ALLXOBJ=$(SXLASRC) $(DXLASRC) $(CXLASRC) $(ZXLASRC) $(ALLXAUX)
endif
static: $(ALLOBJ) $(ALLXOBJ)
ifeq "$(SYMBOLPREFIX)" ""
ifeq "$(SYMBOLSUFFIX)" ""
ar ruv liblapack.a $(ALLOBJ) $(ALLXOBJ)
ranlib liblapack.a
else
ar ruv liblapack$(SYMBOLPREFIX).a $(ALLOBJ) $(ALLXOBJ)
ranlib liblapack$(SYMBOLPREFIX).a
for i in `nm liblapack$(SYMBOLPREFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > lapack-static-prefix.def.dirty
ar ruv liblapack$(SYMBOLSUFFIX).a $(ALLOBJ) $(ALLXOBJ)
ranlib liblapack$(SYMBOLSUFFIX).a
for i in `nm liblapack$(SYMBOLSUFFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > lapack-static-prefix.def.dirty
sort -n lapack-static-prefix.def.dirty | uniq > lapack-static-prefix.def
$(OBJCOPY) --redefine-syms lapack-static-prefix.def liblapack$(SYMBOLPREFIX).a liblapack$(SYMBOLPREFIX).a.fixed
rm -rf liblapack$(SYMBOLPREFIX).a
mv liblapack$(SYMBOLPREFIX).a.fixed liblapack$(SYMBOLPREFIX).a
$(OBJCOPY) --redefine-syms lapack-static-prefix.def liblapack$(SYMBOLSUFFIX).a liblapack$(SYMBOLSUFFIX).a.fixed
rm -rf liblapack$(SYMBOLSUFFIX).a
mv liblapack$(SYMBOLSUFFIX).a.fixed liblapack$(SYMBOLSUFFIX).a
endif
shared: $(ALLOBJ) $(ALLXOBJ)
ifeq "$(SYMBOLPREFIX)" ""
ifeq "$(SYMBOLSUFFIX)" ""
# No renaming needed
cc $(CFLAGS) -shared -Wl,-soname,liblapack.so.@SHORTVER@ -o liblapack.so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) $(LDFLAGS) -L.. -lblas -lm -lgfortran -lc
else
cc $(CFLAGS) -shared -Wl,-soname,liblapack$(SYMBOLPREFIX).so.@SHORTVER@ -o liblapack$(SYMBOLPREFIX).so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) $(LDFLAGS) -L.. -lblas -lm -lgfortran -lc
# generate a list of all symbols in shared library and rename with SYMBOLPREFIX
for i in `readelf -Ws liblapack$(SYMBOLPREFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > lapack-prefix.def.dirty
cc $(CFLAGS) -shared -Wl,-soname,liblapack$(SYMBOLSUFFIX).so.@SHORTVER@ -o liblapack$(SYMBOLSUFFIX).so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) $(LDFLAGS) -L.. -lblas -lm -lgfortran -lc
# generate a list of all symbols in shared library and rename with SYMBOLSUFFIX
for i in `readelf -Ws liblapack$(SYMBOLSUFFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > lapack-prefix.def.dirty
sort -n lapack-prefix.def.dirty | uniq > lapack-prefix.def
$(OBJCOPY) --redefine-syms lapack-prefix.def liblapack$(SYMBOLPREFIX).so.@LONGVER@ liblapack$(SYMBOLPREFIX).so.@LONGVER@.fixed
rm -rf liblapack$(SYMBOLPREFIX).so.@LONGVER@
mv liblapack$(SYMBOLPREFIX).so.@LONGVER@.fixed liblapack$(SYMBOLPREFIX).so.@LONGVER@
$(OBJCOPY) --redefine-syms lapack-prefix.def liblapack$(SYMBOLSUFFIX).so.@LONGVER@ liblapack$(SYMBOLSUFFIX).so.@LONGVER@.fixed
rm -rf liblapack$(SYMBOLSUFFIX).so.@LONGVER@
mv liblapack$(SYMBOLSUFFIX).so.@LONGVER@.fixed liblapack$(SYMBOLSUFFIX).so.@LONGVER@
endif

801
blas-bz143340.patch Normal file
View File

@ -0,0 +1,801 @@
--- LAPACK/BLAS/SRC/drotmg.f.BAD 2005-09-28 17:59:56.000000000 -0500
+++ LAPACK/BLAS/SRC/drotmg.f 2005-09-28 18:01:04.000000000 -0500
@@ -0,0 +1,169 @@
+ SUBROUTINE DROTMG (DD1,DD2,DX1,DY1,DPARAM)
+C
+C CONSTRUCT THE MODIFIED GIVENS TRANSFORMATION MATRIX H WHICH ZEROS
+C THE SECOND COMPONENT OF THE 2-VECTOR (DSQRT(DD1)*DX1,DSQRT(DD2)*
+C DY2)**T.
+C WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+C
+C DFLAG=-1.D0 DFLAG=0.D0 DFLAG=1.D0 DFLAG=-2.D0
+C
+C (DH11 DH12) (1.D0 DH12) (DH11 1.D0) (1.D0 0.D0)
+C H=( ) ( ) ( ) ( )
+C (DH21 DH22), (DH21 1.D0), (-1.D0 DH22), (0.D0 1.D0).
+C LOCATIONS 2-4 OF DPARAM CONTAIN DH11, DH21, DH12, AND DH22
+C RESPECTIVELY. (VALUES OF 1.D0, -1.D0, OR 0.D0 IMPLIED BY THE
+C VALUE OF DPARAM(1) ARE NOT STORED IN DPARAM.)
+C
+C THE VALUES OF GAMSQ AND RGAMSQ SET IN THE DATA STATEMENT MAY BE
+C INEXACT. THIS IS OK AS THEY ARE ONLY USED FOR TESTING THE SIZE
+C OF DD1 AND DD2. ALL ACTUAL SCALING OF DATA IS DONE USING GAM.
+C
+ DOUBLE PRECISION GAM,ONE,RGAMSQ,DD2,DH11,DH21,DPARAM,DP2,
+ 1 DQ2,DU,DY1,ZERO,GAMSQ,DD1,DFLAG,DH12,DH22,DP1,DQ1,
+ 2 DTEMP,DX1,TWO
+ DIMENSION DPARAM(5)
+C
+ DATA ZERO,ONE,TWO /0.D0,1.D0,2.D0/
+ DATA GAM,GAMSQ,RGAMSQ/4096.D0,16777216.D0,5.9604645D-8/
+ IF(.NOT. DD1 .LT. ZERO) GO TO 10
+C GO ZERO-H-D-AND-DX1..
+ GO TO 60
+ 10 CONTINUE
+C CASE-DD1-NONNEGATIVE
+ DP2=DD2*DY1
+ IF(.NOT. DP2 .EQ. ZERO) GO TO 20
+ DFLAG=-TWO
+ GO TO 260
+C REGULAR-CASE..
+ 20 CONTINUE
+ DP1=DD1*DX1
+ DQ2=DP2*DY1
+ DQ1=DP1*DX1
+C
+ IF(.NOT. DABS(DQ1) .GT. DABS(DQ2)) GO TO 40
+ DH21=-DY1/DX1
+ DH12=DP2/DP1
+C
+ DU=ONE-DH12*DH21
+C
+ IF(.NOT. DU .LE. ZERO) GO TO 30
+C GO ZERO-H-D-AND-DX1..
+ GO TO 60
+ 30 CONTINUE
+ DFLAG=ZERO
+ DD1=DD1/DU
+ DD2=DD2/DU
+ DX1=DX1*DU
+C GO SCALE-CHECK..
+ GO TO 100
+ 40 CONTINUE
+ IF(.NOT. DQ2 .LT. ZERO) GO TO 50
+C GO ZERO-H-D-AND-DX1..
+ GO TO 60
+ 50 CONTINUE
+ DFLAG=ONE
+ DH11=DP1/DP2
+ DH22=DX1/DY1
+ DU=ONE+DH11*DH22
+ DTEMP=DD2/DU
+ DD2=DD1/DU
+ DD1=DTEMP
+ DX1=DY1*DU
+C GO SCALE-CHECK
+ GO TO 100
+C PROCEDURE..ZERO-H-D-AND-DX1..
+ 60 CONTINUE
+ DFLAG=-ONE
+ DH11=ZERO
+ DH12=ZERO
+ DH21=ZERO
+ DH22=ZERO
+C
+ DD1=ZERO
+ DD2=ZERO
+ DX1=ZERO
+C RETURN..
+ GO TO 220
+C PROCEDURE..FIX-H..
+ 70 CONTINUE
+ IF(.NOT. DFLAG .GE. ZERO) GO TO 90
+C
+ IF(.NOT. DFLAG .EQ. ZERO) GO TO 80
+ DH11=ONE
+ DH22=ONE
+ DFLAG=-ONE
+ GO TO 90
+ 80 CONTINUE
+ DH21=-ONE
+ DH12=ONE
+ DFLAG=-ONE
+ 90 CONTINUE
+ GO TO IGO,(120,150,180,210)
+C PROCEDURE..SCALE-CHECK
+ 100 CONTINUE
+ 110 CONTINUE
+ IF(.NOT. DD1 .LE. RGAMSQ) GO TO 130
+ IF(DD1 .EQ. ZERO) GO TO 160
+ ASSIGN 120 TO IGO
+C FIX-H..
+ GO TO 70
+ 120 CONTINUE
+ DD1=DD1*GAM**2
+ DX1=DX1/GAM
+ DH11=DH11/GAM
+ DH12=DH12/GAM
+ GO TO 110
+ 130 CONTINUE
+ 140 CONTINUE
+ IF(.NOT. DD1 .GE. GAMSQ) GO TO 160
+ ASSIGN 150 TO IGO
+C FIX-H..
+ GO TO 70
+ 150 CONTINUE
+ DD1=DD1/GAM**2
+ DX1=DX1*GAM
+ DH11=DH11*GAM
+ DH12=DH12*GAM
+ GO TO 140
+ 160 CONTINUE
+ 170 CONTINUE
+ IF(.NOT. DABS(DD2) .LE. RGAMSQ) GO TO 190
+ IF(DD2 .EQ. ZERO) GO TO 220
+ ASSIGN 180 TO IGO
+C FIX-H..
+ GO TO 70
+ 180 CONTINUE
+ DD2=DD2*GAM**2
+ DH21=DH21/GAM
+ DH22=DH22/GAM
+ GO TO 170
+ 190 CONTINUE
+ 200 CONTINUE
+ IF(.NOT. DABS(DD2) .GE. GAMSQ) GO TO 220
+ ASSIGN 210 TO IGO
+C FIX-H..
+ GO TO 70
+ 210 CONTINUE
+ DD2=DD2/GAM**2
+ DH21=DH21*GAM
+ DH22=DH22*GAM
+ GO TO 200
+ 220 CONTINUE
+ IF(DFLAG)250,230,240
+ 230 CONTINUE
+ DPARAM(3)=DH21
+ DPARAM(4)=DH12
+ GO TO 260
+ 240 CONTINUE
+ DPARAM(2)=DH11
+ DPARAM(5)=DH22
+ GO TO 260
+ 250 CONTINUE
+ DPARAM(2)=DH11
+ DPARAM(3)=DH21
+ DPARAM(4)=DH12
+ DPARAM(5)=DH22
+ 260 CONTINUE
+ DPARAM(1)=DFLAG
+ RETURN
+ END
--- LAPACK/BLAS/SRC/sdsdot.f.BAD 2005-09-28 18:00:11.000000000 -0500
+++ LAPACK/BLAS/SRC/sdsdot.f 2005-09-28 18:01:23.000000000 -0500
@@ -0,0 +1,78 @@
+*DECK SDSDOT
+ REAL FUNCTION SDSDOT (N, SB, SX, INCX, SY, INCY)
+C***BEGIN PROLOGUE SDSDOT
+C***PURPOSE Compute the inner product of two vectors with extended
+C precision accumulation.
+C***LIBRARY SLATEC (BLAS)
+C***CATEGORY D1A4
+C***TYPE SINGLE PRECISION (SDSDOT-S, CDCDOT-C)
+C***KEYWORDS BLAS, DOT PRODUCT, INNER PRODUCT, LINEAR ALGEBRA, VECTOR
+C***AUTHOR Lawson, C. L., (JPL)
+C Hanson, R. J., (SNLA)
+C Kincaid, D. R., (U. of Texas)
+C Krogh, F. T., (JPL)
+C***DESCRIPTION
+C
+C B L A S Subprogram
+C Description of Parameters
+C
+C --Input--
+C N number of elements in input vector(s)
+C SB single precision scalar to be added to inner product
+C SX single precision vector with N elements
+C INCX storage spacing between elements of SX
+C SY single precision vector with N elements
+C INCY storage spacing between elements of SY
+C
+C --Output--
+C SDSDOT single precision dot product (SB if N .LE. 0)
+C
+C Returns S.P. result with dot product accumulated in D.P.
+C SDSDOT = SB + sum for I = 0 to N-1 of SX(LX+I*INCX)*SY(LY+I*INCY),
+C where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is
+C defined in a similar way using INCY.
+C
+C***REFERENCES C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T.
+C Krogh, Basic linear algebra subprograms for Fortran
+C usage, Algorithm No. 539, Transactions on Mathematical
+C Software 5, 3 (September 1979), pp. 308-323.
+C***ROUTINES CALLED (NONE)
+C***REVISION HISTORY (YYMMDD)
+C 791001 DATE WRITTEN
+C 890531 Changed all specific intrinsics to generic. (WRB)
+C 890831 Modified array declarations. (WRB)
+C 890831 REVISION DATE from Version 3.2
+C 891214 Prologue converted to Version 4.0 format. (BAB)
+C 920310 Corrected definition of LX in DESCRIPTION. (WRB)
+C 920501 Reformatted the REFERENCES section. (WRB)
+C***END PROLOGUE SDSDOT
+ REAL SX(*), SY(*), SB
+ DOUBLE PRECISION DSDOT
+C***FIRST EXECUTABLE STATEMENT SDSDOT
+ DSDOT = SB
+ IF (N .LE. 0) GO TO 30
+ IF (INCX.EQ.INCY .AND. INCX.GT.0) GO TO 40
+C
+C Code for unequal or nonpositive increments.
+C
+ KX = 1
+ KY = 1
+ IF (INCX .LT. 0) KX = 1+(1-N)*INCX
+ IF (INCY .LT. 0) KY = 1+(1-N)*INCY
+ DO 10 I = 1,N
+ DSDOT = DSDOT + DBLE(SX(KX))*DBLE(SY(KY))
+ KX = KX + INCX
+ KY = KY + INCY
+ 10 CONTINUE
+ 30 SDSDOT = DSDOT
+ RETURN
+C
+C Code for equal and positive increments.
+C
+ 40 NS = N*INCX
+ DO 50 I = 1,NS,INCX
+ DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I))
+ 50 CONTINUE
+ SDSDOT = DSDOT
+ RETURN
+ END
--- LAPACK/BLAS/SRC/csrot.f.BAD 2005-09-28 17:59:45.000000000 -0500
+++ LAPACK/BLAS/SRC/csrot.f 2005-09-28 18:00:41.000000000 -0500
@@ -0,0 +1,38 @@
+ subroutine csrot (n,cx,incx,cy,incy,c,s)
+c
+c applies a plane rotation, where the cos and sin (c and s) are real
+c and the vectors cx and cy are complex.
+c jack dongarra, linpack, 3/11/78.
+c
+ complex cx(1),cy(1),ctemp
+ real c,s
+ integer i,incx,incy,ix,iy,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments not equal
+c to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ ctemp = c*cx(ix) + s*cy(iy)
+ cy(iy) = c*cy(iy) - s*cx(ix)
+ cx(ix) = ctemp
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+ 20 do 30 i = 1,n
+ ctemp = c*cx(i) + s*cy(i)
+ cy(i) = c*cy(i) - s*cx(i)
+ cx(i) = ctemp
+ 30 continue
+ return
+ end
--- LAPACK/BLAS/SRC/srotmg.f.BAD 2005-09-28 18:00:24.000000000 -0500
+++ LAPACK/BLAS/SRC/srotmg.f 2005-09-28 18:01:45.000000000 -0500
@@ -0,0 +1,166 @@
+ SUBROUTINE SROTMG (SD1,SD2,SX1,SY1,SPARAM)
+C
+C CONSTRUCT THE MODIFIED GIVENS TRANSFORMATION MATRIX H WHICH ZEROS
+C THE SECOND COMPONENT OF THE 2-VECTOR (SQRT(SD1)*SX1,SQRT(SD2)*
+C SY2)**T.
+C WITH SPARAM(1)=SFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+C
+C SFLAG=-1.E0 SFLAG=0.E0 SFLAG=1.E0 SFLAG=-2.E0
+C
+C (SH11 SH12) (1.E0 SH12) (SH11 1.E0) (1.E0 0.E0)
+C H=( ) ( ) ( ) ( )
+C (SH21 SH22), (SH21 1.E0), (-1.E0 SH22), (0.E0 1.E0).
+C LOCATIONS 2-4 OF SPARAM CONTAIN SH11,SH21,SH12, AND SH22
+C RESPECTIVELY. (VALUES OF 1.E0, -1.E0, OR 0.E0 IMPLIED BY THE
+C VALUE OF SPARAM(1) ARE NOT STORED IN SPARAM.)
+C
+C THE VALUES OF GAMSQ AND RGAMSQ SET IN THE DATA STATEMENT MAY BE
+C INEXACT. THIS IS OK AS THEY ARE ONLY USED FOR TESTING THE SIZE
+C OF SD1 AND SD2. ALL ACTUAL SCALING OF DATA IS DONE USING GAM.
+C
+ DIMENSION SPARAM(5)
+C
+ DATA ZERO,ONE,TWO /0.E0,1.E0,2.E0/
+ DATA GAM,GAMSQ,RGAMSQ/4096.E0,1.67772E7,5.96046E-8/
+ IF(.NOT. SD1 .LT. ZERO) GO TO 10
+C GO ZERO-H-D-AND-SX1..
+ GO TO 60
+ 10 CONTINUE
+C CASE-SD1-NONNEGATIVE
+ SP2=SD2*SY1
+ IF(.NOT. SP2 .EQ. ZERO) GO TO 20
+ SFLAG=-TWO
+ GO TO 260
+C REGULAR-CASE..
+ 20 CONTINUE
+ SP1=SD1*SX1
+ SQ2=SP2*SY1
+ SQ1=SP1*SX1
+C
+ IF(.NOT. ABS(SQ1) .GT. ABS(SQ2)) GO TO 40
+ SH21=-SY1/SX1
+ SH12=SP2/SP1
+C
+ SU=ONE-SH12*SH21
+C
+ IF(.NOT. SU .LE. ZERO) GO TO 30
+C GO ZERO-H-D-AND-SX1..
+ GO TO 60
+ 30 CONTINUE
+ SFLAG=ZERO
+ SD1=SD1/SU
+ SD2=SD2/SU
+ SX1=SX1*SU
+C GO SCALE-CHECK..
+ GO TO 100
+ 40 CONTINUE
+ IF(.NOT. SQ2 .LT. ZERO) GO TO 50
+C GO ZERO-H-D-AND-SX1..
+ GO TO 60
+ 50 CONTINUE
+ SFLAG=ONE
+ SH11=SP1/SP2
+ SH22=SX1/SY1
+ SU=ONE+SH11*SH22
+ STEMP=SD2/SU
+ SD2=SD1/SU
+ SD1=STEMP
+ SX1=SY1*SU
+C GO SCALE-CHECK
+ GO TO 100
+C PROCEDURE..ZERO-H-D-AND-SX1..
+ 60 CONTINUE
+ SFLAG=-ONE
+ SH11=ZERO
+ SH12=ZERO
+ SH21=ZERO
+ SH22=ZERO
+C
+ SD1=ZERO
+ SD2=ZERO
+ SX1=ZERO
+C RETURN..
+ GO TO 220
+C PROCEDURE..FIX-H..
+ 70 CONTINUE
+ IF(.NOT. SFLAG .GE. ZERO) GO TO 90
+C
+ IF(.NOT. SFLAG .EQ. ZERO) GO TO 80
+ SH11=ONE
+ SH22=ONE
+ SFLAG=-ONE
+ GO TO 90
+ 80 CONTINUE
+ SH21=-ONE
+ SH12=ONE
+ SFLAG=-ONE
+ 90 CONTINUE
+ GO TO IGO,(120,150,180,210)
+C PROCEDURE..SCALE-CHECK
+ 100 CONTINUE
+ 110 CONTINUE
+ IF(.NOT. SD1 .LE. RGAMSQ) GO TO 130
+ IF(SD1 .EQ. ZERO) GO TO 160
+ ASSIGN 120 TO IGO
+C FIX-H..
+ GO TO 70
+ 120 CONTINUE
+ SD1=SD1*GAM**2
+ SX1=SX1/GAM
+ SH11=SH11/GAM
+ SH12=SH12/GAM
+ GO TO 110
+ 130 CONTINUE
+ 140 CONTINUE
+ IF(.NOT. SD1 .GE. GAMSQ) GO TO 160
+ ASSIGN 150 TO IGO
+C FIX-H..
+ GO TO 70
+ 150 CONTINUE
+ SD1=SD1/GAM**2
+ SX1=SX1*GAM
+ SH11=SH11*GAM
+ SH12=SH12*GAM
+ GO TO 140
+ 160 CONTINUE
+ 170 CONTINUE
+ IF(.NOT. ABS(SD2) .LE. RGAMSQ) GO TO 190
+ IF(SD2 .EQ. ZERO) GO TO 220
+ ASSIGN 180 TO IGO
+C FIX-H..
+ GO TO 70
+ 180 CONTINUE
+ SD2=SD2*GAM**2
+ SH21=SH21/GAM
+ SH22=SH22/GAM
+ GO TO 170
+ 190 CONTINUE
+ 200 CONTINUE
+ IF(.NOT. ABS(SD2) .GE. GAMSQ) GO TO 220
+ ASSIGN 210 TO IGO
+C FIX-H..
+ GO TO 70
+ 210 CONTINUE
+ SD2=SD2/GAM**2
+ SH21=SH21*GAM
+ SH22=SH22*GAM
+ GO TO 200
+ 220 CONTINUE
+ IF(SFLAG)250,230,240
+ 230 CONTINUE
+ SPARAM(3)=SH21
+ SPARAM(4)=SH12
+ GO TO 260
+ 240 CONTINUE
+ SPARAM(2)=SH11
+ SPARAM(5)=SH22
+ GO TO 260
+ 250 CONTINUE
+ SPARAM(2)=SH11
+ SPARAM(3)=SH21
+ SPARAM(4)=SH12
+ SPARAM(5)=SH22
+ 260 CONTINUE
+ SPARAM(1)=SFLAG
+ RETURN
+ END
--- LAPACK/BLAS/SRC/dsdot.f.BAD 2005-09-28 18:00:03.000000000 -0500
+++ LAPACK/BLAS/SRC/dsdot.f 2005-09-28 18:01:11.000000000 -0500
@@ -0,0 +1,74 @@
+*DECK DSDOT
+ DOUBLE PRECISION FUNCTION DSDOT (N, SX, INCX, SY, INCY)
+C***BEGIN PROLOGUE DSDOT
+C***PURPOSE Compute the inner product of two vectors with extended
+C precision accumulation and result.
+C***LIBRARY SLATEC (BLAS)
+C***CATEGORY D1A4
+C***TYPE DOUBLE PRECISION (DSDOT-D, DCDOT-C)
+C***KEYWORDS BLAS, COMPLEX VECTORS, DOT PRODUCT, INNER PRODUCT,
+C LINEAR ALGEBRA, VECTOR
+C***AUTHOR Lawson, C. L., (JPL)
+C Hanson, R. J., (SNLA)
+C Kincaid, D. R., (U. of Texas)
+C Krogh, F. T., (JPL)
+C***DESCRIPTION
+C
+C B L A S Subprogram
+C Description of Parameters
+C
+C --Input--
+C N number of elements in input vector(s)
+C SX single precision vector with N elements
+C INCX storage spacing between elements of SX
+C SY single precision vector with N elements
+C INCY storage spacing between elements of SY
+C
+C --Output--
+C DSDOT double precision dot product (zero if N.LE.0)
+C
+C Returns D.P. dot product accumulated in D.P., for S.P. SX and SY
+C DSDOT = sum for I = 0 to N-1 of SX(LX+I*INCX) * SY(LY+I*INCY),
+C where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is
+C defined in a similar way using INCY.
+C
+C***REFERENCES C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T.
+C Krogh, Basic linear algebra subprograms for Fortran
+C usage, Algorithm No. 539, Transactions on Mathematical
+C Software 5, 3 (September 1979), pp. 308-323.
+C***ROUTINES CALLED (NONE)
+C***REVISION HISTORY (YYMMDD)
+C 791001 DATE WRITTEN
+C 890831 Modified array declarations. (WRB)
+C 890831 REVISION DATE from Version 3.2
+C 891214 Prologue converted to Version 4.0 format. (BAB)
+C 920310 Corrected definition of LX in DESCRIPTION. (WRB)
+C 920501 Reformatted the REFERENCES section. (WRB)
+C***END PROLOGUE DSDOT
+ REAL SX(*),SY(*)
+C***FIRST EXECUTABLE STATEMENT DSDOT
+ DSDOT = 0.0D0
+ IF (N .LE. 0) RETURN
+ IF (INCX.EQ.INCY .AND. INCX.GT.0) GO TO 20
+C
+C Code for unequal or nonpositive increments.
+C
+ KX = 1
+ KY = 1
+ IF (INCX .LT. 0) KX = 1+(1-N)*INCX
+ IF (INCY .LT. 0) KY = 1+(1-N)*INCY
+ DO 10 I = 1,N
+ DSDOT = DSDOT + DBLE(SX(KX))*DBLE(SY(KY))
+ KX = KX + INCX
+ KY = KY + INCY
+ 10 CONTINUE
+ RETURN
+C
+C Code for equal, positive, non-unit increments.
+C
+ 20 NS = N*INCX
+ DO 30 I = 1,NS,INCX
+ DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I))
+ 30 CONTINUE
+ RETURN
+ END
--- LAPACK/BLAS/SRC/srotm.f.BAD 2005-09-28 18:00:17.000000000 -0500
+++ LAPACK/BLAS/SRC/srotm.f 2005-09-28 18:01:34.000000000 -0500
@@ -0,0 +1,106 @@
+ SUBROUTINE SROTM (N,SX,INCX,SY,INCY,SPARAM)
+C
+C APPLY THE MODIFIED GIVENS TRANSFORMATION, H, TO THE 2 BY N MATRIX
+C
+C (SX**T) , WHERE **T INDICATES TRANSPOSE. THE ELEMENTS OF SX ARE IN
+C (DX**T)
+C
+C SX(LX+I*INCX), I = 0 TO N-1, WHERE LX = 1 IF INCX .GE. 0, ELSE
+C LX = (-INCX)*N, AND SIMILARLY FOR SY USING USING LY AND INCY.
+C WITH SPARAM(1)=SFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+C
+C SFLAG=-1.E0 SFLAG=0.E0 SFLAG=1.E0 SFLAG=-2.E0
+C
+C (SH11 SH12) (1.E0 SH12) (SH11 1.E0) (1.E0 0.E0)
+C H=( ) ( ) ( ) ( )
+C (SH21 SH22), (SH21 1.E0), (-1.E0 SH22), (0.E0 1.E0).
+C SEE SROTMG FOR A DESCRIPTION OF DATA STORAGE IN SPARAM.
+C
+ DIMENSION SX(1),SY(1),SPARAM(5)
+ DATA ZERO,TWO/0.E0,2.E0/
+C
+ SFLAG=SPARAM(1)
+ IF(N .LE. 0 .OR.(SFLAG+TWO.EQ.ZERO)) GO TO 140
+ IF(.NOT.(INCX.EQ.INCY.AND. INCX .GT.0)) GO TO 70
+C
+ NSTEPS=N*INCX
+ IF(SFLAG) 50,10,30
+ 10 CONTINUE
+ SH12=SPARAM(4)
+ SH21=SPARAM(3)
+ DO 20 I=1,NSTEPS,INCX
+ W=SX(I)
+ Z=SY(I)
+ SX(I)=W+Z*SH12
+ SY(I)=W*SH21+Z
+ 20 CONTINUE
+ GO TO 140
+ 30 CONTINUE
+ SH11=SPARAM(2)
+ SH22=SPARAM(5)
+ DO 40 I=1,NSTEPS,INCX
+ W=SX(I)
+ Z=SY(I)
+ SX(I)=W*SH11+Z
+ SY(I)=-W+SH22*Z
+ 40 CONTINUE
+ GO TO 140
+ 50 CONTINUE
+ SH11=SPARAM(2)
+ SH12=SPARAM(4)
+ SH21=SPARAM(3)
+ SH22=SPARAM(5)
+ DO 60 I=1,NSTEPS,INCX
+ W=SX(I)
+ Z=SY(I)
+ SX(I)=W*SH11+Z*SH12
+ SY(I)=W*SH21+Z*SH22
+ 60 CONTINUE
+ GO TO 140
+ 70 CONTINUE
+ KX=1
+ KY=1
+ IF(INCX .LT. 0) KX=1+(1-N)*INCX
+ IF(INCY .LT. 0) KY=1+(1-N)*INCY
+C
+ IF(SFLAG)120,80,100
+ 80 CONTINUE
+ SH12=SPARAM(4)
+ SH21=SPARAM(3)
+ DO 90 I=1,N
+ W=SX(KX)
+ Z=SY(KY)
+ SX(KX)=W+Z*SH12
+ SY(KY)=W*SH21+Z
+ KX=KX+INCX
+ KY=KY+INCY
+ 90 CONTINUE
+ GO TO 140
+ 100 CONTINUE
+ SH11=SPARAM(2)
+ SH22=SPARAM(5)
+ DO 110 I=1,N
+ W=SX(KX)
+ Z=SY(KY)
+ SX(KX)=W*SH11+Z
+ SY(KY)=-W+SH22*Z
+ KX=KX+INCX
+ KY=KY+INCY
+ 110 CONTINUE
+ GO TO 140
+ 120 CONTINUE
+ SH11=SPARAM(2)
+ SH12=SPARAM(4)
+ SH21=SPARAM(3)
+ SH22=SPARAM(5)
+ DO 130 I=1,N
+ W=SX(KX)
+ Z=SY(KY)
+ SX(KX)=W*SH11+Z*SH12
+ SY(KY)=W*SH21+Z*SH22
+ KX=KX+INCX
+ KY=KY+INCY
+ 130 CONTINUE
+ 140 CONTINUE
+ RETURN
+ END
--- LAPACK/BLAS/SRC/zdrot.f.BAD 2005-09-28 18:00:31.000000000 -0500
+++ LAPACK/BLAS/SRC/zdrot.f 2005-09-28 18:02:00.000000000 -0500
@@ -0,0 +1,38 @@
+ subroutine zdrot (n,zx,incx,zy,incy,c,s)
+c
+c applies a plane rotation, where the cos and sin (c and s) are
+c double precision and the vectors zx and zy are double complex.
+c jack dongarra, linpack, 3/11/78.
+c
+ double complex zx(1),zy(1),ztemp
+ double precision c,s
+ integer i,incx,incy,ix,iy,n
+c
+ if(n.le.0)return
+ if(incx.eq.1.and.incy.eq.1)go to 20
+c
+c code for unequal increments or equal increments not equal
+c to 1
+c
+ ix = 1
+ iy = 1
+ if(incx.lt.0)ix = (-n+1)*incx + 1
+ if(incy.lt.0)iy = (-n+1)*incy + 1
+ do 10 i = 1,n
+ ztemp = c*zx(ix) + s*zy(iy)
+ zy(iy) = c*zy(iy) - s*zx(ix)
+ zx(ix) = ztemp
+ ix = ix + incx
+ iy = iy + incy
+ 10 continue
+ return
+c
+c code for both increments equal to 1
+c
+ 20 do 30 i = 1,n
+ ztemp = c*zx(i) + s*zy(i)
+ zy(i) = c*zy(i) - s*zx(i)
+ zx(i) = ztemp
+ 30 continue
+ return
+ end
--- LAPACK/BLAS/SRC/drotm.f.BAD 2005-09-28 17:59:52.000000000 -0500
+++ LAPACK/BLAS/SRC/drotm.f 2005-09-28 18:00:50.000000000 -0500
@@ -0,0 +1,108 @@
+ SUBROUTINE DROTM (N,DX,INCX,DY,INCY,DPARAM)
+C
+C APPLY THE MODIFIED GIVENS TRANSFORMATION, H, TO THE 2 BY N MATRIX
+C
+C (DX**T) , WHERE **T INDICATES TRANSPOSE. THE ELEMENTS OF DX ARE IN
+C (DY**T)
+C
+C DX(LX+I*INCX), I = 0 TO N-1, WHERE LX = 1 IF INCX .GE. 0, ELSE
+C LX = (-INCX)*N, AND SIMILARLY FOR SY USING LY AND INCY.
+C WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS..
+C
+C DFLAG=-1.D0 DFLAG=0.D0 DFLAG=1.D0 DFLAG=-2.D0
+C
+C (DH11 DH12) (1.D0 DH12) (DH11 1.D0) (1.D0 0.D0)
+C H=( ) ( ) ( ) ( )
+C (DH21 DH22), (DH21 1.D0), (-1.D0 DH22), (0.D0 1.D0).
+C SEE DROTMG FOR A DESCRIPTION OF DATA STORAGE IN DPARAM.
+C
+ DOUBLE PRECISION DFLAG,DH12,DH22,DX,TWO,Z,DH11,DH21,
+ 1 DPARAM,DY,W,ZERO
+ DIMENSION DX(1),DY(1),DPARAM(5)
+ DATA ZERO,TWO/0.D0,2.D0/
+C
+ DFLAG=DPARAM(1)
+ IF(N .LE. 0 .OR.(DFLAG+TWO.EQ.ZERO)) GO TO 140
+ IF(.NOT.(INCX.EQ.INCY.AND. INCX .GT.0)) GO TO 70
+C
+ NSTEPS=N*INCX
+ IF(DFLAG) 50,10,30
+ 10 CONTINUE
+ DH12=DPARAM(4)
+ DH21=DPARAM(3)
+ DO 20 I=1,NSTEPS,INCX
+ W=DX(I)
+ Z=DY(I)
+ DX(I)=W+Z*DH12
+ DY(I)=W*DH21+Z
+ 20 CONTINUE
+ GO TO 140
+ 30 CONTINUE
+ DH11=DPARAM(2)
+ DH22=DPARAM(5)
+ DO 40 I=1,NSTEPS,INCX
+ W=DX(I)
+ Z=DY(I)
+ DX(I)=W*DH11+Z
+ DY(I)=-W+DH22*Z
+ 40 CONTINUE
+ GO TO 140
+ 50 CONTINUE
+ DH11=DPARAM(2)
+ DH12=DPARAM(4)
+ DH21=DPARAM(3)
+ DH22=DPARAM(5)
+ DO 60 I=1,NSTEPS,INCX
+ W=DX(I)
+ Z=DY(I)
+ DX(I)=W*DH11+Z*DH12
+ DY(I)=W*DH21+Z*DH22
+ 60 CONTINUE
+ GO TO 140
+ 70 CONTINUE
+ KX=1
+ KY=1
+ IF(INCX .LT. 0) KX=1+(1-N)*INCX
+ IF(INCY .LT. 0) KY=1+(1-N)*INCY
+C
+ IF(DFLAG)120,80,100
+ 80 CONTINUE
+ DH12=DPARAM(4)
+ DH21=DPARAM(3)
+ DO 90 I=1,N
+ W=DX(KX)
+ Z=DY(KY)
+ DX(KX)=W+Z*DH12
+ DY(KY)=W*DH21+Z
+ KX=KX+INCX
+ KY=KY+INCY
+ 90 CONTINUE
+ GO TO 140
+ 100 CONTINUE
+ DH11=DPARAM(2)
+ DH22=DPARAM(5)
+ DO 110 I=1,N
+ W=DX(KX)
+ Z=DY(KY)
+ DX(KX)=W*DH11+Z
+ DY(KY)=-W+DH22*Z
+ KX=KX+INCX
+ KY=KY+INCY
+ 110 CONTINUE
+ GO TO 140
+ 120 CONTINUE
+ DH11=DPARAM(2)
+ DH12=DPARAM(4)
+ DH21=DPARAM(3)
+ DH22=DPARAM(5)
+ DO 130 I=1,N
+ W=DX(KX)
+ Z=DY(KY)
+ DX(KX)=W*DH11+Z*DH12
+ DY(KY)=W*DH21+Z*DH22
+ KX=KX+INCX
+ KY=KY+INCY
+ 130 CONTINUE
+ 140 CONTINUE
+ RETURN
+ END

24100
lapack-20010525.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,29 @@
--- lapack-3.1.0/make.inc.BAD 2006-11-14 15:58:41.000000000 -0600
+++ lapack-3.1.0/make.inc 2006-11-14 16:00:03.000000000 -0600
@@ -10,7 +10,7 @@
#
# The machine (platform) identifier to append to the library names
#
-PLAT = _LINUX
+PLAT =
#
# Modify the FORTRAN and OPTS definitions to refer to the
# compiler and desired compiler options for your machine. NOOPT
@@ -18,12 +18,13 @@
# selected. Define LOADER and LOADOPTS to refer to the loader and
# desired load options for your machine.
#
-FORTRAN = g77
-OPTS = -funroll-all-loops -O3 -Wimplicit -Wno-globals -Wunused
+FORTRAN = gfortran
+#OPTS = -funroll-all-loops -O3 -Wimplicit -Wno-globals -Wunused
#OPTS = -O0 -g -Wall
DRVOPTS = $(OPTS)
-NOOPT = -Wimplicit -Wno-globals -Wunused
-LOADER = g77
+# NOOPT = -Wimplicit -Wno-globals -Wunused
+NOOPT =
+LOADER = gfortran
LOADOPTS =
#
# The archiver and the flag(s) to use when building archive (library)

View File

@ -0,0 +1,20 @@
--- lapack-3.1.0/INSTALL/dsecnd.f.BAD 2007-01-05 20:35:09.000000000 -0600
+++ lapack-3.1.0/INSTALL/dsecnd.f 2007-01-05 20:35:16.000000000 -0600
@@ -20,7 +20,6 @@
* ..
* .. External Functions ..
REAL ETIME
- EXTERNAL ETIME
* ..
* .. Executable Statements ..
*
--- lapack-3.1.0/INSTALL/second.f.BAD 2007-01-05 20:35:39.000000000 -0600
+++ lapack-3.1.0/INSTALL/second.f 2007-01-05 20:35:45.000000000 -0600
@@ -20,7 +20,6 @@
* ..
* .. External Functions ..
REAL ETIME
- EXTERNAL ETIME
* ..
* .. Executable Statements ..
*

View File

@ -0,0 +1,23 @@
--- lapack-3.1.1/INSTALL/make.inc.gfortran.BAD 2007-05-25 15:34:55.000000000 -0500
+++ lapack-3.1.1/INSTALL/make.inc.gfortran 2007-05-25 15:35:51.000000000 -0500
@@ -8,7 +8,7 @@ SHELL = /bin/sh
#
# The machine (platform) identifier to append to the library names
#
-PLAT = _LINUX
+PLAT =
#
# Modify the FORTRAN and OPTS definitions to refer to the
# compiler and desired compiler options for your machine. NOOPT
@@ -17,9 +17,9 @@ PLAT = _LINUX
# desired load options for your machine.
#
FORTRAN = gfortran
-OPTS = -O2
+#OPTS = -O2
DRVOPTS = $(OPTS)
-NOOPT = -O0
+NOOPT =
LOADER = gfortran
LOADOPTS =
#

View File

@ -0,0 +1,15 @@
diff -up lapack-3.4.0/INSTALL/make.inc.gfortran.orig lapack-3.4.0/INSTALL/make.inc.gfortran
--- lapack-3.4.0/INSTALL/make.inc.gfortran.orig 2011-11-11 16:08:04.000000000 -0500
+++ lapack-3.4.0/INSTALL/make.inc.gfortran 2011-11-28 14:56:08.990672240 -0500
@@ -13,9 +13,9 @@ SHELL = /bin/sh
# desired load options for your machine.
#
FORTRAN = gfortran
-OPTS = -O2 -frecursive
+#OPTS = -O2 -frecursive
DRVOPTS = $(OPTS)
-NOOPT = -O0 -frecursive
+NOOPT =
LOADER = gfortran
LOADOPTS =
#

View File

@ -0,0 +1,21 @@
diff -up lapack-3.4.1/INSTALL/make.inc.gfortran.shared lapack-3.4.1/INSTALL/make.inc.gfortran
--- lapack-3.4.1/INSTALL/make.inc.gfortran.shared 2012-09-06 21:55:01.659280432 -0600
+++ lapack-3.4.1/INSTALL/make.inc.gfortran 2012-09-06 22:04:04.936732440 -0600
@@ -73,3 +73,4 @@ BLASLIB = ../../librefblas.a
LAPACKLIB = liblapack.a
TMGLIB = libtmglib.a
LAPACKELIB = liblapacke.a
+SHLIB_LAPACKE = liblapacke.so
diff -up lapack-3.4.1/LAPACKE/Makefile.shared lapack-3.4.1/LAPACKE/Makefile
--- lapack-3.4.1/LAPACKE/Makefile.shared 2012-04-12 17:05:47.000000000 -0600
+++ lapack-3.4.1/LAPACKE/Makefile 2012-09-06 21:55:01.851271802 -0600
@@ -49,6 +49,9 @@ lapacke:
cd src && $(MAKE)
cd utils && $(MAKE)
+shlib: lapacke
+ $(CC) $(CFLAGS) -shared -Wl,-soname,$(SHLIB_LAPACKE).@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LIBS) -lgfortran -lc
+
lapacke_example:
cd example && $(MAKE)

View File

@ -0,0 +1,99 @@
diff -up lapack-3.5.0/BLAS/SRC/dgbmv.f.R lapack-3.5.0/BLAS/SRC/dgbmv.f
--- lapack-3.5.0/BLAS/SRC/dgbmv.f.R 2011-11-03 16:32:56.000000000 -0400
+++ lapack-3.5.0/BLAS/SRC/dgbmv.f 2014-07-07 11:50:48.257175853 -0400
@@ -312,18 +312,18 @@
JX = KX
IF (INCY.EQ.1) THEN
DO 60 J = 1,N
- IF (X(JX).NE.ZERO) THEN
+c IF (X(JX).NE.ZERO) THEN
TEMP = ALPHA*X(JX)
K = KUP1 - J
DO 50 I = MAX(1,J-KU),MIN(M,J+KL)
Y(I) = Y(I) + TEMP*A(K+I,J)
50 CONTINUE
- END IF
+c END IF
JX = JX + INCX
60 CONTINUE
ELSE
DO 80 J = 1,N
- IF (X(JX).NE.ZERO) THEN
+c IF (X(JX).NE.ZERO) THEN
TEMP = ALPHA*X(JX)
IY = KY
K = KUP1 - J
@@ -331,7 +331,7 @@
Y(IY) = Y(IY) + TEMP*A(K+I,J)
IY = IY + INCY
70 CONTINUE
- END IF
+c END IF
JX = JX + INCX
IF (J.GT.KU) KY = KY + INCY
80 CONTINUE
diff -up lapack-3.5.0/BLAS/SRC/dgemm.f.R lapack-3.5.0/BLAS/SRC/dgemm.f
--- lapack-3.5.0/BLAS/SRC/dgemm.f.R 2011-11-03 16:32:56.000000000 -0400
+++ lapack-3.5.0/BLAS/SRC/dgemm.f 2014-07-07 11:50:48.257175853 -0400
@@ -311,12 +311,12 @@
60 CONTINUE
END IF
DO 80 L = 1,K
- IF (B(L,J).NE.ZERO) THEN
+c IF (B(L,J).NE.ZERO) THEN
TEMP = ALPHA*B(L,J)
DO 70 I = 1,M
C(I,J) = C(I,J) + TEMP*A(I,L)
70 CONTINUE
- END IF
+c END IF
80 CONTINUE
90 CONTINUE
ELSE
@@ -353,12 +353,12 @@
140 CONTINUE
END IF
DO 160 L = 1,K
- IF (B(J,L).NE.ZERO) THEN
+c IF (B(J,L).NE.ZERO) THEN
TEMP = ALPHA*B(J,L)
DO 150 I = 1,M
C(I,J) = C(I,J) + TEMP*A(I,L)
150 CONTINUE
- END IF
+c END IF
160 CONTINUE
170 CONTINUE
ELSE
diff -up lapack-3.5.0/BLAS/SRC/dgemv.f.R lapack-3.5.0/BLAS/SRC/dgemv.f
--- lapack-3.5.0/BLAS/SRC/dgemv.f.R 2011-11-03 16:32:56.000000000 -0400
+++ lapack-3.5.0/BLAS/SRC/dgemv.f 2014-07-07 11:50:48.257175853 -0400
@@ -278,24 +278,24 @@
JX = KX
IF (INCY.EQ.1) THEN
DO 60 J = 1,N
- IF (X(JX).NE.ZERO) THEN
+c IF (X(JX).NE.ZERO) THEN
TEMP = ALPHA*X(JX)
DO 50 I = 1,M
Y(I) = Y(I) + TEMP*A(I,J)
50 CONTINUE
- END IF
+c END IF
JX = JX + INCX
60 CONTINUE
ELSE
DO 80 J = 1,N
- IF (X(JX).NE.ZERO) THEN
+c IF (X(JX).NE.ZERO) THEN
TEMP = ALPHA*X(JX)
IY = KY
DO 70 I = 1,M
Y(IY) = Y(IY) + TEMP*A(I,J)
IY = IY + INCY
70 CONTINUE
- END IF
+c END IF
JX = JX + INCX
80 CONTINUE
END IF

View File

@ -0,0 +1,36 @@
diff -up lapack-3.5.0/LAPACKE/Makefile.tmglib lapack-3.5.0/LAPACKE/Makefile
--- lapack-3.5.0/LAPACKE/Makefile.tmglib 2014-06-18 14:21:50.057725467 -0400
+++ lapack-3.5.0/LAPACKE/Makefile 2014-06-18 14:22:29.360436295 -0400
@@ -50,7 +50,7 @@ lapacke:
cd utils && $(MAKE)
shlib: lapacke
- $(CC) $(CFLAGS) -shared -Wl,-soname,$(SHLIB_LAPACKE).@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LIBS) -lgfortran -lc
+ $(CC) $(CFLAGS) -shared -Wl,-soname,$(SHLIB_LAPACKE).@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LIBS) -lgfortran -lc ../TESTING/MATGEN/*.o
lapacke_example:
cd example && $(MAKE)
diff -up lapack-3.5.0/LAPACKE/src/Makefile.tmglib lapack-3.5.0/LAPACKE/src/Makefile
--- lapack-3.5.0/LAPACKE/src/Makefile.tmglib 2014-06-18 14:21:50.056725474 -0400
+++ lapack-3.5.0/LAPACKE/src/Makefile 2014-06-18 14:21:50.057725467 -0400
@@ -2073,7 +2073,7 @@ OBJ_FILES := $(C_FILES:.o=.o)
all: ../../$(LAPACKELIB)
../../$(LAPACKELIB): $(ALLOBJ) $(ALLXOBJ)
- $(ARCH) $(ARCHFLAGS) ../../$(LAPACKELIB) $(ALLOBJ) $(ALLXOBJ)
+ $(ARCH) $(ARCHFLAGS) ../../$(LAPACKELIB) $(ALLOBJ) $(ALLXOBJ) ../../TESTING/MATGEN/*.o
$(RANLIB) ../../$(LAPACKELIB)
.c.o:
diff -up lapack-3.5.0/Makefile.tmglib lapack-3.5.0/Makefile
--- lapack-3.5.0/Makefile.tmglib 2012-04-13 14:22:32.000000000 -0400
+++ lapack-3.5.0/Makefile 2014-06-18 14:21:50.058725460 -0400
@@ -23,7 +23,7 @@ blaslib:
lapacklib: lapack_install
( cd SRC; $(MAKE) )
-lapackelib: lapacklib
+lapackelib: tmglib lapacklib
( cd lapacke; $(MAKE) )
lapacke_example: lapackelib

View File

@ -0,0 +1,36 @@
diff -up lapack-3.6.0/LAPACKE/Makefile.tmglib lapack-3.6.0/LAPACKE/Makefile
--- lapack-3.6.0/LAPACKE/Makefile.tmglib 2015-12-02 10:01:15.639679177 -0500
+++ lapack-3.6.0/LAPACKE/Makefile 2015-12-02 10:01:15.660679035 -0500
@@ -50,7 +50,7 @@ lapacke:
cd utils && $(MAKE)
shlib: lapacke
- $(CC) $(CFLAGS) -shared -Wl,-soname,$(SHLIB_LAPACKE).@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LIBS) -lgfortran -lc
+ $(CC) $(CFLAGS) -shared -Wl,-soname,$(SHLIB_LAPACKE).@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LIBS) -lgfortran -lc ../TESTING/MATGEN/*.o
lapacke_example:
cd example && $(MAKE)
diff -up lapack-3.6.0/LAPACKE/src/Makefile.tmglib lapack-3.6.0/LAPACKE/src/Makefile
--- lapack-3.6.0/LAPACKE/src/Makefile.tmglib 2015-12-03 12:18:04.216900463 -0500
+++ lapack-3.6.0/LAPACKE/src/Makefile 2015-12-03 12:18:15.638838677 -0500
@@ -2204,7 +2204,7 @@ OBJ_FILES := $(C_FILES:.o=.o)
all: ../../$(LAPACKELIB)
../../$(LAPACKELIB): $(ALLOBJ) $(ALLXOBJ) $(DEPRECATED)
- $(ARCH) $(ARCHFLAGS) ../../$(LAPACKELIB) $(ALLOBJ) $(ALLXOBJ) $(DEPRECATED)
+ $(ARCH) $(ARCHFLAGS) ../../$(LAPACKELIB) $(ALLOBJ) $(ALLXOBJ) $(DEPRECATED) ../../TESTING/MATGEN/*.o
$(RANLIB) ../../$(LAPACKELIB)
.c.o:
diff -up lapack-3.6.0/Makefile.tmglib lapack-3.6.0/Makefile
--- lapack-3.6.0/Makefile.tmglib 2015-11-01 11:21:47.000000000 -0500
+++ lapack-3.6.0/Makefile 2015-12-02 10:01:15.647679123 -0500
@@ -26,7 +26,7 @@ cblaslib:
lapacklib: lapack_install
( cd SRC; $(MAKE) )
-lapackelib: lapacklib
+lapackelib: tmglib lapacklib
( cd LAPACKE; $(MAKE) )
cblas_example: cblaslib blaslib

View File

@ -0,0 +1,15 @@
diff -up lapack-3.6.0/INSTALL/make.inc.gfortran.fedora lapack-3.6.0/INSTALL/make.inc.gfortran
--- lapack-3.6.0/INSTALL/make.inc.gfortran.fedora 2015-11-17 11:25:02.789918460 -0500
+++ lapack-3.6.0/INSTALL/make.inc.gfortran 2015-11-17 11:26:45.806115209 -0500
@@ -17,9 +17,9 @@ SHELL = /bin/sh
# should not compile LAPACK with flags such as -ffpe-trap=overflow.
#
FORTRAN = gfortran
-OPTS = -O2 -frecursive
+#OPTS = -O2 -frecursive
DRVOPTS = $(OPTS)
-NOOPT = -O0 -frecursive
+NOOPT =
LOADER = gfortran
LOADOPTS =
#

View File

@ -14,7 +14,7 @@ diff -up lapack-3.7.1/LAPACKE/Makefile.shared lapack-3.7.1/LAPACKE/Makefile
cp $< $@
+shlib: lapacke
+ $(CC) $(CFLAGS) -shared -Wl,-soname,$(SHLIB_LAPACKE).@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LDFLAGS) $(LIBS) -lgfortran -lc
+ $(CC) $(CFLAGS) -shared -Wl,-soname,$(SHLIB_LAPACKE).@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LDFLAGS) $(LIBS) -lgfortran -lc -L.. -llapack
+
lapacke_example: lapacke
$(MAKE) -C example

View File

@ -5,8 +5,8 @@ diff -up lapack-3.7.1/LAPACKE/Makefile.tmglib lapack-3.7.1/LAPACKE/Makefile
cp $< $@
shlib: lapacke
- $(CC) $(CFLAGS) -shared -Wl,-soname,$(SHLIB_LAPACKE).@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LDFLAGS) $(LIBS) -lgfortran -lc
+ $(CC) $(CFLAGS) -shared -Wl,-soname,$(SHLIB_LAPACKE).@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LDFLAGS) $(LIBS) -lgfortran -lc ../TESTING/MATGEN/*.o
- $(CC) $(CFLAGS) -shared -Wl,-soname,$(SHLIB_LAPACKE).@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LDFLAGS) $(LIBS) -lgfortran -lc -L.. -llapack
+ $(CC) $(CFLAGS) -shared -Wl,-soname,$(SHLIB_LAPACKE).@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LDFLAGS) $(LIBS) -lgfortran -lc -L.. -llapack ../TESTING/MATGEN/*.o
lapacke_example: lapacke
$(MAKE) -C example

View File

@ -0,0 +1,21 @@
diff -up lapack-3.9.0/INSTALL/make.inc.gfortran.shared lapack-3.9.0/INSTALL/make.inc.gfortran
--- lapack-3.9.0/INSTALL/make.inc.gfortran.shared 2019-11-26 09:19:38.689118934 -0500
+++ lapack-3.9.0/INSTALL/make.inc.gfortran 2019-11-26 09:20:52.442628214 -0500
@@ -81,3 +81,4 @@ CBLASLIB = $(TOPSRCDIR)/libcblas.a
LAPACKLIB = $(TOPSRCDIR)/liblapack.a
TMGLIB = $(TOPSRCDIR)/libtmglib.a
LAPACKELIB = $(TOPSRCDIR)/liblapacke.a
+SHLIB_LAPACKE = $(TOPSRCDIR)/liblapacke.so
diff -up lapack-3.9.0/LAPACKE/Makefile.shared lapack-3.9.0/LAPACKE/Makefile
--- lapack-3.9.0/LAPACKE/Makefile.shared 2019-11-26 09:19:38.689118934 -0500
+++ lapack-3.9.0/LAPACKE/Makefile 2019-11-26 09:21:59.977268139 -0500
@@ -54,6 +54,9 @@ lapacke: include/lapacke_mangling.h
include/lapacke_mangling.h: include/lapacke_mangling_with_flags.h.in
cp include/lapacke_mangling_with_flags.h.in $@
+shlib: lapacke
+ $(CC) $(CFLAGS) -shared -Wl,-soname,liblapacke.so.@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LDFLAGS) $(LIBS) -lgfortran -lc -L.. -llapack
+
.PHONY: lapacke_example
lapacke_example: lapacke
$(MAKE) -C example

View File

@ -0,0 +1,24 @@
diff -up lapack-3.9.0/LAPACKE/Makefile.tmglib lapack-3.9.0/LAPACKE/Makefile
--- lapack-3.9.0/LAPACKE/Makefile.tmglib 2019-11-26 09:22:35.406554632 -0500
+++ lapack-3.9.0/LAPACKE/Makefile 2019-11-26 09:24:06.927711490 -0500
@@ -55,7 +55,7 @@ include/lapacke_mangling.h: include/lapa
cp include/lapacke_mangling_with_flags.h.in $@
shlib: lapacke
- $(CC) $(CFLAGS) -shared -Wl,-soname,liblapacke.so.@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LDFLAGS) $(LIBS) -lgfortran -lc -L.. -llapack
+ $(CC) $(CFLAGS) -shared -Wl,-soname,liblapacke.so.@SHORTVER@ -o $(SHLIB_LAPACKE).@LONGVER@ src/*.o utils/*.o $(LDFLAGS) $(LIBS) -lgfortran -lc -L.. -llapack ../TESTING/MATGEN/*.o
.PHONY: lapacke_example
lapacke_example: lapacke
diff -up lapack-3.9.0/Makefile.tmglib lapack-3.9.0/Makefile
--- lapack-3.9.0/Makefile.tmglib 2019-11-26 09:22:35.408554591 -0500
+++ lapack-3.9.0/Makefile 2019-11-26 09:48:23.173944899 -0500
@@ -27,7 +27,7 @@ lapacklib:
$(MAKE) -C SRC
.PHONY: lapackelib
-lapackelib:
+lapackelib: tmglib
$(MAKE) -C LAPACKE
.PHONY: blaspplib

View File

@ -0,0 +1,15 @@
diff -up lapack-3.9.0/INSTALL/make.inc.gfortran.fedora lapack-3.9.0/INSTALL/make.inc.gfortran
--- lapack-3.9.0/INSTALL/make.inc.gfortran.fedora 2019-11-26 09:18:42.671256080 -0500
+++ lapack-3.9.0/INSTALL/make.inc.gfortran 2019-11-26 09:19:09.296715591 -0500
@@ -20,9 +20,9 @@ CFLAGS = -O3
# should not compile LAPACK with flags such as -ffpe-trap=overflow.
#
FC = gfortran
-FFLAGS = -O2 -frecursive
+FFLAGS =
FFLAGS_DRV = $(FFLAGS)
-FFLAGS_NOOPT = -O0 -frecursive
+FFLAGS_NOOPT =
# Define LDFLAGS to the desired linker options for your machine.
#

40
lapack-fixlwork.patch Normal file
View File

@ -0,0 +1,40 @@
--- LAPACK/SRC/dgesdd.f.BAD 2005-10-06 22:53:05.000000000 -0500
+++ LAPACK/SRC/dgesdd.f 2005-10-06 22:55:17.000000000 -0500
@@ -294,6 +294,8 @@
*
WRKBL = 3*N + ( M+N )*ILAENV( 1, 'DGEBRD', ' ', M, N, -1,
$ -1 )
+ MAXWRK = MAX( WRKBL, BDSPAC )
+ MINWRK = BDSPAC
IF( WNTQO ) THEN
WRKBL = MAX( WRKBL, 3*N+N*
$ ILAENV( 1, 'DORMBR', 'QLN', M, N, N, -1 ) )
@@ -390,6 +392,8 @@
*
WRKBL = 3*M + ( M+N )*ILAENV( 1, 'DGEBRD', ' ', M, N, -1,
$ -1 )
+ MAXWRK = MAX( WRKBL, BDSPAC )
+ MINWRK = BDSPAC
IF( WNTQO ) THEN
WRKBL = MAX( WRKBL, 3*M+M*
$ ILAENV( 1, 'DORMBR', 'QLN', M, M, N, -1 ) )
--- LAPACK/SRC/sgesdd.f.BAD 2005-10-06 22:55:41.000000000 -0500
+++ LAPACK/SRC/sgesdd.f 2005-10-06 22:56:50.000000000 -0500
@@ -294,6 +294,8 @@
*
WRKBL = 3*N + ( M+N )*ILAENV( 1, 'SGEBRD', ' ', M, N, -1,
$ -1 )
+ MAXWRK = MAX( WRKBL, BDSPAC )
+ MINWRK = BDSPAC
IF( WNTQO ) THEN
WRKBL = MAX( WRKBL, 3*N+N*
$ ILAENV( 1, 'SORMBR', 'QLN', M, N, N, -1 ) )
@@ -390,6 +392,8 @@
*
WRKBL = 3*M + ( M+N )*ILAENV( 1, 'SGEBRD', ' ', M, N, -1,
$ -1 )
+ MAXWRK = MAX( WRKBL, BDSPAC )
+ MINWRK = BDSPAC
IF( WNTQO ) THEN
WRKBL = MAX( WRKBL, 3*M+M*
$ ILAENV( 1, 'SORMBR', 'QLN', M, M, N, -1 ) )

View File

@ -1,5 +1,8 @@
# Something in the debuginfo process is stripping the custom 64_ symbols out of lapack64_ and blas64_
%global debug_package %{nil}
%global shortver 3
%global mediumver %{shortver}.8
%global mediumver %{shortver}.12
%if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64
%global arch64 1
@ -10,27 +13,20 @@
Summary: Numerical linear algebra package libraries
Name: lapack
Version: %{mediumver}.0
Release: 8%{?dist}
License: BSD
Group: System Environment/Libraries
Release: 5%{?dist}
License: BSD-3-Clause-Open-MPI
URL: http://www.netlib.org/lapack/
Source0: http://www.netlib.org/lapack/lapack-%{version}.tar.gz
Source0: https://github.com/Reference-LAPACK/lapack/archive/v%{mediumver}.0.tar.gz
Source1: http://www.netlib.org/lapack/manpages.tgz
Source2: Makefile.blas
Source3: Makefile.lapack
Source4: http://www.netlib.org/lapack/lapackqref.ps
Source5: http://www.netlib.org/blas/blasqr.ps
Source6: Makefile.cblas
Patch3: lapack-3.7.1-make.inc.patch
Patch4: lapack-3.7.1-lapacke-shared.patch
Patch5: lapack-3.4.1-lapacke-disable-testing-functions.patch
Patch6: lapack-3.5.0-lapacke-matgenobj.patch
Patch7: lapack-3.7.1-lapacke-tmglib.patch
Patch8: lapack-3.8.0-missing-aawork.patch
BuildRequires: gcc-gfortran, gawk
BuildRequires: make, cmake
# There isn't any c++ code here, but cmake checks for a working c++ compiler?
BuildRequires: gcc-c++
Requires: blas%{?_isa} = %{version}-%{release}
%description
%global _description_lapack %{expand:
LAPACK (Linear Algebra PACKage) is a standard library for numerical
linear algebra. LAPACK provides routines for solving systems of
simultaneous linear equations, least-squares solutions of linear
@ -42,10 +38,17 @@ are also included. LAPACK can handle dense and banded matrices, but
not general sparse matrices. Similar functionality is provided for
real and complex matrices in both single and double precision. LAPACK
is coded in Fortran90 and built with gcc.
}
%global _description_blas %{expand:
BLAS (Basic Linear Algebra Subprograms) is a standard library which
provides a number of basic algorithms for numerical algebra.
}
%description %_description_lapack
%package devel
Summary: LAPACK development libraries
Group: Development/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: blas-devel%{?_isa} = %{version}-%{release}
@ -54,7 +57,6 @@ LAPACK development libraries (shared).
%package static
Summary: LAPACK static libraries
Group: Development/Libraries
Requires: lapack-devel%{?_isa} = %{version}-%{release}
%description static
@ -62,15 +64,11 @@ LAPACK static libraries.
%package -n blas
Summary: The Basic Linear Algebra Subprograms library
Group: System Environment/Libraries
%description -n blas
BLAS (Basic Linear Algebra Subprograms) is a standard library which
provides a number of basic algorithms for numerical algebra.
%description -n blas %_description_blas
%package -n blas-devel
Summary: BLAS development libraries
Group: Development/Libraries
Requires: blas%{?_isa} = %{version}-%{release}
Requires: gcc-gfortran
@ -79,7 +77,6 @@ BLAS development libraries (shared).
%package -n blas-static
Summary: BLAS static libraries
Group: Development/Libraries
Requires: blas-devel%{?_isa} = %{version}-%{release}
%description -n blas-static
@ -88,262 +85,163 @@ BLAS static libraries.
%if 0%{?arch64}
%package -n lapack64
Summary: Numerical linear algebra package libraries
Group: System Environment/Libraries
Requires: blas64%{?_isa} = %{version}-%{release}
%description -n lapack64
LAPACK (Linear Algebra PACKage) is a standard library for numerical
linear algebra. LAPACK provides routines for solving systems of
simultaneous linear equations, least-squares solutions of linear
systems of equations, eigenvalue problems, and singular value
problems. Associated matrix factorizations (LU, Cholesky, QR, SVD,
Schur, and generalized Schur) and related computations (i.e.,
reordering of Schur factorizations and estimating condition numbers)
are also included. LAPACK can handle dense and banded matrices, but
not general sparse matrices. Similar functionality is provided for
real and complex matrices in both single and double precision. LAPACK
is coded in Fortran90 and built with gcc.
%description -n lapack64 %_description_lapack
This build has 64bit INTEGER support.
%package -n lapack64-devel
Summary: LAPACK development libraries (64bit INTEGER)
Group: Development/Libraries
Requires: lapack64%{?_isa} = %{version}-%{release}
Requires: lapack-devel%{?_isa} = %{version}-%{release}
Requires: blas64-devel%{?_isa} = %{version}-%{release}
%description -n lapack64-devel
LAPACK development libraries (shared, 64bit INTEGER).
%package -n lapack64-static
Summary: LAPACK static libraries (64bit INTEGER)
Group: Development/Libraries
Requires: lapack64-devel%{?_isa} = %{version}-%{release}
%description -n lapack64-static
LAPACK static libraries (64bit INTEGER).
%package -n blas64
Summary: The Basic Linear Algebra Subprograms library (64bit INTEGER)
Group: System Environment/Libraries
%description -n blas64
BLAS (Basic Linear Algebra Subprograms) is a standard library which
provides a number of basic algorithms for numerical algebra. This build
has 64bit INTEGER support.
%description -n blas64 %_description_blas
This build has 64bit INTEGER support.
%package -n blas64-devel
Summary: BLAS development libraries
Group: Development/Libraries
Requires: blas64%{?_isa} = %{version}-%{release}
Requires: blas-devel%{?_isa} = %{version}-%{release}
Requires: gcc-gfortran
%package -n lapack64_
Summary: Numerical linear algebra package libraries
Requires: blas64_%{?_isa} = %{version}-%{release}
%description -n blas64-devel
BLAS development libraries (shared).
%description -n lapack64_ %_description_lapack
This build has 64bit INTEGER support and a symbol name suffix.
%package -n blas64-static
Summary: BLAS static libraries (64bit INTEGER)
Group: Development/Libraries
Requires: blas64-devel%{?_isa} = %{version}-%{release}
%package -n blas64_
Summary: The Basic Linear Algebra Subprograms library (64bit INTEGER)
%description -n blas64-static
BLAS static libraries (64bit INTEGER).
%description -n blas64_ %_description_blas
This build has 64bit INTEGER support and a symbol name suffix.
%endif
%prep
%setup -q
%setup -q -D -T -a1
%patch3 -p1 -b .fedora
%patch4 -p1 -b .shared
# %patch5 -p1 -b .disable-functions
# %patch6 -p1 -b .matgenobj
%patch7 -p1 -b .tmglib
%patch8 -p1 -b .missing-aawork
%setup -q -n %{name}-%{mediumver}.0
%setup -q -n %{name}-%{mediumver}.0 -D -T -a1
mkdir manpages
mv man/ manpages/
cp -f INSTALL/make.inc.gfortran make.inc
cp -f %{SOURCE2} BLAS/SRC/Makefile
cp -f %{SOURCE3} SRC/Makefile
cp -f %{SOURCE6} CBLAS/src/Makefile
# clean up weird mac osx barf
rm -rf manpages/man/man3/.*.3
sed -i "s|@SHORTVER@|%{shortver}|g" BLAS/SRC/Makefile
sed -i "s|@SHORTVER@|%{shortver}|g" SRC/Makefile
sed -i "s|@SHORTVER@|%{shortver}|g" LAPACKE/Makefile
sed -i "s|@SHORTVER@|%{shortver}|g" CBLAS/src/Makefile
sed -i "s|@LONGVER@|%{version}|g" BLAS/SRC/Makefile
sed -i "s|@LONGVER@|%{version}|g" SRC/Makefile
sed -i "s|@LONGVER@|%{version}|g" LAPACKE/Makefile
sed -i "s|@LONGVER@|%{version}|g" CBLAS/src/Makefile
%build
RPM_OPT_FLAGS="$RPM_OPT_FLAGS -frecursive"
RPM_OPT_O_FLAGS=$(echo $RPM_OPT_FLAGS | sed 's|-O2|-O0|')
export FC=gfortran
%global optflags %{optflags} -frecursive --no-optimize-sibling-calls
# Build BLAS
pushd BLAS/SRC
FFLAGS="$RPM_OPT_O_FLAGS" make dcabs1.o
FFLAGS="$RPM_OPT_FLAGS" CFLAGS="$RPM_OPT_FLAGS" make static
cp libblas.a ${RPM_BUILD_DIR}/%{name}-%{version}/
make clean
FFLAGS="$RPM_OPT_O_FLAGS -fPIC" make dcabs1.o
FFLAGS="$RPM_OPT_FLAGS -fPIC" CFLAGS="$RPM_OPT_FLAGS -fPIC" LDFLAGS="%{build_ldflags}" make shared
cp libblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
%if 0%{?arch64}
make clean
FFLAGS="$RPM_OPT_O_FLAGS -fdefault-integer-8" make dcabs1.o
SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" make static
cp libblas64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64_.a
make clean
FFLAGS="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" make dcabs1.o
SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" LDFLAGS="%{build_ldflags}" make shared
cp libblas64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64_.so.%{version}
%endif
popd
# shared normal
%cmake -DCMAKE_SKIP_RPATH:BOOL=ON -DBUILD_DEPRECATED=ON -DBUILD_SHARED_LIBS=ON -DLAPACKE=ON -DLAPACKE_WITH_TMG=ON -DCBLAS=ON
%cmake_build
mv %_vpath_builddir %_vpath_builddir-SHARED
ln -s libblas.so.%{version} libblas.so
%if 0%{?arch64}
ln -s libblas64_.so.%{version} libblas64_.so
%endif
# Build CBLAS
cp CBLAS/include/cblas_mangling_with_flags.h.in CBLAS/include/cblas_mangling.h
pushd CBLAS/src
FFLAGS="$RPM_OPT_FLAGS" CFLAGS="$RPM_OPT_FLAGS -I../include" make static
cp libcblas.a ${RPM_BUILD_DIR}/%{name}-%{version}/
make clean
FFLAGS="$RPM_OPT_FLAGS -fPIC" CFLAGS="$RPM_OPT_FLAGS -fPIC -I../include" LDFLAGS="%{build_ldflags}" make shared
cp libcblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
%if 0%{?arch64}
make clean
SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -I../include" make static
cp libcblas64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/libcblas64_.a
make clean
SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -I../include" LDFLAGS="%{build_ldflags}" make shared
cp libcblas64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/libcblas64_.so.%{version}
%endif
popd
ln -s libcblas.so.%{version} libcblas.so
%if 0%{?arch64}
ln -s libcblas64_.so.%{version} libcblas64_.so
%endif
# Build the static dlamch, dsecnd, lsame, second, slamch bits
pushd INSTALL
make NOOPT="$RPM_OPT_O_FLAGS" OPTS="$RPM_OPT_FLAGS"
popd
# Build the static lapack library
pushd SRC
make FFLAGS="$RPM_OPT_FLAGS" CFLAGS="$RPM_OPT_FLAGS" static
cp liblapack.a ${RPM_BUILD_DIR}/%{name}-%{version}/
popd
# Build the static with pic dlamch, dsecnd, lsame, second, slamch bits
pushd INSTALL
make clean
make NOOPT="$RPM_OPT_O_FLAGS -fPIC" OPTS="$RPM_OPT_FLAGS -fPIC"
popd
# Build the static with pic lapack library
pushd SRC
make clean
make FFLAGS="$RPM_OPT_FLAGS -fPIC" CFLAGS="$RPM_OPT_FLAGS -fPIC" static
cp liblapack.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack_pic.a
popd
# static normal
%cmake -DBUILD_DEPRECATED=ON -DBUILD_SHARED_LIBS=OFF -DLAPACKE=ON -DLAPACKE_WITH_TMG=ON -DCBLAS=ON
%cmake_build
mv %_vpath_builddir %_vpath_builddir-STATIC
%if 0%{?arch64}
# Build the static dlamch, dsecnd, lsame, second, slamch bits
pushd INSTALL
make NOOPT="$RPM_OPT_O_FLAGS -fdefault-integer-8" OPTS="$RPM_OPT_FLAGS -fdefault-integer-8"
popd
# shared 64
%cmake -DCMAKE_SKIP_RPATH:BOOL=ON -DBUILD_DEPRECATED=ON -DBUILD_SHARED_LIBS=ON -DBUILD_INDEX64=ON -DLAPACKE=OFF -DCBLAS=ON
%cmake_build
mv %_vpath_builddir %_vpath_builddir-SHARED64
# Build the static lapack library
pushd SRC
make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" static
cp liblapack64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_.a
popd
# static 64
%cmake -DBUILD_DEPRECATED=ON -DBUILD_SHARED_LIBS=OFF -DBUILD_INDEX64=ON -DLAPACKE=OFF -DCBLAS=ON
%cmake_build
mv %_vpath_builddir %_vpath_builddir-STATIC64
# Build the static with pic dlamch, dsecnd, lsame, second, slamch bits (64bit INTEGER)
pushd INSTALL
make clean
make NOOPT="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" OPTS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8"
popd
# This is not an Easter Egg. Just a scrambled egg.
# The first person to see this scrambled egg and point it out to spot@fedoraproject.org explicitly will get $20 USD.
# Build the static with pic lapack library (64bit INTEGER)
pushd SRC
make clean
make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" static
cp liblapack64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_pic.a
popd
# shared 64 SUFFIX
sed -i 's|64"|64_"|g' CMakeLists.txt
%cmake -DCMAKE_SKIP_RPATH:BOOL=ON -DBUILD_DEPRECATED=ON -DBUILD_SHARED_LIBS=ON -DBUILD_INDEX64=ON -DLAPACKE=OFF -DCBLAS=ON
%cmake_build
mv %_vpath_builddir %_vpath_builddir-SHARED64SUFFIX
# static 64 SUFFIX
%cmake -DBUILD_DEPRECATED=ON -DBUILD_SHARED_LIBS=OFF -DBUILD_INDEX64=ON -DLAPACKE=OFF -DCBLAS=ON
%cmake_build
mv %_vpath_builddir %_vpath_builddir-STATIC64SUFFIX
# Undo the 64_ suffix
sed -i 's|64_"|64"|g' CMakeLists.txt
%endif
# Build the shared dlamch, dsecnd, lsame, second, slamch bits
pushd INSTALL
make clean
make NOOPT="$RPM_OPT_O_FLAGS -fPIC" OPTS="$RPM_OPT_FLAGS -fPIC"
popd
# Build the shared lapack library
pushd SRC
make clean
make FFLAGS="$RPM_OPT_FLAGS -fPIC" CFLAGS="$RPM_OPT_FLAGS -fPIC" LDFLAGS="%{build_ldflags}" shared
cp liblapack.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
popd
%global optflags %{optflags} -frecursive --no-optimize-sibling-calls -fPIC
# static normal lapack FPIC
%cmake -DBUILD_DEPRECATED=ON -DBUILD_SHARED_LIBS=OFF -DLAPACKE=OFF -DCBLAS=OFF
%cmake_build
mv %_vpath_builddir %_vpath_builddir-STATICFPIC
mv %_vpath_builddir-STATICFPIC/lib/liblapack.a %_vpath_builddir-STATICFPIC/lib/liblapack_pic.a
%if 0%{?arch64}
# Build the shared dlamch, dsecnd, lsame, second, slamch bits
pushd INSTALL
make clean
make NOOPT="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" OPTS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8"
popd
# static 64 lapack FPIC
%cmake -DBUILD_DEPRECATED=ON -DBUILD_SHARED_LIBS=OFF -DBUILD_INDEX64=ON -DLAPACKE=OFF -DCBLAS=OFF
%cmake_build
mv %_vpath_builddir %_vpath_builddir-STATIC64FPIC
mv %_vpath_builddir-STATIC64FPIC/lib/liblapack64.a %_vpath_builddir-STATIC64FPIC/lib/liblapack_pic64.a
# Build the shared lapack library
pushd SRC
make clean
make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" LDFLAGS="%{build_ldflags}" shared
cp liblapack64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_.so.%{version}
popd
# static 64 lapack suffix FPIC
sed -i 's|64"|64_"|g' CMakeLists.txt
%cmake -DBUILD_DEPRECATED=ON -DBUILD_SHARED_LIBS=OFF -DBUILD_INDEX64=ON -DLAPACKE=OFF -DCBLAS=OFF
%cmake_build
mv %_vpath_builddir %_vpath_builddir-STATIC64SUFFIXFPIC
mv %_vpath_builddir-STATIC64SUFFIXFPIC/lib/liblapack64_.a %_vpath_builddir-STATIC64SUFFIXFPIC/lib/liblapack_pic64_.a
# Undo the 64_ suffix
sed -i 's|64_"|64"|g' CMakeLists.txt
%endif
ln -s liblapack.so.%{version} liblapack.so
%if 0%{?arch64}
ln -s liblapack64_.so.%{version} liblapack64_.so
%endif
# Build the lapacke libraries
make OPTS="$RPM_OPT_FLAGS -fPIC" NOOPT="$RPM_OPT_O_FLAGS -fPIC" tmglib
pushd LAPACKE
make clean
make CFLAGS="$RPM_OPT_FLAGS" BUILD_DEPRECATED="true" lapacke
make clean
make CFLAGS="$RPM_OPT_FLAGS -fPIC" BUILD_DEPRECATED="true" LDFLAGS="%{build_ldflags}" shlib
cp liblapacke.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
popd
cp -p %{SOURCE4} lapackqref.ps
cp -p %{SOURCE5} blasqr.ps
%install
mkdir -p ${RPM_BUILD_ROOT}%{_libdir}
mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man3
chmod 755 ${RPM_BUILD_ROOT}%{_mandir}/man3
for f in liblapack.so.%{version} libblas.so.%{version} libcblas.so.%{version} liblapacke.so.%{version} libblas.a libcblas.a liblapack.a liblapack_pic.a liblapacke.a; do
cp -f $f ${RPM_BUILD_ROOT}%{_libdir}/$f
%if 0%{?arch64}
for t in SHARED STATIC SHARED64 STATIC64; do
%else
for t in SHARED STATIC; do
%endif
mv %_vpath_builddir-$t %_vpath_builddir
%cmake_install
mv %_vpath_builddir %_vpath_builddir-$t
done
%if 0%{?arch64}
for f in liblapack64_.so.%{version} libblas64_.so.%{version} libcblas64_.so.%{version} libblas64_.a libcblas64_.a liblapack64_.a liblapack64_pic.a; do
cp -f $f ${RPM_BUILD_ROOT}%{_libdir}/$f
# Set the suffix
sed -i 's|64"|64_"|g' CMakeLists.txt
for t in SHARED64SUFFIX STATIC64SUFFIX; do
mv %_vpath_builddir-$t %_vpath_builddir
%cmake_install
mv %_vpath_builddir %_vpath_builddir-$t
done
%endif
install -m0644 %_vpath_builddir-STATICFPIC/lib/liblapack_pic.a %{buildroot}%{_libdir}
%if 0%{?arch64}
install -m0644 %_vpath_builddir-STATIC64FPIC/lib/liblapack_pic64.a %{buildroot}%{_libdir}
install -m0644 %_vpath_builddir-STATIC64SUFFIXFPIC/lib/liblapack_pic64_.a %{buildroot}%{_libdir}
pushd %{buildroot}%{_libdir}
for name in blas cblas lapack; do
for i in `readelf -Ws lib${name}64_.so.%{version} | awk '{print $8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$i" "64_$i"; done > ${name}-prefix.def.dirty
sort -n ${name}-prefix.def.dirty | uniq > ${name}-prefix.def
objcopy --redefine-syms ${name}-prefix.def lib${name}64_.so.%{version} lib${name}64_.so.%{version}.fixed
rm -rf lib${name}64_.so.%{version}
mv lib${name}64_.so.%{version}.fixed lib${name}64_.so.%{version}
done
for name in blas cblas lapack lapack_pic; do
for i in `nm lib${name}64_.a |grep " T " | awk '{print $3}'`; do echo "$i" "64_$i"; done > ${name}-static-prefix.def.dirty
sort -n ${name}-static-prefix.def.dirty | uniq > ${name}-static-prefix.def
objcopy --redefine-syms ${name}-static-prefix.def lib${name}64_.a lib${name}64_.a.fixed
rm -rf lib${name}64_.a
mv lib${name}64_.a.fixed lib${name}64_.a
done
popd
# cleanup defs
rm -rf %{buildroot}%{_libdir}/*.def*
%endif
mkdir -p %{buildroot}%{_mandir}/man3
chmod 755 %{buildroot}%{_mandir}/man3
# Blas manpages
pushd manpages/
mkdir -p blas/man/man3
@ -351,22 +249,22 @@ cd man/man3/
mv caxpy.f.3 caxpy.3 ccopy.f.3 ccopy.3 cdotc.f.3 cdotc.3 cdotu.f.3 cdotu.3 cgbmv.f.3 cgbmv.3 \
cgemm.f.3 cgemm.3 cgemv.f.3 cgemv.3 cgerc.f.3 cgerc.3 cgeru.f.3 cgeru.3 chbmv.f.3 chbmv.3 \
chemm.f.3 chemm.3 chemv.f.3 chemv.3 cher.f.3 cher.3 cher2.f.3 cher2.3 cher2k.f.3 cher2k.3 \
cherk.f.3 cherk.3 chpmv.f.3 chpmv.3 chpr.f.3 chpr.3 chpr2.f.3 chpr2.3 crotg.f.3 crotg.3 \
cherk.f.3 cherk.3 chpmv.f.3 chpmv.3 chpr.f.3 chpr.3 chpr2.f.3 chpr2.3 \
cscal.f.3 cscal.3 csrot.f.3 csrot.3 csscal.f.3 csscal.3 cswap.f.3 cswap.3 csymm.f.3 \
csymm.3 csyr2k.f.3 csyr2k.3 csyrk.f.3 csyrk.3 ctbmv.f.3 ctbmv.3 ctbsv.f.3 ctbsv.3 ctpmv.f.3 \
ctpmv.3 ctpsv.f.3 ctpsv.3 ctrmm.f.3 ctrmm.3 ctrmv.f.3 ctrmv.3 ctrsm.f.3 ctrsm.3 ctrsv.f.3 \
ctrsv.3 dasum.f.3 dasum.3 daxpy.f.3 daxpy.3 dcabs1.f.3 dcabs1.3 dcopy.f.3 dcopy.3 ddot.f.3 \
ddot.3 dgbmv.f.3 dgbmv.3 dgemm.f.3 dgemm.3 dgemv.f.3 dgemv.3 dger.f.3 dger.3 dnrm2.f.3 \
dnrm2.3 drot.f.3 drot.3 drotg.f.3 drotg.3 drotm.f.3 drotm.3 drotmg.f.3 drotmg.3 dsbmv.f.3 \
ddot.3 dgbmv.f.3 dgbmv.3 dgemm.f.3 dgemm.3 dgemv.f.3 dgemv.3 dger.f.3 dger.3 \
drot.f.3 drot.3 drotm.f.3 drotm.3 drotmg.f.3 drotmg.3 dsbmv.f.3 \
dsbmv.3 dscal.f.3 dscal.3 dsdot.f.3 dsdot.3 dspmv.f.3 dspmv.3 dspr.f.3 dspr.3 dspr2.f.3 \
dspr2.3 dswap.f.3 dswap.3 dsymm.f.3 dsymm.3 dsymv.f.3 dsymv.3 dsyr.f.3 dsyr.3 dsyr2.f.3 \
dsyr2.3 dsyr2k.f.3 dsyr2k.3 dsyrk.f.3 dsyrk.3 dtbmv.f.3 dtbmv.3 dtbsv.f.3 dtbsv.3 dtpmv.f.3 \
dtpmv.3 dtpsv.f.3 dtpsv.3 dtrmm.f.3 dtrmm.3 dtrmv.f.3 dtrmv.3 dtrsm.f.3 dtrsm.3 dtrsv.f.3 \
dtrsv.3 dzasum.f.3 dzasum.3 dznrm2.f.3 dznrm2.3 icamax.f.3 icamax.3 idamax.f.3 idamax.3 \
dtrsv.3 dzasum.f.3 dzasum.3 icamax.f.3 icamax.3 idamax.f.3 idamax.3 \
isamax.f.3 isamax.3 izamax.f.3 izamax.3 lsame.3 sasum.f.3 sasum.3 saxpy.f.3 saxpy.3 \
scabs1.f.3 scabs1.3 scasum.f.3 scasum.3 scnrm2.f.3 scnrm2.3 scopy.f.3 scopy.3 sdot.f.3 sdot.3 \
scabs1.f.3 scabs1.3 scasum.f.3 scasum.3 scopy.f.3 scopy.3 sdot.f.3 sdot.3 \
sdsdot.f.3 sdsdot.3 sgbmv.f.3 sgbmv.3 sgemm.f.3 sgemm.3 sgemv.f.3 sgemv.3 sger.f.3 sger.3 \
snrm2.f.3 snrm2.3 srot.f.3 srot.3 srotg.f.3 srotg.3 srotm.f.3 srotm.3 srotmg.f.3 srotmg.3 \
srot.f.3 srot.3 srotm.f.3 srotm.3 srotmg.f.3 srotmg.3 \
ssbmv.f.3 ssbmv.3 sscal.f.3 sscal.3 sspmv.f.3 sspmv.3 sspr.f.3 sspr.3 sspr2.f.3 sspr2.3 \
sswap.f.3 sswap.3 ssymm.f.3 ssymm.3 ssymv.f.3 ssymv.3 ssyr.f.3 ssyr.3 ssyr2.f.3 ssyr2.3 \
ssyr2k.f.3 ssyr2k.3 ssyrk.f.3 ssyrk.3 stbmv.f.3 stbmv.3 stbsv.f.3 stbsv.3 stpmv.f.3 stpmv.3 \
@ -375,7 +273,7 @@ xerbla.3 xerbla_array.3 zaxpy.f.3 zaxpy.3 zcopy.f.3 zcopy.3 \
zdotc.f.3 zdotc.3 zdotu.f.3 zdotu.3 zdrot.f.3 zdrot.3 zdscal.f.3 zdscal.3 zgbmv.f.3 zgbmv.3 \
zgemm.f.3 zgemm.3 zgemv.f.3 zgemv.3 zgerc.f.3 zgerc.3 zgeru.f.3 zgeru.3 zhbmv.f.3 zhbmv.3 \
zhemm.f.3 zhemm.3 zhemv.f.3 zhemv.3 zher.f.3 zher.3 zher2.f.3 zher2.3 zher2k.f.3 zher2k.3 \
zherk.f.3 zherk.3 zhpmv.f.3 zhpmv.3 zhpr.f.3 zhpr.3 zhpr2.f.3 zhpr2.3 zrotg.f.3 zrotg.3 \
zherk.f.3 zherk.3 zhpmv.f.3 zhpmv.3 zhpr.f.3 zhpr.3 zhpr2.f.3 zhpr2.3 \
zscal.f.3 zscal.3 zswap.f.3 zswap.3 zsymm.f.3 zsymm.3 zsyr2k.f.3 zsyr2k.3 zsyrk.f.3 zsyrk.3 \
ztbmv.f.3 ztbmv.3 ztbsv.f.3 ztbsv.3 ztpmv.f.3 ztpmv.3 ztpsv.f.3 ztpsv.3 ztrmm.f.3 ztrmm.3 \
ztrmv.f.3 ztrmv.3 ztrsm.f.3 ztrsm.3 ztrsv.f.3 ztrsv.3 ../../blas/man/man3
@ -389,112 +287,62 @@ pushd manpages/man/man3
rm -rf _Users_julie*
popd
# rename conflicting man pages
pushd manpages/man/man3
mv isnan.3 lapack-isnan.3
popd
find manpages/man/man3 -type f -printf "%{_mandir}/man3/%f*\n" > lapackmans
cp -f manpages/blas/man/man3/* ${RPM_BUILD_ROOT}%{_mandir}/man3
cp -f manpages/man/man3/* ${RPM_BUILD_ROOT}%{_mandir}/man3
# Cblas headers
mkdir -p %{buildroot}%{_includedir}/cblas/
cp -a CBLAS/include/*.h %{buildroot}%{_includedir}/cblas/
%ldconfig_scriptlets
# Lapacke headers
mkdir -p %{buildroot}%{_includedir}/lapacke/
cp -a LAPACKE/include/*.h %{buildroot}%{_includedir}/lapacke/
pushd ${RPM_BUILD_ROOT}%{_libdir}
ln -sf liblapack.so.%{version} liblapack.so
ln -sf liblapack.so.%{version} liblapack.so.%{shortver}
ln -sf liblapack.so.%{version} liblapack.so.%{mediumver}
ln -sf libblas.so.%{version} libblas.so
ln -sf libblas.so.%{version} libblas.so.%{shortver}
ln -sf libblas.so.%{version} libblas.so.%{mediumver}
ln -sf libcblas.so.%{version} libcblas.so
ln -sf libcblas.so.%{version} libcblas.so.%{shortver}
ln -sf libcblas.so.%{version} libcblas.so.%{mediumver}
ln -sf liblapacke.so.%{version} liblapacke.so
ln -sf liblapacke.so.%{version} liblapacke.so.%{shortver}
ln -sf liblapacke.so.%{version} liblapacke.so.%{mediumver}
%if 0%{?arch64}
ln -sf liblapack64_.so.%{version} liblapack64_.so
ln -sf liblapack64_.so.%{version} liblapack64_.so.%{shortver}
ln -sf liblapack64_.so.%{version} liblapack64_.so.%{mediumver}
ln -sf libblas64_.so.%{version} libblas64_.so
ln -sf libblas64_.so.%{version} libblas64_.so.%{shortver}
ln -sf libblas64_.so.%{version} libblas64_.so.%{mediumver}
ln -sf libcblas64_.so.%{version} libcblas64_.so
ln -sf libcblas64_.so.%{version} libcblas64_.so.%{shortver}
ln -sf libcblas64_.so.%{version} libcblas64_.so.%{mediumver}
%endif
popd
# pkgconfig
mkdir -p %{buildroot}%{_libdir}/pkgconfig/
cp -a lapack.pc.in %{buildroot}%{_libdir}/pkgconfig/lapack.pc
sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}|g' %{buildroot}%{_libdir}/pkgconfig/lapack.pc
sed -i 's|@CMAKE_INSTALL_FULL_INCLUDEDIR@|%{_includedir}|g' %{buildroot}%{_libdir}/pkgconfig/lapack.pc
sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/lapack.pc
%if 0%{?arch64}
cp -a %{buildroot}%{_libdir}/pkgconfig/lapack.pc %{buildroot}%{_libdir}/pkgconfig/lapack64.pc
sed -i 's|-llapack|-llapack64_|g' %{buildroot}%{_libdir}/pkgconfig/lapack64.pc
sed -i 's|blas|blas64|g' %{buildroot}%{_libdir}/pkgconfig/lapack64.pc
%endif
cp -a BLAS/blas.pc.in %{buildroot}%{_libdir}/pkgconfig/blas.pc
sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}|g' %{buildroot}%{_libdir}/pkgconfig/blas.pc
sed -i 's|@CMAKE_INSTALL_FULL_INCLUDEDIR@|%{_includedir}|g' %{buildroot}%{_libdir}/pkgconfig/blas.pc
sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/blas.pc
%if 0%{?arch64}
cp -a %{buildroot}%{_libdir}/pkgconfig/blas.pc %{buildroot}%{_libdir}/pkgconfig/blas64.pc
sed -i 's|-lblas|-lblas64_|g' %{buildroot}%{_libdir}/pkgconfig/blas64.pc
%endif
cp -a LAPACKE/lapacke.pc.in %{buildroot}%{_libdir}/pkgconfig/lapacke.pc
sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}|g' %{buildroot}%{_libdir}/pkgconfig/lapacke.pc
sed -i 's|@CMAKE_INSTALL_FULL_INCLUDEDIR@|%{_includedir}/lapacke|g' %{buildroot}%{_libdir}/pkgconfig/lapacke.pc
sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/lapacke.pc
cp -a CBLAS/cblas.pc.in %{buildroot}%{_libdir}/pkgconfig/cblas.pc
sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}|g' %{buildroot}%{_libdir}/pkgconfig/cblas.pc
sed -i 's|@CMAKE_INSTALL_FULL_INCLUDEDIR@|%{_includedir}/cblas|g' %{buildroot}%{_libdir}/pkgconfig/cblas.pc
sed -i 's|@LAPACK_VERSION@|%{version}|g' %{buildroot}%{_libdir}/pkgconfig/cblas.pc
%if 0%{?arch64}
cp -a %{buildroot}%{_libdir}/pkgconfig/cblas.pc %{buildroot}%{_libdir}/pkgconfig/cblas64.pc
sed -i 's|-lcblas|-lcblas64_|g' %{buildroot}%{_libdir}/pkgconfig/cblas64.pc
sed -i 's|Requires.private: blas|Requires.private: blas64|g' %{buildroot}%{_libdir}/pkgconfig/cblas64.pc
%endif
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%post -n blas -p /sbin/ldconfig
%postun -n blas -p /sbin/ldconfig
%ldconfig_scriptlets -n blas
%if 0%{?arch64}
%post -n lapack64 -p /sbin/ldconfig
%ldconfig_scriptlets -n lapack64
%ldconfig_scriptlets -n lapack64_
%postun -n lapack64 -p /sbin/ldconfig
%post -n blas64 -p /sbin/ldconfig
%postun -n blas64 -p /sbin/ldconfig
%ldconfig_scriptlets -n blas64
%ldconfig_scriptlets -n blas64_
%endif
%files -f lapackmans
%doc README.md LICENSE lapackqref.ps
%{_libdir}/liblapack.so.*
%{_libdir}/liblapacke.so.*
%{_libdir}/libtmglib.so.*
%files devel
%{_includedir}/lapacke/
%{_includedir}/lapack*.h
%{_libdir}/liblapack.so
%{_libdir}/liblapacke.so
%{_libdir}/libtmglib.so
%{_libdir}/cmake/lapack-*
%{_libdir}/cmake/lapacke-*
%{_libdir}/pkgconfig/lapack.pc
%{_libdir}/pkgconfig/lapacke.pc
%if 0%{?arch64}
%{_libdir}/liblapack64.so
%{_libdir}/cmake/lapack64*
%{_libdir}/pkgconfig/lapack64.pc
%{_libdir}/liblapack64_.so
%{_libdir}/pkgconfig/lapack64_.pc
%endif
%files static
%{_libdir}/liblapack.a
%{_libdir}/liblapack_pic.a
%{_libdir}/liblapacke.a
%{_libdir}/libtmglib.a
%if 0%{?arch64}
%{_libdir}/liblapack64.a
%{_libdir}/liblapack_pic64.a
%{_libdir}/liblapack64_.a
%{_libdir}/liblapack_pic64_.a
%endif
%files -n blas -f blasmans
%doc blasqr.ps LICENSE
@ -502,46 +350,143 @@ sed -i 's|Requires.private: blas|Requires.private: blas64|g' %{buildroot}%{_libd
%{_libdir}/libcblas.so.*
%files -n blas-devel
%{_includedir}/cblas/
%{_includedir}/cblas*.h
%{_libdir}/libblas.so
%{_libdir}/libcblas.so
%{_libdir}/cmake/cblas-*
%{_libdir}/pkgconfig/blas.pc
%{_libdir}/pkgconfig/cblas.pc
%if 0%{?arch64}
%{_libdir}/libblas64.so
%{_libdir}/libcblas64.so
%{_libdir}/cmake/cblas64*
%{_libdir}/pkgconfig/blas64.pc
%{_libdir}/pkgconfig/cblas64.pc
%{_libdir}/libblas64_.so
%{_libdir}/libcblas64_.so
%{_libdir}/pkgconfig/blas64_.pc
%{_libdir}/pkgconfig/cblas64_.pc
%endif
%files -n blas-static
%{_libdir}/libblas.a
%{_libdir}/libcblas.a
%if 0%{?arch64}
%{_libdir}/libblas64.a
%{_libdir}/libcblas64.a
%{_libdir}/libblas64_.a
%{_libdir}/libcblas64_.a
%endif
%if 0%{?arch64}
%files -n blas64
%doc LICENSE
%{_libdir}/libblas64_.so.*
%{_libdir}/libcblas64_.so.*
%files -n blas64-devel
%{_libdir}/libblas64_.so
%{_libdir}/libcblas64_.so
%{_libdir}/pkgconfig/blas64.pc
%{_libdir}/pkgconfig/cblas64.pc
%files -n blas64-static
%{_libdir}/libblas64_.a
%{_libdir}/libcblas64_.a
%{_libdir}/libblas64.so.*
%{_libdir}/libcblas64.so.*
%files -n lapack64
%doc README.md LICENSE
%{_libdir}/liblapack64.so.*
%files -n blas64_
%doc LICENSE
%{_libdir}/libblas64_.so.*
%{_libdir}/libcblas64_.so.*
%files -n lapack64_
%doc README.md LICENSE
%{_libdir}/liblapack64_.so.*
%files -n lapack64-devel
%{_libdir}/liblapack64_.so
%{_libdir}/pkgconfig/lapack64.pc
%files -n lapack64-static
%{_libdir}/liblapack64_.a
%{_libdir}/liblapack64_pic.a
%endif
%changelog
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 3.12.0-5
- Bump release for June 2024 mass rebuild
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Jan 11 2024 Tom Callaway <spot@fedoraproject.org> - 3.12.0-2
- rename isnan.3 to lapack-isnan.3 to avoid conflict with man-pages package
* Thu Jan 4 2024 Tom Callaway <spot@fedoraproject.org> - 3.12.0-1
- update to 3.12.0
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.11.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Thu Jun 1 2023 Tom Callaway <spot@fedoraproject.org> - 3.11.0-4
- apply upstream fix to https://github.com/Reference-LAPACK/lapack/issues/763
* Fri May 19 2023 Iñaki Úcar <iucar@fedoraproject.org> - 3.11.0-3
- Adapt license tag to SPDX
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.11.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Mon Nov 14 2022 Tom Callaway <spot@fedoraproject.org> - 3.11.0-1
- update to 3.11.0
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.10.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Sun Apr 24 2022 Tom Callaway <spot@fedoraproject.org> - 3.10.1-1
- update to 3.10.1
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.10.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Dec 8 2021 Tom Callaway <spot@fedoraproject.org> - 3.10.0-4
- Fix out of bounds read in *larrv, CVE-2021-4048
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.10.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Thu Jul 1 2021 Tom Callaway <spot@fedoraproject.org> - 3.10.0-2
- rename conflicting manpages (bz1978346)
* Wed Jun 30 2021 Tom Callaway <spot@fedoraproject.org> - 3.10.0-1
- update to 3.10.0
* Fri Apr 9 2021 Tom Callaway <spot@fedoraproject.org> - 3.9.1-1
- 3.9.1
- use upstream cmake build (no more hacked up Makefiles, huzzah)
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.9.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.9.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Sun Jun 21 2020 Iñaki Úcar <iucar@fedoraproject.org> - 3.9.0-4
- make separate packages for 64-bit versions with and without suffix (bz1295965)
* Thu Mar 19 2020 Tom Callaway <spot@fedoraproject.org> - 3.9.0-3
- apply upstream fix for accidental removal of deprecated symbols from header file
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.9.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Tue Nov 26 2019 Tom Callaway <spot@fedoraproject.org> - 3.9.0-1
- update to 3.9.0
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.0-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Wed May 29 2019 Tom Callaway <spot@fedoraproject.org> - 3.8.0-12
- use --no-optimize-sibling-calls to work around gfortran issues
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.0-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.0-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue Jun 19 2018 Tom Callaway <spot@fedoraproject.org> - 3.8.0-9
- explicitly link liblapacke.so with liblapack to remove undefined-non-weak-symbols
* Mon Mar 5 2018 Tom Callaway <spot@fedoraproject.org> - 3.8.0-8
- use LDFLAGS for shared libs

2
sources Normal file
View File

@ -0,0 +1,2 @@
SHA512 (manpages.tgz) = 9f669f18220c48236acb9d8ebf5f5eec3313144dfb0e9559dbf7b3b04a0d3b37783dcf83521b8f923ccb70a69de493af8b2b6457af850cd231ca540573f1740b
SHA512 (v3.12.0.tar.gz) = f8f3c733a0221be0b3f5618235408ac59cbd4e5f1c4eab5f509b831a6ec6a9ef14b8849aa6ea10810df1aff90186ca454d15e9438d1dd271c2449d42d3da9dda