doublereal dzasum_(integer *n, doublecomplex *zx, integer *incx) { /* System generated locals */ integer i__1; doublereal ret_val; /* Local variables */ static integer i; static doublereal stemp; extern doublereal dcabs1_(doublecomplex *); static integer ix; /* takes the sum of the absolute values. jack dongarra, 3/11/78. modified 3/93 to return if incx .le. 0. modified 12/3/93, array(1) declarations changed to array(*) Parameter adjustments Function Body */ #define ZX(I) zx[(I)-1] ret_val = 0.; stemp = 0.; if (*n <= 0 || *incx <= 0) { return ret_val; } if (*incx == 1) { goto L20; } /* code for increment not equal to 1 */ ix = 1; i__1 = *n; for (i = 1; i <= *n; ++i) { stemp += dcabs1_(&ZX(ix)); ix += *incx; /* L10: */ } ret_val = stemp; return ret_val; /* code for increment equal to 1 */ L20: i__1 = *n; for (i = 1; i <= *n; ++i) { stemp += dcabs1_(&ZX(i)); /* L30: */ } ret_val = stemp; return ret_val; } /* dzasum_ */
/*< subroutine zaxpy(n,za,zx,incx,zy,incy) >*/ /* Subroutine */ int zaxpy_(integer *n, doublecomplex *za, doublecomplex *zx, integer *incx, doublecomplex *zy, integer *incy) { /* System generated locals */ integer i__1, i__2, i__3, i__4; doublecomplex z__1, z__2; /* Local variables */ integer i__, ix, iy; extern doublereal dcabs1_(doublecomplex *); /* constant times a vector plus a vector. */ /* jack dongarra, 3/11/78. */ /* modified 12/3/93, array(1) declarations changed to array(*) */ /*< double complex zx(*),zy(*),za >*/ /*< integer i,incx,incy,ix,iy,n >*/ /*< double precision dcabs1 >*/ /*< if(n.le.0)return >*/ /* Parameter adjustments */ --zy; --zx; /* Function Body */ if (*n <= 0) { return 0; } /*< if (dcabs1(za) .eq. 0.0d0) return >*/ if (dcabs1_(za) == 0.) { return 0; } /*< if (incx.eq.1.and.incy.eq.1)go to 20 >*/ if (*incx == 1 && *incy == 1) { goto L20; } /* code for unequal increments or equal increments */ /* not equal to 1 */ /*< ix = 1 >*/ ix = 1; /*< iy = 1 >*/ iy = 1; /*< if(incx.lt.0)ix = (-n+1)*incx + 1 >*/ if (*incx < 0) { ix = (-(*n) + 1) * *incx + 1; } /*< if(incy.lt.0)iy = (-n+1)*incy + 1 >*/ if (*incy < 0) { iy = (-(*n) + 1) * *incy + 1; } /*< do 10 i = 1,n >*/ i__1 = *n; for (i__ = 1; i__ <= i__1; ++i__) { /*< zy(iy) = zy(iy) + za*zx(ix) >*/ i__2 = iy; i__3 = iy; i__4 = ix; z__2.r = za->r * zx[i__4].r - za->i * zx[i__4].i, z__2.i = za->r * zx[ i__4].i + za->i * zx[i__4].r; z__1.r = zy[i__3].r + z__2.r, z__1.i = zy[i__3].i + z__2.i; zy[i__2].r = z__1.r, zy[i__2].i = z__1.i; /*< ix = ix + incx >*/ ix += *incx; /*< iy = iy + incy >*/ iy += *incy; /*< 10 continue >*/ /* L10: */ } /*< return >*/ return 0; /* code for both increments equal to 1 */ /*< 20 do 30 i = 1,n >*/ L20: i__1 = *n; for (i__ = 1; i__ <= i__1; ++i__) { /*< zy(i) = zy(i) + za*zx(i) >*/ i__2 = i__; i__3 = i__; i__4 = i__; z__2.r = za->r * zx[i__4].r - za->i * zx[i__4].i, z__2.i = za->r * zx[ i__4].i + za->i * zx[i__4].r; z__1.r = zy[i__3].r + z__2.r, z__1.i = zy[i__3].i + z__2.i; zy[i__2].r = z__1.r, zy[i__2].i = z__1.i; /*< 30 continue >*/ /* L30: */ } /*< return >*/ return 0; /*< end >*/ } /* zaxpy_ */
integer izamax_(integer *n, doublecomplex *zx, integer *incx) { /* System generated locals */ integer ret_val, i__1; /* Local variables */ integer i__, ix; doublereal smax; extern doublereal dcabs1_(doublecomplex *); /* .. Scalar Arguments .. */ /* .. */ /* .. Array Arguments .. */ /* .. */ /* Purpose */ /* ======= */ /* finds the index of element having max. absolute value. */ /* jack dongarra, 1/15/85. */ /* modified 3/93 to return if incx .le. 0. */ /* modified 12/3/93, array(1) declarations changed to array(*) */ /* .. Local Scalars .. */ /* .. */ /* .. External Functions .. */ /* .. */ /* Parameter adjustments */ --zx; /* Function Body */ ret_val = 0; if (*n < 1 || *incx <= 0) { return ret_val; } ret_val = 1; if (*n == 1) { return ret_val; } if (*incx == 1) { goto L20; } /* code for increment not equal to 1 */ ix = 1; smax = dcabs1_(&zx[1]); ix += *incx; i__1 = *n; for (i__ = 2; i__ <= i__1; ++i__) { if (dcabs1_(&zx[ix]) <= smax) { goto L5; } ret_val = i__; smax = dcabs1_(&zx[ix]); L5: ix += *incx; /* L10: */ } return ret_val; /* code for increment equal to 1 */ L20: smax = dcabs1_(&zx[1]); i__1 = *n; for (i__ = 2; i__ <= i__1; ++i__) { if (dcabs1_(&zx[i__]) <= smax) { goto L30; } ret_val = i__; smax = dcabs1_(&zx[i__]); L30: ; } return ret_val; } /* izamax_ */
doublereal dzasum_(integer *n, doublecomplex *zx, integer *incx) { /* System generated locals */ integer i__1; doublereal ret_val; /* Local variables */ integer i__, ix; doublereal stemp; extern doublereal dcabs1_(doublecomplex *); /* .. Scalar Arguments .. */ /* .. */ /* .. Array Arguments .. */ /* .. */ /* Purpose */ /* ======= */ /* takes the sum of the absolute values. */ /* jack dongarra, 3/11/78. */ /* modified 3/93 to return if incx .le. 0. */ /* modified 12/3/93, array(1) declarations changed to array(*) */ /* .. Local Scalars .. */ /* .. */ /* .. External Functions .. */ /* .. */ /* Parameter adjustments */ --zx; /* Function Body */ ret_val = 0.; stemp = 0.; if (*n <= 0 || *incx <= 0) { return ret_val; } if (*incx == 1) { goto L20; } /* code for increment not equal to 1 */ ix = 1; i__1 = *n; for (i__ = 1; i__ <= i__1; ++i__) { stemp += dcabs1_(&zx[ix]); ix += *incx; /* L10: */ } ret_val = stemp; return ret_val; /* code for increment equal to 1 */ L20: i__1 = *n; for (i__ = 1; i__ <= i__1; ++i__) { stemp += dcabs1_(&zx[i__]); /* L30: */ } ret_val = stemp; return ret_val; } /* dzasum_ */