C --- Inner product with unrolled loops (BLAS-like) ----- C --------------------------------- version: May 1996 -- Double Precision FUNCTION DScapr2(N,X,Y) Double Precision X(*),Y(*),S1,S2 Integer N,M,MP1,I, NROLL PARAMETER (NROLL=6) S1 = 0D0 S2 = 0D0 M=MOD(N,NROLL) IF (M .EQ. 0) GOTO 20 DO 10 I=1,M S1 = S1 + X(I) * Y(I) 10 CONTINUE IF (N .LT. NROLL) GOTO 40 20 MP1=M+1 DO 30 I=MP1,N,NROLL S1 = S1 + X(I)*Y(I) + X(I+1)*Y(I+1) + X(I+2)*Y(I+2) S2 = S2 + X(I+3)*Y(I+3) + X(I+4)*Y(I+4) + X(I+5)*Y(I+5) 30 CONTINUE 40 DScapr2 = S1+S2 RETURN END