fixed array index problems in new CSD routines by adding MAX() to ensure index is...
authorjames <james@8a072113-8704-0410-8d35-dd094bca7971>
Wed, 5 Jun 2013 02:55:11 +0000 (02:55 +0000)
committerjames <james@8a072113-8704-0410-8d35-dd094bca7971>
Wed, 5 Jun 2013 02:55:11 +0000 (02:55 +0000)
SRC/cbbcsd.f
SRC/cuncsd2by1.f
SRC/dbbcsd.f
SRC/dorcsd2by1.f
SRC/sbbcsd.f
SRC/sorcsd2by1.f
SRC/zbbcsd.f
SRC/zuncsd2by1.f

index d60f532c1c0ffde9a0a67d4c1919ebeb4e159ba9..fdc2babc4cb6db94c0bca1fc77510449a51baeee 100644 (file)
 *     Initial deflation
 *
       IMAX = Q
-      DO WHILE( ( IMAX .GT. 1 ) .AND. ( PHI(IMAX-1) .EQ. ZERO ) )
+      DO WHILE((IMAX.GT.1).AND.(PHI(MAX(IMAX-1,1)).EQ.ZERO))
          IMAX = IMAX - 1
       END DO
       IMIN = IMAX - 1
index 172ff7ac80968520a379d93371dfbaf66418cd4f..74364cec33d06b092cdbc7c512e9405a60247bdf 100644 (file)
       IF( INFO .EQ. 0 ) THEN
          IPHI = 2
          IB11D = IPHI + MAX( 1, R-1 )
-         IB11E = IB11D + R
-         IB12D = IB11E + R - 1
-         IB12E = IB12D + R
-         IB21D = IB12E + R - 1
-         IB21E = IB21D + R
-         IB22D = IB21E + R - 1
-         IB22E = IB22D + R
-         IBBCSD = IB22E + R - 1
+         IB11E = IB11D + MAX( 1, R )
+         IB12D = IB11E + MAX( 1, R - 1 )
+         IB12E = IB12D + MAX( 1, R )
+         IB21D = IB12E + MAX( 1, R - 1 )
+         IB21E = IB21D + MAX( 1, R )
+         IB22D = IB21E + MAX( 1, R - 1 )
+         IB22E = IB22D + MAX( 1, R )
+         IBBCSD = IB22E + MAX( 1, R - 1 )
          ITAUP1 = 2
          ITAUP2 = ITAUP1 + MAX( 1, P )
          ITAUQ1 = ITAUP2 + MAX( 1, M-P )
index 479168e2695a4711c783c67b1424db1211dceb62..775643b6e693ca5ecbb5d9fa6bf2d09a04fb04ba 100644 (file)
 *     Initial deflation
 *
       IMAX = Q
-      DO WHILE( ( IMAX .GT. 1 ) .AND. ( PHI(IMAX-1) .EQ. ZERO ) )
+      DO WHILE((IMAX.GT.1).AND.(PHI(MAX(IMAX-1,1)).EQ.ZERO))
          IMAX = IMAX - 1
       END DO
       IMIN = IMAX - 1
index 916b17596a900567bb01a2881174d9b19b6787c7..f3ac4e54600f42d990d574a77b1e0b00acd983a5 100644 (file)
       IF( INFO .EQ. 0 ) THEN
          IPHI = 2
          IB11D = IPHI + MAX( 1, R-1 )
-         IB11E = IB11D + R
-         IB12D = IB11E + R - 1
-         IB12E = IB12D + R
-         IB21D = IB12E + R - 1
-         IB21E = IB21D + R
-         IB22D = IB21E + R - 1
-         IB22E = IB22D + R
-         IBBCSD = IB22E + R - 1
+         IB11E = IB11D + MAX( 1, R )
+         IB12D = IB11E + MAX( 1, R - 1 )
+         IB12E = IB12D + MAX( 1, R )
+         IB21D = IB12E + MAX( 1, R - 1 )
+         IB21E = IB21D + MAX( 1, R )
+         IB22D = IB21E + MAX( 1, R - 1 )
+         IB22E = IB22D + MAX( 1, R )
+         IBBCSD = IB22E + MAX( 1, R - 1 )
          ITAUP1 = IPHI + MAX( 1, R-1 )
          ITAUP2 = ITAUP1 + MAX( 1, P )
          ITAUQ1 = ITAUP2 + MAX( 1, M-P )
index 162d5336f396a7a226e3cdf87e9d59c781cc132c..c304d07658115a30a75d3661991fe9c9bb6fffd6 100644 (file)
 *     Initial deflation
 *
       IMAX = Q
-      DO WHILE( ( IMAX .GT. 1 ) .AND. ( PHI(IMAX-1) .EQ. ZERO ) )
+      DO WHILE((IMAX.GT.1).AND.(PHI(MAX(IMAX-1,1)).EQ.ZERO))
          IMAX = IMAX - 1
       END DO
       IMIN = IMAX - 1
index b7b3b8a3f74e00b38e22421781ef12b393866092..9f02a7c162a737be500f5521a4262b7caabd4d51 100644 (file)
       IF( INFO .EQ. 0 ) THEN
          IPHI = 2
          IB11D = IPHI + MAX( 1, R-1 )
-         IB11E = IB11D + R
-         IB12D = IB11E + R - 1
-         IB12E = IB12D + R
-         IB21D = IB12E + R - 1
-         IB21E = IB21D + R
-         IB22D = IB21E + R - 1
-         IB22E = IB22D + R
-         IBBCSD = IB22E + R - 1
+         IB11E = IB11D + MAX( 1, R )
+         IB12D = IB11E + MAX( 1, R - 1 )
+         IB12E = IB12D + MAX( 1, R )
+         IB21D = IB12E + MAX( 1, R - 1 )
+         IB21E = IB21D + MAX( 1, R )
+         IB22D = IB21E + MAX( 1, R - 1 )
+         IB22E = IB22D + MAX( 1, R )
+         IBBCSD = IB22E + MAX( 1, R - 1 )
          ITAUP1 = IPHI + MAX( 1, R-1 )
          ITAUP2 = ITAUP1 + MAX( 1, P )
          ITAUQ1 = ITAUP2 + MAX( 1, M-P )
index dceb6b8d48503b438f1ef64ebe7d5729a0abdda5..4a6b5c5364165b8de8db758551170a887cd246f8 100644 (file)
 *     Initial deflation
 *
       IMAX = Q
-      DO WHILE( ( IMAX .GT. 1 ) .AND. ( PHI(IMAX-1) .EQ. ZERO ) )
+      DO WHILE((IMAX.GT.1).AND.(PHI(MAX(IMAX-1,1)).EQ.ZERO))
          IMAX = IMAX - 1
       END DO
       IMIN = IMAX - 1
index c2e228e277f31d1f37daeeb132571c74aadc0be9..777f132e792e2d2d361c60a6ca9965b66f9749e0 100644 (file)
       IF( INFO .EQ. 0 ) THEN
          IPHI = 2
          IB11D = IPHI + MAX( 1, R-1 )
-         IB11E = IB11D + R
-         IB12D = IB11E + R - 1
-         IB12E = IB12D + R
-         IB21D = IB12E + R - 1
-         IB21E = IB21D + R
-         IB22D = IB21E + R - 1
-         IB22E = IB22D + R
-         IBBCSD = IB22E + R - 1
+         IB11E = IB11D + MAX( 1, R )
+         IB12D = IB11E + MAX( 1, R - 1 )
+         IB12E = IB12D + MAX( 1, R )
+         IB21D = IB12E + MAX( 1, R - 1 )
+         IB21E = IB21D + MAX( 1, R )
+         IB22D = IB21E + MAX( 1, R - 1 )
+         IB22E = IB22D + MAX( 1, R )
+         IBBCSD = IB22E + MAX( 1, R - 1 )
          ITAUP1 = 2
          ITAUP2 = ITAUP1 + MAX( 1, P )
          ITAUQ1 = ITAUP2 + MAX( 1, M-P )