![]() |
LAPACK
3.4.1
LAPACK: Linear Algebra PACKage
|
00001 *> \brief \b ZAXPY 00002 * 00003 * =========== DOCUMENTATION =========== 00004 * 00005 * Online html documentation available at 00006 * http://www.netlib.org/lapack/explore-html/ 00007 * 00008 * Definition: 00009 * =========== 00010 * 00011 * SUBROUTINE ZAXPY(N,ZA,ZX,INCX,ZY,INCY) 00012 * 00013 * .. Scalar Arguments .. 00014 * COMPLEX*16 ZA 00015 * INTEGER INCX,INCY,N 00016 * .. 00017 * .. Array Arguments .. 00018 * COMPLEX*16 ZX(*),ZY(*) 00019 * .. 00020 * 00021 * 00022 *> \par Purpose: 00023 * ============= 00024 *> 00025 *> \verbatim 00026 *> 00027 *> ZAXPY constant times a vector plus a vector. 00028 *> \endverbatim 00029 * 00030 * Authors: 00031 * ======== 00032 * 00033 *> \author Univ. of Tennessee 00034 *> \author Univ. of California Berkeley 00035 *> \author Univ. of Colorado Denver 00036 *> \author NAG Ltd. 00037 * 00038 *> \date November 2011 00039 * 00040 *> \ingroup complex16_blas_level1 00041 * 00042 *> \par Further Details: 00043 * ===================== 00044 *> 00045 *> \verbatim 00046 *> 00047 *> jack dongarra, 3/11/78. 00048 *> modified 12/3/93, array(1) declarations changed to array(*) 00049 *> \endverbatim 00050 *> 00051 * ===================================================================== 00052 SUBROUTINE ZAXPY(N,ZA,ZX,INCX,ZY,INCY) 00053 * 00054 * -- Reference BLAS level1 routine (version 3.4.0) -- 00055 * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- 00056 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 00057 * November 2011 00058 * 00059 * .. Scalar Arguments .. 00060 COMPLEX*16 ZA 00061 INTEGER INCX,INCY,N 00062 * .. 00063 * .. Array Arguments .. 00064 COMPLEX*16 ZX(*),ZY(*) 00065 * .. 00066 * 00067 * ===================================================================== 00068 * 00069 * .. Local Scalars .. 00070 INTEGER I,IX,IY 00071 * .. 00072 * .. External Functions .. 00073 DOUBLE PRECISION DCABS1 00074 EXTERNAL DCABS1 00075 * .. 00076 IF (N.LE.0) RETURN 00077 IF (DCABS1(ZA).EQ.0.0d0) RETURN 00078 IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 00079 * 00080 * code for both increments equal to 1 00081 * 00082 DO I = 1,N 00083 ZY(I) = ZY(I) + ZA*ZX(I) 00084 END DO 00085 ELSE 00086 * 00087 * code for unequal increments or equal increments 00088 * not equal to 1 00089 * 00090 IX = 1 00091 IY = 1 00092 IF (INCX.LT.0) IX = (-N+1)*INCX + 1 00093 IF (INCY.LT.0) IY = (-N+1)*INCY + 1 00094 DO I = 1,N 00095 ZY(IY) = ZY(IY) + ZA*ZX(IX) 00096 IX = IX + INCX 00097 IY = IY + INCY 00098 END DO 00099 END IF 00100 * 00101 RETURN 00102 END