X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=ddot.f;fp=ddot.f;h=0000000000000000000000000000000000000000;hb=4a877efa127e56e81a21f53cfdbbfd3bfbe8c4ff;hp=373134f67f13230421cb7d0bf2c27eca7c005b30;hpb=a6cf29fa4dac0909c7582cb1094151d34093ee76;p=mothur.git diff --git a/ddot.f b/ddot.f deleted file mode 100644 index 373134f..0000000 --- a/ddot.f +++ /dev/null @@ -1,90 +0,0 @@ -*DECK DDOT - DOUBLE PRECISION FUNCTION DDOT (N, DX, INCX, DY, INCY) -C***BEGIN PROLOGUE DDOT -C***PURPOSE Compute the inner product of two vectors. -C***LIBRARY SLATEC (BLAS) -C***CATEGORY D1A4 -C***TYPE DOUBLE PRECISION (SDOT-S, DDOT-D, CDOTU-C) -C***KEYWORDS BLAS, INNER PRODUCT, LINEAR ALGEBRA, VECTOR -C***AUTHOR Lawson, C. L., (JPL) -C Hanson, R. J., (SNLA) -C Kincaid, D. R., (U. of Texas) -C Krogh, F. T., (JPL) -C***DESCRIPTION -C -C B L A S Subprogram -C Description of Parameters -C -C --Input-- -C N number of elements in input vector(s) -C DX double precision vector with N elements -C INCX storage spacing between elements of DX -C DY double precision vector with N elements -C INCY storage spacing between elements of DY -C -C --Output-- -C DDOT double precision dot product (zero if N .LE. 0) -C -C Returns the dot product of double precision DX and DY. -C DDOT = sum for I = 0 to N-1 of DX(LX+I*INCX) * DY(LY+I*INCY), -C where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is -C defined in a similar way using INCY. -C -C***REFERENCES C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T. -C Krogh, Basic linear algebra subprograms for Fortran -C usage, Algorithm No. 539, Transactions on Mathematical -C Software 5, 3 (September 1979), pp. 308-323. -C***ROUTINES CALLED (NONE) -C***REVISION HISTORY (YYMMDD) -C 791001 DATE WRITTEN -C 890831 Modified array declarations. (WRB) -C 890831 REVISION DATE from Version 3.2 -C 891214 Prologue converted to Version 4.0 format. (BAB) -C 920310 Corrected definition of LX in DESCRIPTION. (WRB) -C 920501 Reformatted the REFERENCES section. (WRB) -C***END PROLOGUE DDOT - DOUBLE PRECISION DX(*), DY(*) -C***FIRST EXECUTABLE STATEMENT DDOT - DDOT = 0.0D0 - DTEMP = 0.0D0 - IF (N .LE. 0) RETURN - IF (INCX .EQ. INCY) IF (INCX-1) 5,20,60 -C -C Code for unequal or nonpositive increments. -C - 5 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 - DDOT = DDOT + DX(IX)*DY(IY) - IX = IX + INCX - IY = IY + INCY - 10 CONTINUE - RETURN -C -C Code for both increments equal to 1. -C -C Clean-up loop so remaining vector length is a multiple of 5. -C - 20 M = MOD(N,5) - IF (M .EQ. 0) GO TO 40 - DO 30 I = 1,M - DDOT = DDOT + DX(I)*DY(I) - 30 CONTINUE - IF (N .LT. 5) RETURN - 40 MP1 = M + 1 - DO I = MP1,N,5 - DDOT = DDOT + DX(I)*DY(I) + DX(I+1)*DY(I+1) + DX(I+2)*DY(I+2) + - 1 DX(I+3)*DY(I+3) + DX(I+4)*DY(I+4) - END DO - RETURN -C -C Code for equal, positive, non-unit increments. -C - 60 NS = N*INCX - DO 70 I = 1,NS,INCX - DDOT = DDOT + DX(I)*DY(I) - 70 CONTINUE - RETURN - END