Browse Source

Merge pull request #3830 from martin-frbg/lapack691+698

Add quick return in ?LASCL; use normwise criterion for INF in QZ; fix workspace calcn for ?SYEVD (Reference-LAPACK PRs 674+691+698)
tags/v0.3.22^2
Martin Kroeker GitHub 3 years ago
parent
commit
b1102fe250
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 20 additions and 32 deletions
  1. +1
    -1
      lapack-netlib/SRC/cheevd.f
  2. +2
    -7
      lapack-netlib/SRC/chgeqz.f
  3. +2
    -0
      lapack-netlib/SRC/clascl.f
  4. +2
    -7
      lapack-netlib/SRC/dhgeqz.f
  5. +2
    -0
      lapack-netlib/SRC/dlascl.f
  6. +1
    -1
      lapack-netlib/SRC/dsyevd.f
  7. +2
    -7
      lapack-netlib/SRC/shgeqz.f
  8. +2
    -0
      lapack-netlib/SRC/slascl.f
  9. +1
    -1
      lapack-netlib/SRC/ssyevd.f
  10. +1
    -1
      lapack-netlib/SRC/zheevd.f
  11. +2
    -7
      lapack-netlib/SRC/zhgeqz.f
  12. +2
    -0
      lapack-netlib/SRC/zlascl.f

+ 1
- 1
lapack-netlib/SRC/cheevd.f View File

@@ -284,7 +284,7 @@
LIWMIN = 1
END IF
LOPT = MAX( LWMIN, N +
$ ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 ) )
$ N*ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 ) )
LROPT = LRWMIN
LIOPT = LIWMIN
END IF


+ 2
- 7
lapack-netlib/SRC/chgeqz.f View File

@@ -523,9 +523,7 @@
END IF
END IF
*
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
$ ) ) ) ) THEN
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
T( ILAST, ILAST ) = CZERO
GO TO 50
END IF
@@ -551,10 +549,7 @@
*
* Test 2: for T(j,j)=0
*
TEMP = ABS ( T( J, J + 1 ) )
IF ( J .GT. ILO )
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
T( J, J ) = CZERO
*
* Test 1a: Check for 2 consecutive small subdiagonals in A


+ 2
- 0
lapack-netlib/SRC/clascl.f View File

@@ -272,6 +272,8 @@
ELSE
MUL = CTOC / CFROMC
DONE = .TRUE.
IF (MUL .EQ. ONE)
$ RETURN
END IF
END IF
*


+ 2
- 7
lapack-netlib/SRC/dhgeqz.f View File

@@ -536,9 +536,7 @@
END IF
END IF
*
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
$ ) ) ) ) THEN
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
T( ILAST, ILAST ) = ZERO
GO TO 70
END IF
@@ -564,10 +562,7 @@
*
* Test 2: for T(j,j)=0
*
TEMP = ABS ( T( J, J + 1 ) )
IF ( J .GT. ILO )
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
T( J, J ) = ZERO
*
* Test 1a: Check for 2 consecutive small subdiagonals in A


+ 2
- 0
lapack-netlib/SRC/dlascl.f View File

@@ -272,6 +272,8 @@
ELSE
MUL = CTOC / CFROMC
DONE = .TRUE.
IF (MUL .EQ. ONE)
$ RETURN
END IF
END IF
*


+ 1
- 1
lapack-netlib/SRC/dsyevd.f View File

@@ -257,7 +257,7 @@
LWMIN = 2*N + 1
END IF
LOPT = MAX( LWMIN, 2*N +
$ ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 ) )
$ N*ILAENV( 1, 'DSYTRD', UPLO, N, -1, -1, -1 ) )
LIOPT = LIWMIN
END IF
WORK( 1 ) = LOPT


+ 2
- 7
lapack-netlib/SRC/shgeqz.f View File

@@ -536,9 +536,7 @@
END IF
END IF
*
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
$ ) ) ) ) THEN
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
T( ILAST, ILAST ) = ZERO
GO TO 70
END IF
@@ -564,10 +562,7 @@
*
* Test 2: for T(j,j)=0
*
TEMP = ABS ( T( J, J + 1 ) )
IF ( J .GT. ILO )
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
T( J, J ) = ZERO
*
* Test 1a: Check for 2 consecutive small subdiagonals in A


+ 2
- 0
lapack-netlib/SRC/slascl.f View File

@@ -272,6 +272,8 @@
ELSE
MUL = CTOC / CFROMC
DONE = .TRUE.
IF (MUL .EQ. ONE)
$ RETURN
END IF
END IF
*


+ 1
- 1
lapack-netlib/SRC/ssyevd.f View File

@@ -255,7 +255,7 @@
LWMIN = 2*N + 1
END IF
LOPT = MAX( LWMIN, 2*N +
$ ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) )
$ N*ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) )
LIOPT = LIWMIN
END IF
WORK( 1 ) = LOPT


+ 1
- 1
lapack-netlib/SRC/zheevd.f View File

@@ -284,7 +284,7 @@
LIWMIN = 1
END IF
LOPT = MAX( LWMIN, N +
$ ILAENV( 1, 'ZHETRD', UPLO, N, -1, -1, -1 ) )
$ N*ILAENV( 1, 'ZHETRD', UPLO, N, -1, -1, -1 ) )
LROPT = LRWMIN
LIOPT = LIWMIN
END IF


+ 2
- 7
lapack-netlib/SRC/zhgeqz.f View File

@@ -524,9 +524,7 @@
END IF
END IF
*
IF( ABS( T( ILAST, ILAST ) ).LE.MAX( SAFMIN, ULP*(
$ ABS( T( ILAST - 1, ILAST ) ) + ABS( T( ILAST-1, ILAST-1 )
$ ) ) ) ) THEN
IF( ABS( T( ILAST, ILAST ) ).LE.BTOL ) THEN
T( ILAST, ILAST ) = CZERO
GO TO 50
END IF
@@ -552,10 +550,7 @@
*
* Test 2: for T(j,j)=0
*
TEMP = ABS ( T( J, J + 1 ) )
IF ( J .GT. ILO )
$ TEMP = TEMP + ABS ( T( J - 1, J ) )
IF( ABS( T( J, J ) ).LT.MAX( SAFMIN,ULP*TEMP ) ) THEN
IF( ABS( T( J, J ) ).LT.BTOL ) THEN
T( J, J ) = CZERO
*
* Test 1a: Check for 2 consecutive small subdiagonals in A


+ 2
- 0
lapack-netlib/SRC/zlascl.f View File

@@ -272,6 +272,8 @@
ELSE
MUL = CTOC / CFROMC
DONE = .TRUE.
IF (MUL .EQ. ONE)
$ RETURN
END IF
END IF
*


Loading…
Cancel
Save