Remove the easy GO TO statments....still 13 to remove in drotm.f and 36 in drotmg.f
authorjulie <julielangou@users.noreply.github.com>
Thu, 10 Mar 2011 23:33:40 +0000 (23:33 +0000)
committerjulie <julielangou@users.noreply.github.com>
Thu, 10 Mar 2011 23:33:40 +0000 (23:33 +0000)
42 files changed:
BLAS/SRC/caxpy.f
BLAS/SRC/ccopy.f
BLAS/SRC/cdotc.f
BLAS/SRC/cdotu.f
BLAS/SRC/crotg.f
BLAS/SRC/cscal.f
BLAS/SRC/csrot.f
BLAS/SRC/csscal.f
BLAS/SRC/cswap.f
BLAS/SRC/dasum.f
BLAS/SRC/daxpy.f
BLAS/SRC/dcopy.f
BLAS/SRC/ddot.f
BLAS/SRC/drot.f
BLAS/SRC/drotg.f
BLAS/SRC/dscal.f
BLAS/SRC/dsdot.f
BLAS/SRC/dswap.f
BLAS/SRC/dzasum.f
BLAS/SRC/icamax.f
BLAS/SRC/idamax.f
BLAS/SRC/isamax.f
BLAS/SRC/izamax.f
BLAS/SRC/sasum.f
BLAS/SRC/saxpy.f
BLAS/SRC/scasum.f
BLAS/SRC/scopy.f
BLAS/SRC/sdot.f
BLAS/SRC/sdsdot.f
BLAS/SRC/srot.f
BLAS/SRC/srotg.f
BLAS/SRC/sscal.f
BLAS/SRC/sswap.f
BLAS/SRC/zaxpy.f
BLAS/SRC/zcopy.f
BLAS/SRC/zdotc.f
BLAS/SRC/zdotu.f
BLAS/SRC/zdrot.f
BLAS/SRC/zdscal.f
BLAS/SRC/zrotg.f
BLAS/SRC/zscal.f
BLAS/SRC/zswap.f

index 763236d..c0bb766 100644 (file)
 *     ..
       IF (N.LE.0) RETURN
       IF (SCABS1(CA).EQ.0.0E+0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
+*
+*        code for both increments equal to 1
+*
+         DO I = 1,N
+            CY(I) = CY(I) + CA*CX(I)
+         END DO
+      ELSE
 *
 *        code for unequal increments or equal increments
 *          not equal to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          CY(IY) = CY(IY) + CA*CX(IX)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
-*
-*        code for both increments equal to 1
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            CY(IY) = CY(IY) + CA*CX(IX)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
 *
-   20 DO 30 I = 1,N
-          CY(I) = CY(I) + CA*CX(I)
-   30 CONTINUE
       RETURN
       END
index 8950380..87446f7 100644 (file)
       INTEGER I,IX,IY
 *     ..
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
-*        code for unequal increments or equal increments
-*          not equal to 1
+*        code for both increments equal to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          CY(IY) = CX(IX)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
+         DO I = 1,N
+            CY(I) = CX(I)
+         END DO
+      ELSE
 *
-*        code for both increments equal to 1
+*        code for unequal increments or equal increments
+*          not equal to 1
 *
-   20 DO 30 I = 1,N
-          CY(I) = CX(I)
-   30 CONTINUE
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            CY(IY) = CX(IX)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END
index 0c121dd..025d163 100644 (file)
       CTEMP = (0.0,0.0)
       CDOTC = (0.0,0.0)
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
-*        code for unequal increments or equal increments
-*          not equal to 1
+*        code for both increments equal to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          CTEMP = CTEMP + CONJG(CX(IX))*CY(IY)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      CDOTC = CTEMP
-      RETURN
+         DO I = 1,N
+            CTEMP = CTEMP + CONJG(CX(I))*CY(I)
+         END DO
+      ELSE
 *
-*        code for both increments equal to 1
+*        code for unequal increments or equal increments
+*          not equal to 1
 *
-   20 DO 30 I = 1,N
-          CTEMP = CTEMP + CONJG(CX(I))*CY(I)
-   30 CONTINUE
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            CTEMP = CTEMP + CONJG(CX(IX))*CY(IY)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       CDOTC = CTEMP
       RETURN
       END
index 01d6bea..d31c16f 100644 (file)
       CTEMP = (0.0,0.0)
       CDOTU = (0.0,0.0)
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
-*        code for unequal increments or equal increments
-*          not equal to 1
+*        code for both increments equal to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          CTEMP = CTEMP + CX(IX)*CY(IY)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      CDOTU = CTEMP
-      RETURN
+         DO I = 1,N
+            CTEMP = CTEMP + CX(I)*CY(I)
+         END DO
+      ELSE
 *
-*        code for both increments equal to 1
+*        code for unequal increments or equal increments
+*          not equal to 1
 *
-   20 DO 30 I = 1,N
-          CTEMP = CTEMP + CX(I)*CY(I)
-   30 CONTINUE
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            CTEMP = CTEMP + CX(IX)*CY(IY)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       CDOTU = CTEMP
       RETURN
       END
index e909545..360028c 100644 (file)
 *     .. Intrinsic Functions ..
       INTRINSIC CABS,CONJG,SQRT
 *     ..
-      IF (CABS(CA).NE.0.) GO TO 10
-      C = 0.
-      S = (1.,0.)
-      CA = CB
-      GO TO 20
-   10 CONTINUE
-      SCALE = CABS(CA) + CABS(CB)
-      NORM = SCALE*SQRT((CABS(CA/SCALE))**2+ (CABS(CB/SCALE))**2)
-      ALPHA = CA/CABS(CA)
-      C = CABS(CA)/NORM
-      S = ALPHA*CONJG(CB)/NORM
-      CA = ALPHA*NORM
-   20 CONTINUE
+      IF (CABS(CA).EQ.0.) THEN
+         C = 0.
+         S = (1.,0.)
+         CA = CB
+      ELSE
+         SCALE = CABS(CA) + CABS(CB)
+         NORM = SCALE*SQRT((CABS(CA/SCALE))**2+ (CABS(CB/SCALE))**2)
+         ALPHA = CA/CABS(CA)
+         C = CABS(CA)/NORM
+         S = ALPHA*CONJG(CB)/NORM
+         CA = ALPHA*NORM
+      END IF
       RETURN
       END
index fdba359..ce1ae15 100644 (file)
       INTEGER I,NINCX
 *     ..
       IF (N.LE.0 .OR. INCX.LE.0) RETURN
-      IF (INCX.EQ.1) GO TO 20
+      IF (INCX.EQ.1) THEN
 *
-*        code for increment not equal to 1
+*        code for increment equal to 1
 *
-      NINCX = N*INCX
-      DO 10 I = 1,NINCX,INCX
-          CX(I) = CA*CX(I)
-   10 CONTINUE
-      RETURN
+         DO I = 1,N
+            CX(I) = CA*CX(I)
+         END DO
+      ELSE
 *
-*        code for increment equal to 1
+*        code for increment not equal to 1
 *
-   20 DO 30 I = 1,N
-          CX(I) = CA*CX(I)
-   30 CONTINUE
+         NINCX = N*INCX
+         DO I = 1,NINCX,INCX
+            CX(I) = CA*CX(I)
+         END DO
+      END IF
       RETURN
       END
index 09e72b2..4178079 100644 (file)
 *
       IF( N.LE.0 )
      $   RETURN
-      IF( INCX.EQ.1 .AND. INCY.EQ.1 )
-     $   GO TO 20
+      IF( INCX.EQ.1 .AND. INCY.EQ.1 ) THEN
 *
-*        code for unequal increments or equal increments not equal
-*          to 1
+*        code for both increments equal to 1
 *
-      IX = 1
-      IY = 1
-      IF( INCX.LT.0 )
-     $   IX = ( -N+1 )*INCX + 1
-      IF( INCY.LT.0 )
-     $   IY = ( -N+1 )*INCY + 1
-      DO 10 I = 1, N
-         CTEMP = C*CX( IX ) + S*CY( IY )
-         CY( IY ) = C*CY( IY ) - S*CX( IX )
-         CX( IX ) = CTEMP
-         IX = IX + INCX
-         IY = IY + INCY
-   10 CONTINUE
-      RETURN
+         DO I = 1, N
+            CTEMP = C*CX( I ) + S*CY( I )
+            CY( I ) = C*CY( I ) - S*CX( I )
+            CX( I ) = CTEMP
+         END DO
+      ELSE
 *
-*        code for both increments equal to 1
+*        code for unequal increments or equal increments not equal
+*          to 1
 *
-   20 DO 30 I = 1, N
-         CTEMP = C*CX( I ) + S*CY( I )
-         CY( I ) = C*CY( I ) - S*CX( I )
-         CX( I ) = CTEMP
-   30 CONTINUE
+         IX = 1
+         IY = 1
+         IF( INCX.LT.0 )
+     $      IX = ( -N+1 )*INCX + 1
+         IF( INCY.LT.0 )
+     $      IY = ( -N+1 )*INCY + 1
+         DO I = 1, N
+            CTEMP = C*CX( IX ) + S*CY( IY )
+            CY( IY ) = C*CY( IY ) - S*CX( IX )
+            CX( IX ) = CTEMP
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END
index 338f629..8ec2ead 100644 (file)
       INTRINSIC AIMAG,CMPLX,REAL
 *     ..
       IF (N.LE.0 .OR. INCX.LE.0) RETURN
-      IF (INCX.EQ.1) GO TO 20
+      IF (INCX.EQ.1) THEN
 *
-*        code for increment not equal to 1
+*        code for increment equal to 1
 *
-      NINCX = N*INCX
-      DO 10 I = 1,NINCX,INCX
-          CX(I) = CMPLX(SA*REAL(CX(I)),SA*AIMAG(CX(I)))
-   10 CONTINUE
-      RETURN
+         DO I = 1,N
+            CX(I) = CMPLX(SA*REAL(CX(I)),SA*AIMAG(CX(I)))
+         END DO
+      ELSE
 *
-*        code for increment equal to 1
+*        code for increment not equal to 1
 *
-   20 DO 30 I = 1,N
-          CX(I) = CMPLX(SA*REAL(CX(I)),SA*AIMAG(CX(I)))
-   30 CONTINUE
+         NINCX = N*INCX
+         DO I = 1,NINCX,INCX
+            CX(I) = CMPLX(SA*REAL(CX(I)),SA*AIMAG(CX(I)))
+         END DO
+      END IF
       RETURN
       END
index 40dd71f..1e26717 100644 (file)
       INTEGER I,IX,IY
 *     ..
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
+*
+*       code for both increments equal to 1
+         DO I = 1,N
+            CTEMP = CX(I)
+            CX(I) = CY(I)
+            CY(I) = CTEMP
+         END DO
+      ELSE
 *
 *       code for unequal increments or equal increments not equal
 *         to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          CTEMP = CX(IX)
-          CX(IX) = CY(IY)
-          CY(IY) = CTEMP
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
-*
-*       code for both increments equal to 1
-   20 DO 30 I = 1,N
-          CTEMP = CX(I)
-          CX(I) = CY(I)
-          CY(I) = CTEMP
-   30 CONTINUE
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            CTEMP = CX(IX)
+            CX(IX) = CY(IY)
+            CY(IY) = CTEMP
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END
index 8705ecd..e673554 100644 (file)
       DASUM = 0.0d0
       DTEMP = 0.0d0
       IF (N.LE.0 .OR. INCX.LE.0) RETURN
-      IF (INCX.EQ.1) GO TO 20
-*
-*        code for increment not equal to 1
-*
-      NINCX = N*INCX
-      DO 10 I = 1,NINCX,INCX
-          DTEMP = DTEMP + DABS(DX(I))
-   10 CONTINUE
-      DASUM = DTEMP
-      RETURN
-*
+      IF (INCX.EQ.1) THEN
 *        code for increment equal to 1
 *
 *
 *        clean-up loop
 *
-   20 M = MOD(N,6)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          DTEMP = DTEMP + DABS(DX(I))
-   30 CONTINUE
-      IF (N.LT.6) GO TO 60
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,6
-          DTEMP = DTEMP + DABS(DX(I)) + DABS(DX(I+1)) + DABS(DX(I+2)) +
-     +            DABS(DX(I+3)) + DABS(DX(I+4)) + DABS(DX(I+5))
-   50 CONTINUE
-   60 DASUM = DTEMP
+         M = MOD(N,6)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               DTEMP = DTEMP + DABS(DX(I))
+            END DO
+            IF (N.LT.6) THEN
+               DASUM = DTEMP
+               RETURN
+            END IF
+         END IF
+         MP1 = M + 1
+         DO I = MP1,N,6
+            DTEMP = DTEMP + DABS(DX(I)) + DABS(DX(I+1)) +
+     $              DABS(DX(I+2)) + DABS(DX(I+3)) +
+     $              DABS(DX(I+4)) + DABS(DX(I+5))
+         END DO
+      ELSE
+*
+*        code for increment not equal to 1
+*
+         NINCX = N*INCX
+         DO I = 1,NINCX,INCX
+            DTEMP = DTEMP + DABS(DX(I))
+         END DO
+      END IF
+      DASUM = DTEMP
       RETURN
       END
index 4f92db2..ddc7449 100644 (file)
 *     ..
       IF (N.LE.0) RETURN
       IF (DA.EQ.0.0d0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
+*
+*        code for both increments equal to 1
+*
+*
+*        clean-up loop
+*
+         M = MOD(N,4)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               DY(I) = DY(I) + DA*DX(I)
+            END DO
+         END IF
+         IF (N.LT.4) RETURN
+         MP1 = M + 1
+         DO I = MP1,N,4
+            DY(I) = DY(I) + DA*DX(I)
+            DY(I+1) = DY(I+1) + DA*DX(I+1)
+            DY(I+2) = DY(I+2) + DA*DX(I+2)
+            DY(I+3) = DY(I+3) + DA*DX(I+3)
+         END DO
+      ELSE
 *
 *        code for unequal increments or equal increments
 *          not equal to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
           DY(IY) = DY(IY) + DA*DX(IX)
           IX = IX + INCX
           IY = IY + INCY
-   10 CONTINUE
-      RETURN
-*
-*        code for both increments equal to 1
-*
-*
-*        clean-up loop
-*
-   20 M = MOD(N,4)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          DY(I) = DY(I) + DA*DX(I)
-   30 CONTINUE
-      IF (N.LT.4) RETURN
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,4
-          DY(I) = DY(I) + DA*DX(I)
-          DY(I+1) = DY(I+1) + DA*DX(I+1)
-          DY(I+2) = DY(I+2) + DA*DX(I+2)
-          DY(I+3) = DY(I+3) + DA*DX(I+3)
-   50 CONTINUE
+         END DO
+      END IF
       RETURN
       END
index dcc8a0c..a441450 100644 (file)
       INTRINSIC MOD
 *     ..
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
-*
-*        code for unequal increments or equal increments
-*          not equal to 1
-*
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          DY(IY) = DX(IX)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
 *        code for both increments equal to 1
 *
 *
 *        clean-up loop
 *
-   20 M = MOD(N,7)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          DY(I) = DX(I)
-   30 CONTINUE
-      IF (N.LT.7) RETURN
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,7
-          DY(I) = DX(I)
-          DY(I+1) = DX(I+1)
-          DY(I+2) = DX(I+2)
-          DY(I+3) = DX(I+3)
-          DY(I+4) = DX(I+4)
-          DY(I+5) = DX(I+5)
-          DY(I+6) = DX(I+6)
-   50 CONTINUE
+         M = MOD(N,7)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               DY(I) = DX(I)
+            END DO
+            IF (N.LT.7) RETURN
+         END IF   
+         MP1 = M + 1
+         DO I = MP1,N,7
+            DY(I) = DX(I)
+            DY(I+1) = DX(I+1)
+            DY(I+2) = DX(I+2)
+            DY(I+3) = DX(I+3)
+            DY(I+4) = DX(I+4)
+            DY(I+5) = DX(I+5)
+            DY(I+6) = DX(I+6)
+         END DO
+      ELSE      
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            DY(IY) = DX(IX)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END
index 3df03ae..33719ee 100644 (file)
       DDOT = 0.0d0
       DTEMP = 0.0d0
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
-*
-*        code for unequal increments or equal increments
-*          not equal to 1
-*
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          DTEMP = DTEMP + DX(IX)*DY(IY)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      DDOT = DTEMP
-      RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
 *        code for both increments equal to 1
 *
 *
 *        clean-up loop
 *
-   20 M = MOD(N,5)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          DTEMP = DTEMP + DX(I)*DY(I)
-   30 CONTINUE
-      IF (N.LT.5) GO TO 60
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,5
+         M = MOD(N,5)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               DTEMP = DTEMP + DX(I)*DY(I)
+            END DO
+            IF (N.LT.5) THEN
+               DDOT=DTEMP
+            RETURN
+            END IF
+         END IF
+         MP1 = M + 1
+         DO I = MP1,N,5
           DTEMP = DTEMP + DX(I)*DY(I) + DX(I+1)*DY(I+1) +
-     +            DX(I+2)*DY(I+2) + DX(I+3)*DY(I+3) + DX(I+4)*DY(I+4)
-   50 CONTINUE
-   60 DDOT = DTEMP
+     $            DX(I+2)*DY(I+2) + DX(I+3)*DY(I+3) + DX(I+4)*DY(I+4)
+         END DO
+      ELSE
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            DTEMP = DTEMP + DX(IX)*DY(IY)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
+      DDOT = DTEMP
       RETURN
       END
index 2075314..a02bda3 100644 (file)
       INTEGER I,IX,IY
 *     ..
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
-*       code for unequal increments or equal increments not equal
-*         to 1
+*       code for both increments equal to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          DTEMP = C*DX(IX) + S*DY(IY)
-          DY(IY) = C*DY(IY) - S*DX(IX)
-          DX(IX) = DTEMP
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
+         DO I = 1,N
+            DTEMP = C*DX(I) + S*DY(I)
+            DY(I) = C*DY(I) - S*DX(I)
+            DX(I) = DTEMP
+         END DO
+      ELSE
 *
-*       code for both increments equal to 1
+*       code for unequal increments or equal increments not equal
+*         to 1
 *
-   20 DO 30 I = 1,N
-          DTEMP = C*DX(I) + S*DY(I)
-          DY(I) = C*DY(I) - S*DX(I)
-          DX(I) = DTEMP
-   30 CONTINUE
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            DTEMP = C*DX(IX) + S*DY(IY)
+            DY(IY) = C*DY(IY) - S*DX(IX)
+            DX(IX) = DTEMP
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END
index a6ba96a..3819f47 100644 (file)
       ROE = DB
       IF (DABS(DA).GT.DABS(DB)) ROE = DA
       SCALE = DABS(DA) + DABS(DB)
-      IF (SCALE.NE.0.0d0) GO TO 10
-      C = 1.0d0
-      S = 0.0d0
-      R = 0.0d0
-      Z = 0.0d0
-      GO TO 20
-   10 R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2)
-      R = DSIGN(1.0d0,ROE)*R
-      C = DA/R
-      S = DB/R
-      Z = 1.0d0
-      IF (DABS(DA).GT.DABS(DB)) Z = S
-      IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C
-   20 DA = R
+      IF (SCALE.EQ.0.0d0) THEN
+         C = 1.0d0
+         S = 0.0d0
+         R = 0.0d0
+         Z = 0.0d0
+      ELSE
+         R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2)
+         R = DSIGN(1.0d0,ROE)*R
+         C = DA/R
+         S = DB/R
+         Z = 1.0d0
+         IF (DABS(DA).GT.DABS(DB)) Z = S
+         IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C
+      END IF
+      DA = R
       DB = Z
       RETURN
       END
index 81425a9..986c24e 100644 (file)
       INTRINSIC MOD
 *     ..
       IF (N.LE.0 .OR. INCX.LE.0) RETURN
-      IF (INCX.EQ.1) GO TO 20
-*
-*        code for increment not equal to 1
-*
-      NINCX = N*INCX
-      DO 10 I = 1,NINCX,INCX
-          DX(I) = DA*DX(I)
-   10 CONTINUE
-      RETURN
+      IF (INCX.EQ.1) THEN
 *
 *        code for increment equal to 1
 *
 *
 *        clean-up loop
 *
-   20 M = MOD(N,5)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          DX(I) = DA*DX(I)
-   30 CONTINUE
-      IF (N.LT.5) RETURN
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,5
-          DX(I) = DA*DX(I)
-          DX(I+1) = DA*DX(I+1)
-          DX(I+2) = DA*DX(I+2)
-          DX(I+3) = DA*DX(I+3)
-          DX(I+4) = DA*DX(I+4)
-   50 CONTINUE
+         M = MOD(N,5)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               DX(I) = DA*DX(I)
+            END DO
+            IF (N.LT.5) RETURN
+         END IF
+         MP1 = M + 1
+         DO I = MP1,N,5
+            DX(I) = DA*DX(I)
+            DX(I+1) = DA*DX(I+1)
+            DX(I+2) = DA*DX(I+2)
+            DX(I+3) = DA*DX(I+3)
+            DX(I+4) = DA*DX(I+4)
+         END DO
+      ELSE
+*
+*        code for increment not equal to 1
+*
+         NINCX = N*INCX
+         DO I = 1,NINCX,INCX
+            DX(I) = DA*DX(I)
+         END DO
+      END IF
       RETURN
       END
index 457873b..8f8ebfd 100644 (file)
 *     ..
       DSDOT = 0.0D0
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.INCY .AND. INCX.GT.0) GO TO 20
+      IF (INCX.EQ.INCY .AND. INCX.GT.0) THEN
 *
-*     Code for unequal or nonpositive increments.
+*     Code for equal, positive, non-unit increments.
 *
-      KX = 1
-      KY = 1
-      IF (INCX.LT.0) KX = 1 + (1-N)*INCX
-      IF (INCY.LT.0) KY = 1 + (1-N)*INCY
-      DO 10 I = 1,N
-          DSDOT = DSDOT + DBLE(SX(KX))*DBLE(SY(KY))
-          KX = KX + INCX
-          KY = KY + INCY
-   10 CONTINUE
-      RETURN
+         NS = N*INCX
+         DO I = 1,NS,INCX
+            DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I))
+         END DO
+      ELSE
 *
-*     Code for equal, positive, non-unit increments.
+*     Code for unequal or nonpositive increments.
 *
-   20 NS = N*INCX
-      DO 30 I = 1,NS,INCX
-          DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I))
-   30 CONTINUE
+         KX = 1
+         KY = 1
+         IF (INCX.LT.0) KX = 1 + (1-N)*INCX
+         IF (INCY.LT.0) KY = 1 + (1-N)*INCY
+         DO I = 1,N
+            DSDOT = DSDOT + DBLE(SX(KX))*DBLE(SY(KY))
+            KX = KX + INCX
+            KY = KY + INCY
+         END DO
+      END IF
       RETURN
       END
index 3595fd8..93db05c 100644 (file)
       INTRINSIC MOD
 *     ..
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
-*
-*       code for unequal increments or equal increments not equal
-*         to 1
-*
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          DTEMP = DX(IX)
-          DX(IX) = DY(IY)
-          DY(IY) = DTEMP
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
 *       code for both increments equal to 1
 *
 *
 *       clean-up loop
 *
-   20 M = MOD(N,3)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          DTEMP = DX(I)
-          DX(I) = DY(I)
-          DY(I) = DTEMP
-   30 CONTINUE
-      IF (N.LT.3) RETURN
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,3
-          DTEMP = DX(I)
-          DX(I) = DY(I)
-          DY(I) = DTEMP
-          DTEMP = DX(I+1)
-          DX(I+1) = DY(I+1)
-          DY(I+1) = DTEMP
-          DTEMP = DX(I+2)
-          DX(I+2) = DY(I+2)
-          DY(I+2) = DTEMP
-   50 CONTINUE
+         M = MOD(N,3)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               DTEMP = DX(I)
+               DX(I) = DY(I)
+               DY(I) = DTEMP
+            END DO
+            IF (N.LT.3) RETURN
+         END IF
+         MP1 = M + 1
+         DO I = MP1,N,3
+            DTEMP = DX(I)
+            DX(I) = DY(I)
+            DY(I) = DTEMP
+            DTEMP = DX(I+1)
+            DX(I+1) = DY(I+1)
+            DY(I+1) = DTEMP
+            DTEMP = DX(I+2)
+            DX(I+2) = DY(I+2)
+            DY(I+2) = DTEMP
+         END DO
+      ELSE
+*
+*       code for unequal increments or equal increments not equal
+*         to 1
+*
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            DTEMP = DX(IX)
+            DX(IX) = DY(IY)
+            DY(IY) = DTEMP
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END
index 5eabc60..a5c440c 100644 (file)
@@ -22,7 +22,7 @@
 *
 *     .. Local Scalars ..
       DOUBLE PRECISION STEMP
-      INTEGER I,IX
+      INTEGER I,NINCX
 *     ..
 *     .. External Functions ..
       DOUBLE PRECISION DCABS1
       DZASUM = 0.0d0
       STEMP = 0.0d0
       IF (N.LE.0 .OR. INCX.LE.0) RETURN
-      IF (INCX.EQ.1) GO TO 20
+      IF (INCX.EQ.1) THEN
 *
-*        code for increment not equal to 1
+*        code for increment equal to 1
 *
-      IX = 1
-      DO 10 I = 1,N
-          STEMP = STEMP + DCABS1(ZX(IX))
-          IX = IX + INCX
-   10 CONTINUE
-      DZASUM = STEMP
-      RETURN
+         DO I = 1,N
+            STEMP = STEMP + DCABS1(ZX(I))
+         END DO
+      ELSE
 *
-*        code for increment equal to 1
+*        code for increment not equal to 1
 *
-   20 DO 30 I = 1,N
-          STEMP = STEMP + DCABS1(ZX(I))
-   30 CONTINUE
+         NINCX = N*INCX
+         DO I = 1,NINCX,INCX
+            STEMP = STEMP + DCABS1(ZX(I))
+         END DO
+      END IF
       DZASUM = STEMP
       RETURN
       END
index 4fd4b92..2c941f9 100644 (file)
       IF (N.LT.1 .OR. INCX.LE.0) RETURN
       ICAMAX = 1
       IF (N.EQ.1) RETURN
-      IF (INCX.EQ.1) GO TO 20
+      IF (INCX.EQ.1) THEN
 *
-*        code for increment not equal to 1
+*        code for increment equal to 1
 *
-      IX = 1
-      SMAX = SCABS1(CX(1))
-      IX = IX + INCX
-      DO 10 I = 2,N
-          IF (SCABS1(CX(IX)).LE.SMAX) GO TO 5
-          ICAMAX = I
-          SMAX = SCABS1(CX(IX))
-    5     IX = IX + INCX
-   10 CONTINUE
-      RETURN
+         SMAX = SCABS1(CX(1))
+         DO I = 2,N
+            IF (SCABS1(CX(I)).GT.SMAX) THEN
+               ICAMAX = I
+               SMAX = SCABS1(CX(I))
+            END IF
+         END DO
+      ELSE
 *
-*        code for increment equal to 1
+*        code for increment not equal to 1
 *
-   20 SMAX = SCABS1(CX(1))
-      DO 30 I = 2,N
-          IF (SCABS1(CX(I)).LE.SMAX) GO TO 30
-          ICAMAX = I
-          SMAX = SCABS1(CX(I))
-   30 CONTINUE
+         IX = 1
+         SMAX = SCABS1(CX(1))
+         IX = IX + INCX
+         DO I = 2,N
+            IF (SCABS1(CX(IX)).GT.SMAX) THEN
+               ICAMAX = I
+               SMAX = SCABS1(CX(IX))
+            END IF
+            IX = IX + INCX
+         END DO
+      END IF
       RETURN
       END
index fa45c1d..2cc0f9a 100644 (file)
       IF (N.LT.1 .OR. INCX.LE.0) RETURN
       IDAMAX = 1
       IF (N.EQ.1) RETURN
-      IF (INCX.EQ.1) GO TO 20
+      IF (INCX.EQ.1) THEN
 *
-*        code for increment not equal to 1
+*        code for increment equal to 1
 *
-      IX = 1
-      DMAX = DABS(DX(1))
-      IX = IX + INCX
-      DO 10 I = 2,N
-          IF (DABS(DX(IX)).LE.DMAX) GO TO 5
-          IDAMAX = I
-          DMAX = DABS(DX(IX))
-    5     IX = IX + INCX
-   10 CONTINUE
-      RETURN
+         DMAX = DABS(DX(1))
+         DO I = 2,N
+            IF (DABS(DX(I)).GT.DMAX) THEN
+               IDAMAX = I
+               DMAX = DABS(DX(I))
+            END IF
+         END DO
+      ELSE
 *
-*        code for increment equal to 1
+*        code for increment not equal to 1
 *
-   20 DMAX = DABS(DX(1))
-      DO 30 I = 2,N
-          IF (DABS(DX(I)).LE.DMAX) GO TO 30
-          IDAMAX = I
-          DMAX = DABS(DX(I))
-   30 CONTINUE
+         IX = 1
+         DMAX = DABS(DX(1))
+         IX = IX + INCX
+         DO I = 2,N
+            IF (DABS(DX(IX)).GT.DMAX) THEN
+               IDAMAX = I
+               DMAX = DABS(DX(IX))
+            END IF
+            IX = IX + INCX
+         END DO
+      END IF
       RETURN
       END
index 88741e7..26a98dd 100644 (file)
       IF (N.LT.1 .OR. INCX.LE.0) RETURN
       ISAMAX = 1
       IF (N.EQ.1) RETURN
-      IF (INCX.EQ.1) GO TO 20
+      IF (INCX.EQ.1) THEN
 *
-*        code for increment not equal to 1
+*        code for increment equal to 1
 *
-      IX = 1
-      SMAX = ABS(SX(1))
-      IX = IX + INCX
-      DO 10 I = 2,N
-          IF (ABS(SX(IX)).LE.SMAX) GO TO 5
-          ISAMAX = I
-          SMAX = ABS(SX(IX))
-    5     IX = IX + INCX
-   10 CONTINUE
-      RETURN
+         SMAX = ABS(SX(1))
+         DO I = 2,N
+            IF (ABS(SX(I)).GT.SMAX) THEN
+               ISAMAX = I
+               SMAX = ABS(SX(I))
+            END IF
+         END DO
+      ELSE
 *
-*        code for increment equal to 1
+*        code for increment not equal to 1
 *
-   20 SMAX = ABS(SX(1))
-      DO 30 I = 2,N
-          IF (ABS(SX(I)).LE.SMAX) GO TO 30
-          ISAMAX = I
-          SMAX = ABS(SX(I))
-   30 CONTINUE
+         IX = 1
+         SMAX = ABS(SX(1))
+         IX = IX + INCX
+         DO I = 2,N
+            IF (ABS(SX(IX)).GT.SMAX) THEN
+               ISAMAX = I
+               SMAX = ABS(SX(IX))
+            END IF
+            IX = IX + INCX
+         END DO
+      END IF
       RETURN
       END
index 27c5687..af14fb1 100644 (file)
@@ -21,7 +21,7 @@
 *  =====================================================================
 *
 *     .. Local Scalars ..
-      DOUBLE PRECISION SMAX
+      DOUBLE PRECISION DMAX
       INTEGER I,IX
 *     ..
 *     .. External Functions ..
       IF (N.LT.1 .OR. INCX.LE.0) RETURN
       IZAMAX = 1
       IF (N.EQ.1) RETURN
-      IF (INCX.EQ.1) GO TO 20
+      IF (INCX.EQ.1) THEN
 *
-*        code for increment not equal to 1
+*        code for increment equal to 1
 *
-      IX = 1
-      SMAX = DCABS1(ZX(1))
-      IX = IX + INCX
-      DO 10 I = 2,N
-          IF (DCABS1(ZX(IX)).LE.SMAX) GO TO 5
-          IZAMAX = I
-          SMAX = DCABS1(ZX(IX))
-    5     IX = IX + INCX
-   10 CONTINUE
-      RETURN
+         DMAX = DCABS1(ZX(1))
+         DO I = 2,N
+            IF (DCABS1(ZX(I)).GT.DMAX) THEN
+               IZAMAX = I
+               DMAX = DCABS1(ZX(I))
+            END IF
+         END DO
+      ELSE
 *
-*        code for increment equal to 1
+*        code for increment not equal to 1
 *
-   20 SMAX = DCABS1(ZX(1))
-      DO 30 I = 2,N
-          IF (DCABS1(ZX(I)).LE.SMAX) GO TO 30
-          IZAMAX = I
-          SMAX = DCABS1(ZX(I))
-   30 CONTINUE
+         IX = 1
+         DMAX = DCABS1(ZX(1))
+         IX = IX + INCX
+         DO I = 2,N
+            IF (DCABS1(ZX(IX)).GT.DMAX) THEN
+               IZAMAX = I
+               DMAX = DCABS1(ZX(IX))
+            END IF
+            IX = IX + INCX
+         END DO
+      END IF
       RETURN
       END
index 8351333..1e3f7db 100644 (file)
       SASUM = 0.0e0
       STEMP = 0.0e0
       IF (N.LE.0 .OR. INCX.LE.0) RETURN
-      IF (INCX.EQ.1) GO TO 20
-*
-*        code for increment not equal to 1
-*
-      NINCX = N*INCX
-      DO 10 I = 1,NINCX,INCX
-          STEMP = STEMP + ABS(SX(I))
-   10 CONTINUE
-      SASUM = STEMP
-      RETURN
-*
+      IF (INCX.EQ.1) THEN
 *        code for increment equal to 1
 *
 *
 *        clean-up loop
 *
-   20 M = MOD(N,6)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          STEMP = STEMP + ABS(SX(I))
-   30 CONTINUE
-      IF (N.LT.6) GO TO 60
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,6
-          STEMP = STEMP + ABS(SX(I)) + ABS(SX(I+1)) + ABS(SX(I+2)) +
-     +            ABS(SX(I+3)) + ABS(SX(I+4)) + ABS(SX(I+5))
-   50 CONTINUE
-   60 SASUM = STEMP
+         M = MOD(N,6)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               STEMP = STEMP + ABS(SX(I))
+            END DO
+            IF (N.LT.6) THEN
+               SASUM = STEMP
+               RETURN
+            END IF
+         END IF
+         MP1 = M + 1
+         DO I = MP1,N,6
+            STEMP = STEMP + ABS(SX(I)) + ABS(SX(I+1)) +
+     $              ABS(SX(I+2)) + ABS(SX(I+3)) +
+     $              ABS(SX(I+4)) + ABS(SX(I+5))
+         END DO
+      ELSE
+*
+*        code for increment not equal to 1
+*
+         NINCX = N*INCX
+         DO I = 1,NINCX,INCX
+            STEMP = STEMP + ABS(SX(I))
+         END DO
+      END IF
+      SASUM = STEMP
       RETURN
       END
index 00fc145..c0d8b3a 100644 (file)
@@ -11,7 +11,7 @@
 *  =======
 *
 *     SAXPY constant times a vector plus a vector.
-*     uses unrolled loop for increments equal to one.
+*     uses unrolled loops for increments equal to one.
 *
 *  Further Details
 *  ===============
 *     ..
       IF (N.LE.0) RETURN
       IF (SA.EQ.0.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
+*
+*        code for both increments equal to 1
+*
+*
+*        clean-up loop
+*
+         M = MOD(N,4)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               SY(I) = SY(I) + SA*SX(I)
+            END DO
+         END IF
+         IF (N.LT.4) RETURN
+         MP1 = M + 1
+         DO I = MP1,N,4
+            SY(I) = SY(I) + SA*SX(I)
+            SY(I+1) = SY(I+1) + SA*SX(I+1)
+            SY(I+2) = SY(I+2) + SA*SX(I+2)
+            SY(I+3) = SY(I+3) + SA*SX(I+3)
+         END DO
+      ELSE
 *
 *        code for unequal increments or equal increments
 *          not equal to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
           SY(IY) = SY(IY) + SA*SX(IX)
           IX = IX + INCX
           IY = IY + INCY
-   10 CONTINUE
-      RETURN
-*
-*        code for both increments equal to 1
-*
-*
-*        clean-up loop
-*
-   20 M = MOD(N,4)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          SY(I) = SY(I) + SA*SX(I)
-   30 CONTINUE
-      IF (N.LT.4) RETURN
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,4
-          SY(I) = SY(I) + SA*SX(I)
-          SY(I+1) = SY(I+1) + SA*SX(I+1)
-          SY(I+2) = SY(I+2) + SA*SX(I+2)
-          SY(I+3) = SY(I+3) + SA*SX(I+3)
-   50 CONTINUE
+         END DO
+      END IF
       RETURN
       END
index 2fa0185..d090110 100644 (file)
       SCASUM = 0.0e0
       STEMP = 0.0e0
       IF (N.LE.0 .OR. INCX.LE.0) RETURN
-      IF (INCX.EQ.1) GO TO 20
+      IF (INCX.EQ.1) THEN
 *
-*        code for increment not equal to 1
+*        code for increment equal to 1
 *
-      NINCX = N*INCX
-      DO 10 I = 1,NINCX,INCX
-          STEMP = STEMP + ABS(REAL(CX(I))) + ABS(AIMAG(CX(I)))
-   10 CONTINUE
-      SCASUM = STEMP
-      RETURN
+         DO I = 1,N
+            STEMP = STEMP + ABS(REAL(CX(I))) + ABS(AIMAG(CX(I)))
+         END DO
+      ELSE
 *
-*        code for increment equal to 1
+*        code for increment not equal to 1
 *
-   20 DO 30 I = 1,N
-          STEMP = STEMP + ABS(REAL(CX(I))) + ABS(AIMAG(CX(I)))
-   30 CONTINUE
+         NINCX = N*INCX
+         DO I = 1,NINCX,INCX
+            STEMP = STEMP + ABS(REAL(CX(I))) + ABS(AIMAG(CX(I)))
+         END DO
+      END IF
       SCASUM = STEMP
       RETURN
       END
index e0f41fe..905a64c 100644 (file)
       INTRINSIC MOD
 *     ..
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
-*
-*        code for unequal increments or equal increments
-*          not equal to 1
-*
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          SY(IY) = SX(IX)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
 *        code for both increments equal to 1
 *
 *
 *        clean-up loop
 *
-   20 M = MOD(N,7)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          SY(I) = SX(I)
-   30 CONTINUE
-      IF (N.LT.7) RETURN
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,7
-          SY(I) = SX(I)
-          SY(I+1) = SX(I+1)
-          SY(I+2) = SX(I+2)
-          SY(I+3) = SX(I+3)
-          SY(I+4) = SX(I+4)
-          SY(I+5) = SX(I+5)
-          SY(I+6) = SX(I+6)
-   50 CONTINUE
+         M = MOD(N,7)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               SY(I) = SX(I)
+            END DO
+            IF (N.LT.7) RETURN
+         END IF   
+         MP1 = M + 1
+         DO I = MP1,N,7
+            SY(I) = SX(I)
+            SY(I+1) = SX(I+1)
+            SY(I+2) = SX(I+2)
+            SY(I+3) = SX(I+3)
+            SY(I+4) = SX(I+4)
+            SY(I+5) = SX(I+5)
+            SY(I+6) = SX(I+6)
+         END DO
+      ELSE      
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            SY(IY) = SX(IX)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END
index e0df570..4629bbb 100644 (file)
       STEMP = 0.0e0
       SDOT = 0.0e0
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
-*
-*        code for unequal increments or equal increments
-*          not equal to 1
-*
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          STEMP = STEMP + SX(IX)*SY(IY)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      SDOT = STEMP
-      RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
 *        code for both increments equal to 1
 *
 *
 *        clean-up loop
 *
-   20 M = MOD(N,5)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          STEMP = STEMP + SX(I)*SY(I)
-   30 CONTINUE
-      IF (N.LT.5) GO TO 60
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,5
+         M = MOD(N,5)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               STEMP = STEMP + SX(I)*SY(I)
+            END DO
+            IF (N.LT.5) THEN
+               SDOT=STEMP
+            RETURN
+            END IF
+         END IF
+         MP1 = M + 1
+         DO I = MP1,N,5
           STEMP = STEMP + SX(I)*SY(I) + SX(I+1)*SY(I+1) +
-     +            SX(I+2)*SY(I+2) + SX(I+3)*SY(I+3) + SX(I+4)*SY(I+4)
-   50 CONTINUE
-   60 SDOT = STEMP
+     $            SX(I+2)*SY(I+2) + SX(I+3)*SY(I+3) + SX(I+4)*SY(I+4)
+         END DO
+      ELSE
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            STEMP = STEMP + SX(IX)*SY(IY)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
+      SDOT = STEMP
       RETURN
       END
index 5b9e6c4..b84a6c5 100644 (file)
       INTRINSIC DBLE
 *     ..
       DSDOT = SB
-      IF (N.LE.0) GO TO 30
-      IF (INCX.EQ.INCY .AND. INCX.GT.0) GO TO 40
+      IF (N.LE.0) THEN
+         SDSDOT = DSDOT
+         RETURN
+      END IF   
+      IF (INCX.EQ.INCY .AND. INCX.GT.0) THEN
 *
-*     Code for unequal or nonpositive increments.
+*     Code for equal and positive increments.
 *
-      KX = 1
-      KY = 1
-      IF (INCX.LT.0) KX = 1 + (1-N)*INCX
-      IF (INCY.LT.0) KY = 1 + (1-N)*INCY
-      DO 10 I = 1,N
-          DSDOT = DSDOT + DBLE(SX(KX))*DBLE(SY(KY))
-          KX = KX + INCX
-          KY = KY + INCY
-   10 CONTINUE
-   30 SDSDOT = DSDOT
-      RETURN
+         NS = N*INCX
+         DO I = 1,NS,INCX
+            DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I))
+         END DO
+      ELSE
 *
-*     Code for equal and positive increments.
+*     Code for unequal or nonpositive increments.
 *
-   40 NS = N*INCX
-      DO 50 I = 1,NS,INCX
-          DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I))
-   50 CONTINUE
+         KX = 1
+         KY = 1
+         IF (INCX.LT.0) KX = 1 + (1-N)*INCX
+         IF (INCY.LT.0) KY = 1 + (1-N)*INCY
+         DO I = 1,N
+            DSDOT = DSDOT + DBLE(SX(KX))*DBLE(SY(KY))
+            KX = KX + INCX
+            KY = KY + INCY
+         END DO
+      END IF
       SDSDOT = DSDOT
       RETURN
       END
index 5903b56..b53b0fd 100644 (file)
       INTEGER I,IX,IY
 *     ..
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
-*       code for unequal increments or equal increments not equal
-*         to 1
+*       code for both increments equal to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          STEMP = C*SX(IX) + S*SY(IY)
-          SY(IY) = C*SY(IY) - S*SX(IX)
-          SX(IX) = STEMP
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
+         DO I = 1,N
+            STEMP = C*SX(I) + S*SY(I)
+            SY(I) = C*SY(I) - S*SX(I)
+            SX(I) = STEMP
+         END DO
+      ELSE
 *
-*       code for both increments equal to 1
+*       code for unequal increments or equal increments not equal
+*         to 1
 *
-   20 DO 30 I = 1,N
-          STEMP = C*SX(I) + S*SY(I)
-          SY(I) = C*SY(I) - S*SX(I)
-          SX(I) = STEMP
-   30 CONTINUE
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            STEMP = C*SX(IX) + S*SY(IY)
+            SY(IY) = C*SY(IY) - S*SX(IX)
+            SX(IX) = STEMP
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END
index 4f2a841..4f4258b 100644 (file)
       ROE = SB
       IF (ABS(SA).GT.ABS(SB)) ROE = SA
       SCALE = ABS(SA) + ABS(SB)
-      IF (SCALE.NE.0.0) GO TO 10
-      C = 1.0
-      S = 0.0
-      R = 0.0
-      Z = 0.0
-      GO TO 20
-   10 R = SCALE*SQRT((SA/SCALE)**2+ (SB/SCALE)**2)
-      R = SIGN(1.0,ROE)*R
-      C = SA/R
-      S = SB/R
-      Z = 1.0
-      IF (ABS(SA).GT.ABS(SB)) Z = S
-      IF (ABS(SB).GE.ABS(SA) .AND. C.NE.0.0) Z = 1.0/C
-   20 SA = R
+      IF (SCALE.EQ.0.0) THEN
+         C = 1.0
+         S = 0.0
+         R = 0.0
+         Z = 0.0
+      ELSE
+         R = SCALE*SQRT((SA/SCALE)**2+ (SB/SCALE)**2)
+         R = SIGN(1.0,ROE)*R
+         C = SA/R
+         S = SB/R
+         Z = 1.0
+         IF (ABS(SA).GT.ABS(SB)) Z = S
+         IF (ABS(SB).GE.ABS(SA) .AND. C.NE.0.0) Z = 1.0/C
+      END IF
+      SA = R
       SB = Z
       RETURN
       END
index 312aeaf..dd0a68d 100644 (file)
       INTRINSIC MOD
 *     ..
       IF (N.LE.0 .OR. INCX.LE.0) RETURN
-      IF (INCX.EQ.1) GO TO 20
-*
-*        code for increment not equal to 1
-*
-      NINCX = N*INCX
-      DO 10 I = 1,NINCX,INCX
-          SX(I) = SA*SX(I)
-   10 CONTINUE
-      RETURN
+      IF (INCX.EQ.1) THEN
 *
 *        code for increment equal to 1
 *
 *
 *        clean-up loop
 *
-   20 M = MOD(N,5)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          SX(I) = SA*SX(I)
-   30 CONTINUE
-      IF (N.LT.5) RETURN
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,5
-          SX(I) = SA*SX(I)
-          SX(I+1) = SA*SX(I+1)
-          SX(I+2) = SA*SX(I+2)
-          SX(I+3) = SA*SX(I+3)
-          SX(I+4) = SA*SX(I+4)
-   50 CONTINUE
+         M = MOD(N,5)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               SX(I) = SA*SX(I)
+            END DO
+            IF (N.LT.5) RETURN
+         END IF
+         MP1 = M + 1
+         DO I = MP1,N,5
+            SX(I) = SA*SX(I)
+            SX(I+1) = SA*SX(I+1)
+            SX(I+2) = SA*SX(I+2)
+            SX(I+3) = SA*SX(I+3)
+            SX(I+4) = SA*SX(I+4)
+         END DO
+      ELSE
+*
+*        code for increment not equal to 1
+*
+         NINCX = N*INCX
+         DO I = 1,NINCX,INCX
+            SX(I) = SA*SX(I)
+         END DO
+      END IF
       RETURN
       END
index 736d497..e1a75f4 100644 (file)
       INTRINSIC MOD
 *     ..
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
-*
-*       code for unequal increments or equal increments not equal
-*         to 1
-*
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          STEMP = SX(IX)
-          SX(IX) = SY(IY)
-          SY(IY) = STEMP
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
 *       code for both increments equal to 1
 *
 *
 *       clean-up loop
 *
-   20 M = MOD(N,3)
-      IF (M.EQ.0) GO TO 40
-      DO 30 I = 1,M
-          STEMP = SX(I)
-          SX(I) = SY(I)
-          SY(I) = STEMP
-   30 CONTINUE
-      IF (N.LT.3) RETURN
-   40 MP1 = M + 1
-      DO 50 I = MP1,N,3
-          STEMP = SX(I)
-          SX(I) = SY(I)
-          SY(I) = STEMP
-          STEMP = SX(I+1)
-          SX(I+1) = SY(I+1)
-          SY(I+1) = STEMP
-          STEMP = SX(I+2)
-          SX(I+2) = SY(I+2)
-          SY(I+2) = STEMP
-   50 CONTINUE
+         M = MOD(N,3)
+         IF (M.NE.0) THEN
+            DO I = 1,M
+               STEMP = SX(I)
+               SX(I) = SY(I)
+               SY(I) = STEMP
+            END DO
+            IF (N.LT.3) RETURN
+         END IF
+         MP1 = M + 1
+         DO I = MP1,N,3
+            STEMP = SX(I)
+            SX(I) = SY(I)
+            SY(I) = STEMP
+            STEMP = SX(I+1)
+            SX(I+1) = SY(I+1)
+            SY(I+1) = STEMP
+            STEMP = SX(I+2)
+            SX(I+2) = SY(I+2)
+            SY(I+2) = STEMP
+         END DO
+      ELSE
+*
+*       code for unequal increments or equal increments not equal
+*         to 1
+*
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            STEMP = SX(IX)
+            SX(IX) = SY(IY)
+            SY(IY) = STEMP
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END
index b05d9d2..fc32a86 100644 (file)
 *     ..
       IF (N.LE.0) RETURN
       IF (DCABS1(ZA).EQ.0.0d0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
+*
+*        code for both increments equal to 1
+*
+         DO I = 1,N
+            ZY(I) = ZY(I) + ZA*ZX(I)
+         END DO
+      ELSE
 *
 *        code for unequal increments or equal increments
 *          not equal to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          ZY(IY) = ZY(IY) + ZA*ZX(IX)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
-*
-*        code for both increments equal to 1
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            ZY(IY) = ZY(IY) + ZA*ZX(IX)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
 *
-   20 DO 30 I = 1,N
-          ZY(I) = ZY(I) + ZA*ZX(I)
-   30 CONTINUE
       RETURN
       END
index 793be5c..49bf4ac 100644 (file)
       INTEGER I,IX,IY
 *     ..
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
-*
-*        code for unequal increments or equal increments
-*          not equal to 1
-*
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          ZY(IY) = ZX(IX)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
 *        code for both increments equal to 1
 *
-   20 DO 30 I = 1,N
+         DO I = 1,N
           ZY(I) = ZX(I)
-   30 CONTINUE
+         END DO
+      ELSE
+*
+*        code for unequal increments or equal increments
+*          not equal to 1
+*
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            ZY(IY) = ZX(IX)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END
index b97cc41..506ee9e 100644 (file)
       ZTEMP = (0.0d0,0.0d0)
       ZDOTC = (0.0d0,0.0d0)
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
-*        code for unequal increments or equal increments
-*          not equal to 1
+*        code for both increments equal to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          ZTEMP = ZTEMP + DCONJG(ZX(IX))*ZY(IY)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      ZDOTC = ZTEMP
-      RETURN
+         DO I = 1,N
+            ZTEMP = ZTEMP + DCONJG(ZX(I))*ZY(I)
+         END DO
+      ELSE
 *
-*        code for both increments equal to 1
+*        code for unequal increments or equal increments
+*          not equal to 1
 *
-   20 DO 30 I = 1,N
-          ZTEMP = ZTEMP + DCONJG(ZX(I))*ZY(I)
-   30 CONTINUE
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            ZTEMP = ZTEMP + DCONJG(ZX(IX))*ZY(IY)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       ZDOTC = ZTEMP
       RETURN
       END
index 4c6dc9b..816b201 100644 (file)
       ZTEMP = (0.0d0,0.0d0)
       ZDOTU = (0.0d0,0.0d0)
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
 *
-*        code for unequal increments or equal increments
-*          not equal to 1
+*        code for both increments equal to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          ZTEMP = ZTEMP + ZX(IX)*ZY(IY)
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      ZDOTU = ZTEMP
-      RETURN
+         DO I = 1,N
+            ZTEMP = ZTEMP + ZX(I)*ZY(I)
+         END DO
+      ELSE
 *
-*        code for both increments equal to 1
+*        code for unequal increments or equal increments
+*          not equal to 1
 *
-   20 DO 30 I = 1,N
-          ZTEMP = ZTEMP + ZX(I)*ZY(I)
-   30 CONTINUE
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            ZTEMP = ZTEMP + ZX(IX)*ZY(IY)
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       ZDOTU = ZTEMP
       RETURN
       END
index 3b946e9..20d0436 100644 (file)
 *
       IF( N.LE.0 )
      $   RETURN
-      IF( INCX.EQ.1 .AND. INCY.EQ.1 )
-     $   GO TO 20
+      IF( INCX.EQ.1 .AND. INCY.EQ.1 ) THEN
 *
-*        code for unequal increments or equal increments not equal
-*          to 1
+*        code for both increments equal to 1
 *
-      IX = 1
-      IY = 1
-      IF( INCX.LT.0 )
-     $   IX = ( -N+1 )*INCX + 1
-      IF( INCY.LT.0 )
-     $   IY = ( -N+1 )*INCY + 1
-      DO 10 I = 1, N
-         CTEMP = C*CX( IX ) + S*CY( IY )
-         CY( IY ) = C*CY( IY ) - S*CX( IX )
-         CX( IX ) = CTEMP
-         IX = IX + INCX
-         IY = IY + INCY
-   10 CONTINUE
-      RETURN
+         DO I = 1, N
+            CTEMP = C*CX( I ) + S*CY( I )
+            CY( I ) = C*CY( I ) - S*CX( I )
+            CX( I ) = CTEMP
+         END DO
+      ELSE
 *
-*        code for both increments equal to 1
+*        code for unequal increments or equal increments not equal
+*          to 1
 *
-   20 CONTINUE
-      DO 30 I = 1, N
-         CTEMP = C*CX( I ) + S*CY( I )
-         CY( I ) = C*CY( I ) - S*CX( I )
-         CX( I ) = CTEMP
-   30 CONTINUE
+         IX = 1
+         IY = 1
+         IF( INCX.LT.0 )
+     $      IX = ( -N+1 )*INCX + 1
+         IF( INCY.LT.0 )
+     $      IY = ( -N+1 )*INCY + 1
+         DO I = 1, N
+            CTEMP = C*CX( IX ) + S*CY( IY )
+            CY( IY ) = C*CY( IY ) - S*CX( IX )
+            CX( IX ) = CTEMP
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END
index aa0fa90..23030e1 100644 (file)
 *  =====================================================================
 *
 *     .. Local Scalars ..
-      INTEGER I,IX
+      INTEGER I,NINCX
 *     ..
 *     .. Intrinsic Functions ..
       INTRINSIC DCMPLX
 *     ..
       IF (N.LE.0 .OR. INCX.LE.0) RETURN
-      IF (INCX.EQ.1) GO TO 20
+      IF (INCX.EQ.1) THEN
 *
-*        code for increment not equal to 1
+*        code for increment equal to 1
 *
-      IX = 1
-      DO 10 I = 1,N
-          ZX(IX) = DCMPLX(DA,0.0d0)*ZX(IX)
-          IX = IX + INCX
-   10 CONTINUE
-      RETURN
+         DO I = 1,N
+            ZX(I) = DCMPLX(DA,0.0d0)*ZX(I)
+         END DO
+      ELSE
 *
-*        code for increment equal to 1
+*        code for increment not equal to 1
 *
-   20 DO 30 I = 1,N
-          ZX(I) = DCMPLX(DA,0.0d0)*ZX(I)
-   30 CONTINUE
+         NINCX = N*INCX
+         DO I = 1,NINCX,INCX
+            ZX(I) = DCMPLX(DA,0.0d0)*ZX(I)
+         END DO
+      END IF
       RETURN
       END
index 99190c3..6656302 100644 (file)
 *     .. Intrinsic Functions ..
       INTRINSIC CDABS,DCMPLX,DCONJG,DSQRT
 *     ..
-      IF (CDABS(CA).NE.0.0d0) GO TO 10
-      C = 0.0d0
-      S = (1.0d0,0.0d0)
-      CA = CB
-      GO TO 20
-   10 CONTINUE
-      SCALE = CDABS(CA) + CDABS(CB)
-      NORM = SCALE*DSQRT((CDABS(CA/DCMPLX(SCALE,0.0d0)))**2+
-     +       (CDABS(CB/DCMPLX(SCALE,0.0d0)))**2)
-      ALPHA = CA/CDABS(CA)
-      C = CDABS(CA)/NORM
-      S = ALPHA*DCONJG(CB)/NORM
-      CA = ALPHA*NORM
-   20 CONTINUE
+      IF (CDABS(CA).EQ.0.0d0) THEN
+         C = 0.0d0
+         S = (1.0d0,0.0d0)
+         CA = CB
+      ELSE
+         SCALE = CDABS(CA) + CDABS(CB)
+         NORM = SCALE*DSQRT((CDABS(CA/DCMPLX(SCALE,0.0d0)))**2+
+     $       (CDABS(CB/DCMPLX(SCALE,0.0d0)))**2)
+         ALPHA = CA/CDABS(CA)
+         C = CDABS(CA)/NORM
+         S = ALPHA*DCONJG(CB)/NORM
+         CA = ALPHA*NORM
+      END IF
       RETURN
       END
index 42fba16..a84c618 100644 (file)
 *  =====================================================================
 *
 *     .. Local Scalars ..
-      INTEGER I,IX
+      INTEGER I,NINCX
 *     ..
       IF (N.LE.0 .OR. INCX.LE.0) RETURN
-      IF (INCX.EQ.1) GO TO 20
+      IF (INCX.EQ.1) THEN
 *
-*        code for increment not equal to 1
+*        code for increment equal to 1
 *
-      IX = 1
-      DO 10 I = 1,N
-          ZX(IX) = ZA*ZX(IX)
-          IX = IX + INCX
-   10 CONTINUE
-      RETURN
+         DO I = 1,N
+            ZX(I) = ZA*ZX(I)
+         END DO
+      ELSE
 *
-*        code for increment equal to 1
+*        code for increment not equal to 1
 *
-   20 DO 30 I = 1,N
-          ZX(I) = ZA*ZX(I)
-   30 CONTINUE
+         NINCX = N*INCX
+         DO I = 1,NINCX,INCX
+            ZX(I) = ZA*ZX(I)
+         END DO
+      END IF
       RETURN
       END
index 6ce8c09..4789458 100644 (file)
       INTEGER I,IX,IY
 *     ..
       IF (N.LE.0) RETURN
-      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
+      IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
+*
+*       code for both increments equal to 1
+         DO I = 1,N
+            ZTEMP = ZX(I)
+            ZX(I) = ZY(I)
+            ZY(I) = ZTEMP
+         END DO
+      ELSE
 *
 *       code for unequal increments or equal increments not equal
 *         to 1
 *
-      IX = 1
-      IY = 1
-      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
-      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
-      DO 10 I = 1,N
-          ZTEMP = ZX(IX)
-          ZX(IX) = ZY(IY)
-          ZY(IY) = ZTEMP
-          IX = IX + INCX
-          IY = IY + INCY
-   10 CONTINUE
-      RETURN
-*
-*       code for both increments equal to 1
-   20 DO 30 I = 1,N
-          ZTEMP = ZX(I)
-          ZX(I) = ZY(I)
-          ZY(I) = ZTEMP
-   30 CONTINUE
+         IX = 1
+         IY = 1
+         IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+         IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+         DO I = 1,N
+            ZTEMP = ZX(IX)
+            ZX(IX) = ZY(IY)
+            ZY(IY) = ZTEMP
+            IX = IX + INCX
+            IY = IY + INCY
+         END DO
+      END IF
       RETURN
       END