Bug fix in SLAMSWLQ; fix type mismatches.
authorJeffreySax <jeffrey@extremeoptimization.com>
Tue, 9 May 2017 14:05:30 +0000 (10:05 -0400)
committerJeffreySax <jeffrey@extremeoptimization.com>
Tue, 9 May 2017 14:05:30 +0000 (10:05 -0400)
- Fix: SLAMSWLQ calls DGEMLQT instead of SGEMLQT.
- Use dummy variable for ?LANGE work array argument in [CS]GETSLS.
- Use 1-element array for workspace query in ?GETSLS.
- Fix PARAMETER declaration type mismatches in ILASLC, IPARAM2STAGE,
SGELQT3, ZHECON_3, ZHECON_ROOK, ZHETRI2X.

SRC/cgetsls.f
SRC/dgetsls.f
SRC/ilaslc.f
SRC/iparam2stage.F
SRC/sgelqt3.f
SRC/sgetsls.f
SRC/slamswlq.f
SRC/zgetsls.f
SRC/zhecon_3.f
SRC/zhecon_rook.f
SRC/zhetri2x.f

index f5910b3..d0e4ddd 100644 (file)
       INTEGER            I, IASCL, IBSCL, J, MINMN, MAXMN, BROW,
      $                   SCLLEN, MNK, TSZO, TSZM, LWO, LWM, LW1, LW2,
      $                   WSIZEO, WSIZEM, INFO2
-      REAL               ANRM, BIGNUM, BNRM, SMLNUM
-      COMPLEX            TQ( 5 ), WORKQ
+      REAL               ANRM, BIGNUM, BNRM, SMLNUM, DUM( 1 )
+      COMPLEX            TQ( 5 ), WORKQ( 1 )
 *     ..
 *     .. External Functions ..
       LOGICAL            LSAME
        IF( M.GE.N ) THEN
          CALL CGEQR( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 )
          TSZO = INT( TQ( 1 ) )
-         LWO  = INT( WORKQ )
+         LWO  = INT( WORKQ( 1 ) )
          CALL CGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWO  = MAX( LWO, INT( WORKQ ) )
+         LWO  = MAX( LWO, INT( WORKQ( 1 ) ) )
          CALL CGEQR( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 )
          TSZM = INT( TQ( 1 ) )
-         LWM  = INT( WORKQ )
+         LWM  = INT( WORKQ( 1 ) )
          CALL CGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ,
      $                TSZM, B, LDB, WORKQ, -1, INFO2 )
-         LWM = MAX( LWM, INT( WORKQ ) )
+         LWM = MAX( LWM, INT( WORKQ( 1 ) ) )
          WSIZEO = TSZO + LWO
          WSIZEM = TSZM + LWM
        ELSE
          CALL CGELQ( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 )
          TSZO = INT( TQ( 1 ) )
-         LWO  = INT( WORKQ )
+         LWO  = INT( WORKQ( 1 ) )
          CALL CGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWO  = MAX( LWO, INT( WORKQ ) )
+         LWO  = MAX( LWO, INT( WORKQ( 1 ) ) )
          CALL CGELQ( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 )
          TSZM = INT( TQ( 1 ) )
-         LWM  = INT( WORKQ )
+         LWM  = INT( WORKQ( 1 ) )
          CALL CGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWM  = MAX( LWM, INT( WORKQ ) )
+         LWM  = MAX( LWM, INT( WORKQ( 1 ) ) )
          WSIZEO = TSZO + LWO
          WSIZEM = TSZM + LWM
        END IF
 *
 *     Scale A, B if max element outside range [SMLNUM,BIGNUM]
 *
-      ANRM = CLANGE( 'M', M, N, A, LDA, WORK )
+      ANRM = CLANGE( 'M', M, N, A, LDA, DUM )
       IASCL = 0
       IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
 *
       IF ( TRAN ) THEN
         BROW = N
       END IF
-      BNRM = CLANGE( 'M', BROW, NRHS, B, LDB, WORK )
+      BNRM = CLANGE( 'M', BROW, NRHS, B, LDB, DUM )
       IBSCL = 0
       IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
 *
index ca0ef77..f4d8d59 100644 (file)
       INTEGER            I, IASCL, IBSCL, J, MINMN, MAXMN, BROW,
      $                   SCLLEN, MNK, TSZO, TSZM, LWO, LWM, LW1, LW2,
      $                   WSIZEO, WSIZEM, INFO2
-      DOUBLE PRECISION   ANRM, BIGNUM, BNRM, SMLNUM, TQ( 5 ), WORKQ
+      DOUBLE PRECISION   ANRM, BIGNUM, BNRM, SMLNUM, TQ( 5 ), WORKQ( 1 )
 *     ..
 *     .. External Functions ..
       LOGICAL            LSAME
        IF( M.GE.N ) THEN
          CALL DGEQR( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 )
          TSZO = INT( TQ( 1 ) )
-         LWO  = INT( WORKQ )
+         LWO  = INT( WORKQ( 1 ) )
          CALL DGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWO  = MAX( LWO, INT( WORKQ ) )
+         LWO  = MAX( LWO, INT( WORKQ( 1 ) ) )
          CALL DGEQR( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 )
          TSZM = INT( TQ( 1 ) )
-         LWM  = INT( WORKQ )
+         LWM  = INT( WORKQ( 1 ) )
          CALL DGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ,
      $                TSZM, B, LDB, WORKQ, -1, INFO2 )
-         LWM = MAX( LWM, INT( WORKQ ) )
+         LWM = MAX( LWM, INT( WORKQ( 1 ) ) )
          WSIZEO = TSZO + LWO
          WSIZEM = TSZM + LWM
        ELSE
          CALL DGELQ( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 )
          TSZO = INT( TQ( 1 ) )
-         LWO  = INT( WORKQ )
+         LWO  = INT( WORKQ( 1 ) )
          CALL DGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWO  = MAX( LWO, INT( WORKQ ) )
+         LWO  = MAX( LWO, INT( WORKQ( 1 ) ) )
          CALL DGELQ( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 )
          TSZM = INT( TQ( 1 ) )
-         LWM  = INT( WORKQ )
+         LWM  = INT( WORKQ( 1 ) )
          CALL DGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWM  = MAX( LWM, INT( WORKQ ) )
+         LWM  = MAX( LWM, INT( WORKQ( 1 ) ) )
          WSIZEO = TSZO + LWO
          WSIZEM = TSZM + LWM
        END IF
index d7770fd..c3200a9 100644 (file)
@@ -94,7 +94,7 @@
 *
 *     .. Parameters ..
       REAL             ZERO
-      PARAMETER ( ZERO = 0.0D+0 )
+      PARAMETER ( ZERO = 0.0E+0 )
 *     ..
 *     .. Local Scalars ..
       INTEGER I
index 0fc1795..60bd0b6 100644 (file)
       INTEGER            I, IC, IZ, KD, IB, LHOUS, LWORK, NTHREADS,
      $                   FACTOPTNB, QROPTNB, LQOPTNB
       LOGICAL            RPREC, CPREC
-      CHARACTER          PREC*1, ALGO*3, STAG*5, SUBNAM*12, VECT*3
+      CHARACTER          PREC*1, ALGO*3, STAG*5, SUBNAM*12, VECT*1
 *     ..
 *     .. Intrinsic Functions ..
       INTRINSIC          CHAR, ICHAR, MAX
index 9b88874..bf34126 100644 (file)
 *
 *     .. Parameters ..
       REAL   ONE
-      PARAMETER ( ONE = 1.0D+00 )
+      PARAMETER ( ONE = 1.0E+00 )
 *     ..
 *     .. Local Scalars ..
       INTEGER   I, I1, J, J1, M1, M2, N1, N2, IINFO
index b2312d6..3bf6381 100644 (file)
       INTEGER            I, IASCL, IBSCL, J, MINMN, MAXMN, BROW,
      $                   SCLLEN, MNK, TSZO, TSZM, LWO, LWM, LW1, LW2,
      $                   WSIZEO, WSIZEM, INFO2
-      REAL               ANRM, BIGNUM, BNRM, SMLNUM, TQ( 5 ), WORKQ
+      REAL               ANRM, BIGNUM, BNRM, SMLNUM, TQ( 5 ), WORKQ( 1 )
 *     ..
 *     .. External Functions ..
       LOGICAL            LSAME
        IF( M.GE.N ) THEN
          CALL SGEQR( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 )
          TSZO = INT( TQ( 1 ) )
-         LWO  = INT( WORKQ )
+         LWO  = INT( WORKQ( 1 ) )
          CALL SGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWO  = MAX( LWO, INT( WORKQ ) )
+         LWO  = MAX( LWO, INT( WORKQ( 1 ) ) )
          CALL SGEQR( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 )
          TSZM = INT( TQ( 1 ) )
-         LWM  = INT( WORKQ )
+         LWM  = INT( WORKQ( 1 ) )
          CALL SGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ,
      $                TSZM, B, LDB, WORKQ, -1, INFO2 )
-         LWM = MAX( LWM, INT( WORKQ ) )
+         LWM = MAX( LWM, INT( WORKQ( 1 ) ) )
          WSIZEO = TSZO + LWO
          WSIZEM = TSZM + LWM
        ELSE
          CALL SGELQ( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 )
          TSZO = INT( TQ( 1 ) )
-         LWO  = INT( WORKQ )
+         LWO  = INT( WORKQ( 1 ) )
          CALL SGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWO  = MAX( LWO, INT( WORKQ ) )
+         LWO  = MAX( LWO, INT( WORKQ( 1 ) ) )
          CALL SGELQ( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 )
          TSZM = INT( TQ( 1 ) )
-         LWM  = INT( WORKQ )
+         LWM  = INT( WORKQ( 1 ) )
          CALL SGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWM  = MAX( LWM, INT( WORKQ ) )
+         LWM  = MAX( LWM, INT( WORKQ( 1 ) ) )
          WSIZEO = TSZO + LWO
          WSIZEM = TSZM + LWM
        END IF
index f3238b6..9e912a7 100644 (file)
       END IF
 *
       IF((NB.LE.K).OR.(NB.GE.MAX(M,N,K))) THEN
-        CALL DGEMLQT( SIDE, TRANS, M, N, K, MB, A, LDA,
+        CALL SGEMLQT( SIDE, TRANS, M, N, K, MB, A, LDA,
      $        T, LDT, C, LDC, WORK, INFO)
         RETURN
       END IF
index e9ff84f..0487647 100644 (file)
       INTEGER            I, IASCL, IBSCL, J, MINMN, MAXMN, BROW,
      $                   SCLLEN, MNK, TSZO, TSZM, LWO, LWM, LW1, LW2,
      $                   WSIZEO, WSIZEM, INFO2
-      DOUBLE PRECISION   ANRM, BIGNUM, BNRM, SMLNUM
-      COMPLEX*16         TQ( 5 ), WORKQ
+      DOUBLE PRECISION   ANRM, BIGNUM, BNRM, SMLNUM, DUM( 1 )
+      COMPLEX*16         TQ( 5 ), WORKQ( 1 )
 *     ..
 *     .. External Functions ..
       LOGICAL            LSAME
        IF( M.GE.N ) THEN
          CALL ZGEQR( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 )
          TSZO = INT( TQ( 1 ) )
-         LWO  = INT( WORKQ )
+         LWO  = INT( WORKQ( 1 ) )
          CALL ZGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWO  = MAX( LWO, INT( WORKQ ) )
+         LWO  = MAX( LWO, INT( WORKQ( 1 ) ) )
          CALL ZGEQR( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 )
          TSZM = INT( TQ( 1 ) )
-         LWM  = INT( WORKQ )
+         LWM  = INT( WORKQ( 1 ) )
          CALL ZGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ,
      $                TSZM, B, LDB, WORKQ, -1, INFO2 )
-         LWM = MAX( LWM, INT( WORKQ ) )
+         LWM = MAX( LWM, INT( WORKQ( 1 ) ) )
          WSIZEO = TSZO + LWO
          WSIZEM = TSZM + LWM
        ELSE
          CALL ZGELQ( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 )
          TSZO = INT( TQ( 1 ) )
-         LWO  = INT( WORKQ )
+         LWO  = INT( WORKQ( 1 ) )
          CALL ZGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWO  = MAX( LWO, INT( WORKQ ) )
+         LWO  = MAX( LWO, INT( WORKQ( 1 ) ) )
          CALL ZGELQ( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 )
          TSZM = INT( TQ( 1 ) )
-         LWM  = INT( WORKQ )
+         LWM  = INT( WORKQ( 1 ) )
          CALL ZGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ,
      $                TSZO, B, LDB, WORKQ, -1, INFO2 )
-         LWM  = MAX( LWM, INT( WORKQ ) )
+         LWM  = MAX( LWM, INT( WORKQ( 1 ) ) )
          WSIZEO = TSZO + LWO
          WSIZEM = TSZM + LWM
        END IF
 *
 *     Scale A, B if max element outside range [SMLNUM,BIGNUM]
 *
-      ANRM = ZLANGE( 'M', M, N, A, LDA, WORK )
+      ANRM = ZLANGE( 'M', M, N, A, LDA, DUM )
       IASCL = 0
       IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
 *
       IF ( TRAN ) THEN
         BROW = N
       END IF
-      BNRM = ZLANGE( 'M', BROW, NRHS, B, LDB, WORK )
+      BNRM = ZLANGE( 'M', BROW, NRHS, B, LDB, DUM )
       IBSCL = 0
       IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
 *
index db93f6d..e544ac1 100644 (file)
 *  =====================================================================
 *
 *     .. Parameters ..
-      REAL               ONE, ZERO
+      DOUBLE PRECISION   ONE, ZERO
       PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
 *     ..
 *     .. Local Scalars ..
index 3daf535..d19ffc7 100644 (file)
 *  =====================================================================
 *
 *     .. Parameters ..
-      REAL               ONE, ZERO
+      DOUBLE PRECISION   ONE, ZERO
       PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
 *     ..
 *     .. Local Scalars ..
index 1690172..b78ebd8 100644 (file)
 *  =====================================================================
 *
 *     .. Parameters ..
-      REAL               ONE
+      DOUBLE PRECISION   ONE
       COMPLEX*16            CONE, ZERO
       PARAMETER          ( ONE = 1.0D+0,
      $                   CONE = ( 1.0D+0, 0.0D+0 ),