DOUBLE PRECISION FUNCTION DD7TPR(P, X, Y) C C *** RETURN THE INNER PRODUCT OF THE P-VECTORS X AND Y. *** C INTEGER P DOUBLE PRECISION X(P), Y(P) C INTEGER I DOUBLE PRECISION ONE, SQTETA, T, ZERO DOUBLE PRECISION DR7MDC EXTERNAL DR7MDC C C *** DR7MDC(2) RETURNS A MACHINE-DEPENDENT CONSTANT, SQTETA, WHICH C *** IS SLIGHTLY LARGER THAN THE SMALLEST POSITIVE NUMBER THAT C *** CAN BE SQUARED WITHOUT UNDERFLOWING. C C/6 C DATA ONE/1.D+0/, SQTETA/0.D+0/, ZERO/0.D+0/ C/7 PARAMETER (ONE=1.D+0, ZERO=0.D+0) DATA SQTETA/0.D+0/ C/ C DD7TPR = ZERO IF (P .LE. 0) GO TO 999 IF (SQTETA .EQ. ZERO) SQTETA = DR7MDC(2) DO 20 I = 1, P T = DMAX1(DABS(X(I)), DABS(Y(I))) IF (T .GT. ONE) GO TO 10 IF (T .LT. SQTETA) GO TO 20 T = (X(I)/SQTETA)*Y(I) IF (DABS(T) .LT. SQTETA) GO TO 20 10 DD7TPR = DD7TPR + X(I)*Y(I) 20 CONTINUE C 999 RETURN C *** LAST LINE OF DD7TPR FOLLOWS *** END .