From ff8b21d5308220e916731439728356c8a9186e87 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 30 Oct 2026 18:01:20 +0100 Subject: [PATCH 01/11] Avoid integer overflow in calculation of EMPTSW (Reference-LAPACK PR 1454) --- lapack-netlib/SRC/cgesvj.c | 2 +- lapack-netlib/SRC/cgesvj.f | 2 +- lapack-netlib/SRC/cgsvj0.c | 2 +- lapack-netlib/SRC/cgsvj0.f | 51 ++++++++++------ lapack-netlib/SRC/dgesvj.c | 2 +- lapack-netlib/SRC/dgesvj.f | 2 +- lapack-netlib/SRC/dgsvj0.c | 2 +- lapack-netlib/SRC/dgsvj0.f | 118 ++++++++++++++++++++++++------------- lapack-netlib/SRC/sgesvj.c | 2 +- lapack-netlib/SRC/sgesvj.f | 2 +- lapack-netlib/SRC/sgsvj0.c | 2 +- lapack-netlib/SRC/sgsvj0.f | 118 ++++++++++++++++++++++++------------- lapack-netlib/SRC/zgesvj.c | 2 +- lapack-netlib/SRC/zgesvj.f | 2 +- lapack-netlib/SRC/zgsvj0.c | 2 +- lapack-netlib/SRC/zgsvj0.f | 51 ++++++++++------ 16 files changed, 230 insertions(+), 132 deletions(-) diff --git a/lapack-netlib/SRC/cgesvj.c b/lapack-netlib/SRC/cgesvj.c index 0e00dc5689..94576db291 100644 --- a/lapack-netlib/SRC/cgesvj.c +++ b/lapack-netlib/SRC/cgesvj.c @@ -1087,7 +1087,7 @@ f"> */ /* Row-cyclic Jacobi SVD algorithm with column pivoting */ - emptsw = *n * (*n - 1) / 2; + emptsw = (*n / 2) * (*n - 1 + *n % 2); notrot = 0; i__1 = *n; for (q = 1; q <= i__1; ++q) { diff --git a/lapack-netlib/SRC/cgesvj.f b/lapack-netlib/SRC/cgesvj.f index cae7a244f4..f1fca7d3ab 100644 --- a/lapack-netlib/SRC/cgesvj.f +++ b/lapack-netlib/SRC/cgesvj.f @@ -714,7 +714,7 @@ SUBROUTINE CGESVJ( JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V, * * Row-cyclic Jacobi SVD algorithm with column pivoting * - EMPTSW = ( N*( N-1 ) ) / 2 + EMPTSW = ( N / 2 )*( N-1 + MOD( N, 2 ) ) NOTROT = 0 DO 1868 q = 1, N diff --git a/lapack-netlib/SRC/cgsvj0.c b/lapack-netlib/SRC/cgsvj0.c index d390bce7d6..7e8730f8f1 100644 --- a/lapack-netlib/SRC/cgsvj0.c +++ b/lapack-netlib/SRC/cgsvj0.c @@ -638,7 +638,7 @@ f"> */ roottol = sqrt(*tol); - emptsw = *n * (*n - 1) / 2; + emptsw = (*n / 2) * (*n - 1 + *n % 2); notrot = 0; diff --git a/lapack-netlib/SRC/cgsvj0.f b/lapack-netlib/SRC/cgsvj0.f index 7426ecdf14..d017fd6970 100644 --- a/lapack-netlib/SRC/cgsvj0.f +++ b/lapack-netlib/SRC/cgsvj0.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download CGSVJ0 + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -193,7 +191,7 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup complexOTHERcomputational +*> \ingroup gsvj0 * *> \par Further Details: * ===================== @@ -321,7 +319,7 @@ SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, * * .. Row-cyclic Jacobi SVD algorithm with column pivoting .. * - EMPTSW = ( N*( N-1 ) ) / 2 + EMPTSW = ( N / 2 )*( N-1 + MOD( N, 2 ) ) NOTROT = 0 * * .. Row-cyclic pivot strategy with de Rijk's pivoting .. @@ -499,7 +497,8 @@ SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, T = HALF / THETA CS = ONE - CALL CROT( M, A(1,p), 1, A(1,q), 1, + CALL CROT( M, A(1,p), 1, A(1,q), + $ 1, $ CS, CONJG(OMPQ)*T ) IF ( RSVEC ) THEN CALL CROT( MVL, V(1,p), 1, @@ -528,7 +527,8 @@ SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, AAPP = AAPP*SQRT( MAX( ZERO, $ ONE-T*AQOAP*AAPQ1 ) ) * - CALL CROT( M, A(1,p), 1, A(1,q), 1, + CALL CROT( M, A(1,p), 1, A(1,q), + $ 1, $ CS, CONJG(OMPQ)*SN ) IF ( RSVEC ) THEN CALL CROT( MVL, V(1,p), 1, @@ -541,14 +541,17 @@ SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, * .. have to use modified Gram-Schmidt like transformation CALL CCOPY( M, A( 1, p ), 1, $ WORK, 1 ) - CALL CLASCL( 'G', 0, 0, AAPP, ONE, M, + CALL CLASCL( 'G', 0, 0, AAPP, ONE, + $ M, $ 1, WORK, LDA, $ IERR ) - CALL CLASCL( 'G', 0, 0, AAQQ, ONE, M, + CALL CLASCL( 'G', 0, 0, AAQQ, ONE, + $ M, $ 1, A( 1, q ), LDA, IERR ) CALL CAXPY( M, -AAPQ, WORK, 1, $ A( 1, q ), 1 ) - CALL CLASCL( 'G', 0, 0, ONE, AAQQ, M, + CALL CLASCL( 'G', 0, 0, ONE, AAQQ, + $ M, $ 1, A( 1, q ), LDA, IERR ) SVA( q ) = AAQQ*SQRT( MAX( ZERO, $ ONE-AAPQ1*AAPQ1 ) ) @@ -563,7 +566,8 @@ SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ THEN IF( ( AAQQ.LT.ROOTBIG ) .AND. $ ( AAQQ.GT.ROOTSFMIN ) ) THEN - SVA( q ) = SCNRM2( M, A( 1, q ), 1 ) + SVA( q ) = SCNRM2( M, A( 1, q ), + $ 1 ) ELSE T = ZERO AAQQ = ONE @@ -715,7 +719,8 @@ SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, IF( ABS( THETA ).GT.BIGTHETA ) THEN T = HALF / THETA CS = ONE - CALL CROT( M, A(1,p), 1, A(1,q), 1, + CALL CROT( M, A(1,p), 1, A(1,q), + $ 1, $ CS, CONJG(OMPQ)*T ) IF( RSVEC ) THEN CALL CROT( MVL, V(1,p), 1, @@ -742,7 +747,8 @@ SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, AAPP = AAPP*SQRT( MAX( ZERO, $ ONE-T*AQOAP*AAPQ1 ) ) * - CALL CROT( M, A(1,p), 1, A(1,q), 1, + CALL CROT( M, A(1,p), 1, A(1,q), + $ 1, $ CS, CONJG(OMPQ)*SN ) IF( RSVEC ) THEN CALL CROT( MVL, V(1,p), 1, @@ -756,15 +762,18 @@ SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, IF( AAPP.GT.AAQQ ) THEN CALL CCOPY( M, A( 1, p ), 1, $ WORK, 1 ) - CALL CLASCL( 'G', 0, 0, AAPP, ONE, + CALL CLASCL( 'G', 0, 0, AAPP, + $ ONE, $ M, 1, WORK,LDA, $ IERR ) - CALL CLASCL( 'G', 0, 0, AAQQ, ONE, + CALL CLASCL( 'G', 0, 0, AAQQ, + $ ONE, $ M, 1, A( 1, q ), LDA, $ IERR ) CALL CAXPY( M, -AAPQ, WORK, $ 1, A( 1, q ), 1 ) - CALL CLASCL( 'G', 0, 0, ONE, AAQQ, + CALL CLASCL( 'G', 0, 0, ONE, + $ AAQQ, $ M, 1, A( 1, q ), LDA, $ IERR ) SVA( q ) = AAQQ*SQRT( MAX( ZERO, @@ -773,15 +782,18 @@ SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, ELSE CALL CCOPY( M, A( 1, q ), 1, $ WORK, 1 ) - CALL CLASCL( 'G', 0, 0, AAQQ, ONE, + CALL CLASCL( 'G', 0, 0, AAQQ, + $ ONE, $ M, 1, WORK,LDA, $ IERR ) - CALL CLASCL( 'G', 0, 0, AAPP, ONE, + CALL CLASCL( 'G', 0, 0, AAPP, + $ ONE, $ M, 1, A( 1, p ), LDA, $ IERR ) CALL CAXPY( M, -CONJG(AAPQ), $ WORK, 1, A( 1, p ), 1 ) - CALL CLASCL( 'G', 0, 0, ONE, AAPP, + CALL CLASCL( 'G', 0, 0, ONE, + $ AAPP, $ M, 1, A( 1, p ), LDA, $ IERR ) SVA( p ) = AAPP*SQRT( MAX( ZERO, @@ -797,7 +809,8 @@ SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ THEN IF( ( AAQQ.LT.ROOTBIG ) .AND. $ ( AAQQ.GT.ROOTSFMIN ) ) THEN - SVA( q ) = SCNRM2( M, A( 1, q ), 1) + SVA( q ) = SCNRM2( M, A( 1, q ), + $ 1) ELSE T = ZERO AAQQ = ONE diff --git a/lapack-netlib/SRC/dgesvj.c b/lapack-netlib/SRC/dgesvj.c index ec7420bcb3..3f1af4fb54 100644 --- a/lapack-netlib/SRC/dgesvj.c +++ b/lapack-netlib/SRC/dgesvj.c @@ -992,7 +992,7 @@ f"> */ /* Row-cyclic Jacobi SVD algorithm with column pivoting */ - emptsw = *n * (*n - 1) / 2; + emptsw = (*n / 2) * (*n - 1 + *n % 2); notrot = 0; fastr[0] = 0.; diff --git a/lapack-netlib/SRC/dgesvj.f b/lapack-netlib/SRC/dgesvj.f index ef17833baa..fc2e8c35d3 100644 --- a/lapack-netlib/SRC/dgesvj.f +++ b/lapack-netlib/SRC/dgesvj.f @@ -695,7 +695,7 @@ SUBROUTINE DGESVJ( JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V, * * Row-cyclic Jacobi SVD algorithm with column pivoting * - EMPTSW = ( N*( N-1 ) ) / 2 + EMPTSW = ( N / 2 )*( N-1 + MOD( N, 2 ) ) NOTROT = 0 FASTR( 1 ) = ZERO * diff --git a/lapack-netlib/SRC/dgsvj0.c b/lapack-netlib/SRC/dgsvj0.c index 36e9869806..132d98cbb4 100644 --- a/lapack-netlib/SRC/dgsvj0.c +++ b/lapack-netlib/SRC/dgsvj0.c @@ -574,7 +574,7 @@ f"> */ /* -#- Row-cyclic Jacobi SVD algorithm with column pivoting -#- */ - emptsw = *n * (*n - 1) / 2; + emptsw = (*n / 2) * (*n - 1 + *n % 2); notrot = 0; fastr[0] = 0.; diff --git a/lapack-netlib/SRC/dgsvj0.f b/lapack-netlib/SRC/dgsvj0.f index 1008aa8c6e..3c3b17672e 100644 --- a/lapack-netlib/SRC/dgsvj0.f +++ b/lapack-netlib/SRC/dgsvj0.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download DGSVJ0 + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -193,7 +191,7 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup doubleOTHERcomputational +*> \ingroup gsvj0 * *> \par Further Details: * ===================== @@ -215,6 +213,7 @@ * ===================================================================== SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ SFMIN, TOL, NSWEEP, WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -259,7 +258,8 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, EXTERNAL IDAMAX, LSAME, DDOT, DNRM2 * .. * .. External Subroutines .. - EXTERNAL DAXPY, DCOPY, DLASCL, DLASSQ, DROTM, DSWAP, + EXTERNAL DAXPY, DCOPY, DLASCL, DLASSQ, DROTM, + $ DSWAP, $ XERBLA * .. * .. Executable Statements .. @@ -314,7 +314,7 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, * * -#- Row-cyclic Jacobi SVD algorithm with column pivoting -#- * - EMPTSW = ( N*( N-1 ) ) / 2 + EMPTSW = ( N / 2 )*( N-1 + MOD( N, 2 ) ) NOTROT = 0 FASTR( 1 ) = ZERO * @@ -424,12 +424,15 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, IF( AAQQ.GE.ONE ) THEN ROTOK = ( SMALL*AAPP ).LE.AAQQ IF( AAPP.LT.( BIG / AAQQ ) ) THEN - AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1, + AAPQ = ( DDOT( M, A( 1, p ), 1, + $ A( 1, $ q ), 1 )*D( p )*D( q ) / AAQQ ) $ / AAPP ELSE - CALL DCOPY( M, A( 1, p ), 1, WORK, 1 ) - CALL DLASCL( 'G', 0, 0, AAPP, D( p ), + CALL DCOPY( M, A( 1, p ), 1, WORK, + $ 1 ) + CALL DLASCL( 'G', 0, 0, AAPP, + $ D( p ), $ M, 1, WORK, LDA, IERR ) AAPQ = DDOT( M, WORK, 1, A( 1, q ), $ 1 )*D( q ) / AAQQ @@ -437,12 +440,15 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, ELSE ROTOK = AAPP.LE.( AAQQ / SMALL ) IF( AAPP.GT.( SMALL / AAQQ ) ) THEN - AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1, + AAPQ = ( DDOT( M, A( 1, p ), 1, + $ A( 1, $ q ), 1 )*D( p )*D( q ) / AAQQ ) $ / AAPP ELSE - CALL DCOPY( M, A( 1, q ), 1, WORK, 1 ) - CALL DLASCL( 'G', 0, 0, AAQQ, D( q ), + CALL DCOPY( M, A( 1, q ), 1, WORK, + $ 1 ) + CALL DLASCL( 'G', 0, 0, AAQQ, + $ D( q ), $ M, 1, WORK, LDA, IERR ) AAPQ = DDOT( M, WORK, 1, A( 1, p ), $ 1 )*D( p ) / AAPP @@ -511,7 +517,8 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, FASTR( 4 ) = -T*AQOAP D( p ) = D( p )*CS D( q ) = D( q )*CS - CALL DROTM( M, A( 1, p ), 1, + CALL DROTM( M, A( 1, p ), + $ 1, $ A( 1, q ), 1, $ FASTR ) IF( RSVEC )CALL DROTM( MVL, @@ -527,7 +534,8 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, D( p ) = D( p )*CS D( q ) = D( q ) / CS IF( RSVEC ) THEN - CALL DAXPY( MVL, -T*AQOAP, + CALL DAXPY( MVL, + $ -T*AQOAP, $ V( 1, q ), 1, $ V( 1, p ), 1 ) CALL DAXPY( MVL, @@ -541,13 +549,15 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, CALL DAXPY( M, T*APOAQ, $ A( 1, p ), 1, $ A( 1, q ), 1 ) - CALL DAXPY( M, -CS*SN*AQOAP, + CALL DAXPY( M, + $ -CS*SN*AQOAP, $ A( 1, q ), 1, $ A( 1, p ), 1 ) D( p ) = D( p ) / CS D( q ) = D( q )*CS IF( RSVEC ) THEN - CALL DAXPY( MVL, T*APOAQ, + CALL DAXPY( MVL, + $ T*APOAQ, $ V( 1, p ), 1, $ V( 1, q ), 1 ) CALL DAXPY( MVL, @@ -560,7 +570,8 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, CALL DAXPY( M, -T*AQOAP, $ A( 1, q ), 1, $ A( 1, p ), 1 ) - CALL DAXPY( M, CS*SN*APOAQ, + CALL DAXPY( M, + $ CS*SN*APOAQ, $ A( 1, p ), 1, $ A( 1, q ), 1 ) D( p ) = D( p )*CS @@ -601,15 +612,19 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, * ELSE * .. have to use modified Gram-Schmidt like transformation - CALL DCOPY( M, A( 1, p ), 1, WORK, 1 ) - CALL DLASCL( 'G', 0, 0, AAPP, ONE, M, + CALL DCOPY( M, A( 1, p ), 1, WORK, + $ 1 ) + CALL DLASCL( 'G', 0, 0, AAPP, ONE, + $ M, $ 1, WORK, LDA, IERR ) - CALL DLASCL( 'G', 0, 0, AAQQ, ONE, M, + CALL DLASCL( 'G', 0, 0, AAQQ, ONE, + $ M, $ 1, A( 1, q ), LDA, IERR ) TEMP1 = -AAPQ*D( p ) / D( q ) CALL DAXPY( M, TEMP1, WORK, 1, $ A( 1, q ), 1 ) - CALL DLASCL( 'G', 0, 0, ONE, AAQQ, M, + CALL DLASCL( 'G', 0, 0, ONE, AAQQ, + $ M, $ 1, A( 1, q ), LDA, IERR ) SVA( q ) = AAQQ*DSQRT( MAX( ZERO, $ ONE-AAPQ*AAPQ ) ) @@ -623,7 +638,8 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ THEN IF( ( AAQQ.LT.ROOTBIG ) .AND. $ ( AAQQ.GT.ROOTSFMIN ) ) THEN - SVA( q ) = DNRM2( M, A( 1, q ), 1 )* + SVA( q ) = DNRM2( M, A( 1, q ), + $ 1 )* $ D( q ) ELSE T = ZERO @@ -724,12 +740,15 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, ROTOK = ( SMALL*AAQQ ).LE.AAPP END IF IF( AAPP.LT.( BIG / AAQQ ) ) THEN - AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1, + AAPQ = ( DDOT( M, A( 1, p ), 1, + $ A( 1, $ q ), 1 )*D( p )*D( q ) / AAQQ ) $ / AAPP ELSE - CALL DCOPY( M, A( 1, p ), 1, WORK, 1 ) - CALL DLASCL( 'G', 0, 0, AAPP, D( p ), + CALL DCOPY( M, A( 1, p ), 1, WORK, + $ 1 ) + CALL DLASCL( 'G', 0, 0, AAPP, + $ D( p ), $ M, 1, WORK, LDA, IERR ) AAPQ = DDOT( M, WORK, 1, A( 1, q ), $ 1 )*D( q ) / AAQQ @@ -741,12 +760,15 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, ROTOK = AAQQ.LE.( AAPP / SMALL ) END IF IF( AAPP.GT.( SMALL / AAQQ ) ) THEN - AAPQ = ( DDOT( M, A( 1, p ), 1, A( 1, + AAPQ = ( DDOT( M, A( 1, p ), 1, + $ A( 1, $ q ), 1 )*D( p )*D( q ) / AAQQ ) $ / AAPP ELSE - CALL DCOPY( M, A( 1, q ), 1, WORK, 1 ) - CALL DLASCL( 'G', 0, 0, AAQQ, D( q ), + CALL DCOPY( M, A( 1, q ), 1, WORK, + $ 1 ) + CALL DLASCL( 'G', 0, 0, AAQQ, + $ D( q ), $ M, 1, WORK, LDA, IERR ) AAPQ = DDOT( M, WORK, 1, A( 1, p ), $ 1 )*D( p ) / AAPP @@ -810,7 +832,8 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, FASTR( 4 ) = -T*AQOAP D( p ) = D( p )*CS D( q ) = D( q )*CS - CALL DROTM( M, A( 1, p ), 1, + CALL DROTM( M, A( 1, p ), + $ 1, $ A( 1, q ), 1, $ FASTR ) IF( RSVEC )CALL DROTM( MVL, @@ -824,7 +847,8 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ A( 1, p ), 1, $ A( 1, q ), 1 ) IF( RSVEC ) THEN - CALL DAXPY( MVL, -T*AQOAP, + CALL DAXPY( MVL, + $ -T*AQOAP, $ V( 1, q ), 1, $ V( 1, p ), 1 ) CALL DAXPY( MVL, @@ -840,11 +864,13 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, CALL DAXPY( M, T*APOAQ, $ A( 1, p ), 1, $ A( 1, q ), 1 ) - CALL DAXPY( M, -CS*SN*AQOAP, + CALL DAXPY( M, + $ -CS*SN*AQOAP, $ A( 1, q ), 1, $ A( 1, p ), 1 ) IF( RSVEC ) THEN - CALL DAXPY( MVL, T*APOAQ, + CALL DAXPY( MVL, + $ T*APOAQ, $ V( 1, p ), 1, $ V( 1, q ), 1 ) CALL DAXPY( MVL, @@ -859,7 +885,8 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, CALL DAXPY( M, -T*AQOAP, $ A( 1, q ), 1, $ A( 1, p ), 1 ) - CALL DAXPY( M, CS*SN*APOAQ, + CALL DAXPY( M, + $ CS*SN*APOAQ, $ A( 1, p ), 1, $ A( 1, q ), 1 ) D( p ) = D( p )*CS @@ -900,34 +927,42 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, * ELSE IF( AAPP.GT.AAQQ ) THEN - CALL DCOPY( M, A( 1, p ), 1, WORK, + CALL DCOPY( M, A( 1, p ), 1, + $ WORK, $ 1 ) - CALL DLASCL( 'G', 0, 0, AAPP, ONE, + CALL DLASCL( 'G', 0, 0, AAPP, + $ ONE, $ M, 1, WORK, LDA, IERR ) - CALL DLASCL( 'G', 0, 0, AAQQ, ONE, + CALL DLASCL( 'G', 0, 0, AAQQ, + $ ONE, $ M, 1, A( 1, q ), LDA, $ IERR ) TEMP1 = -AAPQ*D( p ) / D( q ) CALL DAXPY( M, TEMP1, WORK, 1, $ A( 1, q ), 1 ) - CALL DLASCL( 'G', 0, 0, ONE, AAQQ, + CALL DLASCL( 'G', 0, 0, ONE, + $ AAQQ, $ M, 1, A( 1, q ), LDA, $ IERR ) SVA( q ) = AAQQ*DSQRT( MAX( ZERO, $ ONE-AAPQ*AAPQ ) ) MXSINJ = MAX( MXSINJ, SFMIN ) ELSE - CALL DCOPY( M, A( 1, q ), 1, WORK, + CALL DCOPY( M, A( 1, q ), 1, + $ WORK, $ 1 ) - CALL DLASCL( 'G', 0, 0, AAQQ, ONE, + CALL DLASCL( 'G', 0, 0, AAQQ, + $ ONE, $ M, 1, WORK, LDA, IERR ) - CALL DLASCL( 'G', 0, 0, AAPP, ONE, + CALL DLASCL( 'G', 0, 0, AAPP, + $ ONE, $ M, 1, A( 1, p ), LDA, $ IERR ) TEMP1 = -AAPQ*D( q ) / D( p ) CALL DAXPY( M, TEMP1, WORK, 1, $ A( 1, p ), 1 ) - CALL DLASCL( 'G', 0, 0, ONE, AAPP, + CALL DLASCL( 'G', 0, 0, ONE, + $ AAPP, $ M, 1, A( 1, p ), LDA, $ IERR ) SVA( p ) = AAPP*DSQRT( MAX( ZERO, @@ -943,7 +978,8 @@ SUBROUTINE DGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ THEN IF( ( AAQQ.LT.ROOTBIG ) .AND. $ ( AAQQ.GT.ROOTSFMIN ) ) THEN - SVA( q ) = DNRM2( M, A( 1, q ), 1 )* + SVA( q ) = DNRM2( M, A( 1, q ), + $ 1 )* $ D( q ) ELSE T = ZERO diff --git a/lapack-netlib/SRC/sgesvj.c b/lapack-netlib/SRC/sgesvj.c index 55adf6a97d..b05348e5f7 100644 --- a/lapack-netlib/SRC/sgesvj.c +++ b/lapack-netlib/SRC/sgesvj.c @@ -1214,7 +1214,7 @@ f"> */ /* Row-cyclic Jacobi SVD algorithm with column pivoting */ - emptsw = *n * (*n - 1) / 2; + emptsw = (*n / 2) * (*n - 1 + *n % 2); notrot = 0; fastr[0] = 0.f; diff --git a/lapack-netlib/SRC/sgesvj.f b/lapack-netlib/SRC/sgesvj.f index 25eec31df2..7f7d263932 100644 --- a/lapack-netlib/SRC/sgesvj.f +++ b/lapack-netlib/SRC/sgesvj.f @@ -681,7 +681,7 @@ SUBROUTINE SGESVJ( JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V, * * Row-cyclic Jacobi SVD algorithm with column pivoting * - EMPTSW = ( N*( N-1 ) ) / 2 + EMPTSW = ( N / 2 )*( N-1 + MOD( N, 2 ) ) NOTROT = 0 FASTR( 1 ) = ZERO * diff --git a/lapack-netlib/SRC/sgsvj0.c b/lapack-netlib/SRC/sgsvj0.c index 747b9eff95..c5dcc4f69f 100644 --- a/lapack-netlib/SRC/sgsvj0.c +++ b/lapack-netlib/SRC/sgsvj0.c @@ -813,7 +813,7 @@ f"> */ roottol = sqrt(*tol); - emptsw = *n * (*n - 1) / 2; + emptsw = (*n / 2) * (*n - 1 + *n % 2); notrot = 0; fastr[0] = 0.f; diff --git a/lapack-netlib/SRC/sgsvj0.f b/lapack-netlib/SRC/sgsvj0.f index 7e5fddeb0b..923f33374a 100644 --- a/lapack-netlib/SRC/sgsvj0.f +++ b/lapack-netlib/SRC/sgsvj0.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download SGSVJ0 + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -193,7 +191,7 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup realOTHERcomputational +*> \ingroup gsvj0 * *> \par Further Details: * ===================== @@ -215,6 +213,7 @@ * ===================================================================== SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ SFMIN, TOL, NSWEEP, WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -259,7 +258,8 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, EXTERNAL ISAMAX, LSAME, SDOT, SNRM2 * .. * .. External Subroutines .. - EXTERNAL SAXPY, SCOPY, SLASCL, SLASSQ, SROTM, SSWAP, + EXTERNAL SAXPY, SCOPY, SLASCL, SLASSQ, SROTM, + $ SSWAP, $ XERBLA * .. * .. Executable Statements .. @@ -314,7 +314,7 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, * * .. Row-cyclic Jacobi SVD algorithm with column pivoting .. * - EMPTSW = ( N*( N-1 ) ) / 2 + EMPTSW = ( N / 2 )*( N-1 + MOD( N, 2 ) ) NOTROT = 0 FASTR( 1 ) = ZERO * @@ -424,12 +424,15 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, IF( AAQQ.GE.ONE ) THEN ROTOK = ( SMALL*AAPP ).LE.AAQQ IF( AAPP.LT.( BIG / AAQQ ) ) THEN - AAPQ = ( SDOT( M, A( 1, p ), 1, A( 1, + AAPQ = ( SDOT( M, A( 1, p ), 1, + $ A( 1, $ q ), 1 )*D( p )*D( q ) / AAQQ ) $ / AAPP ELSE - CALL SCOPY( M, A( 1, p ), 1, WORK, 1 ) - CALL SLASCL( 'G', 0, 0, AAPP, D( p ), + CALL SCOPY( M, A( 1, p ), 1, WORK, + $ 1 ) + CALL SLASCL( 'G', 0, 0, AAPP, + $ D( p ), $ M, 1, WORK, LDA, IERR ) AAPQ = SDOT( M, WORK, 1, A( 1, q ), $ 1 )*D( q ) / AAQQ @@ -437,12 +440,15 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, ELSE ROTOK = AAPP.LE.( AAQQ / SMALL ) IF( AAPP.GT.( SMALL / AAQQ ) ) THEN - AAPQ = ( SDOT( M, A( 1, p ), 1, A( 1, + AAPQ = ( SDOT( M, A( 1, p ), 1, + $ A( 1, $ q ), 1 )*D( p )*D( q ) / AAQQ ) $ / AAPP ELSE - CALL SCOPY( M, A( 1, q ), 1, WORK, 1 ) - CALL SLASCL( 'G', 0, 0, AAQQ, D( q ), + CALL SCOPY( M, A( 1, q ), 1, WORK, + $ 1 ) + CALL SLASCL( 'G', 0, 0, AAQQ, + $ D( q ), $ M, 1, WORK, LDA, IERR ) AAPQ = SDOT( M, WORK, 1, A( 1, p ), $ 1 )*D( p ) / AAPP @@ -511,7 +517,8 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, FASTR( 4 ) = -T*AQOAP D( p ) = D( p )*CS D( q ) = D( q )*CS - CALL SROTM( M, A( 1, p ), 1, + CALL SROTM( M, A( 1, p ), + $ 1, $ A( 1, q ), 1, $ FASTR ) IF( RSVEC )CALL SROTM( MVL, @@ -527,7 +534,8 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, D( p ) = D( p )*CS D( q ) = D( q ) / CS IF( RSVEC ) THEN - CALL SAXPY( MVL, -T*AQOAP, + CALL SAXPY( MVL, + $ -T*AQOAP, $ V( 1, q ), 1, $ V( 1, p ), 1 ) CALL SAXPY( MVL, @@ -541,13 +549,15 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, CALL SAXPY( M, T*APOAQ, $ A( 1, p ), 1, $ A( 1, q ), 1 ) - CALL SAXPY( M, -CS*SN*AQOAP, + CALL SAXPY( M, + $ -CS*SN*AQOAP, $ A( 1, q ), 1, $ A( 1, p ), 1 ) D( p ) = D( p ) / CS D( q ) = D( q )*CS IF( RSVEC ) THEN - CALL SAXPY( MVL, T*APOAQ, + CALL SAXPY( MVL, + $ T*APOAQ, $ V( 1, p ), 1, $ V( 1, q ), 1 ) CALL SAXPY( MVL, @@ -560,7 +570,8 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, CALL SAXPY( M, -T*AQOAP, $ A( 1, q ), 1, $ A( 1, p ), 1 ) - CALL SAXPY( M, CS*SN*APOAQ, + CALL SAXPY( M, + $ CS*SN*APOAQ, $ A( 1, p ), 1, $ A( 1, q ), 1 ) D( p ) = D( p )*CS @@ -601,15 +612,19 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, * ELSE * .. have to use modified Gram-Schmidt like transformation - CALL SCOPY( M, A( 1, p ), 1, WORK, 1 ) - CALL SLASCL( 'G', 0, 0, AAPP, ONE, M, + CALL SCOPY( M, A( 1, p ), 1, WORK, + $ 1 ) + CALL SLASCL( 'G', 0, 0, AAPP, ONE, + $ M, $ 1, WORK, LDA, IERR ) - CALL SLASCL( 'G', 0, 0, AAQQ, ONE, M, + CALL SLASCL( 'G', 0, 0, AAQQ, ONE, + $ M, $ 1, A( 1, q ), LDA, IERR ) TEMP1 = -AAPQ*D( p ) / D( q ) CALL SAXPY( M, TEMP1, WORK, 1, $ A( 1, q ), 1 ) - CALL SLASCL( 'G', 0, 0, ONE, AAQQ, M, + CALL SLASCL( 'G', 0, 0, ONE, AAQQ, + $ M, $ 1, A( 1, q ), LDA, IERR ) SVA( q ) = AAQQ*SQRT( MAX( ZERO, $ ONE-AAPQ*AAPQ ) ) @@ -623,7 +638,8 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ THEN IF( ( AAQQ.LT.ROOTBIG ) .AND. $ ( AAQQ.GT.ROOTSFMIN ) ) THEN - SVA( q ) = SNRM2( M, A( 1, q ), 1 )* + SVA( q ) = SNRM2( M, A( 1, q ), + $ 1 )* $ D( q ) ELSE T = ZERO @@ -724,12 +740,15 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, ROTOK = ( SMALL*AAQQ ).LE.AAPP END IF IF( AAPP.LT.( BIG / AAQQ ) ) THEN - AAPQ = ( SDOT( M, A( 1, p ), 1, A( 1, + AAPQ = ( SDOT( M, A( 1, p ), 1, + $ A( 1, $ q ), 1 )*D( p )*D( q ) / AAQQ ) $ / AAPP ELSE - CALL SCOPY( M, A( 1, p ), 1, WORK, 1 ) - CALL SLASCL( 'G', 0, 0, AAPP, D( p ), + CALL SCOPY( M, A( 1, p ), 1, WORK, + $ 1 ) + CALL SLASCL( 'G', 0, 0, AAPP, + $ D( p ), $ M, 1, WORK, LDA, IERR ) AAPQ = SDOT( M, WORK, 1, A( 1, q ), $ 1 )*D( q ) / AAQQ @@ -741,12 +760,15 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, ROTOK = AAQQ.LE.( AAPP / SMALL ) END IF IF( AAPP.GT.( SMALL / AAQQ ) ) THEN - AAPQ = ( SDOT( M, A( 1, p ), 1, A( 1, + AAPQ = ( SDOT( M, A( 1, p ), 1, + $ A( 1, $ q ), 1 )*D( p )*D( q ) / AAQQ ) $ / AAPP ELSE - CALL SCOPY( M, A( 1, q ), 1, WORK, 1 ) - CALL SLASCL( 'G', 0, 0, AAQQ, D( q ), + CALL SCOPY( M, A( 1, q ), 1, WORK, + $ 1 ) + CALL SLASCL( 'G', 0, 0, AAQQ, + $ D( q ), $ M, 1, WORK, LDA, IERR ) AAPQ = SDOT( M, WORK, 1, A( 1, p ), $ 1 )*D( p ) / AAPP @@ -810,7 +832,8 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, FASTR( 4 ) = -T*AQOAP D( p ) = D( p )*CS D( q ) = D( q )*CS - CALL SROTM( M, A( 1, p ), 1, + CALL SROTM( M, A( 1, p ), + $ 1, $ A( 1, q ), 1, $ FASTR ) IF( RSVEC )CALL SROTM( MVL, @@ -824,7 +847,8 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ A( 1, p ), 1, $ A( 1, q ), 1 ) IF( RSVEC ) THEN - CALL SAXPY( MVL, -T*AQOAP, + CALL SAXPY( MVL, + $ -T*AQOAP, $ V( 1, q ), 1, $ V( 1, p ), 1 ) CALL SAXPY( MVL, @@ -840,11 +864,13 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, CALL SAXPY( M, T*APOAQ, $ A( 1, p ), 1, $ A( 1, q ), 1 ) - CALL SAXPY( M, -CS*SN*AQOAP, + CALL SAXPY( M, + $ -CS*SN*AQOAP, $ A( 1, q ), 1, $ A( 1, p ), 1 ) IF( RSVEC ) THEN - CALL SAXPY( MVL, T*APOAQ, + CALL SAXPY( MVL, + $ T*APOAQ, $ V( 1, p ), 1, $ V( 1, q ), 1 ) CALL SAXPY( MVL, @@ -859,7 +885,8 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, CALL SAXPY( M, -T*AQOAP, $ A( 1, q ), 1, $ A( 1, p ), 1 ) - CALL SAXPY( M, CS*SN*APOAQ, + CALL SAXPY( M, + $ CS*SN*APOAQ, $ A( 1, p ), 1, $ A( 1, q ), 1 ) D( p ) = D( p )*CS @@ -900,34 +927,42 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, * ELSE IF( AAPP.GT.AAQQ ) THEN - CALL SCOPY( M, A( 1, p ), 1, WORK, + CALL SCOPY( M, A( 1, p ), 1, + $ WORK, $ 1 ) - CALL SLASCL( 'G', 0, 0, AAPP, ONE, + CALL SLASCL( 'G', 0, 0, AAPP, + $ ONE, $ M, 1, WORK, LDA, IERR ) - CALL SLASCL( 'G', 0, 0, AAQQ, ONE, + CALL SLASCL( 'G', 0, 0, AAQQ, + $ ONE, $ M, 1, A( 1, q ), LDA, $ IERR ) TEMP1 = -AAPQ*D( p ) / D( q ) CALL SAXPY( M, TEMP1, WORK, 1, $ A( 1, q ), 1 ) - CALL SLASCL( 'G', 0, 0, ONE, AAQQ, + CALL SLASCL( 'G', 0, 0, ONE, + $ AAQQ, $ M, 1, A( 1, q ), LDA, $ IERR ) SVA( q ) = AAQQ*SQRT( MAX( ZERO, $ ONE-AAPQ*AAPQ ) ) MXSINJ = MAX( MXSINJ, SFMIN ) ELSE - CALL SCOPY( M, A( 1, q ), 1, WORK, + CALL SCOPY( M, A( 1, q ), 1, + $ WORK, $ 1 ) - CALL SLASCL( 'G', 0, 0, AAQQ, ONE, + CALL SLASCL( 'G', 0, 0, AAQQ, + $ ONE, $ M, 1, WORK, LDA, IERR ) - CALL SLASCL( 'G', 0, 0, AAPP, ONE, + CALL SLASCL( 'G', 0, 0, AAPP, + $ ONE, $ M, 1, A( 1, p ), LDA, $ IERR ) TEMP1 = -AAPQ*D( q ) / D( p ) CALL SAXPY( M, TEMP1, WORK, 1, $ A( 1, p ), 1 ) - CALL SLASCL( 'G', 0, 0, ONE, AAPP, + CALL SLASCL( 'G', 0, 0, ONE, + $ AAPP, $ M, 1, A( 1, p ), LDA, $ IERR ) SVA( p ) = AAPP*SQRT( MAX( ZERO, @@ -943,7 +978,8 @@ SUBROUTINE SGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ THEN IF( ( AAQQ.LT.ROOTBIG ) .AND. $ ( AAQQ.GT.ROOTSFMIN ) ) THEN - SVA( q ) = SNRM2( M, A( 1, q ), 1 )* + SVA( q ) = SNRM2( M, A( 1, q ), + $ 1 )* $ D( q ) ELSE T = ZERO diff --git a/lapack-netlib/SRC/zgesvj.c b/lapack-netlib/SRC/zgesvj.c index dba1be2a36..9e068bfda5 100644 --- a/lapack-netlib/SRC/zgesvj.c +++ b/lapack-netlib/SRC/zgesvj.c @@ -1087,7 +1087,7 @@ f"> */ /* Row-cyclic Jacobi SVD algorithm with column pivoting */ - emptsw = *n * (*n - 1) / 2; + emptsw = (*n / 2) * (*n - 1 + *n % 2); notrot = 0; i__1 = *n; for (q = 1; q <= i__1; ++q) { diff --git a/lapack-netlib/SRC/zgesvj.f b/lapack-netlib/SRC/zgesvj.f index 6c69f8cf06..c13754ced7 100644 --- a/lapack-netlib/SRC/zgesvj.f +++ b/lapack-netlib/SRC/zgesvj.f @@ -715,7 +715,7 @@ SUBROUTINE ZGESVJ( JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V, * * Row-cyclic Jacobi SVD algorithm with column pivoting * - EMPTSW = ( N*( N-1 ) ) / 2 + EMPTSW = ( N / 2 )*( N-1 + MOD( N, 2 ) ) NOTROT = 0 DO 1868 q = 1, N diff --git a/lapack-netlib/SRC/zgsvj0.c b/lapack-netlib/SRC/zgsvj0.c index e79fc8b5ba..7d68bae62b 100644 --- a/lapack-netlib/SRC/zgsvj0.c +++ b/lapack-netlib/SRC/zgsvj0.c @@ -649,7 +649,7 @@ f"> */ roottol = sqrt(*tol); - emptsw = *n * (*n - 1) / 2; + emptsw = (*n / 2) * (*n - 1 + *n % 2); notrot = 0; diff --git a/lapack-netlib/SRC/zgsvj0.f b/lapack-netlib/SRC/zgsvj0.f index 075c243c29..401d2ac243 100644 --- a/lapack-netlib/SRC/zgsvj0.f +++ b/lapack-netlib/SRC/zgsvj0.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download ZGSVJ0 + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -193,7 +191,7 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup complex16OTHERcomputational +*> \ingroup gsvj0 *> *> \par Further Details: * ===================== @@ -321,7 +319,7 @@ SUBROUTINE ZGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, * * .. Row-cyclic Jacobi SVD algorithm with column pivoting .. * - EMPTSW = ( N*( N-1 ) ) / 2 + EMPTSW = ( N / 2 )*( N-1 + MOD( N, 2 ) ) NOTROT = 0 * * .. Row-cyclic pivot strategy with de Rijk's pivoting .. @@ -499,7 +497,8 @@ SUBROUTINE ZGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, T = HALF / THETA CS = ONE - CALL ZROT( M, A(1,p), 1, A(1,q), 1, + CALL ZROT( M, A(1,p), 1, A(1,q), + $ 1, $ CS, CONJG(OMPQ)*T ) IF ( RSVEC ) THEN CALL ZROT( MVL, V(1,p), 1, @@ -528,7 +527,8 @@ SUBROUTINE ZGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, AAPP = AAPP*SQRT( MAX( ZERO, $ ONE-T*AQOAP*AAPQ1 ) ) * - CALL ZROT( M, A(1,p), 1, A(1,q), 1, + CALL ZROT( M, A(1,p), 1, A(1,q), + $ 1, $ CS, CONJG(OMPQ)*SN ) IF ( RSVEC ) THEN CALL ZROT( MVL, V(1,p), 1, @@ -541,14 +541,17 @@ SUBROUTINE ZGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, * .. have to use modified Gram-Schmidt like transformation CALL ZCOPY( M, A( 1, p ), 1, $ WORK, 1 ) - CALL ZLASCL( 'G', 0, 0, AAPP, ONE, M, + CALL ZLASCL( 'G', 0, 0, AAPP, ONE, + $ M, $ 1, WORK, LDA, $ IERR ) - CALL ZLASCL( 'G', 0, 0, AAQQ, ONE, M, + CALL ZLASCL( 'G', 0, 0, AAQQ, ONE, + $ M, $ 1, A( 1, q ), LDA, IERR ) CALL ZAXPY( M, -AAPQ, WORK, 1, $ A( 1, q ), 1 ) - CALL ZLASCL( 'G', 0, 0, ONE, AAQQ, M, + CALL ZLASCL( 'G', 0, 0, ONE, AAQQ, + $ M, $ 1, A( 1, q ), LDA, IERR ) SVA( q ) = AAQQ*SQRT( MAX( ZERO, $ ONE-AAPQ1*AAPQ1 ) ) @@ -563,7 +566,8 @@ SUBROUTINE ZGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ THEN IF( ( AAQQ.LT.ROOTBIG ) .AND. $ ( AAQQ.GT.ROOTSFMIN ) ) THEN - SVA( q ) = DZNRM2( M, A( 1, q ), 1 ) + SVA( q ) = DZNRM2( M, A( 1, q ), + $ 1 ) ELSE T = ZERO AAQQ = ONE @@ -715,7 +719,8 @@ SUBROUTINE ZGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, IF( ABS( THETA ).GT.BIGTHETA ) THEN T = HALF / THETA CS = ONE - CALL ZROT( M, A(1,p), 1, A(1,q), 1, + CALL ZROT( M, A(1,p), 1, A(1,q), + $ 1, $ CS, CONJG(OMPQ)*T ) IF( RSVEC ) THEN CALL ZROT( MVL, V(1,p), 1, @@ -742,7 +747,8 @@ SUBROUTINE ZGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, AAPP = AAPP*SQRT( MAX( ZERO, $ ONE-T*AQOAP*AAPQ1 ) ) * - CALL ZROT( M, A(1,p), 1, A(1,q), 1, + CALL ZROT( M, A(1,p), 1, A(1,q), + $ 1, $ CS, CONJG(OMPQ)*SN ) IF( RSVEC ) THEN CALL ZROT( MVL, V(1,p), 1, @@ -756,15 +762,18 @@ SUBROUTINE ZGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, IF( AAPP.GT.AAQQ ) THEN CALL ZCOPY( M, A( 1, p ), 1, $ WORK, 1 ) - CALL ZLASCL( 'G', 0, 0, AAPP, ONE, + CALL ZLASCL( 'G', 0, 0, AAPP, + $ ONE, $ M, 1, WORK,LDA, $ IERR ) - CALL ZLASCL( 'G', 0, 0, AAQQ, ONE, + CALL ZLASCL( 'G', 0, 0, AAQQ, + $ ONE, $ M, 1, A( 1, q ), LDA, $ IERR ) CALL ZAXPY( M, -AAPQ, WORK, $ 1, A( 1, q ), 1 ) - CALL ZLASCL( 'G', 0, 0, ONE, AAQQ, + CALL ZLASCL( 'G', 0, 0, ONE, + $ AAQQ, $ M, 1, A( 1, q ), LDA, $ IERR ) SVA( q ) = AAQQ*SQRT( MAX( ZERO, @@ -773,15 +782,18 @@ SUBROUTINE ZGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, ELSE CALL ZCOPY( M, A( 1, q ), 1, $ WORK, 1 ) - CALL ZLASCL( 'G', 0, 0, AAQQ, ONE, + CALL ZLASCL( 'G', 0, 0, AAQQ, + $ ONE, $ M, 1, WORK,LDA, $ IERR ) - CALL ZLASCL( 'G', 0, 0, AAPP, ONE, + CALL ZLASCL( 'G', 0, 0, AAPP, + $ ONE, $ M, 1, A( 1, p ), LDA, $ IERR ) CALL ZAXPY( M, -CONJG(AAPQ), $ WORK, 1, A( 1, p ), 1 ) - CALL ZLASCL( 'G', 0, 0, ONE, AAPP, + CALL ZLASCL( 'G', 0, 0, ONE, + $ AAPP, $ M, 1, A( 1, p ), LDA, $ IERR ) SVA( p ) = AAPP*SQRT( MAX( ZERO, @@ -797,7 +809,8 @@ SUBROUTINE ZGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, $ THEN IF( ( AAQQ.LT.ROOTBIG ) .AND. $ ( AAQQ.GT.ROOTSFMIN ) ) THEN - SVA( q ) = DZNRM2( M, A( 1, q ), 1) + SVA( q ) = DZNRM2( M, A( 1, q ), + $ 1) ELSE T = ZERO AAQQ = ONE From 5bad6b70c2cbd88cb71cc8639bc2850b05063e0a Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 30 Oct 2026 19:05:09 +0100 Subject: [PATCH 02/11] Add LAPACK-tests from Reference-LAPACK PR 1454 --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ae1da5e9fe..a739f7fbab 100644 --- a/Makefile +++ b/Makefile @@ -406,8 +406,10 @@ endif lapack-test : (cd $(NETLIB_LAPACK_DIR)/TESTING && rm -f x* *.out) - $(MAKE) -j 1 -C $(NETLIB_LAPACK_DIR)/TESTING/EIG xeigtstc xeigtstd xeigtsts xeigtstz + $(MAKE) -j 1 -C $(NETLIB_LAPACK_DIR)/TESTING/EIG xeigtstc xeigtstd xeigtsts xeigtstz test_cgges3_scaling test_sgges3_scaling test_dgges3_scaling test_zgges3_scaling test_cgesvj_emptsw test_dgesvj_emptsw test_sgesvj_emptsw test_zgesvj_emptsw + $(MAKE) -j 1 -C $(NETLIB_LAPACK_DIR)/TESTING/LIN xlintstc xlintstd xlintstds xlintstrfd xlintstrfz xlintsts xlintstz xlintstzc xlintstrfs xlintstrfc + ifneq ($(CROSS), 1) ( cd $(NETLIB_LAPACK_DIR)/INSTALL; $(MAKE) all; ./testlsame; ./testslamch; ./testdlamch; \ ./testsecond; ./testdsecnd; ./testieee; ./testversion ) From eb3d2fa9493e492240f1f479ece8f82a23c20a0c Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 30 Oct 2026 19:06:15 +0100 Subject: [PATCH 03/11] Add tests for gesvj0 overflow protection (Reference-LAPACK PR 1454) --- lapack-netlib/TESTING/CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lapack-netlib/TESTING/CMakeLists.txt b/lapack-netlib/TESTING/CMakeLists.txt index d4e6f970d7..3ea59f6fc3 100644 --- a/lapack-netlib/TESTING/CMakeLists.txt +++ b/lapack-netlib/TESTING/CMakeLists.txt @@ -57,6 +57,8 @@ add_lapack_test(slse.out lse.in xeigtsts) # # ======== SINGLE DMD EIG TESTS =========================== add_lapack_test(sdmd.out sdmd.in xdmdeigtsts) +add_test(NAME LAPACK-test_sgges3_scaling COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_sgges3_scaling) +add_test(NAME LAPACK-test_sgesvj_emptsw COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_sgesvj_emptsw) endif() if(BUILD_DOUBLE) @@ -91,6 +93,8 @@ add_lapack_test(dlse.out lse.in xeigtstd) # # ======== DOUBLE DMD EIG TESTS =========================== add_lapack_test(ddmd.out ddmd.in xdmdeigtstd) +add_test(NAME LAPACK-test_dgges3_scaling COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_dgges3_scaling) +add_test(NAME LAPACK-test_dgesvj_emptsw COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_dgesvj_emptsw) endif() if(BUILD_COMPLEX) @@ -123,6 +127,8 @@ add_lapack_test(clse.out lse.in xeigtstc) # # ======== COMPLEX DMD EIG TESTS =========================== add_lapack_test(cdmd.out cdmd.in xdmdeigtstc) +add_test(NAME LAPACK-test_cgges3_scaling COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_cgges3_scaling) +add_test(NAME LAPACK-test_cgesvj_emptsw COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_cgesvj_emptsw) endif() if(BUILD_COMPLEX16) @@ -157,6 +163,8 @@ add_lapack_test(zlse.out lse.in xeigtstz) # # ======== COMPLEX16 DMD EIG TESTS =========================== add_lapack_test(zdmd.out zdmd.in xdmdeigtstz) +add_test(NAME LAPACK-test_zgges3_scaling COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_zgges3_scaling) +add_test(NAME LAPACK-test_zgesvj_emptsw COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_zgesvj_emptsw) endif() From a31aa346947846e09cb9b15400b23dc5ae2006f8 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 30 Oct 2026 19:09:45 +0100 Subject: [PATCH 04/11] Add tests for ?GESVJ integer overflow protection (Reference-LAPACK PR 1454) --- lapack-netlib/TESTING/CMakeLists.txt | 715 +++-------------- lapack-netlib/TESTING/Makefile | 794 +++++-------------- lapack-netlib/TESTING/test_cgesvj_emptsw.f90 | 117 +++ lapack-netlib/TESTING/test_dgesvj_emptsw.f90 | 113 +++ lapack-netlib/TESTING/test_sgesvj_emptsw.f90 | 113 +++ lapack-netlib/TESTING/test_zgesvj_emptsw.f90 | 117 +++ 6 files changed, 777 insertions(+), 1192 deletions(-) create mode 100644 lapack-netlib/TESTING/test_cgesvj_emptsw.f90 create mode 100644 lapack-netlib/TESTING/test_dgesvj_emptsw.f90 create mode 100644 lapack-netlib/TESTING/test_sgesvj_emptsw.f90 create mode 100644 lapack-netlib/TESTING/test_zgesvj_emptsw.f90 diff --git a/lapack-netlib/TESTING/CMakeLists.txt b/lapack-netlib/TESTING/CMakeLists.txt index 3ea59f6fc3..784323fa76 100644 --- a/lapack-netlib/TESTING/CMakeLists.txt +++ b/lapack-netlib/TESTING/CMakeLists.txt @@ -1,599 +1,140 @@ -enable_language(Fortran) - -enable_testing() - -if(MSVC_VERSION) -# string(REPLACE "/STACK:10000000" "/STACK:900000000000000000" -# CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") - string(REGEX REPLACE "(.*)/STACK:(.*) (.*)" "\\1/STACK:900000000000000000 \\3" - CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") -endif() -add_subdirectory(LIN) -add_subdirectory(EIG) -macro(add_lapack_test output input target) - set(TEST_INPUT "${LAPACK_SOURCE_DIR}/TESTING/${input}") - set(TEST_OUTPUT "${LAPACK_BINARY_DIR}/TESTING/${output}") - string(REPLACE "." "_" input_name ${input}) - set(testName "${target}_${input_name}") - if(EXISTS "${TEST_INPUT}") - add_test(NAME LAPACK-${testName} COMMAND "${CMAKE_COMMAND}" - -DTEST=$ - -DINPUT=${TEST_INPUT} - -DOUTPUT=${TEST_OUTPUT} - -DINTDIR=${CMAKE_CFG_INTDIR} - -P "${LAPACK_SOURCE_DIR}/TESTING/runtest.cmake") - endif() +######################################################################## +# This is the makefile for the eigenvalue test program from LAPACK. +# The test files are organized as follows: +# +# AEIGTST -- Auxiliary test routines used in all precisions +# SCIGTST -- Auxiliary test routines used in single precision +# DZIGTST -- Auxiliary test routines used in double precision +# SEIGTST -- Single precision real test routines +# CEIGTST -- Single precision complex test routines +# DEIGTST -- Double precision real test routines +# ZEIGTST -- Double precision complex test routines +# +######################################################################## + +set(AEIGTST + alahdg.f alasum.f alasvm.f alareq.f + ilaenv.f xerbla.f xlaenv.f chkxer.f) + +set(SCIGTST + slafts.f slahd2.f slasum.f slatb9.f sstech.f sstect.f + ssvdch.f ssvdct.f ssxt1.f) + +set(SEIGTST + schkee.F + sbdt01.f sbdt02.f sbdt03.f sbdt04.f sbdt05.f + schkbb.f schkbd.f schkbk.f schkbl.f schkec.f + schkgg.f schkgk.f schkgl.f schkhs.f schksb.f schkst.f schkst2stg.f schksb2stg.f + sckcsd.f sckglm.f sckgqr.f sckgsv.f scklse.f scsdts.f + sdrges.f sdrgev.f sdrges3.f sdrgev3.f sdrgsx.f sdrgvx.f + sdrvbd.f sdrvmr3.f sdrves.f sdrvev.f sdrvsg.f sdrvsg2stg.f + sdrvst.f sdrvst2stg.f sdrvsx.f sdrvvx.f + serrbd.f serrec.f serred.f serrgg.f serrhs.f serrst.f + sget02.f sget10.f sget22.f sget23.f sget24.f sget31.f + sget32.f sget33.f sget34.f sget35.f sget36.f + sget37.f sget38.f sget39.f sget40.f sget51.f sget52.f sget53.f + sget54.f sglmts.f sgqrts.f sgrqts.f sgsvts3.f + shst01.f slarfy.f slarhs.f slatm4.f slctes.f slctsx.f slsets.f sort01.f + sort03.f ssbt21.f ssgt01.f sslect.f sspt21.f sstt21.f + sstt22.f ssyl01.f ssyt21.f ssyt22.f) + +set(SDMDEIGTST schkdmd.f90) + +set(CEIGTST + cchkee.F + cbdt01.f cbdt02.f cbdt03.f cbdt05.f + cchkbb.f cchkbd.f cchkbk.f cchkbl.f cchkec.f + cchkgg.f cchkgk.f cchkgl.f cchkhb.f cchkhs.f cchkst.f cchkst2stg.f cchkhb2stg.f + cckcsd.f cckglm.f cckgqr.f cckgsv.f ccklse.f ccsdts.f + cdrges.f cdrgev.f cdrges3.f cdrgev3.f cdrgsx.f cdrgvx.f + cdrvbd.f cdrvmr3.f cdrves.f cdrvev.f cdrvsg.f cdrvsg2stg.f + cdrvst.f cdrvst2stg.f cdrvsx.f cdrvvx.f + cerrbd.f cerrec.f cerred.f cerrgg.f cerrhs.f cerrst.f + cget02.f cget10.f cget22.f cget23.f cget24.f + cget35.f cget36.f cget37.f cget38.f cget51.f cget52.f + cget54.f cglmts.f cgqrts.f cgrqts.f cgsvts3.f + chbt21.f chet21.f chet22.f chpt21.f chst01.f + clarfy.f clarhs.f clatm4.f clctes.f clctsx.f clsets.f csbmv.f + csgt01.f cslect.f csyl01.f + cstt21.f cstt22.f cunt01.f cunt03.f) + +set(CDMDEIGTST cchkdmd.f90) + +set(DZIGTST + dlafts.f dlahd2.f dlasum.f dlatb9.f dstech.f dstect.f + dsvdch.f dsvdct.f dsxt1.f) + +set(DEIGTST + dchkee.F + dbdt01.f dbdt02.f dbdt03.f dbdt04.f dbdt05.f + dchkbb.f dchkbd.f dchkbk.f dchkbl.f dchkec.f + dchkgg.f dchkgk.f dchkgl.f dchkhs.f dchksb.f dchkst.f dchkst2stg.f dchksb2stg.f + dckcsd.f dckglm.f dckgqr.f dckgsv.f dcklse.f dcsdts.f + ddrges.f ddrgev.f ddrges3.f ddrgev3.f ddrgsx.f ddrgvx.f + ddrvbd.f ddrvmr3.f ddrves.f ddrvev.f ddrvsg.f ddrvsg2stg.f + ddrvst.f ddrvst2stg.f ddrvsx.f ddrvvx.f + derrbd.f derrec.f derred.f derrgg.f derrhs.f derrst.f + dget02.f dget10.f dget22.f dget23.f dget24.f dget31.f + dget32.f dget33.f dget34.f dget35.f dget36.f + dget37.f dget38.f dget39.f dget40.f dget51.f dget52.f dget53.f + dget54.f dglmts.f dgqrts.f dgrqts.f dgsvts3.f + dhst01.f dlarfy.f dlarhs.f dlatm4.f dlctes.f dlctsx.f dlsets.f dort01.f + dort03.f dsbt21.f dsgt01.f dslect.f dspt21.f dstt21.f + dstt22.f dsyl01.f dsyt21.f dsyt22.f) + +set(DDMDEIGTST dchkdmd.f90) + +set(ZEIGTST + zchkee.F + zbdt01.f zbdt02.f zbdt03.f zbdt05.f + zchkbb.f zchkbd.f zchkbk.f zchkbl.f zchkec.f + zchkgg.f zchkgk.f zchkgl.f zchkhb.f zchkhs.f zchkst.f zchkst2stg.f zchkhb2stg.f + zckcsd.f zckglm.f zckgqr.f zckgsv.f zcklse.f zcsdts.f + zdrges.f zdrgev.f zdrges3.f zdrgev3.f zdrgsx.f zdrgvx.f + zdrvbd.f zdrvmr3.f zdrves.f zdrvev.f zdrvsg.f zdrvsg2stg.f + zdrvst.f zdrvst2stg.f zdrvsx.f zdrvvx.f + zerrbd.f zerrec.f zerred.f zerrgg.f zerrhs.f zerrst.f + zget02.f zget10.f zget22.f zget23.f zget24.f + zget35.f zget36.f zget37.f zget38.f zget51.f zget52.f + zget54.f zglmts.f zgqrts.f zgrqts.f zgsvts3.f + zhbt21.f zhet21.f zhet22.f zhpt21.f zhst01.f + zlarfy.f zlarhs.f zlatm4.f zlctes.f zlctsx.f zlsets.f zsbmv.f + zsgt01.f zslect.f zsyl01.f + zstt21.f zstt22.f zunt01.f zunt03.f) + +set(ZDMDEIGTST zchkdmd.f90) + +macro(add_eig_executable name) + add_executable(${name} ${ARGN}) + target_link_libraries(${name} ${LIBNAMEPREFIX}openblas${LIBNAMESUFFIX}${SUFFIX64_UNDERSCORE}) endmacro() if(BUILD_SINGLE) -add_lapack_test(stest.out stest.in xlintsts) -# -# ======== SINGLE RFP LIN TESTS ======================== -add_lapack_test(stest_rfp.out stest_rfp.in xlintstrfs) -# -# -# ======== SINGLE EIG TESTS =========================== -# -add_lapack_test(snep.out nep.in xeigtsts) -add_lapack_test(ssep.out sep.in xeigtsts) -add_lapack_test(sse2.out se2.in xeigtsts) -add_lapack_test(ssvd.out svd.in xeigtsts) -add_lapack_test(sec.out sec.in xeigtsts) -add_lapack_test(sed.out sed.in xeigtsts) -add_lapack_test(sgg.out sgg.in xeigtsts) -add_lapack_test(sgd.out sgd.in xeigtsts) -add_lapack_test(ssb.out ssb.in xeigtsts) -add_lapack_test(ssg.out ssg.in xeigtsts) -add_lapack_test(sbal.out sbal.in xeigtsts) -add_lapack_test(sbak.out sbak.in xeigtsts) -add_lapack_test(sgbal.out sgbal.in xeigtsts) -add_lapack_test(sgbak.out sgbak.in xeigtsts) -add_lapack_test(sbb.out sbb.in xeigtsts) -add_lapack_test(sglm.out glm.in xeigtsts) -add_lapack_test(sgqr.out gqr.in xeigtsts) -add_lapack_test(sgsv.out gsv.in xeigtsts) -add_lapack_test(scsd.out csd.in xeigtsts) -add_lapack_test(slse.out lse.in xeigtsts) -# -# ======== SINGLE DMD EIG TESTS =========================== -add_lapack_test(sdmd.out sdmd.in xdmdeigtsts) -add_test(NAME LAPACK-test_sgges3_scaling COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_sgges3_scaling) -add_test(NAME LAPACK-test_sgesvj_emptsw COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_sgesvj_emptsw) -endif() - -if(BUILD_DOUBLE) -# -# ======== DOUBLE LIN TESTS =========================== -add_lapack_test(dtest.out dtest.in xlintstd) -# -# ======== DOUBLE RFP LIN TESTS ======================== -add_lapack_test(dtest_rfp.out dtest_rfp.in xlintstrfd) -# -# ======== DOUBLE EIG TESTS =========================== -add_lapack_test(dnep.out nep.in xeigtstd) -add_lapack_test(dsep.out sep.in xeigtstd) -add_lapack_test(dse2.out se2.in xeigtstd) -add_lapack_test(dsvd.out svd.in xeigtstd) -add_lapack_test(dec.out dec.in xeigtstd) -add_lapack_test(ded.out ded.in xeigtstd) -add_lapack_test(dgg.out dgg.in xeigtstd) -add_lapack_test(dgd.out dgd.in xeigtstd) -add_lapack_test(dsb.out dsb.in xeigtstd) -add_lapack_test(dsg.out dsg.in xeigtstd) -add_lapack_test(dbal.out dbal.in xeigtstd) -add_lapack_test(dbak.out dbak.in xeigtstd) -add_lapack_test(dgbal.out dgbal.in xeigtstd) -add_lapack_test(dgbak.out dgbak.in xeigtstd) -add_lapack_test(dbb.out dbb.in xeigtstd) -add_lapack_test(dglm.out glm.in xeigtstd) -add_lapack_test(dgqr.out gqr.in xeigtstd) -add_lapack_test(dgsv.out gsv.in xeigtstd) -add_lapack_test(dcsd.out csd.in xeigtstd) -add_lapack_test(dlse.out lse.in xeigtstd) -# -# ======== DOUBLE DMD EIG TESTS =========================== -add_lapack_test(ddmd.out ddmd.in xdmdeigtstd) -add_test(NAME LAPACK-test_dgges3_scaling COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_dgges3_scaling) -add_test(NAME LAPACK-test_dgesvj_emptsw COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_dgesvj_emptsw) +add_eig_executable(xeigtsts ${SEIGTST} ${SCIGTST} ${AEIGTST}) +add_eig_executable(xdmdeigtsts ${SDMDEIGTST} ${AEIGTST}) +add_eig_executable(test_sgges3_scaling test_sgges3_scaling.f90) +add_eig_executable(test_sgesvj_emptsw test_sgesvj_emptsw.f90) endif() if(BUILD_COMPLEX) -add_lapack_test(ctest.out ctest.in xlintstc) -# -# ======== COMPLEX RFP LIN TESTS ======================== -add_lapack_test(ctest_rfp.out ctest_rfp.in xlintstrfc) -# -# ======== COMPLEX EIG TESTS =========================== -add_lapack_test(cnep.out nep.in xeigtstc) -add_lapack_test(csep.out sep.in xeigtstc) -add_lapack_test(cse2.out se2.in xeigtstc) -add_lapack_test(csvd.out svd.in xeigtstc) -add_lapack_test(cec.out cec.in xeigtstc) -add_lapack_test(ced.out ced.in xeigtstc) -add_lapack_test(cgg.out cgg.in xeigtstc) -add_lapack_test(cgd.out cgd.in xeigtstc) -add_lapack_test(csb.out csb.in xeigtstc) -add_lapack_test(csg.out csg.in xeigtstc) -add_lapack_test(cbal.out cbal.in xeigtstc) -add_lapack_test(cbak.out cbak.in xeigtstc) -add_lapack_test(cgbal.out cgbal.in xeigtstc) -add_lapack_test(cgbak.out cgbak.in xeigtstc) -add_lapack_test(cbb.out cbb.in xeigtstc) -add_lapack_test(cglm.out glm.in xeigtstc) -add_lapack_test(cgqr.out gqr.in xeigtstc) -add_lapack_test(cgsv.out gsv.in xeigtstc) -add_lapack_test(ccsd.out csd.in xeigtstc) -add_lapack_test(clse.out lse.in xeigtstc) -# -# ======== COMPLEX DMD EIG TESTS =========================== -add_lapack_test(cdmd.out cdmd.in xdmdeigtstc) -add_test(NAME LAPACK-test_cgges3_scaling COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_cgges3_scaling) -add_test(NAME LAPACK-test_cgesvj_emptsw COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_cgesvj_emptsw) -endif() - -if(BUILD_COMPLEX16) -# -# ======== COMPLEX16 LIN TESTS ======================== -add_lapack_test(ztest.out ztest.in xlintstz) -# -# ======== COMPLEX16 RFP LIN TESTS ======================== -add_lapack_test(ztest_rfp.out ztest_rfp.in xlintstrfz) -# -# ======== COMPLEX16 EIG TESTS =========================== -add_lapack_test(znep.out nep.in xeigtstz) -add_lapack_test(zsep.out sep.in xeigtstz) -add_lapack_test(zse2.out se2.in xeigtstz) -add_lapack_test(zsvd.out svd.in xeigtstz) -add_lapack_test(zec.out zec.in xeigtstz) -add_lapack_test(zed.out zed.in xeigtstz) -add_lapack_test(zgg.out zgg.in xeigtstz) -add_lapack_test(zgd.out zgd.in xeigtstz) -add_lapack_test(zsb.out zsb.in xeigtstz) -add_lapack_test(zsg.out zsg.in xeigtstz) -add_lapack_test(zbal.out zbal.in xeigtstz) -add_lapack_test(zbak.out zbak.in xeigtstz) -add_lapack_test(zgbal.out zgbal.in xeigtstz) -add_lapack_test(zgbak.out zgbak.in xeigtstz) -add_lapack_test(zbb.out zbb.in xeigtstz) -add_lapack_test(zglm.out glm.in xeigtstz) -add_lapack_test(zgqr.out gqr.in xeigtstz) -add_lapack_test(zgsv.out gsv.in xeigtstz) -add_lapack_test(zcsd.out csd.in xeigtstz) -add_lapack_test(zlse.out lse.in xeigtstz) -# -# ======== COMPLEX16 DMD EIG TESTS =========================== -add_lapack_test(zdmd.out zdmd.in xdmdeigtstz) -add_test(NAME LAPACK-test_zgges3_scaling COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_zgges3_scaling) -add_test(NAME LAPACK-test_zgesvj_emptsw COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/test_zgesvj_emptsw) +add_eig_executable(xeigtstc ${CEIGTST} ${SCIGTST} ${AEIGTST}) +add_eig_executable(xdmdeigtstc ${CDMDEIGTST} ${AEIGTST}) +add_eig_executable(test_cgges3_scaling test_cgges3_scaling.f90) +add_eig_executable(test_cgesvj_emptsw test_sgesvj_emptsw.f90) endif() -if(BUILD_SINGLE AND BUILD_DOUBLE) -# -# ======== SINGLE-DOUBLE PROTO LIN TESTS ============== - add_lapack_test(dstest.out dstest.in xlintstds) -endif() - - -if(BUILD_COMPLEX AND BUILD_COMPLEX16) -# -# ======== COMPLEX-COMPLEX16 LIN TESTS ======================== - add_lapack_test(zctest.out zctest.in xlintstzc) -endif() - -# ============================================================================== -# Only run this test if python 2.7 or greater is found -if(PYTHONINTERP_FOUND) - message(STATUS "Running Summary") - file(COPY ${LAPACK_SOURCE_DIR}/lapack_testing.py DESTINATION ${LAPACK_BINARY_DIR}) - add_test( - NAME LAPACK_Test_Summary - WORKING_DIRECTORY ${LAPACK_BINARY_DIR} - COMMAND ${PYTHON_EXECUTABLE} "lapack_testing.py" - ) +if(BUILD_DOUBLE) +add_eig_executable(xeigtstd ${DEIGTST} ${DZIGTST} ${AEIGTST}) +add_eig_executable(xdmdeigtstd ${DDMDEIGTST} ${AEIGTST}) +add_eig_executable(test_dgges3_scaling test_dgges3_scaling.f90) +add_eig_executable(test_dgesvj_emptsw test_sgesvj_emptsw.f90) endif() - -if(WIN32) -FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_helper.ps1 -"if (Test-Path $args[2]) { Remove-Item -Force $args[2] } \n" -"$ErrorActionPreference = \"Stop\"\n" -"Get-Content $args[1] | & \"$($args[0]).exe\" | Out-File $args[2]\n" -"If ((Get-Content $args[2] | %{$_ -match \"FATAL\"}) -contains $true) {\n" -"echo Error\n" -"exit 1\n" -"} else {\n" -"exit 0\n" -"}\n" -) -set(helper_prefix powershell -ExecutionPolicy Bypass "${CMAKE_CURRENT_BINARY_DIR}/test_helper.ps1") -else() -# $1 exec, $2 input, $3 output_result -FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_helper.sh -"rm -f $3\n" -"$1 < $2\n" -"grep -q FATAL $3\n" -"if [ $? -eq 0 ]; then\n" -"echo Error\n" -"exit 1\n" -"else\n" -"exit 0\n" -"fi\n" -) -set(helper_prefix sh "${CMAKE_CURRENT_BINARY_DIR}/test_helper.sh") +if(BUILD_COMPLEX16) +add_eig_executable(xeigtstz ${ZEIGTST} ${DZIGTST} ${AEIGTST}) +add_eig_executable(xdmdeigtstz ${ZDMDEIGTST} ${AEIGTST}) +#add_eig_executable(test_wq_zrwork test_wq_rwork.f) +add_eig_executable(test_zgges3_scaling test_zgges3_scaling.f90) +add_eig_executable(test_zgesvj_emptsw test_sgesvj_emptsw.f90) endif() - -add_test(NAME "REAL_LAPACK_linear_equation_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/stest.in" "${CMAKE_CURRENT_BINARY_DIR}/stest.out" -) -add_test(NAME "COMPLEX_LAPACK_linear_equation_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ctest.in" "${CMAKE_CURRENT_BINARY_DIR}/ctest.out" -) -add_test(NAME "DOUBLE_PRECISION_LAPACK_linear_equation_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN//xlintstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dtest.in" "${CMAKE_CURRENT_BINARY_DIR}/dtest.out" -) -add_test(NAME "COMPLEX16_LAPACK_linear_equation_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN//xlintstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ztest.in" "${CMAKE_CURRENT_BINARY_DIR}/ztest.out" -) - -add_test(NAME "SINGLE-DOUBLE_PRECISION_LAPACK_prototype_linear_equation_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstds" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dstest.in" " ${CMAKE_CURRENT_BINARY_DIR}/dstest.out" -) -# ======== COMPLEX-COMPLEX16 LIN TESTS ======================== - -add_test(NAME "Testing_COMPLEX-COMPLEX16_LAPACK_prototype_linear_equation_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstzc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zctest.in" " ${CMAKE_CURRENT_BINARY_DIR}/zctest.out" -) - -# ======== SINGLE RFP LIN TESTS ======================== - -add_test(NAME "Testing_REAL_LAPACK_RFP_prototype_linear_equation_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstrfs" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/stest_rfp.in" "${CMAKE_CURRENT_BINARY_DIR}/stest_rfp.out" -) - -# ======== COMPLEX16 RFP LIN TESTS ======================== - -add_test(NAME "Testing_DOUBLE_PRECISION_LAPACK_RFP_prototype_linear_equation_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstrfd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dtest_rfp.in" " ${CMAKE_CURRENT_BINARY_DIR}/dtest_rfp.out" -) -# ======== COMPLEX16 RFP LIN TESTS ======================== - -add_test(NAME "Testing_COMPLEX_LAPACK_RFP_prototype_linear_equation_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstrfc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ctest_rfp.in" " ${CMAKE_CURRENT_BINARY_DIR}/ctest_rfp.out" -) - -# ======== COMPLEX16 RFP LIN TESTS ======================== - -add_test(NAME "Testing_COMPLEX16_LAPACK_RFP_prototype_linear_equation_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstrfz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ztest_rfp.in" " ${CMAKE_CURRENT_BINARY_DIR}/ztest_rfp.out" -) -# -# -# ======== SINGLE EIG TESTS =========================== -# - -add_test(NAME "SNEP:_Testing_Nonsymmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/nep.in" " ${CMAKE_CURRENT_BINARY_DIR}/snep.out" -) - -add_test(NAME "SSEP:_Testing_Symmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sep.in" " ${CMAKE_CURRENT_BINARY_DIR}/ssep.out" -) - -add_test(NAME "SSE2:_Testing_Symmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/se2.in" " ${CMAKE_CURRENT_BINARY_DIR}/sse2.out" -) - -add_test(NAME "SSVD:_Testing_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/svd.in" " ${CMAKE_CURRENT_BINARY_DIR}/ssvd.out" -) - -add_test(NAME "SSEC:_Testing_REAL_Eigen_Condition_Routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sec.in" " ${CMAKE_CURRENT_BINARY_DIR}/sec.out" -) - -add_test(NAME "SSEV:_Testing_REAL_Nonsymmetric_Eigenvalue_Driver" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sed.in" " ${CMAKE_CURRENT_BINARY_DIR}/sed.out" -) - -add_test(NAME "SGG:_Testing_REAL_Nonsymmetric_Generalized_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sgg.in" " ${CMAKE_CURRENT_BINARY_DIR}/sgg.out" -) - -add_test(NAME "SGD:_Testing_REAL_Nonsymmetric_Generalized_Eigenvalue_Problem_driver_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sgd.in" " ${CMAKE_CURRENT_BINARY_DIR}/sgd.out" -) - -add_test(NAME "SSB:_Testing_REAL_Symmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ssb.in" " ${CMAKE_CURRENT_BINARY_DIR}/ssb.out" -) - -add_test(NAME "SSG:_Testing_REAL_Symmetric_Generalized_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ssg.in" " ${CMAKE_CURRENT_BINARY_DIR}/ssg.out" -) - -add_test(NAME "SGEBAL:_Testing_the_balancing_of_a_REAL_general_matrix" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/sbal.out" -) - -add_test(NAME "SGEBAK:_Testing_the_back_transformation_of_a_REAL_balanced_matrix" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/sbak.out" -) - -add_test(NAME "SGGBAL:_Testing_the_balancing_of_a_pair_of_REAL_general_matrices" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sgbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/sgbal.out" -) - -add_test(NAME "SGGBAK:_Testing_the_back_transformation_of_a_pair_of_REAL_balanced_matrices" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sgbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/sgbak.out" -) - -add_test(NAME "SBB:_Testing_banded_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sbb.in" " ${CMAKE_CURRENT_BINARY_DIR}/sbb.out" -) - -add_test(NAME "SGLM:_Testing_Generalized_Linear_Regression_Model_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/glm.in" " ${CMAKE_CURRENT_BINARY_DIR}/sglm.out" -) - -add_test(NAME "SGQR:_Testing_Generalized_QR_and_RQ_factorization_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gqr.in" " ${CMAKE_CURRENT_BINARY_DIR}/sgqr.out" -) - -add_test(NAME "SGSV:_Testing_Generalized_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gsv.in" "${CMAKE_CURRENT_BINARY_DIR}/sgsv.out" -) - -add_test(NAME "SCSD:_Testing_CS_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csd.in" " ${CMAKE_CURRENT_BINARY_DIR}/scsd.out" -) - -add_test(NAME "SLSE:_Testing_Constrained_Linear_Least_Squares_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/lse.in" " ${CMAKE_CURRENT_BINARY_DIR}/slse.out" -) - -# ======== COMPLEX EIG TESTS =========================== - -add_test(NAME "CNEP:_Testing_Nonsymmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/nep.in" " ${CMAKE_CURRENT_BINARY_DIR}/cnep.out" -) - -add_test(NAME "CSEP:_Testing_Symmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sep.in" " ${CMAKE_CURRENT_BINARY_DIR}/csep.out" -) - -add_test(NAME "CSE2:_Testing_Symmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/se2.in" " ${CMAKE_CURRENT_BINARY_DIR}/cse2.out" -) - -add_test(NAME "CSVD:_Testing_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/svd.in" " ${CMAKE_CURRENT_BINARY_DIR}/csvd.out" -) - -add_test(NAME "CEC:_Testing_COMPLEX_Eigen_Condition_Routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cec.in" " ${CMAKE_CURRENT_BINARY_DIR}/cec.out" -) - -add_test(NAME "CES:_Testing_COMPLEX_Nonsymmetric_Schur_Form_Driver" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ced.in" " ${CMAKE_CURRENT_BINARY_DIR}/ced.out" -) - -add_test(NAME "CGG:_Testing_COMPLEX_Nonsymmetric_Generalized_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cgg.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgg.out" -) - -add_test(NAME "CGD:_Testing_COMPLEX_Nonsymmetric_Generalized_Eigenvalue_Problem_driver_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cgd.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgd.out" -) - -add_test(NAME "CHB:_Testing_Hermitian_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csb.in" " ${CMAKE_CURRENT_BINARY_DIR}/csb.out" -) - -add_test(NAME "CSG:_Testing_Symmetric_Generalized_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csg.in" " ${CMAKE_CURRENT_BINARY_DIR}/csg.out" -) - -add_test(NAME "CGEBAL:_Testing_the_balancing_of_a_COMPLEX_general_matrix" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/cbal.out" -) - -add_test(NAME "CGEBAK:_Testing_the_back_transformation_of_a_COMPLEX_balanced_matrix" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/cbak.out" -) - -add_test(NAME "CGGBAL:_Testing_the_balancing_of_a_pair_of_COMPLEX_general_matrices" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cgbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgbal.out" -) - -add_test(NAME "CGGBAK:_Testing_the_back_transformation_of_a_pair_of_COMPLEX_balanced_matrices" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cgbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgbak.out" -) - -add_test(NAME "CBB:_Testing_banded_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cbb.in" " ${CMAKE_CURRENT_BINARY_DIR}/cbb.out" -) - -add_test(NAME "CGLM:_Testing_Generalized_Linear_Regression_Model_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/glm.in" " ${CMAKE_CURRENT_BINARY_DIR}/cglm.out" -) - -add_test(NAME "CGQR:_Testing_Generalized_QR_and_RQ_factorization_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gqr.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgqr.out" -) - -add_test(NAME "CGSV:_Testing_Generalized_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gsv.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgsv.out" -) - -add_test(NAME "CCSD:_Testing_CS_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csd.in" " ${CMAKE_CURRENT_BINARY_DIR}/ccsd.out" -) - -add_test(NAME "CLSE:_Testing_Constrained_Linear_Least_Squares_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/lse.in" " ${CMAKE_CURRENT_BINARY_DIR}/clse.out" -) - -# ======== DOUBLE EIG TESTS =========================== - -add_test(NAME "DNEP:_Testing_Nonsymmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/nep.in" " ${CMAKE_CURRENT_BINARY_DIR}/dnep.out" -) - -add_test(NAME "DSEP:_Testing_Symmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sep.in" " ${CMAKE_CURRENT_BINARY_DIR}/dsep.out" -) - -add_test(NAME "DSE2:_Testing_Symmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/se2.in" " ${CMAKE_CURRENT_BINARY_DIR}/dse2.out" -) - -add_test(NAME "DSVD:_Testing_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/svd.in" " ${CMAKE_CURRENT_BINARY_DIR}/dsvd.out" -) - -add_test(NAME "DEC:_Testing_DOUBLE_PRECISION_Eigen_Condition_Routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dec.in" " ${CMAKE_CURRENT_BINARY_DIR}/dec.out" -) - -add_test(NAME "DEV:_Testing_DOUBLE_PRECISION_Nonsymmetric_Eigenvalue_Driver" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ded.in" " ${CMAKE_CURRENT_BINARY_DIR}/ded.out" -) - -add_test(NAME "DGG:_Testing_DOUBLE_PRECISION_Nonsymmetric_Generalized_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dgg.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgg.out" -) - -add_test(NAME "DGD:_Testing_DOUBLE_PRECISION_Nonsymmetric_Generalized_Eigenvalue_Problem_driver_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dgd.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgd.out" -) - -add_test(NAME "DSB:_Testing_DOUBLE_PRECISION_Symmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dsb.in" " ${CMAKE_CURRENT_BINARY_DIR}/dsb.out" -) - -add_test(NAME "DSG:_Testing_DOUBLE_PRECISION_Symmetric_Generalized_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dsg.in" " ${CMAKE_CURRENT_BINARY_DIR}/dsg.out" -) - -add_test(NAME "DGEBAL:_Testing_the_balancing_of_a_DOUBLE_PRECISION_general_matrix" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/dbal.out" -) - -add_test(NAME "DGEBAK:_Testing_the_back_transformation_of_a_DOUBLE_PRECISION_balanced_matrix" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/dbak.out" -) - -add_test(NAME "DGGBAL:_Testing_the_balancing_of_a_pair_of_DOUBLE_PRECISION_general_matrices" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dgbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgbal.out" -) - -add_test(NAME "DGGBAK:_Testing_the_back_transformation_of_a_pair_of_DOUBLE_PRECISION_balanced_matrices" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dgbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgbak.out" -) - -add_test(NAME "DBB:_Testing_banded_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dbb.in" " ${CMAKE_CURRENT_BINARY_DIR}/dbb.out" -) - -add_test(NAME "DGLM:_Testing_Generalized_Linear_Regression_Model_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/glm.in" " ${CMAKE_CURRENT_BINARY_DIR}/dglm.out" -) - -add_test(NAME "DGQR:_Testing_Generalized_QR_and_RQ_factorization_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gqr.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgqr.out" -) - -add_test(NAME "DGSV:_Testing_Generalized_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gsv.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgsv.out" -) - -add_test(NAME "DCSD:_Testing_CS_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csd.in" " ${CMAKE_CURRENT_BINARY_DIR}/dcsd.out" -) - -add_test(NAME "DLSE:_Testing_Constrained_Linear_Least_Squares_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/lse.in" " ${CMAKE_CURRENT_BINARY_DIR}/dlse.out" -) - -# ======== COMPLEX16 EIG TESTS =========================== - -add_test(NAME "ZNEP:_Testing_Nonsymmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/nep.in" " ${CMAKE_CURRENT_BINARY_DIR}/znep.out" -) - -add_test(NAME "ZSEP:_Testing_Symmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sep.in" " ${CMAKE_CURRENT_BINARY_DIR}/zsep.out" -) - -add_test(NAME "ZSE2:_Testing_Symmetric_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/se2.in" " ${CMAKE_CURRENT_BINARY_DIR}/zse2.out" -) - -add_test(NAME "ZSVD:_Testing_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/svd.in" " ${CMAKE_CURRENT_BINARY_DIR}/zsvd.out" -) - -add_test(NAME "ZEC:_Testing_COMPLEX16_Eigen_Condition_Routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zec.in" " ${CMAKE_CURRENT_BINARY_DIR}/zec.out" -) - -add_test(NAME "ZES:_Testing_COMPLEX16_Nonsymmetric_Schur_Form_Driver" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zed.in" " ${CMAKE_CURRENT_BINARY_DIR}/zed.out" -) - -add_test(NAME "ZGG:_Testing_COMPLEX16_Nonsymmetric_Generalized_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zgg.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgg.out" -) - -add_test(NAME "ZGD:_Testing_COMPLEX16_Nonsymmetric_Generalized_Eigenvalue_Problem_driver_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zgd.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgd.out" -) - -add_test(NAME "ZHB:_Testing_Hermitian_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zsb.in" " ${CMAKE_CURRENT_BINARY_DIR}/zsb.out" -) - -add_test(NAME "ZSG:_Testing_Symmetric_Generalized_Eigenvalue_Problem_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zsg.in" " ${CMAKE_CURRENT_BINARY_DIR}/zsg.out" -) - -add_test(NAME "ZGEBAL:_Testing_the_balancing_of_a_COMPLEX16_general_matrix" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/zbal.out" -) - -add_test(NAME "ZGEBAK:_Testing_the_back_transformation_of_a_COMPLEX16_balanced_matrix" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/zbak.out" -) - -add_test(NAME "ZGGBAL:_Testing_the_balancing_of_a_pair_of_COMPLEX_general_matrices" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zgbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgbal.out" -) - -add_test(NAME "ZGGBAK:_Testing_the_back_transformation_of_a_pair_of_COMPLEX16_balanced_matrices" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zgbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgbak.out" -) - -add_test(NAME "ZBB:_Testing_banded_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zbb.in" " ${CMAKE_CURRENT_BINARY_DIR}/zbb.out" -) - -add_test(NAME "ZGLM:_Testing_Generalized_Linear_Regression_Model_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/glm.in" " ${CMAKE_CURRENT_BINARY_DIR}/zglm.out" -) - -add_test(NAME "ZGQR:_Testing_Generalized_QR_and_RQ_factorization_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gqr.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgqr.out" -) - -add_test(NAME "ZGSV:_Testing_Generalized_Singular_Value_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gsv.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgsv.out" -) - -add_test(NAME "ZCSD:_Testing_CS_Decomposition_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csd.in" " ${CMAKE_CURRENT_BINARY_DIR}/zcsd.out" -) - -add_test(NAME "Constrained_Linear_Least_Squares_routines" - COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/lse.in" " ${CMAKE_CURRENT_BINARY_DIR}/zlse.out" -) diff --git a/lapack-netlib/TESTING/Makefile b/lapack-netlib/TESTING/Makefile index 3963260ac0..d64582b217 100644 --- a/lapack-netlib/TESTING/Makefile +++ b/lapack-netlib/TESTING/Makefile @@ -1,639 +1,223 @@ -####################################################################### -# This makefile runs the test programs for the linear equation routines -# and the eigenvalue routines in LAPACK. The test output files -# are grouped as follows: -# -# SLINTST,SEIGTST -- Single precision real test routines -# CLINTST,CEIGTST -- Single precision complex test routines -# DLINTST,DEIGTST -- Double precision real test routines -# ZLINTST,ZEIGTST -- Double precision complex test routines -# -# Test programs can be executed for all or some of the four different -# precisions. Enter 'make' followed by one or more of the data types -# desired. -# Some examples: +######################################################################## +# This is the makefile for the eigenvalue test program from LAPACK. +# The test files are organized as follows: +# +# AEIGTST -- Auxiliary test routines used in all precisions +# SCIGTST -- Auxiliary test routines used in single precision +# DZIGTST -- Auxiliary test routines used in double precision +# SEIGTST -- Single precision real test routines +# CEIGTST -- Single precision complex test routines +# DEIGTST -- Double precision real test routines +# ZEIGTST -- Double precision complex test routines +# +# Test programs can be generated for all or some of the four different +# precisions. Enter make followed by one or more of the data types +# desired. Some examples: # make single # make single complex # make single double complex complex16 # Alternatively, the command # make -# without any arguments runs all eight test programs. -# The executable files are called: -# xlintsts, xlintstd, xlintstc, and xlintstz for LIN -# xeigtsts, xeigtstd, xeigtstc, and xeigtstz for EIG -# -# To remove the output files after the tests have been run, enter -# make cleantest -# -# To re-run specific tests after a make, enter (for example): -# 'rm ssvd.out; make' or: -# 'make ssvd.out' or: -# 'touch svd.in; make' (to re-run the single precision SVD tests.) +# without any arguments creates all four test programs. +# The executable files are called +# xeigtsts, xeigtstd, xeigtstc, and xeigtstz # -# 'rm *svd.out; make' (to re-run all the SVD tests.) +# To remove the object files after the executable files have been +# created, enter +# make cleanobj +# On some systems, you can force the source files to be recompiled by +# entering (for example) +# make single FRC=FRC # -####################################################################### +######################################################################## -TOPSRCDIR = .. +TOPSRCDIR = ../.. include $(TOPSRCDIR)/make.inc +AEIGTST = \ + alahdg.o \ + alasum.o \ + alasvm.o \ + alareq.o \ + ilaenv.o \ + xerbla.o \ + xlaenv.o \ + chkxer.o + +SCIGTST = slafts.o slahd2.o slasum.o slatb9.o sstech.o sstect.o \ + ssvdch.o ssvdct.o ssxt1.o + +SEIGTST = schkee.o \ + sbdt01.o sbdt02.o sbdt03.o sbdt04.o sbdt05.o \ + schkbb.o schkbd.o schkbk.o schkbl.o schkec.o \ + schkgg.o schkgk.o schkgl.o schkhs.o schksb.o schkst.o schkst2stg.o schksb2stg.o \ + sckcsd.o sckglm.o sckgqr.o sckgsv.o scklse.o scsdts.o \ + sdrges.o sdrgev.o sdrges3.o sdrgev3.o sdrgsx.o sdrgvx.o \ + sdrvbd.o sdrvmr3.o sdrves.o sdrvev.o sdrvsg.o sdrvsg2stg.o \ + sdrvst.o sdrvst2stg.o sdrvsx.o sdrvvx.o \ + serrbd.o serrec.o serred.o serrgg.o serrhs.o serrst.o \ + sget02.o sget10.o sget22.o sget23.o sget24.o sget31.o \ + sget32.o sget33.o sget34.o sget35.o sget36.o \ + sget37.o sget38.o sget39.o sget40.o sget51.o sget52.o sget53.o \ + sget54.o sglmts.o sgqrts.o sgrqts.o sgsvts3.o \ + shst01.o slarfy.o slarhs.o slatm4.o slctes.o slctsx.o slsets.o sort01.o \ + sort03.o ssbt21.o ssgt01.o sslect.o sspt21.o sstt21.o \ + sstt22.o ssyl01.o ssyt21.o ssyt22.o + +SDMDEIGTST = schkdmd.o + +CEIGTST = cchkee.o \ + cbdt01.o cbdt02.o cbdt03.o cbdt05.o \ + cchkbb.o cchkbd.o cchkbk.o cchkbl.o cchkec.o \ + cchkgg.o cchkgk.o cchkgl.o cchkhb.o cchkhs.o cchkst.o cchkst2stg.o cchkhb2stg.o \ + cckcsd.o cckglm.o cckgqr.o cckgsv.o ccklse.o ccsdts.o \ + cdrges.o cdrgev.o cdrges3.o cdrgev3.o cdrgsx.o cdrgvx.o \ + cdrvbd.o cdrvmr3.o cdrves.o cdrvev.o cdrvsg.o cdrvsg2stg.o \ + cdrvst.o cdrvst2stg.o cdrvsx.o cdrvvx.o \ + cerrbd.o cerrec.o cerred.o cerrgg.o cerrhs.o cerrst.o \ + cget02.o cget10.o cget22.o cget23.o cget24.o \ + cget35.o cget36.o cget37.o cget38.o cget51.o cget52.o \ + cget54.o cglmts.o cgqrts.o cgrqts.o cgsvts3.o \ + chbt21.o chet21.o chet22.o chpt21.o chst01.o \ + clarfy.o clarhs.o clatm4.o clctes.o clctsx.o clsets.o csbmv.o \ + csgt01.o cslect.o csyl01.o\ + cstt21.o cstt22.o cunt01.o cunt03.o + +CDMDEIGTST = cchkdmd.o + +DZIGTST = dlafts.o dlahd2.o dlasum.o dlatb9.o dstech.o dstect.o \ + dsvdch.o dsvdct.o dsxt1.o + +DEIGTST = dchkee.o \ + dbdt01.o dbdt02.o dbdt03.o dbdt04.o dbdt05.o \ + dchkbb.o dchkbd.o dchkbk.o dchkbl.o dchkec.o \ + dchkgg.o dchkgk.o dchkgl.o dchkhs.o dchksb.o dchkst.o dchkst2stg.o dchksb2stg.o \ + dckcsd.o dckglm.o dckgqr.o dckgsv.o dcklse.o dcsdts.o \ + ddrges.o ddrgev.o ddrges3.o ddrgev3.o ddrgsx.o ddrgvx.o \ + ddrvbd.o ddrvmr3.o ddrves.o ddrvev.o ddrvsg.o ddrvsg2stg.o \ + ddrvst.o ddrvst2stg.o ddrvsx.o ddrvvx.o \ + derrbd.o derrec.o derred.o derrgg.o derrhs.o derrst.o \ + dget02.o dget10.o dget22.o dget23.o dget24.o dget31.o \ + dget32.o dget33.o dget34.o dget35.o dget36.o \ + dget37.o dget38.o dget39.o dget40.o dget51.o dget52.o dget53.o \ + dget54.o dglmts.o dgqrts.o dgrqts.o dgsvts3.o \ + dhst01.o dlarfy.o dlarhs.o dlatm4.o dlctes.o dlctsx.o dlsets.o dort01.o \ + dort03.o dsbt21.o dsgt01.o dslect.o dspt21.o dstt21.o \ + dstt22.o dsyl01.o dsyt21.o dsyt22.o + +DDMDEIGTST = dchkdmd.o + +ZEIGTST = zchkee.o \ + zbdt01.o zbdt02.o zbdt03.o zbdt05.o \ + zchkbb.o zchkbd.o zchkbk.o zchkbl.o zchkec.o \ + zchkgg.o zchkgk.o zchkgl.o zchkhb.o zchkhs.o zchkst.o zchkst2stg.o zchkhb2stg.o \ + zckcsd.o zckglm.o zckgqr.o zckgsv.o zcklse.o zcsdts.o \ + zdrges.o zdrgev.o zdrges3.o zdrgev3.o zdrgsx.o zdrgvx.o \ + zdrvbd.o zdrvmr3.o zdrves.o zdrvev.o zdrvsg.o zdrvsg2stg.o \ + zdrvst.o zdrvst2stg.o zdrvsx.o zdrvvx.o \ + zerrbd.o zerrec.o zerred.o zerrgg.o zerrhs.o zerrst.o \ + zget02.o zget10.o zget22.o zget23.o zget24.o \ + zget35.o zget36.o zget37.o zget38.o zget51.o zget52.o \ + zget54.o zglmts.o zgqrts.o zgrqts.o zgsvts3.o \ + zhbt21.o zhet21.o zhet22.o zhpt21.o zhst01.o \ + zlarfy.o zlarhs.o zlatm4.o zlctes.o zlctsx.o zlsets.o zsbmv.o \ + zsgt01.o zslect.o zsyl01.o\ + zstt21.o zstt22.o zunt01.o zunt03.o + +ZDMDEIGTST = zchkdmd.o + .PHONY: all -all: single complex double complex16 singleproto doubleproto complexproto complex16proto - -SEIGTST= snep.out \ - ssep.out \ - sse2.out \ - ssvd.out \ - sec.out \ - sed.out \ - sgg.out \ - sgd.out \ - ssb.out \ - ssg.out \ - sbal.out \ - sbak.out \ - sgbal.out \ - sgbak.out \ - sbb.out \ - sglm.out \ - sgqr.out \ - sgsv.out \ - scsd.out \ - slse.out - -SDMDEIGTST= sdmd.out - -CEIGTST= cnep.out \ - csep.out \ - cse2.out \ - csvd.out \ - cec.out \ - ced.out \ - cgg.out \ - cgd.out \ - csb.out \ - csg.out \ - cbal.out \ - cbak.out \ - cgbal.out \ - cgbak.out \ - cbb.out \ - cglm.out \ - cgqr.out \ - cgsv.out \ - ccsd.out \ - clse.out - -CDMDEIGTST= cdmd.out - -DEIGTST= dnep.out \ - dsep.out \ - dse2.out \ - dsvd.out \ - dec.out \ - ded.out \ - dgg.out \ - dgd.out \ - dsb.out \ - dsg.out \ - dbal.out \ - dbak.out \ - dgbal.out \ - dgbak.out \ - dbb.out \ - dglm.out \ - dgqr.out \ - dgsv.out \ - dcsd.out \ - dlse.out - -DDMDEIGTST= ddmd.out - -ZEIGTST= znep.out \ - zsep.out \ - zse2.out \ - zsvd.out \ - zec.out \ - zed.out \ - zgg.out \ - zgd.out \ - zsb.out \ - zsg.out \ - zbal.out \ - zbak.out \ - zgbal.out \ - zgbak.out \ - zbb.out \ - zglm.out \ - zgqr.out \ - zgsv.out \ - zcsd.out \ - zlse.out - -ZDMDEIGTST= zdmd.out - -SLINTST= stest.out - -SLINTSTPROTO= stest_rfp.out - -CLINTST= ctest.out - -CLINTSTPROTO= ctest_rfp.out - -DLINTST= dtest.out - -DLINTSTPROTO= dstest.out dtest_rfp.out - -ZLINTST= ztest.out - -ZLINTSTPROTO= zctest.out ztest_rfp.out +all: single complex double complex16 .PHONY: single complex double complex16 -single: $(SLINTST) $(SEIGTST) $(SDMDEIGTST) -complex: $(CLINTST) $(CEIGTST) $(CDMDEIGTST) -double: $(DLINTST) $(DEIGTST) $(DDMDEIGTST) -complex16: $(ZLINTST) $(ZEIGTST) $(ZDMDEIGTST) - -.PHONY: singleproto complexproto doubleproto complex16proto -singleproto: $(SLINTSTPROTO) -complexproto: $(CLINTSTPROTO) -doubleproto: $(DLINTSTPROTO) -complex16proto: $(ZLINTSTPROTO) - -# -# ======== SINGLE LIN TESTS =========================== - -stest.out: stest.in LIN/xlintsts - @echo Testing REAL LAPACK linear equation routines - ./LIN/xlintsts < stest.in > $@ 2>&1 -# -# ======== COMPLEX LIN TESTS ========================== - -ctest.out: ctest.in LIN/xlintstc - @echo Testing COMPLEX LAPACK linear equation routines - ./LIN/xlintstc < ctest.in > $@ 2>&1 -# -# ======== DOUBLE LIN TESTS =========================== - -dtest.out: dtest.in LIN/xlintstd - @echo Testing DOUBLE PRECISION LAPACK linear equation routines - ./LIN/xlintstd < dtest.in > $@ 2>&1 -# -# ======== COMPLEX16 LIN TESTS ======================== - -ztest.out: ztest.in LIN/xlintstz - @echo Testing COMPLEX16 LAPACK linear equation routines - ./LIN/xlintstz < ztest.in > $@ 2>&1 -# -# ======== SINGLE-DOUBLE PROTO LIN TESTS ============== - -dstest.out: dstest.in LIN/xlintstds - @echo Testing SINGLE-DOUBLE PRECISION LAPACK prototype linear equation routines - ./LIN/xlintstds < dstest.in > $@ 2>&1 -# -# ======== COMPLEX-COMPLEX16 LIN TESTS ======================== - -zctest.out: zctest.in LIN/xlintstzc - @echo Testing COMPLEX-COMPLEX16 LAPACK prototype linear equation routines - ./LIN/xlintstzc < zctest.in > $@ 2>&1 -# -# ======== SINGLE RFP LIN TESTS ======================== - -stest_rfp.out: stest_rfp.in LIN/xlintstrfs - @echo Testing REAL LAPACK RFP prototype linear equation routines - ./LIN/xlintstrfs < stest_rfp.in > $@ 2>&1 -# -# ======== COMPLEX16 RFP LIN TESTS ======================== - -dtest_rfp.out: dtest_rfp.in LIN/xlintstrfd - @echo Testing DOUBLE PRECISION LAPACK RFP prototype linear equation routines - ./LIN/xlintstrfd < dtest_rfp.in > $@ 2>&1 -# -# ======== COMPLEX16 RFP LIN TESTS ======================== - -ctest_rfp.out: ctest_rfp.in LIN/xlintstrfc - @echo Testing COMPLEX LAPACK RFP prototype linear equation routines - ./LIN/xlintstrfc < ctest_rfp.in > $@ 2>&1 -# -# ======== COMPLEX16 RFP LIN TESTS ======================== - -ztest_rfp.out: ztest_rfp.in LIN/xlintstrfz - @echo Testing COMPLEX16 LAPACK RFP prototype linear equation routines - ./LIN/xlintstrfz < ztest_rfp.in > $@ 2>&1 -# -# -# ======== SINGLE EIG TESTS =========================== -# - -snep.out: nep.in EIG/xeigtsts - @echo NEP: Testing Nonsymmetric Eigenvalue Problem routines - ./EIG/xeigtsts < nep.in > $@ 2>&1 - -ssep.out: sep.in EIG/xeigtsts - @echo SEP: Testing Symmetric Eigenvalue Problem routines - ./EIG/xeigtsts < sep.in > $@ 2>&1 - -sse2.out: se2.in EIG/xeigtsts - @echo SEP: Testing Symmetric Eigenvalue Problem routines - ./EIG/xeigtsts < se2.in > $@ 2>&1 - -ssvd.out: svd.in EIG/xeigtsts - @echo SVD: Testing Singular Value Decomposition routines - ./EIG/xeigtsts < svd.in > $@ 2>&1 - -sec.out: sec.in EIG/xeigtsts - @echo SEC: Testing REAL Eigen Condition Routines - ./EIG/xeigtsts < sec.in > $@ 2>&1 - -sed.out: sed.in EIG/xeigtsts - @echo SEV: Testing REAL Nonsymmetric Eigenvalue Driver - ./EIG/xeigtsts < sed.in > $@ 2>&1 - -sgg.out: sgg.in EIG/xeigtsts - @echo SGG: Testing REAL Nonsymmetric Generalized Eigenvalue Problem routines - ./EIG/xeigtsts < sgg.in > $@ 2>&1 - -sgd.out: sgd.in EIG/xeigtsts - @echo SGD: Testing REAL Nonsymmetric Generalized Eigenvalue Problem driver routines - ./EIG/xeigtsts < sgd.in > $@ 2>&1 - -ssb.out: ssb.in EIG/xeigtsts - @echo SSB: Testing REAL Symmetric Eigenvalue Problem routines - ./EIG/xeigtsts < ssb.in > $@ 2>&1 - -ssg.out: ssg.in EIG/xeigtsts - @echo SSG: Testing REAL Symmetric Generalized Eigenvalue Problem routines - ./EIG/xeigtsts < ssg.in > $@ 2>&1 - -sbal.out: sbal.in EIG/xeigtsts - @echo SGEBAL: Testing the balancing of a REAL general matrix - ./EIG/xeigtsts < sbal.in > $@ 2>&1 - -sbak.out: sbak.in EIG/xeigtsts - @echo SGEBAK: Testing the back transformation of a REAL balanced matrix - ./EIG/xeigtsts < sbak.in > $@ 2>&1 - -sgbal.out: sgbal.in EIG/xeigtsts - @echo SGGBAL: Testing the balancing of a pair of REAL general matrices - ./EIG/xeigtsts < sgbal.in > $@ 2>&1 - -sgbak.out: sgbak.in EIG/xeigtsts - @echo SGGBAK: Testing the back transformation of a pair of REAL balanced matrices - ./EIG/xeigtsts < sgbak.in > $@ 2>&1 - -sbb.out: sbb.in EIG/xeigtsts - @echo SBB: Testing banded Singular Value Decomposition routines - ./EIG/xeigtsts < sbb.in > $@ 2>&1 - -sglm.out: glm.in EIG/xeigtsts - @echo GLM: Testing Generalized Linear Regression Model routines - ./EIG/xeigtsts < glm.in > $@ 2>&1 - -sgqr.out: gqr.in EIG/xeigtsts - @echo GQR: Testing Generalized QR and RQ factorization routines - ./EIG/xeigtsts < gqr.in > $@ 2>&1 - -sgsv.out: gsv.in EIG/xeigtsts - @echo GSV: Testing Generalized Singular Value Decomposition routines - ./EIG/xeigtsts < gsv.in > $@ 2>&1 - -scsd.out: csd.in EIG/xeigtsts - @echo CSD: Testing CS Decomposition routines - ./EIG/xeigtsts < csd.in > $@ 2>&1 - -slse.out: lse.in EIG/xeigtsts - @echo LSE: Testing Constrained Linear Least Squares routines - ./EIG/xeigtsts < lse.in > $@ 2>&1 - -sdmd.out: sdmd.in EIG/xdmdeigtsts - @echo DMD: Testing Dynamic Mode Decomposition routines - ./EIG/xdmdeigtsts < sdmd.in > $@ 2>&1 -# -# ======== COMPLEX EIG TESTS =========================== - -cnep.out: nep.in EIG/xeigtstc - @echo NEP: Testing Nonsymmetric Eigenvalue Problem routines - ./EIG/xeigtstc < nep.in > $@ 2>&1 - -csep.out: sep.in EIG/xeigtstc - @echo SEP: Testing Symmetric Eigenvalue Problem routines - ./EIG/xeigtstc < sep.in > $@ 2>&1 - -cse2.out: se2.in EIG/xeigtstc - @echo SEP: Testing Symmetric Eigenvalue Problem routines - ./EIG/xeigtstc < se2.in > $@ 2>&1 - -csvd.out: svd.in EIG/xeigtstc - @echo SVD: Testing Singular Value Decomposition routines - ./EIG/xeigtstc < svd.in > $@ 2>&1 - -cec.out: cec.in EIG/xeigtstc - @echo CEC: Testing COMPLEX Eigen Condition Routines - ./EIG/xeigtstc < cec.in > $@ 2>&1 - -ced.out: ced.in EIG/xeigtstc - @echo CES: Testing COMPLEX Nonsymmetric Schur Form Driver - ./EIG/xeigtstc < ced.in > $@ 2>&1 - -cgg.out: cgg.in EIG/xeigtstc - @echo CGG: Testing COMPLEX Nonsymmetric Generalized Eigenvalue Problem routines - ./EIG/xeigtstc < cgg.in > $@ 2>&1 - -cgd.out: cgd.in EIG/xeigtstc - @echo CGD: Testing COMPLEX Nonsymmetric Generalized Eigenvalue Problem driver routines - ./EIG/xeigtstc < cgd.in > $@ 2>&1 - -csb.out: csb.in EIG/xeigtstc - @echo CHB: Testing Hermitian Eigenvalue Problem routines - ./EIG/xeigtstc < csb.in > $@ 2>&1 - -csg.out: csg.in EIG/xeigtstc - @echo CSG: Testing Symmetric Generalized Eigenvalue Problem routines - ./EIG/xeigtstc < csg.in > $@ 2>&1 - -cbal.out: cbal.in EIG/xeigtstc - @echo CGEBAL: Testing the balancing of a COMPLEX general matrix - ./EIG/xeigtstc < cbal.in > $@ 2>&1 - -cbak.out: cbak.in EIG/xeigtstc - @echo CGEBAK: Testing the back transformation of a COMPLEX balanced matrix - ./EIG/xeigtstc < cbak.in > $@ 2>&1 - -cgbal.out: cgbal.in EIG/xeigtstc - @echo CGGBAL: Testing the balancing of a pair of COMPLEX general matrices - ./EIG/xeigtstc < cgbal.in > $@ 2>&1 - -cgbak.out: cgbak.in EIG/xeigtstc - @echo CGGBAK: Testing the back transformation of a pair of COMPLEX balanced matrices - ./EIG/xeigtstc < cgbak.in > $@ 2>&1 - -cbb.out: cbb.in EIG/xeigtstc - @echo CBB: Testing banded Singular Value Decomposition routines - ./EIG/xeigtstc < cbb.in > $@ 2>&1 - -cglm.out: glm.in EIG/xeigtstc - @echo GLM: Testing Generalized Linear Regression Model routines - ./EIG/xeigtstc < glm.in > $@ 2>&1 - -cgqr.out: gqr.in EIG/xeigtstc - @echo GQR: Testing Generalized QR and RQ factorization routines - ./EIG/xeigtstc < gqr.in > $@ 2>&1 - -cgsv.out: gsv.in EIG/xeigtstc - @echo GSV: Testing Generalized Singular Value Decomposition routines - ./EIG/xeigtstc < gsv.in > $@ 2>&1 - -ccsd.out: csd.in EIG/xeigtstc - @echo CSD: Testing CS Decomposition routines - ./EIG/xeigtstc < csd.in > $@ 2>&1 - -clse.out: lse.in EIG/xeigtstc - @echo LSE: Testing Constrained Linear Least Squares routines - ./EIG/xeigtstc < lse.in > $@ 2>&1 - -cdmd.out: cdmd.in EIG/xdmdeigtstc - @echo DMD: Testing Dynamic Mode Decomposition routines - ./EIG/xdmdeigtstc < cdmd.in > $@ 2>&1 -# -# ======== DOUBLE EIG TESTS =========================== - -dnep.out: nep.in EIG/xeigtstd - @echo NEP: Testing Nonsymmetric Eigenvalue Problem routines - ./EIG/xeigtstd < nep.in > $@ 2>&1 - -dsep.out: sep.in EIG/xeigtstd - @echo SEP: Testing Symmetric Eigenvalue Problem routines - ./EIG/xeigtstd < sep.in > $@ 2>&1 - -dse2.out: se2.in EIG/xeigtstd - @echo SEP: Testing Symmetric Eigenvalue Problem routines - ./EIG/xeigtstd < se2.in > $@ 2>&1 - -dsvd.out: svd.in EIG/xeigtstd - @echo SVD: Testing Singular Value Decomposition routines - ./EIG/xeigtstd < svd.in > $@ 2>&1 - -dec.out: dec.in EIG/xeigtstd - @echo DEC: Testing DOUBLE PRECISION Eigen Condition Routines - ./EIG/xeigtstd < dec.in > $@ 2>&1 - -ded.out: ded.in EIG/xeigtstd - @echo DEV: Testing DOUBLE PRECISION Nonsymmetric Eigenvalue Driver - ./EIG/xeigtstd < ded.in > $@ 2>&1 - -dgg.out: dgg.in EIG/xeigtstd - @echo DGG: Testing DOUBLE PRECISION Nonsymmetric Generalized Eigenvalue Problem routines - ./EIG/xeigtstd < dgg.in > $@ 2>&1 - -dgd.out: dgd.in EIG/xeigtstd - @echo DGD: Testing DOUBLE PRECISION Nonsymmetric Generalized Eigenvalue Problem driver routines - ./EIG/xeigtstd < dgd.in > $@ 2>&1 - -dsb.out: dsb.in EIG/xeigtstd - @echo DSB: Testing DOUBLE PRECISION Symmetric Eigenvalue Problem routines - ./EIG/xeigtstd < dsb.in > $@ 2>&1 - -dsg.out: dsg.in EIG/xeigtstd - @echo DSG: Testing DOUBLE PRECISION Symmetric Generalized Eigenvalue Problem routines - ./EIG/xeigtstd < dsg.in > $@ 2>&1 - -dbal.out: dbal.in EIG/xeigtstd - @echo DGEBAL: Testing the balancing of a DOUBLE PRECISION general matrix - ./EIG/xeigtstd < dbal.in > $@ 2>&1 - -dbak.out: dbak.in EIG/xeigtstd - @echo DGEBAK: Testing the back transformation of a DOUBLE PRECISION balanced matrix - ./EIG/xeigtstd < dbak.in > $@ 2>&1 - -dgbal.out: dgbal.in EIG/xeigtstd - @echo DGGBAL: Testing the balancing of a pair of DOUBLE PRECISION general matrices - ./EIG/xeigtstd < dgbal.in > $@ 2>&1 - -dgbak.out: dgbak.in EIG/xeigtstd - @echo DGGBAK: Testing the back transformation of a pair of DOUBLE PRECISION balanced matrices - ./EIG/xeigtstd < dgbak.in > $@ 2>&1 - -dbb.out: dbb.in EIG/xeigtstd - @echo DBB: Testing banded Singular Value Decomposition routines - ./EIG/xeigtstd < dbb.in > $@ 2>&1 - -dglm.out: glm.in EIG/xeigtstd - @echo GLM: Testing Generalized Linear Regression Model routines - ./EIG/xeigtstd < glm.in > $@ 2>&1 - -dgqr.out: gqr.in EIG/xeigtstd - @echo GQR: Testing Generalized QR and RQ factorization routines - ./EIG/xeigtstd < gqr.in > $@ 2>&1 - -dgsv.out: gsv.in EIG/xeigtstd - @echo GSV: Testing Generalized Singular Value Decomposition routines - ./EIG/xeigtstd < gsv.in > $@ 2>&1 - -dcsd.out: csd.in EIG/xeigtstd - @echo CSD: Testing CS Decomposition routines - ./EIG/xeigtstd < csd.in > $@ 2>&1 - -dlse.out: lse.in EIG/xeigtstd - @echo LSE: Testing Constrained Linear Least Squares routines - ./EIG/xeigtstd < lse.in > $@ 2>&1 - -ddmd.out: ddmd.in EIG/xdmdeigtstd - @echo DMD: Testing Dynamic Mode Decomposition routines - ./EIG/xdmdeigtstd < ddmd.in > $@ 2>&1 -# -# ======== COMPLEX16 EIG TESTS =========================== - -znep.out: nep.in EIG/xeigtstz - @echo NEP: Testing Nonsymmetric Eigenvalue Problem routines - ./EIG/xeigtstz < nep.in > $@ 2>&1 - -zsep.out: sep.in EIG/xeigtstz - @echo SEP: Testing Symmetric Eigenvalue Problem routines - ./EIG/xeigtstz < sep.in > $@ 2>&1 - -zse2.out: se2.in EIG/xeigtstz - @echo SEP: Testing Symmetric Eigenvalue Problem routines - ./EIG/xeigtstz < se2.in > $@ 2>&1 - -zsvd.out: svd.in EIG/xeigtstz - @echo SVD: Testing Singular Value Decomposition routines - ./EIG/xeigtstz < svd.in > $@ 2>&1 - -zec.out: zec.in EIG/xeigtstz - @echo ZEC: Testing COMPLEX16 Eigen Condition Routines - ./EIG/xeigtstz < zec.in > $@ 2>&1 - -zed.out: zed.in EIG/xeigtstz - @echo ZES: Testing COMPLEX16 Nonsymmetric Schur Form Driver - ./EIG/xeigtstz < zed.in > $@ 2>&1 - -zgg.out: zgg.in EIG/xeigtstz - @echo ZGG: Testing COMPLEX16 Nonsymmetric Generalized Eigenvalue Problem routines - ./EIG/xeigtstz < zgg.in > $@ 2>&1 - -zgd.out: zgd.in EIG/xeigtstz - @echo ZGD: Testing COMPLEX16 Nonsymmetric Generalized Eigenvalue Problem driver routines - ./EIG/xeigtstz < zgd.in > $@ 2>&1 - -zsb.out: zsb.in EIG/xeigtstz - @echo ZHB: Testing Hermitian Eigenvalue Problem routines - ./EIG/xeigtstz < zsb.in > $@ 2>&1 - -zsg.out: zsg.in EIG/xeigtstz - @echo ZSG: Testing Symmetric Generalized Eigenvalue Problem routines - ./EIG/xeigtstz < zsg.in > $@ 2>&1 - -zbal.out: zbal.in EIG/xeigtstz - @echo ZGEBAL: Testing the balancing of a COMPLEX16 general matrix - ./EIG/xeigtstz < zbal.in > $@ 2>&1 - -zbak.out: zbak.in EIG/xeigtstz - @echo ZGEBAK: Testing the back transformation of a COMPLEX16 balanced matrix - ./EIG/xeigtstz < zbak.in > $@ 2>&1 - -zgbal.out: zgbal.in EIG/xeigtstz - @echo ZGGBAL: Testing the balancing of a pair of COMPLEX general matrices - ./EIG/xeigtstz < zgbal.in > $@ 2>&1 - -zgbak.out: zgbak.in EIG/xeigtstz - @echo ZGGBAK: Testing the back transformation of a pair of COMPLEX16 balanced matrices - ./EIG/xeigtstz < zgbak.in > $@ 2>&1 - -zbb.out: zbb.in EIG/xeigtstz - @echo ZBB: Testing banded Singular Value Decomposition routines - ./EIG/xeigtstz < zbb.in > $@ 2>&1 - -zglm.out: glm.in EIG/xeigtstz - @echo GLM: Testing Generalized Linear Regression Model routines - ./EIG/xeigtstz < glm.in > $@ 2>&1 - -zgqr.out: gqr.in EIG/xeigtstz - @echo GQR: Testing Generalized QR and RQ factorization routines - ./EIG/xeigtstz < gqr.in > $@ 2>&1 - -zgsv.out: gsv.in EIG/xeigtstz - @echo GSV: Testing Generalized Singular Value Decomposition routines - ./EIG/xeigtstz < gsv.in > $@ 2>&1 - -zcsd.out: csd.in EIG/xeigtstz - @echo CSD: Testing CS Decomposition routines - ./EIG/xeigtstz < csd.in > $@ 2>&1 - -zlse.out: lse.in EIG/xeigtstz - @echo LSE: Testing Constrained Linear Least Squares routines - ./EIG/xeigtstz < lse.in > $@ 2>&1 - -zdmd.out: zdmd.in EIG/xdmdeigtstz - @echo DMD: Testing Dynamic Mode Decomposition routines - ./EIG/xdmdeigtstz < zdmd.in > $@ 2>&1 -# ============================================================================== - -LIN/xlintsts: $(FRCLIN) $(FRC) - $(MAKE) -C LIN xlintsts - -LIN/xlintstc: $(FRCLIN) $(FRC) - $(MAKE) -C LIN xlintstc - -LIN/xlintstd: $(FRCLIN) $(FRC) - $(MAKE) -C LIN xlintstd - -LIN/xlintstz: $(FRCLIN) $(FRC) - $(MAKE) -C LIN xlintstz +single: xeigtsts xdmdeigtsts test_sgges3_scaling +complex: xeigtstc xdmdeigtstc test_cgges3_scaling +double: xeigtstd xdmdeigtstd test_dgges3_scaling +complex16: xeigtstz xdmdeigtstz test_zgges3_scaling -LIN/xlintstrfs: $(FRCLIN) $(FRC) - $(MAKE) -C LIN xlintstrfs +xdmdeigtsts: $(SDMDEIGTST) $(AEIGTST) $(TMGLIB) ../$(LAPACKLIB) $(BLASLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -LIN/xlintstrfc: $(FRCLIN) $(FRC) - $(MAKE) -C LIN xlintstrfc +xdmdeigtstc: $(CDMDEIGTST) $(AEIGTST) $(TMGLIB) ../$(LAPACKLIB) $(BLASLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -LIN/xlintstrfd: $(FRCLIN) $(FRC) - $(MAKE) -C LIN xlintstrfd +xdmdeigtstd: $(DDMDEIGTST) $(AEIGTST) $(TMGLIB) ../$(LAPACKLIB) $(BLASLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -LIN/xlintstrfz: $(FRCLIN) $(FRC) - $(MAKE) -C LIN xlintstrfz +xdmdeigtstz: $(ZDMDEIGTST) $(AEIGTST) $(TMGLIB) ../$(LAPACKLIB) $(BLASLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -LIN/xlintstds: $(FRCLIN) $(FRC) - $(MAKE) -C LIN xlintstds +xeigtsts: $(SEIGTST) $(SCIGTST) $(AEIGTST) $(TMGLIB) ../$(LAPACKLIB) $(BLASLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -LIN/xlintstzc: $(FRCLIN) $(FRC) - $(MAKE) -C LIN xlintstzc +xeigtstc: $(CEIGTST) $(SCIGTST) $(AEIGTST) $(TMGLIB) ../$(LAPACKLIB) $(BLASLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -EIG/xeigtsts: $(FRCEIG) $(FRC) - $(MAKE) -C EIG xeigtsts +xeigtstd: $(DEIGTST) $(DZIGTST) $(AEIGTST) $(TMGLIB) ../$(LAPACKLIB) $(BLASLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -EIG/xdmdeigtsts: $(FRCEIG) $(FRC) - $(MAKE) -C EIG xdmdeigtsts +xeigtstz: $(ZEIGTST) $(DZIGTST) $(AEIGTST) $(TMGLIB) ../$(LAPACKLIB) $(BLASLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -EIG/xeigtstc: $(FRCEIG) $(FRC) - $(MAKE) -C EIG xeigtstc +test_sgges3_scaling: test_sgges3_scaling.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -EIG/xdmdeigtstc: $(FRCEIG) $(FRC) - $(MAKE) -C EIG xdmdeigtstc +test_dgges3_scaling: test_dgges3_scaling.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -EIG/xeigtstd: $(FRCEIG) $(FRC) - $(MAKE) -C EIG xeigtstd +test_cgges3_scaling: test_cgges3_scaling.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -EIG/xdmdeigtstd: $(FRCEIG) $(FRC) - $(MAKE) -C EIG xdmdeigtstd +test_zgges3_scaling: test_zgges3_scaling.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -EIG/xeigtstz: $(FRCEIG) $(FRC) - $(MAKE) -C EIG xeigtstz +test_sgesvj_emptsw: test_sgesvj_emptsw.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -EIG/xdmdeigtstz: $(FRCEIG) $(FRC) - $(MAKE) -C EIG xdmdeigtstz +test_dgesvj_emptsw: test_dgesvj_emptsw.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -.PHONY: clean cleantest -clean: cleantest -cleantest: - rm -f *.out core +test_cgesvj_emptsw: test_cgesvj_emptsw.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -FRCLIN: - @FRCLIN=$(FRCLIN) +test_zgesvj_emptsw: test_zgesvj_emptsw.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ -FRCEIG: - @FRCEIG=$(FRCEIG) +$(SDMDEIGTST): $(FRC) +$(CDMDEIGTST): $(FRC) +$(DDMDEIGTST): $(FRC) +$(ZDMDEIGTST): $(FRC) +$(AEIGTST): $(FRC) +$(SCIGTST): $(FRC) +$(DZIGTST): $(FRC) +$(SEIGTST): $(FRC) +$(CEIGTST): $(FRC) +$(DEIGTST): $(FRC) +$(ZEIGTST): $(FRC) FRC: @FRC=$(FRC) -.NOTPARALLEL: +.PHONY: clean cleanobj cleanexe +clean: cleanobj cleanexe +cleanobj: + rm -f *.o +cleanexe: + rm -f xeigtst* xdmdeigtst* + +schkee.o: schkee.F + $(FC) $(FFLAGS_DRV) -c -o $@ $< +dchkee.o: dchkee.F + $(FC) $(FFLAGS_DRV) -c -o $@ $< +cchkee.o: cchkee.F + $(FC) $(FFLAGS_DRV) -c -o $@ $< +zchkee.o: zchkee.F + $(FC) $(FFLAGS_DRV) -c -o $@ $< +schkdmd.o: schkdmd.f90 + $(FC) $(FFLAGS_DRV) -c -o $@ $< +cchkdmd.o: cchkdmd.f90 + $(FC) $(FFLAGS_DRV) -c -o $@ $< +dchkdmd.o: dchkdmd.f90 + $(FC) $(FFLAGS_DRV) -c -o $@ $< +zchkdmd.o: zchkdmd.f90 + $(FC) $(FFLAGS_DRV) -c -o $@ $< diff --git a/lapack-netlib/TESTING/test_cgesvj_emptsw.f90 b/lapack-netlib/TESTING/test_cgesvj_emptsw.f90 new file mode 100644 index 0000000000..3f6426fbbf --- /dev/null +++ b/lapack-netlib/TESTING/test_cgesvj_emptsw.f90 @@ -0,0 +1,117 @@ +! Coverage driver for the EMPTSW integer-overflow fix in CGESVJ/CGSVJ0 +! (issue #1312: EMPTSW = N*(N-1)/2 overflows 32-bit arithmetic for +! N >= 46342, so it is computed in a factored form that never +! overflows). +! +! CGSVJ0 is only reached through CGESVJ's triangular (JOBA='L'/'U') +! blocked path for N > 64, which the xeigtstc SVD tests (JOBA='G') +! never exercise, even with the N=66 pair in TESTING/svd.in. This +! driver therefore calls CGESVJ with N > 64 lower- and upper-triangular +! matrices (even and odd N), which takes the blocked CGESVJ -> CGSVJ0 +! path and covers the fixed lines in both files. It validates the +! live factorization directly (residual and orthogonality), so there +! is no replica of the EMPTSW expression here to go stale. +program test_cgesvj_emptsw + use, intrinsic :: iso_fortran_env, only: sp => real32 + implicit none + integer, parameter :: neven = 66, nodd = 65 + integer, parameter :: lw = 3*neven, lrw = 2*neven + complex(sp) :: a_even(neven,neven), a0_even(neven,neven) + complex(sp) :: v_even(neven,neven) + complex(sp) :: a_odd(nodd,nodd), a0_odd(nodd,nodd) + complex(sp) :: v_odd(nodd,nodd) + complex(sp) :: cwork(lw) + real(sp) :: sva_even(neven), sva_odd(nodd), rwork(lrw) + real(sp), external :: slamch + external :: cgesvj + integer :: i, j, info + integer :: failures + + failures = 0 + + do j = 1, neven + do i = 1, neven + if (i == j) then + a_even(i,j) = cmplx(2.0_sp+0.01_sp*real(i,sp), 0.02_sp*real(i,sp), sp) + else if (i > j) then + a_even(i,j) = cmplx(0.1_sp/real(abs(i-j)+1,sp), & + 0.05_sp/real(abs(i-j)+1,sp), sp) + else + a_even(i,j) = cmplx(0.0_sp, 0.0_sp, sp) + end if + end do + end do + a0_even = a_even + call cgesvj('L','U','V',neven,neven,a_even,neven,sva_even,neven, & + v_even,neven,cwork,lw,rwork,lrw,info) + call check_svd('even', a0_even, a_even, v_even, sva_even, info, & + failures) + + do j = 1, nodd + do i = 1, nodd + if (i == j) then + a_odd(i,j) = cmplx(2.0_sp+0.01_sp*real(i,sp), 0.02_sp*real(i,sp), sp) + else if (i < j) then + a_odd(i,j) = cmplx(0.1_sp/real(abs(i-j)+1,sp), & + 0.05_sp/real(abs(i-j)+1,sp), sp) + else + a_odd(i,j) = cmplx(0.0_sp, 0.0_sp, sp) + end if + end do + end do + a0_odd = a_odd + call cgesvj('U','U','V',nodd,nodd,a_odd,nodd,sva_odd,nodd, & + v_odd,nodd,cwork,lw,rwork,lrw,info) + call check_svd('odd ', a0_odd, a_odd, v_odd, sva_odd, info, failures) + + print '(a,i0)', 'CGESVJ EMPTSW failures = ', failures + if (failures /= 0) stop 1 + +contains + + subroutine check_svd(tag, a0, u, v, sva, info, failures) + character(*), intent(in) :: tag + complex(sp), intent(in) :: a0(:,:), u(:,:), v(:,:) + real(sp), intent(in) :: sva(:) + integer, intent(in) :: info + integer, intent(inout) :: failures + integer :: n, i, j + complex(sp), allocatable :: us(:,:), res(:,:), eye(:,:) + real(sp) :: anorm, rerr, oerr_u, oerr_v, tol, eps + + n = size(sva) + eps = slamch('Precision') + tol = real(100*n, sp)*eps + if (info /= 0) then + print '(a,a,a,i0)', 'CGESVJ EMPTSW (', tag, ') INFO = ', info + failures = failures + 1 + return + end if + do i = 1, n + if (sva(i) <= 0.0_sp) failures = failures + 1 + if (i > 1) then + if (sva(i-1) < sva(i)) failures = failures + 1 + end if + end do + allocate(us(n,n), res(n,n), eye(n,n)) + anorm = maxval(abs(a0)) + do j = 1, n + do i = 1, n + us(i,j) = u(i,j)*sva(j) + end do + end do + res = a0 - matmul(us, conjg(transpose(v))) + rerr = maxval(abs(res)) / anorm + eye = (0.0_sp, 0.0_sp) + do i = 1, n + eye(i,i) = (1.0_sp, 0.0_sp) + end do + oerr_u = maxval(abs(matmul(conjg(transpose(u)), u) - eye)) + oerr_v = maxval(abs(matmul(conjg(transpose(v)), v) - eye)) + print '(a,a,a,3es12.4)', 'CGESVJ EMPTSW (', tag, ') res/orthU/orthV = ', & + rerr, oerr_u, oerr_v + if (.not. (rerr <= tol .and. oerr_u <= tol .and. oerr_v <= tol)) & + failures = failures + 1 + end subroutine + +end program diff --git a/lapack-netlib/TESTING/test_dgesvj_emptsw.f90 b/lapack-netlib/TESTING/test_dgesvj_emptsw.f90 new file mode 100644 index 0000000000..1254369a5f --- /dev/null +++ b/lapack-netlib/TESTING/test_dgesvj_emptsw.f90 @@ -0,0 +1,113 @@ +! Coverage driver for the EMPTSW integer-overflow fix in DGESVJ/DGSVJ0 +! (issue #1312: EMPTSW = N*(N-1)/2 overflows 32-bit arithmetic for +! N >= 46342, so it is computed in a factored form that never +! overflows). +! +! DGSVJ0 is only reached through DGESVJ's triangular (JOBA='L'/'U') +! blocked path for N > 64, which the xeigtstd SVD tests (JOBA='G') +! never exercise, even with the N=66 pair in TESTING/svd.in. This +! driver therefore calls DGESVJ with N > 64 lower- and upper-triangular +! matrices (even and odd N), which takes the blocked DGESVJ -> DGSVJ0 +! path and covers the fixed lines in both files. It validates the +! live factorization directly (residual and orthogonality), so there +! is no replica of the EMPTSW expression here to go stale. +program test_dgesvj_emptsw + use, intrinsic :: iso_fortran_env, only: dp => real64 + implicit none + integer, parameter :: neven = 66, nodd = 65, lw = 3*neven + real(dp) :: a_even(neven,neven), a0_even(neven,neven) + real(dp) :: v_even(neven,neven), sva_even(neven) + real(dp) :: a_odd(nodd,nodd), a0_odd(nodd,nodd) + real(dp) :: v_odd(nodd,nodd), sva_odd(nodd) + real(dp) :: work(lw) + real(dp), external :: dlamch + external :: dgesvj + integer :: i, j, info + integer :: failures + + failures = 0 + + do j = 1, neven + do i = 1, neven + if (i == j) then + a_even(i,j) = 2.0_dp + 0.01_dp*real(i,dp) + else if (i > j) then + a_even(i,j) = 0.1_dp/real(abs(i-j)+1,dp) + else + a_even(i,j) = 0.0_dp + end if + end do + end do + a0_even = a_even + call dgesvj('L','U','V',neven,neven,a_even,neven,sva_even,neven, & + v_even,neven,work,lw,info) + call check_svd('even', a0_even, a_even, v_even, sva_even, info, & + failures) + + do j = 1, nodd + do i = 1, nodd + if (i == j) then + a_odd(i,j) = 2.0_dp + 0.01_dp*real(i,dp) + else if (i < j) then + a_odd(i,j) = 0.1_dp/real(abs(i-j)+1,dp) + else + a_odd(i,j) = 0.0_dp + end if + end do + end do + a0_odd = a_odd + call dgesvj('U','U','V',nodd,nodd,a_odd,nodd,sva_odd,nodd, & + v_odd,nodd,work,lw,info) + call check_svd('odd ', a0_odd, a_odd, v_odd, sva_odd, info, failures) + + print '(a,i0)', 'DGESVJ EMPTSW failures = ', failures + if (failures /= 0) stop 1 + +contains + + subroutine check_svd(tag, a0, u, v, sva, info, failures) + character(*), intent(in) :: tag + real(dp), intent(in) :: a0(:,:), u(:,:), v(:,:) + real(dp), intent(in) :: sva(:) + integer, intent(in) :: info + integer, intent(inout) :: failures + integer :: n, i, j + real(dp), allocatable :: us(:,:), res(:,:), eye(:,:) + real(dp) :: anorm, rerr, oerr_u, oerr_v, tol, eps + + n = size(sva) + eps = dlamch('Precision') + tol = real(100*n, dp)*eps + if (info /= 0) then + print '(a,a,a,i0)', 'DGESVJ EMPTSW (', tag, ') INFO = ', info + failures = failures + 1 + return + end if + do i = 1, n + if (sva(i) <= 0.0_dp) failures = failures + 1 + if (i > 1) then + if (sva(i-1) < sva(i)) failures = failures + 1 + end if + end do + allocate(us(n,n), res(n,n), eye(n,n)) + anorm = maxval(abs(a0)) + do j = 1, n + do i = 1, n + us(i,j) = u(i,j)*sva(j) + end do + end do + res = a0 - matmul(us, transpose(v)) + rerr = maxval(abs(res)) / anorm + eye = 0.0_dp + do i = 1, n + eye(i,i) = 1.0_dp + end do + oerr_u = maxval(abs(matmul(transpose(u), u) - eye)) + oerr_v = maxval(abs(matmul(transpose(v), v) - eye)) + print '(a,a,a,3es12.4)', 'DGESVJ EMPTSW (', tag, ') res/orthU/orthV = ', & + rerr, oerr_u, oerr_v + if (.not. (rerr <= tol .and. oerr_u <= tol .and. oerr_v <= tol)) & + failures = failures + 1 + end subroutine + +end program diff --git a/lapack-netlib/TESTING/test_sgesvj_emptsw.f90 b/lapack-netlib/TESTING/test_sgesvj_emptsw.f90 new file mode 100644 index 0000000000..ee2ea8459a --- /dev/null +++ b/lapack-netlib/TESTING/test_sgesvj_emptsw.f90 @@ -0,0 +1,113 @@ +! Coverage driver for the EMPTSW integer-overflow fix in SGESVJ/SGSVJ0 +! (issue #1312: EMPTSW = N*(N-1)/2 overflows 32-bit arithmetic for +! N >= 46342, so it is computed in a factored form that never +! overflows). +! +! SGSVJ0 is only reached through SGESVJ's triangular (JOBA='L'/'U') +! blocked path for N > 64, which the xeigtsts SVD tests (JOBA='G') +! never exercise, even with the N=66 pair in TESTING/svd.in. This +! driver therefore calls SGESVJ with N > 64 lower- and upper-triangular +! matrices (even and odd N), which takes the blocked SGESVJ -> SGSVJ0 +! path and covers the fixed lines in both files. It validates the +! live factorization directly (residual and orthogonality), so there +! is no replica of the EMPTSW expression here to go stale. +program test_sgesvj_emptsw + use, intrinsic :: iso_fortran_env, only: sp => real32 + implicit none + integer, parameter :: neven = 66, nodd = 65, lw = 3*neven + real(sp) :: a_even(neven,neven), a0_even(neven,neven) + real(sp) :: v_even(neven,neven), sva_even(neven) + real(sp) :: a_odd(nodd,nodd), a0_odd(nodd,nodd) + real(sp) :: v_odd(nodd,nodd), sva_odd(nodd) + real(sp) :: work(lw) + real(sp), external :: slamch + external :: sgesvj + integer :: i, j, info + integer :: failures + + failures = 0 + + do j = 1, neven + do i = 1, neven + if (i == j) then + a_even(i,j) = 2.0_sp + 0.01_sp*real(i,sp) + else if (i > j) then + a_even(i,j) = 0.1_sp/real(abs(i-j)+1,sp) + else + a_even(i,j) = 0.0_sp + end if + end do + end do + a0_even = a_even + call sgesvj('L','U','V',neven,neven,a_even,neven,sva_even,neven, & + v_even,neven,work,lw,info) + call check_svd('even', a0_even, a_even, v_even, sva_even, info, & + failures) + + do j = 1, nodd + do i = 1, nodd + if (i == j) then + a_odd(i,j) = 2.0_sp + 0.01_sp*real(i,sp) + else if (i < j) then + a_odd(i,j) = 0.1_sp/real(abs(i-j)+1,sp) + else + a_odd(i,j) = 0.0_sp + end if + end do + end do + a0_odd = a_odd + call sgesvj('U','U','V',nodd,nodd,a_odd,nodd,sva_odd,nodd, & + v_odd,nodd,work,lw,info) + call check_svd('odd ', a0_odd, a_odd, v_odd, sva_odd, info, failures) + + print '(a,i0)', 'SGESVJ EMPTSW failures = ', failures + if (failures /= 0) stop 1 + +contains + + subroutine check_svd(tag, a0, u, v, sva, info, failures) + character(*), intent(in) :: tag + real(sp), intent(in) :: a0(:,:), u(:,:), v(:,:) + real(sp), intent(in) :: sva(:) + integer, intent(in) :: info + integer, intent(inout) :: failures + integer :: n, i, j + real(sp), allocatable :: us(:,:), res(:,:), eye(:,:) + real(sp) :: anorm, rerr, oerr_u, oerr_v, tol, eps + + n = size(sva) + eps = slamch('Precision') + tol = real(100*n, sp)*eps + if (info /= 0) then + print '(a,a,a,i0)', 'SGESVJ EMPTSW (', tag, ') INFO = ', info + failures = failures + 1 + return + end if + do i = 1, n + if (sva(i) <= 0.0_sp) failures = failures + 1 + if (i > 1) then + if (sva(i-1) < sva(i)) failures = failures + 1 + end if + end do + allocate(us(n,n), res(n,n), eye(n,n)) + anorm = maxval(abs(a0)) + do j = 1, n + do i = 1, n + us(i,j) = u(i,j)*sva(j) + end do + end do + res = a0 - matmul(us, transpose(v)) + rerr = maxval(abs(res)) / anorm + eye = 0.0_sp + do i = 1, n + eye(i,i) = 1.0_sp + end do + oerr_u = maxval(abs(matmul(transpose(u), u) - eye)) + oerr_v = maxval(abs(matmul(transpose(v), v) - eye)) + print '(a,a,a,3es12.4)', 'SGESVJ EMPTSW (', tag, ') res/orthU/orthV = ', & + rerr, oerr_u, oerr_v + if (.not. (rerr <= tol .and. oerr_u <= tol .and. oerr_v <= tol)) & + failures = failures + 1 + end subroutine + +end program diff --git a/lapack-netlib/TESTING/test_zgesvj_emptsw.f90 b/lapack-netlib/TESTING/test_zgesvj_emptsw.f90 new file mode 100644 index 0000000000..373415a9b9 --- /dev/null +++ b/lapack-netlib/TESTING/test_zgesvj_emptsw.f90 @@ -0,0 +1,117 @@ +! Coverage driver for the EMPTSW integer-overflow fix in ZGESVJ/ZGSVJ0 +! (issue #1312: EMPTSW = N*(N-1)/2 overflows 32-bit arithmetic for +! N >= 46342, so it is computed in a factored form that never +! overflows). +! +! ZGSVJ0 is only reached through ZGESVJ's triangular (JOBA='L'/'U') +! blocked path for N > 64, which the xeigtstz SVD tests (JOBA='G') +! never exercise, even with the N=66 pair in TESTING/svd.in. This +! driver therefore calls ZGESVJ with N > 64 lower- and upper-triangular +! matrices (even and odd N), which takes the blocked ZGESVJ -> ZGSVJ0 +! path and covers the fixed lines in both files. It validates the +! live factorization directly (residual and orthogonality), so there +! is no replica of the EMPTSW expression here to go stale. +program test_zgesvj_emptsw + use, intrinsic :: iso_fortran_env, only: dp => real64 + implicit none + integer, parameter :: neven = 66, nodd = 65 + integer, parameter :: lw = 3*neven, lrw = 2*neven + complex(dp) :: a_even(neven,neven), a0_even(neven,neven) + complex(dp) :: v_even(neven,neven) + complex(dp) :: a_odd(nodd,nodd), a0_odd(nodd,nodd) + complex(dp) :: v_odd(nodd,nodd) + complex(dp) :: cwork(lw) + real(dp) :: sva_even(neven), sva_odd(nodd), rwork(lrw) + real(dp), external :: dlamch + external :: zgesvj + integer :: i, j, info + integer :: failures + + failures = 0 + + do j = 1, neven + do i = 1, neven + if (i == j) then + a_even(i,j) = cmplx(2.0_dp+0.01_dp*real(i,dp), 0.02_dp*real(i,dp), dp) + else if (i > j) then + a_even(i,j) = cmplx(0.1_dp/real(abs(i-j)+1,dp), & + 0.05_dp/real(abs(i-j)+1,dp), dp) + else + a_even(i,j) = cmplx(0.0_dp, 0.0_dp, dp) + end if + end do + end do + a0_even = a_even + call zgesvj('L','U','V',neven,neven,a_even,neven,sva_even,neven, & + v_even,neven,cwork,lw,rwork,lrw,info) + call check_svd('even', a0_even, a_even, v_even, sva_even, info, & + failures) + + do j = 1, nodd + do i = 1, nodd + if (i == j) then + a_odd(i,j) = cmplx(2.0_dp+0.01_dp*real(i,dp), 0.02_dp*real(i,dp), dp) + else if (i < j) then + a_odd(i,j) = cmplx(0.1_dp/real(abs(i-j)+1,dp), & + 0.05_dp/real(abs(i-j)+1,dp), dp) + else + a_odd(i,j) = cmplx(0.0_dp, 0.0_dp, dp) + end if + end do + end do + a0_odd = a_odd + call zgesvj('U','U','V',nodd,nodd,a_odd,nodd,sva_odd,nodd, & + v_odd,nodd,cwork,lw,rwork,lrw,info) + call check_svd('odd ', a0_odd, a_odd, v_odd, sva_odd, info, failures) + + print '(a,i0)', 'ZGESVJ EMPTSW failures = ', failures + if (failures /= 0) stop 1 + +contains + + subroutine check_svd(tag, a0, u, v, sva, info, failures) + character(*), intent(in) :: tag + complex(dp), intent(in) :: a0(:,:), u(:,:), v(:,:) + real(dp), intent(in) :: sva(:) + integer, intent(in) :: info + integer, intent(inout) :: failures + integer :: n, i, j + complex(dp), allocatable :: us(:,:), res(:,:), eye(:,:) + real(dp) :: anorm, rerr, oerr_u, oerr_v, tol, eps + + n = size(sva) + eps = dlamch('Precision') + tol = real(100*n, dp)*eps + if (info /= 0) then + print '(a,a,a,i0)', 'ZGESVJ EMPTSW (', tag, ') INFO = ', info + failures = failures + 1 + return + end if + do i = 1, n + if (sva(i) <= 0.0_dp) failures = failures + 1 + if (i > 1) then + if (sva(i-1) < sva(i)) failures = failures + 1 + end if + end do + allocate(us(n,n), res(n,n), eye(n,n)) + anorm = maxval(abs(a0)) + do j = 1, n + do i = 1, n + us(i,j) = u(i,j)*sva(j) + end do + end do + res = a0 - matmul(us, conjg(transpose(v))) + rerr = maxval(abs(res)) / anorm + eye = (0.0_dp, 0.0_dp) + do i = 1, n + eye(i,i) = (1.0_dp, 0.0_dp) + end do + oerr_u = maxval(abs(matmul(conjg(transpose(u)), u) - eye)) + oerr_v = maxval(abs(matmul(conjg(transpose(v)), v) - eye)) + print '(a,a,a,3es12.4)', 'ZGESVJ EMPTSW (', tag, ') res/orthU/orthV = ', & + rerr, oerr_u, oerr_v + if (.not. (rerr <= tol .and. oerr_u <= tol .and. oerr_v <= tol)) & + failures = failures + 1 + end subroutine + +end program From 87bc605dab53c5d47a73e069a2afaf911e7e206d Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 30 Oct 2026 19:14:35 +0100 Subject: [PATCH 05/11] Add cleanup of test_gges3_scaling and test_gesvj_emptsw binaries --- lapack-netlib/TESTING/EIG/Makefile | 34 +++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/lapack-netlib/TESTING/EIG/Makefile b/lapack-netlib/TESTING/EIG/Makefile index f685c7b0e5..ffb5493ae9 100644 --- a/lapack-netlib/TESTING/EIG/Makefile +++ b/lapack-netlib/TESTING/EIG/Makefile @@ -130,10 +130,10 @@ ZDMDEIGTST = zchkdmd.o all: single complex double complex16 .PHONY: single complex double complex16 -single: xeigtsts xdmdeigtsts -complex: xeigtstc xdmdeigtstc -double: xeigtstd xdmdeigtstd -complex16: xeigtstz xdmdeigtstz +single: xeigtsts xdmdeigtsts test_sgges3_scaling +complex: xeigtstc xdmdeigtstc test_cgges3_scaling +double: xeigtstd xdmdeigtstd test_dgges3_scaling +complex16: xeigtstz xdmdeigtstz test_zgges3_scaling xdmdeigtsts: $(SDMDEIGTST) $(AEIGTST) $(TMGLIB) ../$(LAPACKLIB) $(BLASLIB) $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ @@ -159,6 +159,30 @@ xeigtstd: $(DEIGTST) $(DZIGTST) $(AEIGTST) $(TMGLIB) ../$(LAPACKLIB) $(BLASLIB) xeigtstz: $(ZEIGTST) $(DZIGTST) $(AEIGTST) $(TMGLIB) ../$(LAPACKLIB) $(BLASLIB) $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ +test_sgges3_scaling: test_sgges3_scaling.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ + +test_dgges3_scaling: test_dgges3_scaling.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ + +test_cgges3_scaling: test_cgges3_scaling.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ + +test_zgges3_scaling: test_zgges3_scaling.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ + +test_sgesvj_emptsw: test_sgesvj_emptsw.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ + +test_dgesvj_emptsw: test_dgesvj_emptsw.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ + +test_cgesvj_emptsw: test_cgesvj_emptsw.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ + +test_zgesvj_emptsw: test_zgesvj_emptsw.f90 ../$(LAPACKLIB) + $(LOADER) $(FFLAGS) $(LDFLAGS) -o $@ $^ + $(SDMDEIGTST): $(FRC) $(CDMDEIGTST): $(FRC) $(DDMDEIGTST): $(FRC) @@ -179,7 +203,7 @@ clean: cleanobj cleanexe cleanobj: rm -f *.o cleanexe: - rm -f xeigtst* xdmdeigtst* + rm -f xeigtst* xdmdeigtst* test_?gges3_scaling test_?gesvj_emptsw schkee.o: schkee.F $(FC) $(FFLAGS_DRV) -c -o $@ $< From d0e13d7512c9f777d6b198e3c25903c26ae8f0e2 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 30 Oct 2026 23:48:41 +0100 Subject: [PATCH 06/11] restore --- lapack-netlib/TESTING/CMakeLists.txt | 571 +++++++++++++++++++++------ 1 file changed, 451 insertions(+), 120 deletions(-) diff --git a/lapack-netlib/TESTING/CMakeLists.txt b/lapack-netlib/TESTING/CMakeLists.txt index 45c83d1724..3ea59f6fc3 100644 --- a/lapack-netlib/TESTING/CMakeLists.txt +++ b/lapack-netlib/TESTING/CMakeLists.txt @@ -1,112 +1,28 @@ -######################################################################## -# This is the makefile for the eigenvalue test program from LAPACK. -# The test files are organized as follows: -# -# AEIGTST -- Auxiliary test routines used in all precisions -# SCIGTST -- Auxiliary test routines used in single precision -# DZIGTST -- Auxiliary test routines used in double precision -# SEIGTST -- Single precision real test routines -# CEIGTST -- Single precision complex test routines -# DEIGTST -- Double precision real test routines -# ZEIGTST -- Double precision complex test routines -# -######################################################################## - -set(AEIGTST - alahdg.f alasum.f alasvm.f alareq.f - ilaenv.f xerbla.f xlaenv.f chkxer.f) - -set(SCIGTST - slafts.f slahd2.f slasum.f slatb9.f sstech.f sstect.f - ssvdch.f ssvdct.f ssxt1.f) - -set(SEIGTST - schkee.F - sbdt01.f sbdt02.f sbdt03.f sbdt04.f sbdt05.f - schkbb.f schkbd.f schkbk.f schkbl.f schkec.f - schkgg.f schkgk.f schkgl.f schkhs.f schksb.f schkst.f schkst2stg.f schksb2stg.f - sckcsd.f sckglm.f sckgqr.f sckgsv.f scklse.f scsdts.f - sdrges.f sdrgev.f sdrges3.f sdrgev3.f sdrgsx.f sdrgvx.f - sdrvbd.f sdrvmr3.f sdrves.f sdrvev.f sdrvsg.f sdrvsg2stg.f - sdrvst.f sdrvst2stg.f sdrvsx.f sdrvvx.f - serrbd.f serrec.f serred.f serrgg.f serrhs.f serrst.f - sget02.f sget10.f sget22.f sget23.f sget24.f sget31.f - sget32.f sget33.f sget34.f sget35.f sget36.f - sget37.f sget38.f sget39.f sget40.f sget51.f sget52.f sget53.f - sget54.f sglmts.f sgqrts.f sgrqts.f sgsvts3.f - shst01.f slarfy.f slarhs.f slatm4.f slctes.f slctsx.f slsets.f sort01.f - sort03.f ssbt21.f ssgt01.f sslect.f sspt21.f sstt21.f - sstt22.f ssyl01.f ssyt21.f ssyt22.f) - -set(SDMDEIGTST schkdmd.f90) - -set(CEIGTST - cchkee.F - cbdt01.f cbdt02.f cbdt03.f cbdt05.f - cchkbb.f cchkbd.f cchkbk.f cchkbl.f cchkec.f - cchkgg.f cchkgk.f cchkgl.f cchkhb.f cchkhs.f cchkst.f cchkst2stg.f cchkhb2stg.f - cckcsd.f cckglm.f cckgqr.f cckgsv.f ccklse.f ccsdts.f - cdrges.f cdrgev.f cdrges3.f cdrgev3.f cdrgsx.f cdrgvx.f - cdrvbd.f cdrvmr3.f cdrves.f cdrvev.f cdrvsg.f cdrvsg2stg.f - cdrvst.f cdrvst2stg.f cdrvsx.f cdrvvx.f - cerrbd.f cerrec.f cerred.f cerrgg.f cerrhs.f cerrst.f - cget02.f cget10.f cget22.f cget23.f cget24.f - cget35.f cget36.f cget37.f cget38.f cget51.f cget52.f - cget54.f cglmts.f cgqrts.f cgrqts.f cgsvts3.f - chbt21.f chet21.f chet22.f chpt21.f chst01.f - clarfy.f clarhs.f clatm4.f clctes.f clctsx.f clsets.f csbmv.f - csgt01.f cslect.f csyl01.f - cstt21.f cstt22.f cunt01.f cunt03.f) - -set(CDMDEIGTST cchkdmd.f90) - -set(DZIGTST - dlafts.f dlahd2.f dlasum.f dlatb9.f dstech.f dstect.f - dsvdch.f dsvdct.f dsxt1.f) - -set(DEIGTST - dchkee.F - dbdt01.f dbdt02.f dbdt03.f dbdt04.f dbdt05.f - dchkbb.f dchkbd.f dchkbk.f dchkbl.f dchkec.f - dchkgg.f dchkgk.f dchkgl.f dchkhs.f dchksb.f dchkst.f dchkst2stg.f dchksb2stg.f - dckcsd.f dckglm.f dckgqr.f dckgsv.f dcklse.f dcsdts.f - ddrges.f ddrgev.f ddrges3.f ddrgev3.f ddrgsx.f ddrgvx.f - ddrvbd.f ddrvmr3.f ddrves.f ddrvev.f ddrvsg.f ddrvsg2stg.f - ddrvst.f ddrvst2stg.f ddrvsx.f ddrvvx.f - derrbd.f derrec.f derred.f derrgg.f derrhs.f derrst.f - dget02.f dget10.f dget22.f dget23.f dget24.f dget31.f - dget32.f dget33.f dget34.f dget35.f dget36.f - dget37.f dget38.f dget39.f dget40.f dget51.f dget52.f dget53.f - dget54.f dglmts.f dgqrts.f dgrqts.f dgsvts3.f - dhst01.f dlarfy.f dlarhs.f dlatm4.f dlctes.f dlctsx.f dlsets.f dort01.f - dort03.f dsbt21.f dsgt01.f dslect.f dspt21.f dstt21.f - dstt22.f dsyl01.f dsyt21.f dsyt22.f) - -set(DDMDEIGTST dchkdmd.f90) - -set(ZEIGTST - zchkee.F - zbdt01.f zbdt02.f zbdt03.f zbdt05.f - zchkbb.f zchkbd.f zchkbk.f zchkbl.f zchkec.f - zchkgg.f zchkgk.f zchkgl.f zchkhb.f zchkhs.f zchkst.f zchkst2stg.f zchkhb2stg.f - zckcsd.f zckglm.f zckgqr.f zckgsv.f zcklse.f zcsdts.f - zdrges.f zdrgev.f zdrges3.f zdrgev3.f zdrgsx.f zdrgvx.f - zdrvbd.f zdrvmr3.f zdrves.f zdrvev.f zdrvsg.f zdrvsg2stg.f - zdrvst.f zdrvst2stg.f zdrvsx.f zdrvvx.f - zerrbd.f zerrec.f zerred.f zerrgg.f zerrhs.f zerrst.f - zget02.f zget10.f zget22.f zget23.f zget24.f - zget35.f zget36.f zget37.f zget38.f zget51.f zget52.f - zget54.f zglmts.f zgqrts.f zgrqts.f zgsvts3.f - zhbt21.f zhet21.f zhet22.f zhpt21.f zhst01.f - zlarfy.f zlarhs.f zlatm4.f zlctes.f zlctsx.f zlsets.f zsbmv.f - zsgt01.f zslect.f zsyl01.f - zstt21.f zstt22.f zunt01.f zunt03.f) - -set(ZDMDEIGTST zchkdmd.f90) - -macro(add_eig_executable name) - add_executable(${name} ${ARGN}) - target_link_libraries(${name} ${LIBNAMEPREFIX}openblas${LIBNAMESUFFIX}${SUFFIX64_UNDERSCORE}) +enable_language(Fortran) + +enable_testing() + +if(MSVC_VERSION) +# string(REPLACE "/STACK:10000000" "/STACK:900000000000000000" +# CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") + string(REGEX REPLACE "(.*)/STACK:(.*) (.*)" "\\1/STACK:900000000000000000 \\3" + CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") +endif() +add_subdirectory(LIN) +add_subdirectory(EIG) +macro(add_lapack_test output input target) + set(TEST_INPUT "${LAPACK_SOURCE_DIR}/TESTING/${input}") + set(TEST_OUTPUT "${LAPACK_BINARY_DIR}/TESTING/${output}") + string(REPLACE "." "_" input_name ${input}) + set(testName "${target}_${input_name}") + if(EXISTS "${TEST_INPUT}") + add_test(NAME LAPACK-${testName} COMMAND "${CMAKE_COMMAND}" + -DTEST=$ + -DINPUT=${TEST_INPUT} + -DOUTPUT=${TEST_OUTPUT} + -DINTDIR=${CMAKE_CFG_INTDIR} + -P "${LAPACK_SOURCE_DIR}/TESTING/runtest.cmake") + endif() endmacro() if(BUILD_SINGLE) @@ -252,17 +168,432 @@ add_test(NAME LAPACK-test_zgesvj_emptsw COMMAND ${CMAKE_CURRENT_BINARY_DIR}/EIG/ endif() -if(BUILD_DOUBLE) -add_eig_executable(xeigtstd ${DEIGTST} ${DZIGTST} ${AEIGTST}) -add_eig_executable(xdmdeigtstd ${DDMDEIGTST} ${AEIGTST}) -add_eig_executable(test_dgges3_scaling test_dgges3_scaling.f90) -add_eig_executable(test_dgesvj_emptsw test_sgesvj_emptsw.f90) +if(BUILD_SINGLE AND BUILD_DOUBLE) +# +# ======== SINGLE-DOUBLE PROTO LIN TESTS ============== + add_lapack_test(dstest.out dstest.in xlintstds) endif() -if(BUILD_COMPLEX16) -add_eig_executable(xeigtstz ${ZEIGTST} ${DZIGTST} ${AEIGTST}) -add_eig_executable(xdmdeigtstz ${ZDMDEIGTST} ${AEIGTST}) -#add_eig_executable(test_wq_zrwork test_wq_rwork.f) -add_eig_executable(test_zgges3_scaling test_zgges3_scaling.f90) -add_eig_executable(test_zgesvj_emptsw test_sgesvj_emptsw.f90) + +if(BUILD_COMPLEX AND BUILD_COMPLEX16) +# +# ======== COMPLEX-COMPLEX16 LIN TESTS ======================== + add_lapack_test(zctest.out zctest.in xlintstzc) +endif() + +# ============================================================================== +# Only run this test if python 2.7 or greater is found +if(PYTHONINTERP_FOUND) + message(STATUS "Running Summary") + file(COPY ${LAPACK_SOURCE_DIR}/lapack_testing.py DESTINATION ${LAPACK_BINARY_DIR}) + add_test( + NAME LAPACK_Test_Summary + WORKING_DIRECTORY ${LAPACK_BINARY_DIR} + COMMAND ${PYTHON_EXECUTABLE} "lapack_testing.py" + ) +endif() + + +if(WIN32) +FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_helper.ps1 +"if (Test-Path $args[2]) { Remove-Item -Force $args[2] } \n" +"$ErrorActionPreference = \"Stop\"\n" +"Get-Content $args[1] | & \"$($args[0]).exe\" | Out-File $args[2]\n" +"If ((Get-Content $args[2] | %{$_ -match \"FATAL\"}) -contains $true) {\n" +"echo Error\n" +"exit 1\n" +"} else {\n" +"exit 0\n" +"}\n" +) +set(helper_prefix powershell -ExecutionPolicy Bypass "${CMAKE_CURRENT_BINARY_DIR}/test_helper.ps1") +else() +# $1 exec, $2 input, $3 output_result +FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_helper.sh +"rm -f $3\n" +"$1 < $2\n" +"grep -q FATAL $3\n" +"if [ $? -eq 0 ]; then\n" +"echo Error\n" +"exit 1\n" +"else\n" +"exit 0\n" +"fi\n" +) +set(helper_prefix sh "${CMAKE_CURRENT_BINARY_DIR}/test_helper.sh") endif() + +add_test(NAME "REAL_LAPACK_linear_equation_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/stest.in" "${CMAKE_CURRENT_BINARY_DIR}/stest.out" +) +add_test(NAME "COMPLEX_LAPACK_linear_equation_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ctest.in" "${CMAKE_CURRENT_BINARY_DIR}/ctest.out" +) +add_test(NAME "DOUBLE_PRECISION_LAPACK_linear_equation_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN//xlintstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dtest.in" "${CMAKE_CURRENT_BINARY_DIR}/dtest.out" +) +add_test(NAME "COMPLEX16_LAPACK_linear_equation_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN//xlintstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ztest.in" "${CMAKE_CURRENT_BINARY_DIR}/ztest.out" +) + +add_test(NAME "SINGLE-DOUBLE_PRECISION_LAPACK_prototype_linear_equation_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstds" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dstest.in" " ${CMAKE_CURRENT_BINARY_DIR}/dstest.out" +) +# ======== COMPLEX-COMPLEX16 LIN TESTS ======================== + +add_test(NAME "Testing_COMPLEX-COMPLEX16_LAPACK_prototype_linear_equation_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstzc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zctest.in" " ${CMAKE_CURRENT_BINARY_DIR}/zctest.out" +) + +# ======== SINGLE RFP LIN TESTS ======================== + +add_test(NAME "Testing_REAL_LAPACK_RFP_prototype_linear_equation_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstrfs" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/stest_rfp.in" "${CMAKE_CURRENT_BINARY_DIR}/stest_rfp.out" +) + +# ======== COMPLEX16 RFP LIN TESTS ======================== + +add_test(NAME "Testing_DOUBLE_PRECISION_LAPACK_RFP_prototype_linear_equation_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstrfd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dtest_rfp.in" " ${CMAKE_CURRENT_BINARY_DIR}/dtest_rfp.out" +) +# ======== COMPLEX16 RFP LIN TESTS ======================== + +add_test(NAME "Testing_COMPLEX_LAPACK_RFP_prototype_linear_equation_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstrfc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ctest_rfp.in" " ${CMAKE_CURRENT_BINARY_DIR}/ctest_rfp.out" +) + +# ======== COMPLEX16 RFP LIN TESTS ======================== + +add_test(NAME "Testing_COMPLEX16_LAPACK_RFP_prototype_linear_equation_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/LIN/xlintstrfz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ztest_rfp.in" " ${CMAKE_CURRENT_BINARY_DIR}/ztest_rfp.out" +) +# +# +# ======== SINGLE EIG TESTS =========================== +# + +add_test(NAME "SNEP:_Testing_Nonsymmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/nep.in" " ${CMAKE_CURRENT_BINARY_DIR}/snep.out" +) + +add_test(NAME "SSEP:_Testing_Symmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sep.in" " ${CMAKE_CURRENT_BINARY_DIR}/ssep.out" +) + +add_test(NAME "SSE2:_Testing_Symmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/se2.in" " ${CMAKE_CURRENT_BINARY_DIR}/sse2.out" +) + +add_test(NAME "SSVD:_Testing_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/svd.in" " ${CMAKE_CURRENT_BINARY_DIR}/ssvd.out" +) + +add_test(NAME "SSEC:_Testing_REAL_Eigen_Condition_Routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sec.in" " ${CMAKE_CURRENT_BINARY_DIR}/sec.out" +) + +add_test(NAME "SSEV:_Testing_REAL_Nonsymmetric_Eigenvalue_Driver" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sed.in" " ${CMAKE_CURRENT_BINARY_DIR}/sed.out" +) + +add_test(NAME "SGG:_Testing_REAL_Nonsymmetric_Generalized_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sgg.in" " ${CMAKE_CURRENT_BINARY_DIR}/sgg.out" +) + +add_test(NAME "SGD:_Testing_REAL_Nonsymmetric_Generalized_Eigenvalue_Problem_driver_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sgd.in" " ${CMAKE_CURRENT_BINARY_DIR}/sgd.out" +) + +add_test(NAME "SSB:_Testing_REAL_Symmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ssb.in" " ${CMAKE_CURRENT_BINARY_DIR}/ssb.out" +) + +add_test(NAME "SSG:_Testing_REAL_Symmetric_Generalized_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ssg.in" " ${CMAKE_CURRENT_BINARY_DIR}/ssg.out" +) + +add_test(NAME "SGEBAL:_Testing_the_balancing_of_a_REAL_general_matrix" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/sbal.out" +) + +add_test(NAME "SGEBAK:_Testing_the_back_transformation_of_a_REAL_balanced_matrix" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/sbak.out" +) + +add_test(NAME "SGGBAL:_Testing_the_balancing_of_a_pair_of_REAL_general_matrices" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sgbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/sgbal.out" +) + +add_test(NAME "SGGBAK:_Testing_the_back_transformation_of_a_pair_of_REAL_balanced_matrices" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sgbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/sgbak.out" +) + +add_test(NAME "SBB:_Testing_banded_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sbb.in" " ${CMAKE_CURRENT_BINARY_DIR}/sbb.out" +) + +add_test(NAME "SGLM:_Testing_Generalized_Linear_Regression_Model_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/glm.in" " ${CMAKE_CURRENT_BINARY_DIR}/sglm.out" +) + +add_test(NAME "SGQR:_Testing_Generalized_QR_and_RQ_factorization_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gqr.in" " ${CMAKE_CURRENT_BINARY_DIR}/sgqr.out" +) + +add_test(NAME "SGSV:_Testing_Generalized_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gsv.in" "${CMAKE_CURRENT_BINARY_DIR}/sgsv.out" +) + +add_test(NAME "SCSD:_Testing_CS_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csd.in" " ${CMAKE_CURRENT_BINARY_DIR}/scsd.out" +) + +add_test(NAME "SLSE:_Testing_Constrained_Linear_Least_Squares_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtsts" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/lse.in" " ${CMAKE_CURRENT_BINARY_DIR}/slse.out" +) + +# ======== COMPLEX EIG TESTS =========================== + +add_test(NAME "CNEP:_Testing_Nonsymmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/nep.in" " ${CMAKE_CURRENT_BINARY_DIR}/cnep.out" +) + +add_test(NAME "CSEP:_Testing_Symmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sep.in" " ${CMAKE_CURRENT_BINARY_DIR}/csep.out" +) + +add_test(NAME "CSE2:_Testing_Symmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/se2.in" " ${CMAKE_CURRENT_BINARY_DIR}/cse2.out" +) + +add_test(NAME "CSVD:_Testing_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/svd.in" " ${CMAKE_CURRENT_BINARY_DIR}/csvd.out" +) + +add_test(NAME "CEC:_Testing_COMPLEX_Eigen_Condition_Routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cec.in" " ${CMAKE_CURRENT_BINARY_DIR}/cec.out" +) + +add_test(NAME "CES:_Testing_COMPLEX_Nonsymmetric_Schur_Form_Driver" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ced.in" " ${CMAKE_CURRENT_BINARY_DIR}/ced.out" +) + +add_test(NAME "CGG:_Testing_COMPLEX_Nonsymmetric_Generalized_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cgg.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgg.out" +) + +add_test(NAME "CGD:_Testing_COMPLEX_Nonsymmetric_Generalized_Eigenvalue_Problem_driver_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cgd.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgd.out" +) + +add_test(NAME "CHB:_Testing_Hermitian_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csb.in" " ${CMAKE_CURRENT_BINARY_DIR}/csb.out" +) + +add_test(NAME "CSG:_Testing_Symmetric_Generalized_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csg.in" " ${CMAKE_CURRENT_BINARY_DIR}/csg.out" +) + +add_test(NAME "CGEBAL:_Testing_the_balancing_of_a_COMPLEX_general_matrix" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/cbal.out" +) + +add_test(NAME "CGEBAK:_Testing_the_back_transformation_of_a_COMPLEX_balanced_matrix" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/cbak.out" +) + +add_test(NAME "CGGBAL:_Testing_the_balancing_of_a_pair_of_COMPLEX_general_matrices" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cgbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgbal.out" +) + +add_test(NAME "CGGBAK:_Testing_the_back_transformation_of_a_pair_of_COMPLEX_balanced_matrices" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cgbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgbak.out" +) + +add_test(NAME "CBB:_Testing_banded_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/cbb.in" " ${CMAKE_CURRENT_BINARY_DIR}/cbb.out" +) + +add_test(NAME "CGLM:_Testing_Generalized_Linear_Regression_Model_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/glm.in" " ${CMAKE_CURRENT_BINARY_DIR}/cglm.out" +) + +add_test(NAME "CGQR:_Testing_Generalized_QR_and_RQ_factorization_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gqr.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgqr.out" +) + +add_test(NAME "CGSV:_Testing_Generalized_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gsv.in" " ${CMAKE_CURRENT_BINARY_DIR}/cgsv.out" +) + +add_test(NAME "CCSD:_Testing_CS_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csd.in" " ${CMAKE_CURRENT_BINARY_DIR}/ccsd.out" +) + +add_test(NAME "CLSE:_Testing_Constrained_Linear_Least_Squares_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstc" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/lse.in" " ${CMAKE_CURRENT_BINARY_DIR}/clse.out" +) + +# ======== DOUBLE EIG TESTS =========================== + +add_test(NAME "DNEP:_Testing_Nonsymmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/nep.in" " ${CMAKE_CURRENT_BINARY_DIR}/dnep.out" +) + +add_test(NAME "DSEP:_Testing_Symmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sep.in" " ${CMAKE_CURRENT_BINARY_DIR}/dsep.out" +) + +add_test(NAME "DSE2:_Testing_Symmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/se2.in" " ${CMAKE_CURRENT_BINARY_DIR}/dse2.out" +) + +add_test(NAME "DSVD:_Testing_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/svd.in" " ${CMAKE_CURRENT_BINARY_DIR}/dsvd.out" +) + +add_test(NAME "DEC:_Testing_DOUBLE_PRECISION_Eigen_Condition_Routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dec.in" " ${CMAKE_CURRENT_BINARY_DIR}/dec.out" +) + +add_test(NAME "DEV:_Testing_DOUBLE_PRECISION_Nonsymmetric_Eigenvalue_Driver" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/ded.in" " ${CMAKE_CURRENT_BINARY_DIR}/ded.out" +) + +add_test(NAME "DGG:_Testing_DOUBLE_PRECISION_Nonsymmetric_Generalized_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dgg.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgg.out" +) + +add_test(NAME "DGD:_Testing_DOUBLE_PRECISION_Nonsymmetric_Generalized_Eigenvalue_Problem_driver_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dgd.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgd.out" +) + +add_test(NAME "DSB:_Testing_DOUBLE_PRECISION_Symmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dsb.in" " ${CMAKE_CURRENT_BINARY_DIR}/dsb.out" +) + +add_test(NAME "DSG:_Testing_DOUBLE_PRECISION_Symmetric_Generalized_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dsg.in" " ${CMAKE_CURRENT_BINARY_DIR}/dsg.out" +) + +add_test(NAME "DGEBAL:_Testing_the_balancing_of_a_DOUBLE_PRECISION_general_matrix" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/dbal.out" +) + +add_test(NAME "DGEBAK:_Testing_the_back_transformation_of_a_DOUBLE_PRECISION_balanced_matrix" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/dbak.out" +) + +add_test(NAME "DGGBAL:_Testing_the_balancing_of_a_pair_of_DOUBLE_PRECISION_general_matrices" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dgbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgbal.out" +) + +add_test(NAME "DGGBAK:_Testing_the_back_transformation_of_a_pair_of_DOUBLE_PRECISION_balanced_matrices" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dgbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgbak.out" +) + +add_test(NAME "DBB:_Testing_banded_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/dbb.in" " ${CMAKE_CURRENT_BINARY_DIR}/dbb.out" +) + +add_test(NAME "DGLM:_Testing_Generalized_Linear_Regression_Model_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/glm.in" " ${CMAKE_CURRENT_BINARY_DIR}/dglm.out" +) + +add_test(NAME "DGQR:_Testing_Generalized_QR_and_RQ_factorization_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gqr.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgqr.out" +) + +add_test(NAME "DGSV:_Testing_Generalized_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gsv.in" " ${CMAKE_CURRENT_BINARY_DIR}/dgsv.out" +) + +add_test(NAME "DCSD:_Testing_CS_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csd.in" " ${CMAKE_CURRENT_BINARY_DIR}/dcsd.out" +) + +add_test(NAME "DLSE:_Testing_Constrained_Linear_Least_Squares_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstd" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/lse.in" " ${CMAKE_CURRENT_BINARY_DIR}/dlse.out" +) + +# ======== COMPLEX16 EIG TESTS =========================== + +add_test(NAME "ZNEP:_Testing_Nonsymmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/nep.in" " ${CMAKE_CURRENT_BINARY_DIR}/znep.out" +) + +add_test(NAME "ZSEP:_Testing_Symmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/sep.in" " ${CMAKE_CURRENT_BINARY_DIR}/zsep.out" +) + +add_test(NAME "ZSE2:_Testing_Symmetric_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/se2.in" " ${CMAKE_CURRENT_BINARY_DIR}/zse2.out" +) + +add_test(NAME "ZSVD:_Testing_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/svd.in" " ${CMAKE_CURRENT_BINARY_DIR}/zsvd.out" +) + +add_test(NAME "ZEC:_Testing_COMPLEX16_Eigen_Condition_Routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zec.in" " ${CMAKE_CURRENT_BINARY_DIR}/zec.out" +) + +add_test(NAME "ZES:_Testing_COMPLEX16_Nonsymmetric_Schur_Form_Driver" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zed.in" " ${CMAKE_CURRENT_BINARY_DIR}/zed.out" +) + +add_test(NAME "ZGG:_Testing_COMPLEX16_Nonsymmetric_Generalized_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zgg.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgg.out" +) + +add_test(NAME "ZGD:_Testing_COMPLEX16_Nonsymmetric_Generalized_Eigenvalue_Problem_driver_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zgd.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgd.out" +) + +add_test(NAME "ZHB:_Testing_Hermitian_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zsb.in" " ${CMAKE_CURRENT_BINARY_DIR}/zsb.out" +) + +add_test(NAME "ZSG:_Testing_Symmetric_Generalized_Eigenvalue_Problem_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zsg.in" " ${CMAKE_CURRENT_BINARY_DIR}/zsg.out" +) + +add_test(NAME "ZGEBAL:_Testing_the_balancing_of_a_COMPLEX16_general_matrix" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/zbal.out" +) + +add_test(NAME "ZGEBAK:_Testing_the_back_transformation_of_a_COMPLEX16_balanced_matrix" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/zbak.out" +) + +add_test(NAME "ZGGBAL:_Testing_the_balancing_of_a_pair_of_COMPLEX_general_matrices" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zgbal.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgbal.out" +) + +add_test(NAME "ZGGBAK:_Testing_the_back_transformation_of_a_pair_of_COMPLEX16_balanced_matrices" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zgbak.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgbak.out" +) + +add_test(NAME "ZBB:_Testing_banded_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/zbb.in" " ${CMAKE_CURRENT_BINARY_DIR}/zbb.out" +) + +add_test(NAME "ZGLM:_Testing_Generalized_Linear_Regression_Model_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/glm.in" " ${CMAKE_CURRENT_BINARY_DIR}/zglm.out" +) + +add_test(NAME "ZGQR:_Testing_Generalized_QR_and_RQ_factorization_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gqr.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgqr.out" +) + +add_test(NAME "ZGSV:_Testing_Generalized_Singular_Value_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/gsv.in" " ${CMAKE_CURRENT_BINARY_DIR}/zgsv.out" +) + +add_test(NAME "ZCSD:_Testing_CS_Decomposition_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/csd.in" " ${CMAKE_CURRENT_BINARY_DIR}/zcsd.out" +) + +add_test(NAME "Constrained_Linear_Least_Squares_routines" + COMMAND ${helper_prefix} "${CMAKE_CURRENT_BINARY_DIR}/EIG/xeigtstz" "${PROJECT_SOURCE_DIR}/lapack-netlib/TESTING/lse.in" " ${CMAKE_CURRENT_BINARY_DIR}/zlse.out" +) From 0813c20f008527fc84d6390cdb7a5cfbc8f7c5ae Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 2 Nov 2026 16:48:32 +0100 Subject: [PATCH 07/11] Rename lapack-netlib/TESTING/test_cgesvj_emptsw.f90 to lapack-netlib/TESTING/EIG/test_cgesvj_emptsw.f90 --- lapack-netlib/TESTING/{ => EIG}/test_cgesvj_emptsw.f90 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lapack-netlib/TESTING/{ => EIG}/test_cgesvj_emptsw.f90 (100%) diff --git a/lapack-netlib/TESTING/test_cgesvj_emptsw.f90 b/lapack-netlib/TESTING/EIG/test_cgesvj_emptsw.f90 similarity index 100% rename from lapack-netlib/TESTING/test_cgesvj_emptsw.f90 rename to lapack-netlib/TESTING/EIG/test_cgesvj_emptsw.f90 From 4c6ed1848e8e57648ce49c117a71d3bf5997878f Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 2 Nov 2026 16:49:09 +0100 Subject: [PATCH 08/11] Rename lapack-netlib/TESTING/test_dgesvj_emptsw.f90 to lapack-netlib/TESTING/EIG/test_dgesvj_emptsw.f90 --- lapack-netlib/TESTING/{ => EIG}/test_dgesvj_emptsw.f90 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lapack-netlib/TESTING/{ => EIG}/test_dgesvj_emptsw.f90 (100%) diff --git a/lapack-netlib/TESTING/test_dgesvj_emptsw.f90 b/lapack-netlib/TESTING/EIG/test_dgesvj_emptsw.f90 similarity index 100% rename from lapack-netlib/TESTING/test_dgesvj_emptsw.f90 rename to lapack-netlib/TESTING/EIG/test_dgesvj_emptsw.f90 From 74e85382a696bfc083eb5915f4edb87f7588c1ee Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 2 Nov 2026 16:49:39 +0100 Subject: [PATCH 09/11] Rename lapack-netlib/TESTING/test_sgesvj_emptsw.f90 to lapack-netlib/TESTING/EIG/test_sgesvj_emptsw.f90 --- lapack-netlib/TESTING/{ => EIG}/test_sgesvj_emptsw.f90 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lapack-netlib/TESTING/{ => EIG}/test_sgesvj_emptsw.f90 (100%) diff --git a/lapack-netlib/TESTING/test_sgesvj_emptsw.f90 b/lapack-netlib/TESTING/EIG/test_sgesvj_emptsw.f90 similarity index 100% rename from lapack-netlib/TESTING/test_sgesvj_emptsw.f90 rename to lapack-netlib/TESTING/EIG/test_sgesvj_emptsw.f90 From b6a6c84667708168c4351c2325d4cb02ef98a964 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 2 Nov 2026 16:50:10 +0100 Subject: [PATCH 10/11] Rename lapack-netlib/TESTING/test_zgesvj_emptsw.f90 to lapack-netlib/TESTING/EIG/test_zgesvj_emptsw.f90 --- lapack-netlib/TESTING/{ => EIG}/test_zgesvj_emptsw.f90 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lapack-netlib/TESTING/{ => EIG}/test_zgesvj_emptsw.f90 (100%) diff --git a/lapack-netlib/TESTING/test_zgesvj_emptsw.f90 b/lapack-netlib/TESTING/EIG/test_zgesvj_emptsw.f90 similarity index 100% rename from lapack-netlib/TESTING/test_zgesvj_emptsw.f90 rename to lapack-netlib/TESTING/EIG/test_zgesvj_emptsw.f90 From 168f594316625e1079e534d2a8f2996d5de2fe38 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 2 Nov 2026 20:21:52 +0100 Subject: [PATCH 11/11] restore build rules for ?gesvj tests --- lapack-netlib/TESTING/EIG/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lapack-netlib/TESTING/EIG/CMakeLists.txt b/lapack-netlib/TESTING/EIG/CMakeLists.txt index c203161689..784323fa76 100644 --- a/lapack-netlib/TESTING/EIG/CMakeLists.txt +++ b/lapack-netlib/TESTING/EIG/CMakeLists.txt @@ -113,12 +113,14 @@ if(BUILD_SINGLE) add_eig_executable(xeigtsts ${SEIGTST} ${SCIGTST} ${AEIGTST}) add_eig_executable(xdmdeigtsts ${SDMDEIGTST} ${AEIGTST}) add_eig_executable(test_sgges3_scaling test_sgges3_scaling.f90) +add_eig_executable(test_sgesvj_emptsw test_sgesvj_emptsw.f90) endif() if(BUILD_COMPLEX) add_eig_executable(xeigtstc ${CEIGTST} ${SCIGTST} ${AEIGTST}) add_eig_executable(xdmdeigtstc ${CDMDEIGTST} ${AEIGTST}) add_eig_executable(test_cgges3_scaling test_cgges3_scaling.f90) +add_eig_executable(test_cgesvj_emptsw test_sgesvj_emptsw.f90) endif() @@ -126,6 +128,7 @@ if(BUILD_DOUBLE) add_eig_executable(xeigtstd ${DEIGTST} ${DZIGTST} ${AEIGTST}) add_eig_executable(xdmdeigtstd ${DDMDEIGTST} ${AEIGTST}) add_eig_executable(test_dgges3_scaling test_dgges3_scaling.f90) +add_eig_executable(test_dgesvj_emptsw test_sgesvj_emptsw.f90) endif() if(BUILD_COMPLEX16) @@ -133,4 +136,5 @@ add_eig_executable(xeigtstz ${ZEIGTST} ${DZIGTST} ${AEIGTST}) add_eig_executable(xdmdeigtstz ${ZDMDEIGTST} ${AEIGTST}) #add_eig_executable(test_wq_zrwork test_wq_rwork.f) add_eig_executable(test_zgges3_scaling test_zgges3_scaling.f90) +add_eig_executable(test_zgesvj_emptsw test_sgesvj_emptsw.f90) endif()