SUBROUTINE SCOPY( N, SX, INCX, SY, INCY ) **************************************************************************** * * * DATA PARALLEL BLAS based on MPL * * * * Version 1.0 1/9-92 , * * For MasPar MP-1 computers * * * * para//ab, University of Bergen, NORWAY * * * * These programs must be called using F90 style array syntax. * * Note that the F77 style calling sequence has been retained * * in this version for compatibility reasons, be aware that * * parameters related to the array dimensions and shape therefore may * * be redundant and without any influence. * * The calling sequence may be changed in a future version. * * Please report any BUGs, ideas for improvement or other * * comments to * * adm@parallab.uib.no * * * * Future versions may then reflect your suggestions. * * The most current version of this software is available * * from netlib@nac.no , send the message `send index from maspar' * * * * REVISIONS: * * * **************************************************************************** implicit none * * copies a vector, x, to a vector, y. * uses unrolled loops for increments equal to 1. * jack dongarra, linpack, 3/11/78. * * .. Scalar Arguments .. INTEGER INCX, INCY, N * .. * .. Array Arguments .. REAL, array(:) :: SX, SY * .. * .. Local Scalars .. INTEGER m,ix,iy,jx,jy * .. * .. Executable Statements .. * IF( N.LE.0 ) return * * code for both increments equal to 1 * IF( INCX.EQ.1 .AND. INCY.EQ.1 ) then sy(1:n) = sx(1:n) else * * code for unequal increments or equal increments * not equal to 1 * m = n - 1 ix = 1 iy = 1 jx = 1 + m * incx jy = 1 + m * incy * if ( incx .lt. 0 ) then ix = 1 - m * incx jx = 1 endif * if ( incy .lt. 0 ) then iy = 1 - m * incy jy = 1 endif * sy(iy:jy:incy) = sx(ix:jx:incx) endif * RETURN * * end of SCOPY . * END