diff --git a/INSTALL/make.inc.gfortran b/INSTALL/make.inc.gfortran index 77de24a80c..7afbee52f6 100644 --- a/INSTALL/make.inc.gfortran +++ b/INSTALL/make.inc.gfortran @@ -20,9 +20,9 @@ CFLAGS = -O3 # should not compile LAPACK with flags such as -ffpe-trap=overflow. # FORTRAN = gfortran -OPTS = -O2 -frecursive +OPTS = -O2 DRVOPTS = $(OPTS) -NOOPT = -O0 -frecursive +NOOPT = -O0 # Define LOADER and LOADOPTS to refer to the loader and desired # load options for your machine. diff --git a/INSTALL/make.inc.gfortran_debug b/INSTALL/make.inc.gfortran_debug index b339d2b1fb..22e0a73cad 100644 --- a/INSTALL/make.inc.gfortran_debug +++ b/INSTALL/make.inc.gfortran_debug @@ -19,10 +19,10 @@ CFLAGS = -g # and handle these quantities appropriately. As a consequence, one # should not compile LAPACK with flags such as -ffpe-trap=overflow. # -FORTRAN = gfortran -fimplicit-none -g -frecursive +FORTRAN = gfortran -fimplicit-none -g OPTS = DRVOPTS = $(OPTS) -NOOPT = -g -O0 -frecursive +NOOPT = -g -O0 # Define LOADER and LOADOPTS to refer to the loader and desired # load options for your machine. diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt index 07008baee7..ff7b9fb6bb 100644 --- a/SRC/CMakeLists.txt +++ b/SRC/CMakeLists.txt @@ -35,7 +35,7 @@ # ####################################################################### -set(ALLAUX ilaenv.f ieeeck.f lsamen.f iparmq.f iparam2stage.F +set(ALLAUX ilaenv.f ilaenv2stage.f ieeeck.f lsamen.f iparmq.f iparam2stage.F ilaprec.f ilatrans.f ilauplo.f iladiag.f chla_transtype.f ../INSTALL/ilaver.f ../INSTALL/lsame.f xerbla.f xerbla_array.f ../INSTALL/slamch.f) diff --git a/SRC/Makefile b/SRC/Makefile index 5d6fe72c25..f899772cb9 100644 --- a/SRC/Makefile +++ b/SRC/Makefile @@ -56,7 +56,8 @@ include ../make.inc # ####################################################################### -ALLAUX = ilaenv.o ieeeck.o lsamen.o xerbla.o xerbla_array.o iparmq.o iparam2stage.o \ +ALLAUX = ilaenv.o ilaenv2stage.o ieeeck.o lsamen.o xerbla.o xerbla_array.o \ + iparmq.o iparam2stage.o \ ilaprec.o ilatrans.o ilauplo.o iladiag.o chla_transtype.o \ ../INSTALL/ilaver.o ../INSTALL/lsame.o ../INSTALL/slamch.o diff --git a/SRC/chbev_2stage.f b/SRC/chbev_2stage.f index 7a859b280c..8af317169d 100644 --- a/SRC/chbev_2stage.f +++ b/SRC/chbev_2stage.f @@ -242,9 +242,9 @@ SUBROUTINE CHBEV_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, CLANHB - EXTERNAL LSAME, SLAMCH, CLANHB, ILAENV + EXTERNAL LSAME, SLAMCH, CLANHB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SSCAL, SSTERF, XERBLA, CLASCL, CSTEQR, @@ -281,9 +281,12 @@ SUBROUTINE CHBEV_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - IB = ILAENV( 18, 'CHETRD_HB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'CHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'CHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'CHETRD_HB2ST', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'CHETRD_HB2ST', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'CHETRD_HB2ST', JOBZ, + $ N, KD, IB, -1 ) LWMIN = LHTRD + LWTRD WORK( 1 ) = LWMIN ENDIF diff --git a/SRC/chbevd_2stage.f b/SRC/chbevd_2stage.f index f8296a443c..2921a94523 100644 --- a/SRC/chbevd_2stage.f +++ b/SRC/chbevd_2stage.f @@ -296,9 +296,9 @@ SUBROUTINE CHBEVD_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, CLANHB - EXTERNAL LSAME, SLAMCH, CLANHB, ILAENV + EXTERNAL LSAME, SLAMCH, CLANHB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SSCAL, SSTERF, XERBLA, CGEMM, CLACPY, @@ -321,9 +321,9 @@ SUBROUTINE CHBEVD_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, LRWMIN = 1 LIWMIN = 1 ELSE - IB = ILAENV( 18, 'CHETRD_HB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'CHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'CHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'CHETRD_HB2ST', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'CHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'CHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) IF( WANTZ ) THEN LWMIN = 2*N**2 LRWMIN = 1 + 5*N + 2*N**2 diff --git a/SRC/chbevx_2stage.f b/SRC/chbevx_2stage.f index e2cb8ca5e3..0a705a0460 100644 --- a/SRC/chbevx_2stage.f +++ b/SRC/chbevx_2stage.f @@ -369,9 +369,9 @@ SUBROUTINE CHBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, CLANHB - EXTERNAL LSAME, SLAMCH, CLANHB, ILAENV + EXTERNAL LSAME, SLAMCH, CLANHB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTERF, XERBLA, CCOPY, @@ -429,9 +429,12 @@ SUBROUTINE CHBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - IB = ILAENV( 18, 'CHETRD_HB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'CHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'CHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'CHETRD_HB2ST', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'CHETRD_HB2ST', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'CHETRD_HB2ST', JOBZ, + $ N, KD, IB, -1 ) LWMIN = LHTRD + LWTRD WORK( 1 ) = LWMIN ENDIF diff --git a/SRC/cheev_2stage.f b/SRC/cheev_2stage.f index 55a0ed60a5..55c153a0fc 100644 --- a/SRC/cheev_2stage.f +++ b/SRC/cheev_2stage.f @@ -222,9 +222,9 @@ SUBROUTINE CHEEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, CLANHE - EXTERNAL LSAME, ILAENV, SLAMCH, CLANHE + EXTERNAL LSAME, SLAMCH, CLANHE, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SSCAL, SSTERF, XERBLA, CLASCL, CSTEQR, @@ -253,10 +253,10 @@ SUBROUTINE CHEEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, END IF * IF( INFO.EQ.0 ) THEN - KD = ILAENV( 17, 'CHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'CHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'CHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'CHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = N + LHTRD + LWTRD WORK( 1 ) = LWMIN * diff --git a/SRC/cheevd_2stage.f b/SRC/cheevd_2stage.f index 56e2bac5cf..f16d9bdf27 100644 --- a/SRC/cheevd_2stage.f +++ b/SRC/cheevd_2stage.f @@ -291,9 +291,9 @@ SUBROUTINE CHEEVD_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, CLANHE - EXTERNAL LSAME, ILAENV, SLAMCH, CLANHE + EXTERNAL LSAME, SLAMCH, CLANHE, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SSCAL, SSTERF, XERBLA, CLACPY, CLASCL, @@ -327,10 +327,14 @@ SUBROUTINE CHEEVD_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, LRWMIN = 1 LIWMIN = 1 ELSE - KD = ILAENV( 17, 'CHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'CHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'CHETRD_2STAGE', JOBZ, + $ N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'CHETRD_2STAGE', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'CHETRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'CHETRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) IF( WANTZ ) THEN LWMIN = 2*N + N*N LRWMIN = 1 + 5*N + 2*N**2 diff --git a/SRC/cheevr_2stage.f b/SRC/cheevr_2stage.f index 361addd1e4..29523f2fbe 100644 --- a/SRC/cheevr_2stage.f +++ b/SRC/cheevr_2stage.f @@ -445,9 +445,9 @@ SUBROUTINE CHEEVR_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV, ILAENV2STAGE REAL SLAMCH, CLANSY - EXTERNAL LSAME, ILAENV, SLAMCH, CLANSY + EXTERNAL LSAME, SLAMCH, CLANSY, ILAENV, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTERF, XERBLA, CSSCAL, @@ -471,10 +471,10 @@ SUBROUTINE CHEEVR_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, LQUERY = ( ( LWORK.EQ.-1 ) .OR. ( LRWORK.EQ.-1 ) .OR. $ ( LIWORK.EQ.-1 ) ) * - KD = ILAENV( 17, 'DSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'DSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'CHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'CHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = N + LHTRD + LWTRD LRWMIN = MAX( 1, 24*N ) LIWMIN = MAX( 1, 10*N ) diff --git a/SRC/cheevx_2stage.f b/SRC/cheevx_2stage.f index 002dddb457..1d4471d294 100644 --- a/SRC/cheevx_2stage.f +++ b/SRC/cheevx_2stage.f @@ -345,9 +345,9 @@ SUBROUTINE CHEEVX_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, CLANHE - EXTERNAL LSAME, ILAENV, SLAMCH, CLANHE + EXTERNAL LSAME, SLAMCH, CLANHE, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTERF, XERBLA, CSSCAL, @@ -402,10 +402,14 @@ SUBROUTINE CHEEVX_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - KD = ILAENV( 17, 'CHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'CHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'CHETRD_2STAGE', JOBZ, + $ N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'CHETRD_2STAGE', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'CHETRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'CHETRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) LWMIN = N + LHTRD + LWTRD WORK( 1 ) = LWMIN END IF diff --git a/SRC/chegv_2stage.f b/SRC/chegv_2stage.f index bbab76ab55..9decf2b520 100644 --- a/SRC/chegv_2stage.f +++ b/SRC/chegv_2stage.f @@ -261,8 +261,8 @@ SUBROUTINE CHEGV_2STAGE( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV - EXTERNAL LSAME, ILAENV + INTEGER ILAENV2STAGE + EXTERNAL LSAME, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL XERBLA, CHEGST, CPOTRF, CTRMM, CTRSM, @@ -295,10 +295,10 @@ SUBROUTINE CHEGV_2STAGE( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, END IF * IF( INFO.EQ.0 ) THEN - KD = ILAENV( 17, 'CHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'CHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'CHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'CHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = N + LHTRD + LWTRD WORK( 1 ) = LWMIN * diff --git a/SRC/chetrd_2stage.f b/SRC/chetrd_2stage.f index 75c5bce3b9..b178a7f306 100644 --- a/SRC/chetrd_2stage.f +++ b/SRC/chetrd_2stage.f @@ -253,8 +253,8 @@ SUBROUTINE CHETRD_2STAGE( VECT, UPLO, N, A, LDA, D, E, TAU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV - EXTERNAL LSAME, ILAENV + INTEGER ILAENV2STAGE + EXTERNAL LSAME, ILAENV2STAGE * .. * .. Executable Statements .. * @@ -267,10 +267,10 @@ SUBROUTINE CHETRD_2STAGE( VECT, UPLO, N, A, LDA, D, E, TAU, * * Determine the block size, the workspace size and the hous size. * - KD = ILAENV( 17, 'CHETRD_2STAGE', VECT, N, -1, -1, -1 ) - IB = ILAENV( 18, 'CHETRD_2STAGE', VECT, N, KD, -1, -1 ) - LHMIN = ILAENV( 19, 'CHETRD_2STAGE', VECT, N, KD, IB, -1 ) - LWMIN = ILAENV( 20, 'CHETRD_2STAGE', VECT, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'CHETRD_2STAGE', VECT, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'CHETRD_2STAGE', VECT, N, KD, -1, -1 ) + LHMIN = ILAENV2STAGE( 3, 'CHETRD_2STAGE', VECT, N, KD, IB, -1 ) + LWMIN = ILAENV2STAGE( 4, 'CHETRD_2STAGE', VECT, N, KD, IB, -1 ) * WRITE(*,*),'CHETRD_2STAGE N KD UPLO LHMIN LWMIN ',N, KD, UPLO, * $ LHMIN, LWMIN * diff --git a/SRC/dsbev_2stage.f b/SRC/dsbev_2stage.f index c9de727913..b094fa14d7 100644 --- a/SRC/dsbev_2stage.f +++ b/SRC/dsbev_2stage.f @@ -234,9 +234,9 @@ SUBROUTINE DSBEV_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, DLANSB - EXTERNAL LSAME, DLAMCH, DLANSB, ILAENV + EXTERNAL LSAME, DLAMCH, DLANSB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DLASCL, DSCAL, DSTEQR, DSTERF, XERBLA, @@ -273,9 +273,12 @@ SUBROUTINE DSBEV_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - IB = ILAENV( 18, 'DSYTRD_SB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'DSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'DSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'DSYTRD_SB2ST', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'DSYTRD_SB2ST', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'DSYTRD_SB2ST', JOBZ, + $ N, KD, IB, -1 ) LWMIN = N + LHTRD + LWTRD WORK( 1 ) = LWMIN ENDIF diff --git a/SRC/dsbevd_2stage.f b/SRC/dsbevd_2stage.f index 1968f2b780..00206e8688 100644 --- a/SRC/dsbevd_2stage.f +++ b/SRC/dsbevd_2stage.f @@ -266,9 +266,9 @@ SUBROUTINE DSBEVD_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, DLANSB - EXTERNAL LSAME, DLAMCH, DLANSB, ILAENV + EXTERNAL LSAME, DLAMCH, DLANSB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DGEMM, DLACPY, DLASCL, DSCAL, DSTEDC, @@ -290,9 +290,9 @@ SUBROUTINE DSBEVD_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, LIWMIN = 1 LWMIN = 1 ELSE - IB = ILAENV( 18, 'DSYTRD_SB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'DSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'DSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'DSYTRD_SB2ST', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'DSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'DSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) IF( WANTZ ) THEN LIWMIN = 3 + 5*N LWMIN = 1 + 5*N + 2*N**2 diff --git a/SRC/dsbevx_2stage.f b/SRC/dsbevx_2stage.f index 9e120e5e5a..dc72adffdf 100644 --- a/SRC/dsbevx_2stage.f +++ b/SRC/dsbevx_2stage.f @@ -359,9 +359,9 @@ SUBROUTINE DSBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, DLANSB - EXTERNAL LSAME, DLAMCH, DLANSB, ILAENV + EXTERNAL LSAME, DLAMCH, DLANSB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DCOPY, DGEMV, DLACPY, DLASCL, DSCAL, @@ -419,9 +419,12 @@ SUBROUTINE DSBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - IB = ILAENV( 18, 'DSYTRD_SB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'DSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'DSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'DSYTRD_SB2ST', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'DSYTRD_SB2ST', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'DSYTRD_SB2ST', JOBZ, + $ N, KD, IB, -1 ) LWMIN = 2*N + LHTRD + LWTRD WORK( 1 ) = LWMIN ENDIF diff --git a/SRC/dsyev_2stage.f b/SRC/dsyev_2stage.f index af622fa2ea..3c207f81cb 100644 --- a/SRC/dsyev_2stage.f +++ b/SRC/dsyev_2stage.f @@ -213,9 +213,9 @@ SUBROUTINE DSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, DLANSY - EXTERNAL LSAME, ILAENV, DLAMCH, DLANSY + EXTERNAL LSAME, DLAMCH, DLANSY, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DLASCL, DORGTR, DSCAL, DSTEQR, DSTERF, @@ -244,10 +244,10 @@ SUBROUTINE DSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, END IF * IF( INFO.EQ.0 ) THEN - KD = ILAENV( 17, 'DSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'DSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'DSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'DSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = 2*N + LHTRD + LWTRD WORK( 1 ) = LWMIN * diff --git a/SRC/dsyevd_2stage.f b/SRC/dsyevd_2stage.f index d9d080cb1e..ac70c2ede0 100644 --- a/SRC/dsyevd_2stage.f +++ b/SRC/dsyevd_2stage.f @@ -260,9 +260,9 @@ SUBROUTINE DSYEVD_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, DLANSY - EXTERNAL LSAME, DLAMCH, DLANSY, ILAENV + EXTERNAL LSAME, DLAMCH, DLANSY, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DLACPY, DLASCL, DORMTR, DSCAL, DSTEDC, DSTERF, @@ -295,10 +295,14 @@ SUBROUTINE DSYEVD_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, LIWMIN = 1 LWMIN = 1 ELSE - KD = ILAENV( 17, 'DSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'DSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'DSYTRD_2STAGE', JOBZ, + $ N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'DSYTRD_2STAGE', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'DSYTRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'DSYTRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) IF( WANTZ ) THEN LIWMIN = 3 + 5*N LWMIN = 1 + 6*N + 2*N**2 diff --git a/SRC/dsyevr_2stage.f b/SRC/dsyevr_2stage.f index ae62582367..21b757d20e 100644 --- a/SRC/dsyevr_2stage.f +++ b/SRC/dsyevr_2stage.f @@ -418,9 +418,9 @@ SUBROUTINE DSYEVR_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV, ILAENV2STAGE DOUBLE PRECISION DLAMCH, DLANSY - EXTERNAL LSAME, ILAENV, DLAMCH, DLANSY + EXTERNAL LSAME, DLAMCH, DLANSY, ILAENV, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DCOPY, DORMTR, DSCAL, DSTEBZ, DSTEMR, DSTEIN, @@ -443,10 +443,10 @@ SUBROUTINE DSYEVR_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, * LQUERY = ( ( LWORK.EQ.-1 ) .OR. ( LIWORK.EQ.-1 ) ) * - KD = ILAENV( 17, 'DSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'DSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'DSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'DSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = MAX( 26*N, 5*N + LHTRD + LWTRD ) LIWMIN = MAX( 1, 10*N ) * diff --git a/SRC/dsyevx_2stage.f b/SRC/dsyevx_2stage.f index 97ca806fdd..c294704eab 100644 --- a/SRC/dsyevx_2stage.f +++ b/SRC/dsyevx_2stage.f @@ -336,9 +336,9 @@ SUBROUTINE DSYEVX_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, DLANSY - EXTERNAL LSAME, ILAENV, DLAMCH, DLANSY + EXTERNAL LSAME, DLAMCH, DLANSY, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DCOPY, DLACPY, DORGTR, DORMTR, DSCAL, DSTEBZ, @@ -393,10 +393,14 @@ SUBROUTINE DSYEVX_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - KD = ILAENV( 17, 'DSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'DSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'DSYTRD_2STAGE', JOBZ, + $ N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'DSYTRD_2STAGE', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'DSYTRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'DSYTRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) LWMIN = MAX( 8*N, 3*N + LHTRD + LWTRD ) WORK( 1 ) = LWMIN END IF diff --git a/SRC/dsygv_2stage.f b/SRC/dsygv_2stage.f index e091662f62..021fb50bba 100644 --- a/SRC/dsygv_2stage.f +++ b/SRC/dsygv_2stage.f @@ -254,8 +254,8 @@ SUBROUTINE DSYGV_2STAGE( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV - EXTERNAL LSAME, ILAENV + INTEGER ILAENV2STAGE + EXTERNAL LSAME, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DPOTRF, DSYGST, DTRMM, DTRSM, XERBLA, @@ -288,10 +288,10 @@ SUBROUTINE DSYGV_2STAGE( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, END IF * IF( INFO.EQ.0 ) THEN - KD = ILAENV( 17, 'DSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'DSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'DSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'DSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = 2*N + LHTRD + LWTRD WORK( 1 ) = LWMIN * diff --git a/SRC/dsytrd_2stage.f b/SRC/dsytrd_2stage.f index f7ea09b351..585ccab7af 100644 --- a/SRC/dsytrd_2stage.f +++ b/SRC/dsytrd_2stage.f @@ -253,8 +253,8 @@ SUBROUTINE DSYTRD_2STAGE( VECT, UPLO, N, A, LDA, D, E, TAU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV - EXTERNAL LSAME, ILAENV + INTEGER ILAENV2STAGE + EXTERNAL LSAME, ILAENV2STAGE * .. * .. Executable Statements .. * @@ -267,10 +267,10 @@ SUBROUTINE DSYTRD_2STAGE( VECT, UPLO, N, A, LDA, D, E, TAU, * * Determine the block size, the workspace size and the hous size. * - KD = ILAENV( 17, 'DSYTRD_2STAGE', VECT, N, -1, -1, -1 ) - IB = ILAENV( 18, 'DSYTRD_2STAGE', VECT, N, KD, -1, -1 ) - LHMIN = ILAENV( 19, 'DSYTRD_2STAGE', VECT, N, KD, IB, -1 ) - LWMIN = ILAENV( 20, 'DSYTRD_2STAGE', VECT, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'DSYTRD_2STAGE', VECT, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'DSYTRD_2STAGE', VECT, N, KD, -1, -1 ) + LHMIN = ILAENV2STAGE( 3, 'DSYTRD_2STAGE', VECT, N, KD, IB, -1 ) + LWMIN = ILAENV2STAGE( 4, 'DSYTRD_2STAGE', VECT, N, KD, IB, -1 ) * WRITE(*,*),'DSYTRD_2STAGE N KD UPLO LHMIN LWMIN ',N, KD, UPLO, * $ LHMIN, LWMIN * diff --git a/SRC/ilaenv.f b/SRC/ilaenv.f index 2be0581517..9fb77464b1 100644 --- a/SRC/ilaenv.f +++ b/SRC/ilaenv.f @@ -189,8 +189,7 @@ INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) * .. Executable Statements .. * GO TO ( 10, 10, 10, 80, 90, 100, 110, 120, - $ 130, 140, 150, 160, 160, 160, 160, 160, - $ 170, 170, 170, 170, 170 )ISPEC + $ 130, 140, 150, 160, 160, 160, 160, 160)ISPEC * * Invalid value for ISPEC * @@ -690,13 +689,6 @@ INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) * ILAENV = IPARMQ( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) RETURN -* - 170 CONTINUE -* -* 17 <= ISPEC <= 21: 2stage eigenvalues and SVD or related subroutines. -* - ILAENV = IPARAM2STAGE( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) - RETURN * * End of ILAENV * diff --git a/SRC/ilaenv2stage.f b/SRC/ilaenv2stage.f new file mode 100644 index 0000000000..61aea6870c --- /dev/null +++ b/SRC/ilaenv2stage.f @@ -0,0 +1,191 @@ +*> \brief \b ILAENV2STAGE +* +* =========== DOCUMENTATION =========== +* +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ +* +*> \htmlonly +*> Download ILAENV2STAGE + dependencies +*> +*> [TGZ] +*> +*> [ZIP] +*> +*> [TXT] +*> \endhtmlonly +* +* Definition: +* =========== +* +* INTEGER FUNCTION ILAENV2STAGE( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) +* +* .. Scalar Arguments .. +* CHARACTER*( * ) NAME, OPTS +* INTEGER ISPEC, N1, N2, N3, N4 +* .. +* +* +*> \par Purpose: +* ============= +*> +*> \verbatim +*> +*> ILAENV2STAGE is called from the LAPACK routines to choose problem-dependent +*> parameters for the local environment. See ISPEC for a description of +*> the parameters. +*> It sets problem and machine dependent parameters useful for *_2STAGE and +*> related subroutines. +*> +*> ILAENV2STAGE returns an INTEGER +*> if ILAENV2STAGE >= 0: ILAENV2STAGE returns the value of the parameter +* specified by ISPEC +*> if ILAENV2STAGE < 0: if ILAENV2STAGE = -k, the k-th argument had an +* illegal value. +*> +*> This version provides a set of parameters which should give good, +*> but not optimal, performance on many of the currently available +*> computers for the 2-stage solvers. Users are encouraged to modify this +*> subroutine to set the tuning parameters for their particular machine using +*> the option and problem size information in the arguments. +*> +*> This routine will not function correctly if it is converted to all +*> lower case. Converting it to all upper case is allowed. +*> \endverbatim +* +* Arguments: +* ========== +* +*> \param[in] ISPEC +*> \verbatim +*> ISPEC is INTEGER +*> Specifies the parameter to be returned as the value of +*> ILAENV2STAGE. +*> = 1: the optimal blocksize nb for the reduction to BAND +*> +*> = 2: the optimal blocksize ib for the eigenvectors +*> singular vectors update routine +*> +*> = 3: The length of the array that store the Housholder +*> representation for the second stage +*> Band to Tridiagonal or Bidiagonal +*> +*> = 4: The workspace needed for the routine in input. +*> +*> = 5: For future release. +*> \endverbatim +*> +*> \param[in] NAME +*> \verbatim +*> NAME is CHARACTER*(*) +*> The name of the calling subroutine, in either upper case or +*> lower case. +*> \endverbatim +*> +*> \param[in] OPTS +*> \verbatim +*> OPTS is CHARACTER*(*) +*> The character options to the subroutine NAME, concatenated +*> into a single character string. For example, UPLO = 'U', +*> TRANS = 'T', and DIAG = 'N' for a triangular routine would +*> be specified as OPTS = 'UTN'. +*> \endverbatim +*> +*> \param[in] N1 +*> \verbatim +*> N1 is INTEGER +*> \endverbatim +*> +*> \param[in] N2 +*> \verbatim +*> N2 is INTEGER +*> \endverbatim +*> +*> \param[in] N3 +*> \verbatim +*> N3 is INTEGER +*> \endverbatim +*> +*> \param[in] N4 +*> \verbatim +*> N4 is INTEGER +*> Problem dimensions for the subroutine NAME; these may not all +*> be required. +*> \endverbatim +* +* Authors: +* ======== +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +*> \author Nick R. Papior +* +*> \date July 2017 +* +*> \ingroup OTHERauxiliary +* +*> \par Further Details: +* ===================== +*> +*> \verbatim +*> +*> The following conventions have been used when calling ILAENV2STAGE +*> from the LAPACK routines: +*> 1) OPTS is a concatenation of all of the character options to +*> subroutine NAME, in the same order that they appear in the +*> argument list for NAME, even if they are not used in determining +*> the value of the parameter specified by ISPEC. +*> 2) The problem dimensions N1, N2, N3, N4 are specified in the order +*> that they appear in the argument list for NAME. N1 is used +*> first, N2 second, and so on, and unused problem dimensions are +*> passed a value of -1. +*> 3) The parameter value returned by ILAENV2STAGE is checked for validity in +*> the calling subroutine. +*> +*> \endverbatim +*> +* ===================================================================== + INTEGER FUNCTION ILAENV2STAGE( ISPEC, NAME, OPTS, N1, N2, N3, N4 ) +* +* -- LAPACK auxiliary routine (version 3.7.0) -- +* -- LAPACK is a software package provided by Univ. of Tennessee, -- +* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- +* July 2017 +* +* .. Scalar Arguments .. + CHARACTER*( * ) NAME, OPTS + INTEGER ISPEC, N1, N2, N3, N4 +* .. +* +* ===================================================================== +* .. +* .. Local Scalars .. + INTEGER IISPEC +* .. +* .. External Functions .. + INTEGER IPARAM2STAGE + EXTERNAL IPARAM2STAGE +* .. +* .. Executable Statements .. +* + GO TO ( 10, 10, 10, 10, 10 )ISPEC +* +* Invalid value for ISPEC +* + ILAENV2STAGE = -1 + RETURN +* + 10 CONTINUE +* +* 2stage eigenvalues and SVD or related subroutines. +* + IISPEC = 16 + ISPEC + ILAENV2STAGE = IPARAM2STAGE( IISPEC, NAME, OPTS, + $ N1, N2, N3, N4 ) + RETURN +* +* End of ILAENV2STAGE +* + END diff --git a/SRC/iparam2stage.F b/SRC/iparam2stage.F index 60bd0b696b..e2a953683b 100644 --- a/SRC/iparam2stage.F +++ b/SRC/iparam2stage.F @@ -38,7 +38,9 @@ *> useful for xHETRD_2STAGE, xHETRD_H@2HB, xHETRD_HB2ST, *> xGEBRD_2STAGE, xGEBRD_GE2GB, xGEBRD_GB2BD *> and related subroutines for eigenvalue problems. -*> It is called whenever ILAENV is called with 17 <= ISPEC <= 21 +*> It is called whenever ILAENV is called with 17 <= ISPEC <= 21. +*> It is called whenever ILAENV2STAGE is called with 1 <= ISPEC <= 5 +*> with a direct conversion ISPEC + 16. *> \endverbatim * * Arguments: diff --git a/SRC/ssbev_2stage.f b/SRC/ssbev_2stage.f index f6c80249f5..7896caa0aa 100644 --- a/SRC/ssbev_2stage.f +++ b/SRC/ssbev_2stage.f @@ -234,9 +234,9 @@ SUBROUTINE SSBEV_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, SLANSB - EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV + EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SLASCL, SSCAL, SSTEQR, SSTERF, XERBLA, @@ -273,9 +273,12 @@ SUBROUTINE SSBEV_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - IB = ILAENV( 18, 'SSYTRD_SB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'SSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'SSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'SSYTRD_SB2ST', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'SSYTRD_SB2ST', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'SSYTRD_SB2ST', JOBZ, + $ N, KD, IB, -1 ) LWMIN = N + LHTRD + LWTRD WORK( 1 ) = LWMIN ENDIF diff --git a/SRC/ssbevd_2stage.f b/SRC/ssbevd_2stage.f index b1c67d4d97..08078d1d77 100644 --- a/SRC/ssbevd_2stage.f +++ b/SRC/ssbevd_2stage.f @@ -266,9 +266,9 @@ SUBROUTINE SSBEVD_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, SLANSB - EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV + EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SGEMM, SLACPY, SLASCL, SSCAL, SSTEDC, @@ -290,9 +290,9 @@ SUBROUTINE SSBEVD_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, LIWMIN = 1 LWMIN = 1 ELSE - IB = ILAENV( 18, 'SSYTRD_SB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'SSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'SSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'SSYTRD_SB2ST', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'SSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'SSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) IF( WANTZ ) THEN LIWMIN = 3 + 5*N LWMIN = 1 + 5*N + 2*N**2 diff --git a/SRC/ssbevx_2stage.f b/SRC/ssbevx_2stage.f index 1d8f2cc163..7216b13041 100644 --- a/SRC/ssbevx_2stage.f +++ b/SRC/ssbevx_2stage.f @@ -359,9 +359,9 @@ SUBROUTINE SSBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, SLANSB - EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV + EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SCOPY, SGEMV, SLACPY, SLASCL, SSCAL, @@ -419,9 +419,12 @@ SUBROUTINE SSBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - IB = ILAENV( 18, 'SSYTRD_SB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'SSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'SSYTRD_SB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'SSYTRD_SB2ST', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'SSYTRD_SB2ST', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'SSYTRD_SB2ST', JOBZ, + $ N, KD, IB, -1 ) LWMIN = 2*N + LHTRD + LWTRD WORK( 1 ) = LWMIN ENDIF diff --git a/SRC/ssyev_2stage.f b/SRC/ssyev_2stage.f index 0de3ca7e4c..9285685112 100644 --- a/SRC/ssyev_2stage.f +++ b/SRC/ssyev_2stage.f @@ -213,9 +213,9 @@ SUBROUTINE SSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, SLANSY - EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY + EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SLASCL, SORGTR, SSCAL, SSTEQR, SSTERF, @@ -244,10 +244,10 @@ SUBROUTINE SSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, END IF * IF( INFO.EQ.0 ) THEN - KD = ILAENV( 17, 'SSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'SSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'SSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'SSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = 2*N + LHTRD + LWTRD WORK( 1 ) = LWMIN * diff --git a/SRC/ssyevd_2stage.f b/SRC/ssyevd_2stage.f index d65547732d..f811429544 100644 --- a/SRC/ssyevd_2stage.f +++ b/SRC/ssyevd_2stage.f @@ -260,9 +260,9 @@ SUBROUTINE SSYEVD_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, SLANSY - EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV + EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SLACPY, SLASCL, SORMTR, SSCAL, SSTEDC, SSTERF, @@ -295,10 +295,14 @@ SUBROUTINE SSYEVD_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, LIWMIN = 1 LWMIN = 1 ELSE - KD = ILAENV( 17, 'SSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'SSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'SSYTRD_2STAGE', JOBZ, + $ N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'SSYTRD_2STAGE', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'SSYTRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'SSYTRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) IF( WANTZ ) THEN LIWMIN = 3 + 5*N LWMIN = 1 + 6*N + 2*N**2 diff --git a/SRC/ssyevr_2stage.f b/SRC/ssyevr_2stage.f index 9628a89926..f4d847ee3f 100644 --- a/SRC/ssyevr_2stage.f +++ b/SRC/ssyevr_2stage.f @@ -418,9 +418,9 @@ SUBROUTINE SSYEVR_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV, ILAENV2STAGE REAL SLAMCH, SLANSY - EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY + EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SCOPY, SORMTR, SSCAL, SSTEBZ, SSTEMR, SSTEIN, @@ -443,10 +443,10 @@ SUBROUTINE SSYEVR_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, * LQUERY = ( ( LWORK.EQ.-1 ) .OR. ( LIWORK.EQ.-1 ) ) * - KD = ILAENV( 17, 'SSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'SSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'SSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'SSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = MAX( 26*N, 5*N + LHTRD + LWTRD ) LIWMIN = MAX( 1, 10*N ) * diff --git a/SRC/ssyevx_2stage.f b/SRC/ssyevx_2stage.f index fd8518c307..2228ca0992 100644 --- a/SRC/ssyevx_2stage.f +++ b/SRC/ssyevx_2stage.f @@ -336,9 +336,9 @@ SUBROUTINE SSYEVX_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE REAL SLAMCH, SLANSY - EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY + EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SCOPY, SLACPY, SORGTR, SORMTR, SSCAL, SSTEBZ, @@ -393,10 +393,14 @@ SUBROUTINE SSYEVX_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - KD = ILAENV( 17, 'SSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'SSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'SSYTRD_2STAGE', JOBZ, + $ N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'SSYTRD_2STAGE', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'SSYTRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'SSYTRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) LWMIN = MAX( 8*N, 3*N + LHTRD + LWTRD ) WORK( 1 ) = LWMIN END IF diff --git a/SRC/ssygv_2stage.f b/SRC/ssygv_2stage.f index 4ad690af6f..29a51c4a15 100644 --- a/SRC/ssygv_2stage.f +++ b/SRC/ssygv_2stage.f @@ -255,8 +255,8 @@ SUBROUTINE SSYGV_2STAGE( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV - EXTERNAL LSAME, ILAENV + INTEGER ILAENV2STAGE + EXTERNAL LSAME, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL SPOTRF, SSYGST, STRMM, STRSM, XERBLA, @@ -289,10 +289,10 @@ SUBROUTINE SSYGV_2STAGE( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, END IF * IF( INFO.EQ.0 ) THEN - KD = ILAENV( 17, 'SSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'SSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'SSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'SSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'SSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = 2*N + LHTRD + LWTRD WORK( 1 ) = LWMIN * diff --git a/SRC/ssytrd_2stage.f b/SRC/ssytrd_2stage.f index 0982690d2d..ffcd1e9983 100644 --- a/SRC/ssytrd_2stage.f +++ b/SRC/ssytrd_2stage.f @@ -253,8 +253,8 @@ SUBROUTINE SSYTRD_2STAGE( VECT, UPLO, N, A, LDA, D, E, TAU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV - EXTERNAL LSAME, ILAENV + INTEGER ILAENV2STAGE + EXTERNAL LSAME, ILAENV2STAGE * .. * .. Executable Statements .. * @@ -267,10 +267,10 @@ SUBROUTINE SSYTRD_2STAGE( VECT, UPLO, N, A, LDA, D, E, TAU, * * Determine the block size, the workspace size and the hous size. * - KD = ILAENV( 17, 'SSYTRD_2STAGE', VECT, N, -1, -1, -1 ) - IB = ILAENV( 18, 'SSYTRD_2STAGE', VECT, N, KD, -1, -1 ) - LHMIN = ILAENV( 19, 'SSYTRD_2STAGE', VECT, N, KD, IB, -1 ) - LWMIN = ILAENV( 20, 'SSYTRD_2STAGE', VECT, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'SSYTRD_2STAGE', VECT, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'SSYTRD_2STAGE', VECT, N, KD, -1, -1 ) + LHMIN = ILAENV2STAGE( 3, 'SSYTRD_2STAGE', VECT, N, KD, IB, -1 ) + LWMIN = ILAENV2STAGE( 4, 'SSYTRD_2STAGE', VECT, N, KD, IB, -1 ) * WRITE(*,*),'SSYTRD_2STAGE N KD UPLO LHMIN LWMIN ',N, KD, UPLO, * $ LHMIN, LWMIN * diff --git a/SRC/zhbev_2stage.f b/SRC/zhbev_2stage.f index f6f6abe21d..9ccb46e54c 100644 --- a/SRC/zhbev_2stage.f +++ b/SRC/zhbev_2stage.f @@ -242,9 +242,9 @@ SUBROUTINE ZHBEV_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, ZLANHB - EXTERNAL LSAME, DLAMCH, ZLANHB, ILAENV + EXTERNAL LSAME, DLAMCH, ZLANHB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DSCAL, DSTERF, XERBLA, ZLASCL, ZSTEQR, @@ -281,9 +281,12 @@ SUBROUTINE ZHBEV_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - IB = ILAENV( 18, 'ZHETRD_HB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'ZHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'ZHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'ZHETRD_HB2ST', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'ZHETRD_HB2ST', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'ZHETRD_HB2ST', JOBZ, + $ N, KD, IB, -1 ) LWMIN = LHTRD + LWTRD WORK( 1 ) = LWMIN ENDIF diff --git a/SRC/zhbevd_2stage.f b/SRC/zhbevd_2stage.f index 94863c708e..6c71849c9a 100644 --- a/SRC/zhbevd_2stage.f +++ b/SRC/zhbevd_2stage.f @@ -296,9 +296,9 @@ SUBROUTINE ZHBEVD_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, ZLANHB - EXTERNAL LSAME, DLAMCH, ZLANHB, ILAENV + EXTERNAL LSAME, DLAMCH, ZLANHB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DSCAL, DSTERF, XERBLA, ZGEMM, ZLACPY, @@ -321,9 +321,9 @@ SUBROUTINE ZHBEVD_2STAGE( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, LRWMIN = 1 LIWMIN = 1 ELSE - IB = ILAENV( 18, 'ZHETRD_HB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'ZHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'ZHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'ZHETRD_HB2ST', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'ZHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'ZHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) IF( WANTZ ) THEN LWMIN = 2*N**2 LRWMIN = 1 + 5*N + 2*N**2 diff --git a/SRC/zhbevx_2stage.f b/SRC/zhbevx_2stage.f index 8473c4a402..038b533cb7 100644 --- a/SRC/zhbevx_2stage.f +++ b/SRC/zhbevx_2stage.f @@ -369,9 +369,9 @@ SUBROUTINE ZHBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, ZLANHB - EXTERNAL LSAME, DLAMCH, ZLANHB, ILAENV + EXTERNAL LSAME, DLAMCH, ZLANHB, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DCOPY, DSCAL, DSTEBZ, DSTERF, XERBLA, ZCOPY, @@ -429,9 +429,12 @@ SUBROUTINE ZHBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - IB = ILAENV( 18, 'ZHETRD_HB2ST', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'ZHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'ZHETRD_HB2ST', JOBZ, N, KD, IB, -1 ) + IB = ILAENV2STAGE( 2, 'ZHETRD_HB2ST', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'ZHETRD_HB2ST', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'ZHETRD_HB2ST', JOBZ, + $ N, KD, IB, -1 ) LWMIN = LHTRD + LWTRD WORK( 1 ) = LWMIN ENDIF diff --git a/SRC/zheev_2stage.f b/SRC/zheev_2stage.f index 0cf57e9047..edf0147a5b 100644 --- a/SRC/zheev_2stage.f +++ b/SRC/zheev_2stage.f @@ -222,9 +222,9 @@ SUBROUTINE ZHEEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, ZLANHE - EXTERNAL LSAME, ILAENV, DLAMCH, ZLANHE + EXTERNAL LSAME, DLAMCH, ZLANHE, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DSCAL, DSTERF, XERBLA, ZLASCL, ZSTEQR, @@ -253,10 +253,10 @@ SUBROUTINE ZHEEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, END IF * IF( INFO.EQ.0 ) THEN - KD = ILAENV( 17, 'ZHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'ZHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'ZHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'ZHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = N + LHTRD + LWTRD WORK( 1 ) = LWMIN * diff --git a/SRC/zheevd_2stage.f b/SRC/zheevd_2stage.f index 7a8c1593f2..042bd0b8eb 100644 --- a/SRC/zheevd_2stage.f +++ b/SRC/zheevd_2stage.f @@ -291,9 +291,9 @@ SUBROUTINE ZHEEVD_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, ZLANHE - EXTERNAL LSAME, ILAENV, DLAMCH, ZLANHE + EXTERNAL LSAME, DLAMCH, ZLANHE, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DSCAL, DSTERF, XERBLA, ZLACPY, ZLASCL, @@ -327,10 +327,14 @@ SUBROUTINE ZHEEVD_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, LRWMIN = 1 LIWMIN = 1 ELSE - KD = ILAENV( 17, 'ZHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'ZHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'ZHETRD_2STAGE', JOBZ, + $ N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'ZHETRD_2STAGE', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'ZHETRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'ZHETRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) IF( WANTZ ) THEN LWMIN = 2*N + N*N LRWMIN = 1 + 5*N + 2*N**2 diff --git a/SRC/zheevr_2stage.f b/SRC/zheevr_2stage.f index 5457853617..91c7cdca8a 100644 --- a/SRC/zheevr_2stage.f +++ b/SRC/zheevr_2stage.f @@ -445,9 +445,9 @@ SUBROUTINE ZHEEVR_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV, ILAENV2STAGE DOUBLE PRECISION DLAMCH, ZLANSY - EXTERNAL LSAME, ILAENV, DLAMCH, ZLANSY + EXTERNAL LSAME, DLAMCH, ZLANSY, ILAENV, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DCOPY, DSCAL, DSTEBZ, DSTERF, XERBLA, ZDSCAL, @@ -471,10 +471,10 @@ SUBROUTINE ZHEEVR_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, LQUERY = ( ( LWORK.EQ.-1 ) .OR. ( LRWORK.EQ.-1 ) .OR. $ ( LIWORK.EQ.-1 ) ) * - KD = ILAENV( 17, 'DSYTRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'DSYTRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'DSYTRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'ZHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'ZHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = N + LHTRD + LWTRD LRWMIN = MAX( 1, 24*N ) LIWMIN = MAX( 1, 10*N ) diff --git a/SRC/zheevx_2stage.f b/SRC/zheevx_2stage.f index 9def33c6de..0a5334fa12 100644 --- a/SRC/zheevx_2stage.f +++ b/SRC/zheevx_2stage.f @@ -345,9 +345,9 @@ SUBROUTINE ZHEEVX_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV + INTEGER ILAENV2STAGE DOUBLE PRECISION DLAMCH, ZLANHE - EXTERNAL LSAME, ILAENV, DLAMCH, ZLANHE + EXTERNAL LSAME, DLAMCH, ZLANHE, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL DCOPY, DSCAL, DSTEBZ, DSTERF, XERBLA, ZDSCAL, @@ -402,10 +402,14 @@ SUBROUTINE ZHEEVX_2STAGE( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, LWMIN = 1 WORK( 1 ) = LWMIN ELSE - KD = ILAENV( 17, 'ZHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'ZHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'ZHETRD_2STAGE', JOBZ, + $ N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'ZHETRD_2STAGE', JOBZ, + $ N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'ZHETRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'ZHETRD_2STAGE', JOBZ, + $ N, KD, IB, -1 ) LWMIN = N + LHTRD + LWTRD WORK( 1 ) = LWMIN END IF diff --git a/SRC/zhegv_2stage.f b/SRC/zhegv_2stage.f index fc96881e32..6de98ed305 100644 --- a/SRC/zhegv_2stage.f +++ b/SRC/zhegv_2stage.f @@ -261,8 +261,8 @@ SUBROUTINE ZHEGV_2STAGE( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV - EXTERNAL LSAME, ILAENV + INTEGER ILAENV2STAGE + EXTERNAL LSAME, ILAENV2STAGE * .. * .. External Subroutines .. EXTERNAL XERBLA, ZHEGST, ZPOTRF, ZTRMM, ZTRSM, @@ -295,10 +295,10 @@ SUBROUTINE ZHEGV_2STAGE( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, END IF * IF( INFO.EQ.0 ) THEN - KD = ILAENV( 17, 'ZHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) - IB = ILAENV( 18, 'ZHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) - LHTRD = ILAENV( 19, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) - LWTRD = ILAENV( 20, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'ZHETRD_2STAGE', JOBZ, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'ZHETRD_2STAGE', JOBZ, N, KD, -1, -1 ) + LHTRD = ILAENV2STAGE( 3, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) + LWTRD = ILAENV2STAGE( 4, 'ZHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWMIN = N + LHTRD + LWTRD WORK( 1 ) = LWMIN * diff --git a/SRC/zhetrd_2stage.f b/SRC/zhetrd_2stage.f index 7fb9e7167f..c74d95ee7d 100644 --- a/SRC/zhetrd_2stage.f +++ b/SRC/zhetrd_2stage.f @@ -253,8 +253,8 @@ SUBROUTINE ZHETRD_2STAGE( VECT, UPLO, N, A, LDA, D, E, TAU, * .. * .. External Functions .. LOGICAL LSAME - INTEGER ILAENV - EXTERNAL LSAME, ILAENV + INTEGER ILAENV2STAGE + EXTERNAL LSAME, ILAENV2STAGE * .. * .. Executable Statements .. * @@ -267,10 +267,10 @@ SUBROUTINE ZHETRD_2STAGE( VECT, UPLO, N, A, LDA, D, E, TAU, * * Determine the block size, the workspace size and the hous size. * - KD = ILAENV( 17, 'ZHETRD_2STAGE', VECT, N, -1, -1, -1 ) - IB = ILAENV( 18, 'ZHETRD_2STAGE', VECT, N, KD, -1, -1 ) - LHMIN = ILAENV( 19, 'ZHETRD_2STAGE', VECT, N, KD, IB, -1 ) - LWMIN = ILAENV( 20, 'ZHETRD_2STAGE', VECT, N, KD, IB, -1 ) + KD = ILAENV2STAGE( 1, 'ZHETRD_2STAGE', VECT, N, -1, -1, -1 ) + IB = ILAENV2STAGE( 2, 'ZHETRD_2STAGE', VECT, N, KD, -1, -1 ) + LHMIN = ILAENV2STAGE( 3, 'ZHETRD_2STAGE', VECT, N, KD, IB, -1 ) + LWMIN = ILAENV2STAGE( 4, 'ZHETRD_2STAGE', VECT, N, KD, IB, -1 ) * WRITE(*,*),'ZHETRD_2STAGE N KD UPLO LHMIN LWMIN ',N, KD, UPLO, * $ LHMIN, LWMIN * diff --git a/TESTING/EIG/ilaenv.f b/TESTING/EIG/ilaenv.f index 8b741a283f..4551e9bd82 100644 --- a/TESTING/EIG/ilaenv.f +++ b/TESTING/EIG/ilaenv.f @@ -250,6 +250,53 @@ INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, * * End of ILAENV * + END + INTEGER FUNCTION ILAENV2STAGE( ISPEC, NAME, OPTS, N1, N2, + $ N3, N4 ) +* .. Scalar Arguments .. + CHARACTER*( * ) NAME, OPTS + INTEGER ISPEC, N1, N2, N3, N4 +* .. +* +* ===================================================================== +* +* .. Local variables .. + INTEGER IISPEC +* .. External Functions .. + INTEGER IPARAM2STAGE + EXTERNAL IPARAM2STAGE +* .. +* .. Arrays in Common .. + INTEGER IPARMS( 100 ) +* .. +* .. Common blocks .. + COMMON / CLAENV / IPARMS +* .. +* .. Save statement .. + SAVE / CLAENV / +* .. +* .. Executable Statements .. +* + IF(( ISPEC.GE.1 ) .AND. (ISPEC.LE.5)) THEN +* +* 1 <= ISPEC <= 5: 2stage eigenvalues SVD routines. +* + IF( ISPEC.EQ.1 ) THEN + ILAENV2STAGE = IPARMS( 1 ) + ELSE + IISPEC = 16 + ISPEC + ILAENV2STAGE = IPARAM2STAGE( IISPEC, NAME, OPTS, + $ N1, N2, N3, N4 ) + ENDIF +* + ELSE +* +* Invalid value for ISPEC +* + ILAENV2STAGE = -1 + END IF +* + RETURN END INTEGER FUNCTION IPARMQ( ISPEC, NAME, OPTS, N, ILO, IHI, LWORK ) * diff --git a/TESTING/LIN/ilaenv.f b/TESTING/LIN/ilaenv.f index 657128bc19..532555e7ad 100644 --- a/TESTING/LIN/ilaenv.f +++ b/TESTING/LIN/ilaenv.f @@ -244,3 +244,50 @@ INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, * End of ILAENV * END + INTEGER FUNCTION ILAENV2STAGE( ISPEC, NAME, OPTS, N1, N2, + $ N3, N4 ) +* .. Scalar Arguments .. + CHARACTER*( * ) NAME, OPTS + INTEGER ISPEC, N1, N2, N3, N4 +* .. +* +* ===================================================================== +* +* .. Local variables .. + INTEGER IISPEC +* .. External Functions .. + INTEGER IPARAM2STAGE + EXTERNAL IPARAM2STAGE +* .. +* .. Arrays in Common .. + INTEGER IPARMS( 100 ) +* .. +* .. Common blocks .. + COMMON / CLAENV / IPARMS +* .. +* .. Save statement .. + SAVE / CLAENV / +* .. +* .. Executable Statements .. +* + IF(( ISPEC.GE.1 ) .AND. (ISPEC.LE.5)) THEN +* +* 1 <= ISPEC <= 5: 2stage eigenvalues SVD routines. +* + IF( ISPEC.EQ.1 ) THEN + ILAENV2STAGE = IPARMS( 1 ) + ELSE + IISPEC = 16 + ISPEC + ILAENV2STAGE = IPARAM2STAGE( IISPEC, NAME, OPTS, + $ N1, N2, N3, N4 ) + ENDIF +* + ELSE +* +* Invalid value for ISPEC +* + ILAENV2STAGE = -1 + END IF +* + RETURN + END diff --git a/make.inc.example b/make.inc.example index 9aa454dfe1..f114baebbd 100644 --- a/make.inc.example +++ b/make.inc.example @@ -20,9 +20,9 @@ CFLAGS = -O3 # should not compile LAPACK with flags such as -ffpe-trap=overflow. # FORTRAN = gfortran -OPTS = -O2 -frecursive +OPTS = -O2 DRVOPTS = $(OPTS) -NOOPT = -O0 -frecursive +NOOPT = -O0 # Define LOADER and LOADOPTS to refer to the loader and desired # load options for your machine.