SUBROUTINE CAXPY(N,CA,CX,INCX,CY,INCY) C***BEGIN PROLOGUE CAXPY C***DATE WRITTEN 791001 (YYMMDD) C***REVISION DATE 840425 (YYMMDD) C***REVISION HISTORY (YYMMDD) C 000330 Modified array declarations. (JEC) C C***CATEGORY NO. D1A7 C***KEYWORDS BLAS,COMPLEX,LINEAR ALGEBRA,TRIAD,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***PURPOSE Complex computation y = a*x + y 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 CA complex scalar multiplier C CX complex vector with N elements C INCX storage spacing between elements of CX C CY complex vector with N elements C INCY storage spacing between elements of CY C C --Output-- C CY complex result (unchanged if N .LE. 0) C C Overwrite complex CY with complex CA*CX + CY. C For I = 0 to N-1, replace CY(LY+I*INCY) with CA*CX(LX+I*INCX) + C CY(LY+I*INCY), where LX = 1 if INCX .GE. 0, else LX = (-INCX)*N C and LY is defined in a similar way using INCY. C***REFERENCES LAWSON C.L., HANSON R.J., KINCAID D.R., KROGH F.T., C *BASIC LINEAR ALGEBRA SUBPROGRAMS FOR FORTRAN USAGE*, C ALGORITHM NO. 539, TRANSACTIONS ON MATHEMATICAL C SOFTWARE, VOLUME 5, NUMBER 3, SEPTEMBER 1979, 308-323 C***ROUTINES CALLED (NONE) C***END PROLOGUE CAXPY C COMPLEX CX(*),CY(*),CA C***FIRST EXECUTABLE STATEMENT CAXPY CANORM = ABS(REAL(CA)) + ABS(AIMAG(CA)) IF(N.LE.0.OR.CANORM.EQ.0.E0) RETURN IF(INCX.EQ.INCY.AND.INCX.GT.0) GO TO 20 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 CY(KY) = CY(KY) + CA*CX(KX) KX = KX + INCX KY = KY + INCY 10 CONTINUE RETURN 20 CONTINUE NS = N*INCX DO 30 I=1,NS,INCX CY(I) = CA*CX(I) + CY(I) 30 CONTINUE RETURN END