SZAXPY(3dxml) — Subroutines
Name
szaxpy, dzaxpy, czaxpy, zzaxpy − Vector plus the product of a scalar and a vector
FORMAT
{S,D,C,Z}ZAXPY (n, alpha, x, incx, y, incy, z, incz)
Arguments
ninteger∗4
On entry, the number of elements of the vectors x and y.
On exit, n is unchanged.
alphareal∗4 | real∗8 | complex∗8 | complex∗16
On entry, the scalar value to be multiplied with the elements of vector x.
On exit, alpha is unchanged.
xreal∗4 | real∗8 | complex∗8 | complex∗16
On entry, a one-dimensional array X of length at least (1+(n-1)∗|incx|), containing the n elements of the vector x.
On exit, x is unchanged.
incxinteger∗4
On entry, the increment for the array X.
If incx > 0, vector x is stored forward in the array, so that x(i) is stored in location X(1+(i-1)∗incx).
If incx < 0, vector x is stored backward in the array, so that x(i) is stored in location X(1+(n-i)∗|incx|).
If incx = 0, only the first element is accessed.
On exit, incx is unchanged.
yreal∗4 | real∗8 | complex∗8 | complex∗16
On entry, a one-dimensional array Y of length at least (1+(n-1)∗|incy|), containing the n elements of the vector y.
On exit, y is unchanged.
incyinteger∗4
On entry, the increment for the array Y.
If incy >= 0, vector y is stored forward in the array, so that y(i) is stored in location Y(1+(i-1)∗incy).
If incy < 0, vector y is stored backward in the array, so that y(i) is stored in location Y(1+(n-i)∗|incy|).
On exit, incy is unchanged.
zreal∗4 | real∗8 | complex∗8 | complex∗16
On entry, a one-dimensional array Z of length at least (1+(n-1)∗|incz|).
On exit, if n<=0, then z is unchanged. If n > 0, z is overwritten with the products; each z(i) is replaced by y(i)+alpha∗x(i).
inczinteger∗4
On entry, the increment for the array Z.
If incz >= 0, vector z is stored forward in the array, so that z(i) is stored in location Z(1+(i-1)∗incz).
If incz < 0, vector z is stored backward in the array, so that z(i) is stored in location Z(1+(n-i)∗|incz|).
On exit, incz is unchanged.
Description
The _ZAXPY subprograms compute the product of a scalar and a vector, add the result to the elements of another vector, and then store the result in vector z: z = alpha∗x + y
where alpha is a scalar, and x, y, and z are vectors with n elements.
The scalar alpha must not share a memory location with any element of the vector z. If incz = 0 or if any element of z shares a memory location with an element of x or y, the results are unpredictable.
If incx = 0, the computation is a time-consuming way of adding the constant alpha∗x(1) to all the elements of y. The following chart shows the resulting operation from the interaction of the incx and incy arguments.
| incx = 0 | incx <> 0 | |
| incy = 0 | ||
| z(i) = y(1) + alpha∗x(1) | z(i) = y(1) + alpha∗x(i) | |
| incy <> 0 | ||
| z(i) = y(i) + alpha∗x(1) | z(i) = y(i) + alpha∗x(i) |
Example
INTEGER∗4 N, INCX, INCY, INCZ
REAL∗4 X(20), Y(20), Z(40), alpha
INCX = 1
INCY = 1
INCZ = 2
alpha = 2.0
N = 20
CALL SZAXPY(N,alpha,X,INCX,Y,INCY,Z,INCZ)
This FORTRAN example shows how all elements of the vector x are multiplied by 2.0 and added to the elements of vector y. Vector z contains the result.