version 1.4, 2010/12/21 13:51:25
|
version 1.5, 2011/07/22 07:38:01
|
Line 72
|
Line 72
|
* .. |
* .. |
DSDOT = 0.0D0 |
DSDOT = 0.0D0 |
IF (N.LE.0) RETURN |
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 |
NS = N*INCX |
KY = 1 |
DO I = 1,NS,INCX |
IF (INCX.LT.0) KX = 1 + (1-N)*INCX |
DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I)) |
IF (INCY.LT.0) KY = 1 + (1-N)*INCY |
END DO |
DO 10 I = 1,N |
ELSE |
DSDOT = DSDOT + DBLE(SX(KX))*DBLE(SY(KY)) |
|
KX = KX + INCX |
|
KY = KY + INCY |
|
10 CONTINUE |
|
RETURN |
|
* |
* |
* Code for equal, positive, non-unit increments. |
* Code for unequal or nonpositive increments. |
* |
* |
20 NS = N*INCX |
KX = 1 |
DO 30 I = 1,NS,INCX |
KY = 1 |
DSDOT = DSDOT + DBLE(SX(I))*DBLE(SY(I)) |
IF (INCX.LT.0) KX = 1 + (1-N)*INCX |
30 CONTINUE |
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 |
RETURN |
END |
END |