1 SCIPORT SCIPORT is a portable implementation of CRAY SCILIB that provides both single and double precision object libraries; SCIPORTS provides single precision and SCIPORTD provides double precision. To have either of the libraries installed where they are not already available, contact Scott Lamson of ISO at 387-5795. 1 blas Basic Linear Algebra Subprograms --- a group of subprograms that perform operations using absolute values, vector arithmetic, array copying and swapping, Givens plane rotation, Euclidean norms, indexes of minimum and maximum values, vector summing, etc. 2 ISAMAX An integer function that returns the index of the first occurence of the element in a real vector with the largest absolute value. Call from FORTRAN: index = ISAMAX(n,sx,incx) n Number of elements to process in vector sx. sx Real vector to be searched. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 2 ICAMAX An integer function that returns the index of the first occurence of the element in a complex vector with the largest absolute value. Call from FORTRAN: index = ICAMAX(n,cx,incx) n Number of elements to process in vector cx. cx Complex vector to be searched. incx Skip distance between elements of cx. For contiguous elements, incx = 1. 2 SASUM A real function that returns the sum of the absolute values of a real vector. Call from FORTRAN: sum = SASUM(n,sx,incx) n Number of elements to process in vector sx. sx Real vector to be summed. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 2 SCASUM A real function that returns the sum of the absolute values of a complex vector. Call from FORTRAN: csum = SCASUM(n,cx,incx) n Number of elements to process in vector cx. cx Complex vector to be summed. incx Skip distance between elements of cx. For contiguous elements, incx = 1. 2 SAXPY A subroutine that adds a real scalar multiple of one real vector to another real vector. Call from FORTRAN: CALL SAXPY(n,sa,sx,incx,sy,incy) n Number of elements in the vectors. sa Real scalar multiplier. sx Real vector. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Real result vector. incy Skip distance between elements of sy. For contiguous elements, incy = 1. 2 CAXPY A subroutine that adds a complex scalar multiple of one complex vector to another complex vector. Call from FORTRAN: CALL CAXPY(n,ca,cx,incx,cy,incy) n Number of elements in the vectors. ca Complex scalar multiplier. cx Complex vector. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Complex result vector. incy Skip distance between elements of cy. For contiguous elements, incy = 1. 2 SCOPY A subroutine that copies one real vector to another. Call from FORTRAN: CALL SCOPY(n,sx,incx,sy,incy) n Number of elements in the vectors. sx Real vector to be copied. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Real result vector. incy Skip distance between elements of sy. For contiguous elements, incy = 1. 2 CCOPY A subroutine that copies one complex vector to another. Call from FORTRAN: CALL CCOPY(n,cx,incx,cy,incy) n Number of elements in vectors. cx Complex vector to be copied. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Complex result vector. incy Skip distance between elements of cy. For contiguous elements, incy = 1. 2 SDOT A real function that computes the inner (dot) product of two real vectors. Call from FORTRAN: dot = SDOT(n,sx,incx,sy,incy) n Number of elements in the vectors. sx Real vector operand. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Real vector operand. incy Skip distance between elements of sy. For contiguous elements, incy = 1. 2 CDOTC A complex function that computes the inner (dot) product of the complex conjugate of one complex vector with another complex vector. Call from FORTRAN: cdot = CDOTC(n,cx,incx,cy,incy) n Number of elements in the vectors. cx Complex vector operand. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Complex vector operand. incy Skip distance between elements of cy. For contiguous elements, incy = 1. 2 CDOTU A complex function that computes the inner (dot) product of two complex vectors. Call from FORTRAN: cdot = CDOTU(n,cx,incx,cy,incy) n Number of elements in the vectors. cx Complex vector operand. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Complex vector operand. incy Skip distance between elements of cy. For contiguous elements, incy = 1. 2 SNRM2 A real function that computes the Euclidean norm of a real vector. Call from FORTRAN: eucnorm = SNRM2(n,sx,incx) n Number of elements in vector. sx Real vector operand incx Skip distance between elements of sx. For contiguous elements, incx = 1. See page 4-10 of CRAY-1 Computer Systems - Library Reference Manual, SR-0014, for equation. 2 SCNRM2 A real function that computes the Euclidean norm of a complex vector. Call from FORTRAN: eucnorm = SCNRM2(n,cx,incx) n Number of elements in vector. cx Complex vector operand incx Skip distance between elements of cx. For contiguous elements, incx = 1. See page 4-11 of CRAY-1 Computer Systems - Library Reference Manual, SR-0014, for equation. 2 SROTG A subroutine that computes the elements of a Givens rotation matrix. Call from FORTRAN: CALL SROTG(a,b,c,s) a scalar supplied by user which returns the computed value, r. b scalar supplied by user which returns the computed value, z. c scalar cosine of rotation matrix (computed). s scalar sine of rotation matrix (computed). See page 4-12 of CRAY-1 Library Reference Manual for equations. 2 SROT A subroutine that performs a matrix multiplication. If the coefficients c and s satisfy c*c+s*s=1.0, the transformation is a Givens rotation. The matrix multiplication is a (2 by 2) times a (2 by n) and is used to modify coordinates (x,y). Call from FORTRAN: CALL SROT(n,sx,incx,sy,incy,c,s) n Number of elements in vectors. sx Real vector to be modified. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Real vector to be modified. incy Skip distance between elements of sy. For contiguous elements, incy = 1. c Real cosine normally calculated using SROTG. s Real sine normally calculated using SROTG. See page 4-13 of CRAY-1 Library Reference Manual for additional information. 2 SROTMG A subroutine that computes the elements of a modified Givens plane rotation matrix. Call from FORTRAN: CALL SROTMG(d1,d2,b1,b2,param) d1 Input scale factor (updated on output). d2 Input scale factor (updated on output). b1 Input scalar (updated on output). b2 Input scalar. param A five element array containing output parameters. See pages 4-13 to 4-19 of CRAY-1 Library Reference Manual for additional information. 2 SROTM A subroutine that applies the modified Givens plane rotation con- structed by SROTMG. Call from FORTRAN: CALL SROTM(n,sx,incx,sy,incy,param) n Number of elements in vectors. sx Real vector. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Real vector. incy Skip distance between elements of sy. For contiguous elements, incy = 1. param A five element array containing input parameters that are normally calculated using SROTMG. See pages 4-19 to 4-21 of CRAY-1 Library Reference Manual for additional information. 2 SSCAL This subroutine scales a real vector by multiplying it by a real number. Call from FORTRAN: CALL SSCAL(n,sa,sx,incx) n Number of elements in vector. sa Real scaling factor. sx Real vector to be scaled. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 2 CSSCAL This subroutine scales a complex vector by multiplying it by a real number. Call from FORTRAN: CALL CSSCAL(n,sa,cx,incx) n Number of elements in vector. sa Real scaling factor. cx Complex vector to be scaled. incx Skip distance between elements of cx. For contiguous elements, incx = 1. 2 CSCAL This subroutine scales a complex vector by multiplying it by a complex number. Call from FORTRAN: CALL CSCAL(n,ca,cx,incx) n Number of elements in vector. ca Complex scaling factor. cx Complex vector to be scaled. incx Skip distance between elements of cx. For contiguous elements, incx = 1. 2 SSWAP A subroutine that exchanges two real vectors. Call from FORTRAN: CALL SSWAP(n,sx,incx,sy,incy) n Number of elements in vectors. sx One real vector. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Another real vector. incy Skip distance between elements of sy. For contiguous elements, incy = 1. 2 CSWAP A subroutine that exchanges two complex vectors. Call from FORTRAN: CALL CSWAP(n,cx,incx,cy,incy) n Number of elements in vectors. cx One complex vector. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Another complex vector. incy Skip distance between elements of cy. For contiguous elements, incy = 1. 2 SPAXPY A subroutine that is a useful primitive for the lower upper factor- ization and solution of sparse linear systems. It is defined in FORTRAN in the following way: DO 10 I=1,N 10 SY(INDEX(I))=SA*SX(I)+SY(INDEX(I)) Call from FORTRAN: CALL SPAXPY(n,sa,sx,sy,index) n Number of elements in the vectors. sa Real scalar multiplier. sx Real vector operand. sy Real vector operand. index Vector of indexes. 2 SPDOT A real function that is a useful primitive for the lower upper factorization and solution of sparse linear systems. It is defined in FORTRAN in the following way: DO 10 I=1,N 10 PDOT=PDOT+SY(INDEX(I))*SX(I) Call from FORTRAN: pdot = SPDOT(n,sy,index,sx) n Number of elements in the vectors. sx Real vector operand. sy Real vector operand. index Vector of indexes. 2 ISMAX An integer function that returns the first index of the largest element of a real vector. Call from FORTRAN: imax = ISMAX(n,sx,incx) n Number of elements to process in vector sx. sx Real vector to be searched. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 2 ISMIN An integer function that returns the first index of the smallest element of a real vector. Call from FORTRAN: imin = ISMIN(n,sx,incx) n Number of elements to process in vector sx. sx Real vector to be searched. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 2 ISAMIN An integer function that returns the first index of the element with the smallest absolute value. Call from FORTRAN: imin = ISAMIN(n,sx,incx) n Number of elements to process in vector sx. sx Real vector to be searched. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 2 SSUM A real function that sums the elements of a real vector. Call from FORTRAN: sum = SSUM(n,sx,incx) n Number of elements in vector. sx Real vector to be summed. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 2 CSUM A complex function that sums the elements of a complex vector. Call from FORTRAN: sum = CSUM(n,cx,incx) n Number of elements in vector. cx Complex vector to be summed. incx Skip distance between elements of cx. For contiguous elements, incx = 1. 2 CROTG A subroutine that computes the elements of a complex Givens plane rotation matrix. Call from FORTRAN: CALL CROTG(ca,cb,cc,cs) ca Complex number supplied by user which returns with a computed value. cb Complex number supplied by user which returns with a computed value. cc Complex cosine of rotation matrix (computed). cs Complex sine of rotation matrix (computed). See page 4-28 of CRAY-1 Library Reference Manual for equation. 2 CROT A subroutine that applies the complex Givens plane rotation computed by the subroutine CROTG. Call from FORTRAN: CALL CROT(n,cx,incx,cy,incy,cc,cs) n Number of elements in vectors. cx Complex vector to be modified. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Complex vector to be modified. incy Skip distance between elements of cy. For contiguous elements, incy = 1. cc Complex cosine normally calculated using CROTG. cs Complex sine normally calculated using CROTG. See page 4-28 of CRAY-1 Library Reference Manual for equation. 2 SMACH A function that returns machine constants for the real limits of a given machine. Call from FORTRAN: x = SMACH(job) job = 1 The machine epsilon (the smallest number epsilon such that (1. + e <> 1) and (1. - e <> 1)). = 2 A number close to smallest normalized, represent- able number. = 3 A number close to largest normalized, representable number. 2 CMACH A function that returns machine constants for the complex limits of a given machine. Call from FORTRAN: x = CMACH(job) job = 1 The machine epsilon (the smallest number epsilon such that (1. + e <> 1) and (1. - e <> 1)). = 2 A number close to the square root of the smallest normalized, representable number. = 3 A number close to the square root of the largest normalized, representable number. 1 fft Fast Fourier Transforms --- a group of subprograms that apply a fast Fourier transform and compute either a Fourier analysis or a Fourier synthesis. 2 CFFT2 A subroutine that calculates a Fourier synthesis if the sign of IX is negative and a Fourier analysis if the sign of IX is positive. Call from FORTRAN: CALL CFFT2(init,ix,n,x,work,y) init <>0 Generates sine and cosine tables in WORK = 0 Calculates Fourier transforms using sine and cosine tables of previous call. ix > 0 Calculates Fourier analysis < 0 Calculates Fourier synthesis. n Size of Fourier transform; 2**m where 2<=m for the CRAY-1. x Input vector. Vector of n complex values. work Working storage. Vector of (5/2)n complex values. y Result vector. Vector of n complex values. For equations and other additional information, see the CRAY-1 Computer Systems - Library Reference Manual, SR-0014, pages 4-51 to 4-52. 2 RCFFT2 A subroutine that calculates a Fourier synthesis if the sign of IX is negative and a Fourier analysis if the sign of IX is positive. Call from FORTRAN: CALL RCFFT2(init,ix,n,x,work,y) init <>0 Generates sine and cosine tables in WORK = 0 Calculates Fourier transforms using sine and cosine tables of previous call. ix > 0 Calculates Fourier analysis <=0 Calculates Fourier synthesis. n Size of Fourier transform; 2**m where 2<=m. x Input vector. Vector of n real values. work Working storage. Vector of (3/2)n+2 complex values. y Result vector. Vector of (n/2)+1 complex values. For equations and other additional information, see the CRAY-1 Computer Systems - Library Reference Manual, SR-0014, page 4-52. 2 CRFFT2 A subroutine that calculates a Fourier synthesis if the sign of IX is negative and a Fourier analysis if the sign of IX is positive. Call from FORTRAN: CALL CRFFT2(init,ix,n,x,work,y) init <>0 Generates sine and cosine tables in WORK = 0 Calculates Fourier transforms using sine and cosine tables of previous call. ix > 0 Calculates Fourier analysis <=0 Calculates Fourier synthesis. n Size of Fourier transform; 2**m where 2<=m. x Input vector. Vector of (n/2)+1 complex values. work Working storage. Vector of (3/2)n+2 complex values. y Result vector. Vector of n complex values. For equations and other additional information, see the CRAY-1 Computer Systems - Library Reference Manual, SR-0014, page 4-53. 1 filter_routs A group of subprograms used for filter analysis and design. They can also be used to solve more general problems. 2 FILTERG A subroutine that computes a convolution of two vectors. Call from FORTRAN: CALL FILTERG(a,m,d,n,o) a Vector of filter coefficients. m Number of filter coefficients. d Input data vector. n Number of data points. o Output vector. For additional information, see pages 4-53 to 4-54 of CRAY-1 Computer Systems - Library Reference Manual, SR-0014. 2 FILTERS A subroutine that computes the same convolution of two vectors as FILTERG except that it assumes the filter coefficient vector is symmetric. Call from FORTRAN: CALL FILTERS(a,m,d,n,o) a Symmetric filter coefficient vector. m M is formally the length of vector A but because A is symmetric, only m/2 elements of A are ever referenced. d Input data vector. n Number of data points. o Output vector. For additional information, see pages 4-54 to 4-55 of CRAY-1 Computer Systems - Library Reference Manual, SR-0014. 2 OPFILT A subroutine that computes the solution to the Weiner-Levinson system of linear equations Ta=b where T is a Toeplitz matrix in which elements are described by the following: t(i,j)=R(k) for abs(j-i)+1=k and k=1,...,n. Call from FORTRAN: CALL OPFILT(m,a,b,c,r) m Order of system of equations. a Output vector of filter coefficients. b Information auto-correlation vector. c Scratch vector of length 2m. r Signal auto-correlation vector. For additional information, see pages 4-55 to 4-56 of CRAY-1 Computer Systems - Library Reference Manual, SR-0014. 1 gath_scat A pair of subroutines that allow the user to gather a vector from a source vector or to scatter a vector into another vector. A third vector of indexes determines which elements are accessed or changed. 2 GATHER A subroutine that allows the user to gather a vector from a source vector as in the following way: A(I) = B(INDEX(I)) where I=1,N. Call from FORTRAN: CALL GATHER(n,a,b,index) n Number of elements in the vectors. a Output vector. b Source vector. index Vector of indexes. 2 SCATTER A subroutine that allows the user to scatter a vector into another vector as in the following way: A(INDEX(I)) = B(I) Call from FORTRAN: CALL SCATTER(n,a,index,b) n Number of elements in each vector. a Output vector. index Vector of indexes. b Source vector. 1 linear_rec A group of subprograms that solve first-order and some second-order linear recurrences. A linear recurrence is an evaluation of a quantity term by term from given initial values and from previously computed values. 2 FOLR A subroutine that solves first-order linear recurrences where vector B is overwritten by result vector C. It has the form: EQUIVALENCE(B,C) C(1) = B(1) DO 10 I = 2,N 10 C(I) = -A(I) * C(I-1) + B(I) Call from FORTRAN: CALL FOLR(n,a,inca,b,incb) n Length of linear recurrence. a Vector A of length N of above formula. (A(1) is arbitrary.) inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of above formula on input and vector C of formula on output. (The output overwrites the input.) incb Skip distance between elements of the vector operand B and result C. For contiguous elements, incb = 1. 2 FOLRP A subroutine that solves first-order linear recurrences where vector B is overwritten by result vector C. It has the form: EQUIVALENCE(B,C) C(1) = B(1) DO 10 I = 2,N 10 C(I) = A(I) * C(I-1) + B(I) Call from FORTRAN: CALL FOLRP(n,a,inca,b,incb) n Length of linear recurrence. a Vector A of length N of above formula. (A(1) is arbitrary.) inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of above formula on input and vector C of formula on output. (The output overwrites the input.) incb Skip distance between elements of the vector operand B and result C. For contiguous elements, incb = 1. 2 FOLR2 A subroutine that solves first-order linear recurrences with input vectors A and B and result vector C. It has the form: EQUIVALENCE(B,C) C(1) = B(1) DO 10 I = 2,N 10 C(I) = -A(I) * C(I-1) + B(I) Call from FORTRAN: CALL FOLR2(n,a,inca,b,incb,c,incc) n Length of linear recurrence. a Vector A of length N of above formula. (A(1) is arbitrary.) inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of above formula. incb Skip distance between elements of the vector operand B. For contiguous elements, incb=1. c Vector C of above formula. incc Skip distance between elements of the vector result C. For contiguous elements, incc=1. 2 FOLR2P A subroutine that solves first-order linear recurrences with input vectors A and B and result vector C. It has the form: EQUIVALENCE(B,C) C(1) = B(1) DO 10 I = 2,N 10 C(I) = A(I) * C(I-1) + B(I) Call from FORTRAN: CALL FOLR2P(n,a,inca,b,incb,c,incc) n Length of linear recurrence. a Vector A of length N of above formula. (A(1) is arbitrary.) inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of above formula. incb Skip distance between elements of the vector operand B. For contiguous elements, incb=1. c Vector C of above formula. incc Skip distance between elements of the vector result C. For contiguous elements, incc=1. 2 FOLRN A real function that solves for the last term of a first-order linear recurrence where vector B is overwritten by result C. It has the form: DO 10 I = 2,N 10 B(I) = -A(I) * B(I-1) + B(I) Call from FORTRAN: result = FOLRN(n,a,inca,b,incb) n Length of linear recurrence. a Vector A of length N of above formula. (A(1) is arbitrary.) inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of length N of above formula. (The output overwrites the input.) incb Skip distance between elements of the vector operand and result B. For contiguous elements, incb = 1. 2 SOLR A subroutine that solves second-order linear recurrences with input vectors A and B and result vector C. It has the form: DO 10 I = 1,N 10 C(I+2) = A(I) * C(I+1) + B(I) * C(I) Call from FORTRAN: CALL SOLR(n,a,inca,b,incb,c,incc) n Length of linear recurrence. a Vector A of length N of above equation. inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of length N of above equation. incb Skip distance between elements of the vector operand B. For contiguous elements, incb=1. c Vector result C of length N+2 of above equation. incc Skip distance between elements of the vector result C. For contiguous elements, incc=1. C(1) and C(2) are input to this routine; C(3) to C(N+2) are output from this routine. 2 SOLRN A real function that solves for the last term of a second-order linear recurrence with input vectors A and B and result vector C. It has the form: DO 10 I = 1,N 10 C(I+2) = A(I) * C(I+1) + B(I) * C(I) Call from FORTRAN: result = SOLR(n,a,inca,b,incb,c,incc) n Length of linear recurrence. a Vector A of length N of above equation. inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of length N of above equation. incb Skip distance between elements of the vector operand B. For contiguous elements, incb=1. c Vector result C of length N+2 of above equation. incc Skip distance between elements of the vector result C. For contiguous elements, incc=1. C(1) and C(2) are input to this routine; C(3) to C(N+2) are output from this routine. 2 SOLR3 A subroutine that computes a second-order linear recurrence of three terms. It has input vectors A and B and result vector C, and is of the form: DO 10 I = 1,N 10 C(I+2) = C(I+2) + A(I)*C(I+1) + B(I)*C(I) Call from FORTRAN: CALL SOLR3(n,a,inca,b,incb,c,incc) n Length of linear recurrence. a Vector A of length N of above equation. inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of length N of above equation. incb Skip distance between elements of the vector operand B. For contiguous elements, incb=1. c Vector result C of length N+2 of above equation. incc Skip distance between elements of the vector result C. For contiguous elements, incc=1. C(1) and C(2) are input to this routine; C(3) to C(N+2) are output from this routine. 1 matrix_util A group of subroutines that compute a matrix inverse, solve systems of linear equations using Gauss-Jordan elimination, and provide for optimal matrix multiplication for different categories of matrices. 2 MINV A subroutine that computes the determinant and inverse of a square matrix and can also solve several systems of linear equations. Call from FORTRAN: CALL MINV(ab,n,nd,scratch,det,eps,m,mode) ab Augmented matrix of the square matrix A and the n x m matrix B of the right-hand sides for each system of equations to solve. The solution over- writes the corresponding right-hand side. In the calling routine, AB must be dimensioned A(nd,n+m). n Order of matrix A. nd Leading dimension of AB. scratch User-defined working storage array of length at least 2*n. det Determinant of matrix A. eps Uuser-defined tolerance for the product of pivot elements. m > 0 Number of systems of linear equations to solve = 0 Determinant of A is computed, depending on the value of MODE. mode +1 A is overwritten with A inverse =0 A is not saved and A inverse is not computed. 2 MXM A subroutine that computes a matrix times matrix product (C=AB) and assumes a skip distance between elements of the matrices to be 1. Call from FORTRAN: CALL MXM(a,nar,b,nac,c,nbc) a First matrix of product. nar Number of rows of matrices A and C. b Second matrix of product. nac Number of columns of matrix A and the number of rows of matrix B. c Result matrix. nbc Number of columns of matrices B and C. 2 MXV A subroutine that computes a matrix times a vector and assumes a skip distance between elements of the matrix to be 1. Performs the following FORTRAN calculations: DO 10 I = 1,NAR 10 C(I)=A(I,1)*B(1)+A(I,2)*B(2)+...+A(I,NBR)*B(NBR) Call from FORTRAN: CALL MXV(a,nar,b,nbr,c) a Matrix of product. nar Number of rows of matrices A and C. b Vector of product. nbr Number of elements of vector B and the number of columns of matrix A. c Resulting vector. 2 MXMA A subroutine that computes a matrix times matrix product (C=AB) and allows for arbitrary spacing of matrix elements. Call from FORTRAN: CALL MXMA(a,na,iad,b,nb,ibd,c,nc,icd,nar,nac,nbc) a First matrix of product. na Spacing between column elements of A. iad Spacing between row elements of A. b Second matrix of product. nb Spacing between column elements of B. ibd Spacing between row elements of B. c Output matrix. nc Spacing between column elements of C. icd Spacing between row elements of C. nar Number of rows in first operand and result. nac Number of columns in first operand and number of rows in second operand. nbc Number of columns in second operand and result. 2 MXVA A subroutine that computes a matrix times a vector and allows for arbitrary spacing of matrix elements. Call from FORTRAN: CALL MXVA(a,na,iad,b,nb,c,nc,nar,nbr) a Matrix of product. na Spacing between column elements of A. iad Spacing between row elements of A. b Vector of product. nb Spacing between elements of B. c Result vector. nc Spacing between elements of C. nar Number of rows in first operand and number of elements in the result. nbc Number of columns in first operand and number of elements in second operand. 1 search A group of subroutines that perform searches for locating the number or positions of true occurences within a vector, for finding the first occurence of a target object within a vector, for finding the indices of all positions of an object within a vector, and for finding targets within ordered arrays. 2 IILZ A function that returns the number of zero values before the first nonzero value in an integer array. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = IILZ(n,l,incl) n Number of elements to process in the vector. l Integer vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 2 IFLZ A function that returns the number of zero values before the first nonzero value in a real array. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = IFLZ(n,l,incl) n Number of elements to process in the vector. l Real vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 2 ILLZ A function that returns the number of false values preceding the first true value in a logical vector. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = ILLZ(n,l,incl) n Number of elements to process in the vector. l Logical vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 2 ILIZ A function that returns the number of positive or zero values preceding the first negative value in an integer vector. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = ILIZ(n,l,incl) n Number of elements to process in the vector. l Integer vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 2 ILFZ A function that returns the number of positive or zero values preceding the first negative value in a real vector. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = ILFZ(n,l,incl) n Number of elements to process in the vector. l Real vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 2 ILSUM A function that counts the total number of true values in a vector declared LOGICAL. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = ILSUM(n,l,incl) n Number of elements to process in the vector. l Logical vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 2 IISUM A function that counts the total number of negative values in a vector declared INTEGER. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = IISUM(n,l,incl) n Number of elements to process in the vector. l Integer vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 2 IFSUM A function that counts the total number of negative values in a vector declared REAL. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = IFSUM(n,l,incl) n Number of elements to process in the vector. l Real vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 2 ISRCHFEQ A function that returns the first location in a real array that is equal to a real target. Call from FORTRAN: location = ISRCHFEQ(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 2 ISRCHFNE A function that returns the first location in a real array that is not equal to a real target. Call from FORTRAN: location = ISRCHFNE(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 2 ISRCHFLT A function that returns the first location in a real array that is less than a real target. Call from FORTRAN: location = ISRCHFLT(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 2 ISRCHFLE A function that returns the first location in a real array that is less than or equal to a real target. Call from FORTRAN: location = ISRCHFLE(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 2 ISRCHFGT A function that returns the first location in a real array that is greater than a real target. Call from FORTRAN: location = ISRCHFGT(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 2 ISRCHFGE A function that returns the first location in a real array that is greater than or equal to a real target. Call from FORTRAN: location = ISRCHFGE(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 2 ISRCHIEQ A function that returns the first location in an integer array that is equal to an integer target. Call from FORTRAN: location = ISRCHIEQ(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 2 ISRCHINE A function that returns the first location in an integer array that is not equal to an integer target. Call from FORTRAN: location = ISRCHINE(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 2 ISRCHILT A function that returns the first location in an integer array that is less than an integer target. Call from FORTRAN: location = ISRCHILT(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 2 ISRCHILE A function that returns the first location in an integer array that is less than or equal to an integer target. Call from FORTRAN: location = ISRCHILE(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 2 ISRCHIGT A function that returns the first location in an integer array that is greater than an integer target. Call from FORTRAN: location = ISRCHIGT(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 2 ISRCHIGE A function that returns the first location in an integer array that is greater than or equal to an integer target. Call from FORTRAN: location = ISRCHIGE(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 2 WHENFEQ A subroutine that returns all locations in a real array that are equal to a real target. Call from FORTRAN: CALL WHENFEQ(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 WHENFNE A subroutine that returns all locations in a real array that are not equal to a real target. Call from FORTRAN: CALL WHENFNE(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 WHENFLT A subroutine that returns all locations in a real array that are less than a real target. Call from FORTRAN: CALL WHENFLT(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 WHENFLE A subroutine that returns all locations in a real array that are less than or equal to a real target. Call from FORTRAN: CALL WHENFLE(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 WHENFGT A subroutine that returns all locations in a real array that are greater than a real target. Call from FORTRAN: CALL WHENFGT(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 WHENFGE A subroutine that returns all locations in a real array that are greater than or equal to a real target. Call from FORTRAN: CALL WHENFGE(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 WHENIEQ A subroutine that returns all locations in an integer array that are equal to an integer target. Call from FORTRAN: CALL WHENIEQ(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 WHENINE A subroutine that returns all locations in an integer array that are not equal to an integer target. Call from FORTRAN: CALL WHENINE(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 WHENILT A subroutine that returns all locations in an integer array that are less than an integer target. Call from FORTRAN: CALL WHENILT(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 WHENILE A subroutine that returns all locations in an integer array that are less than or equal to an integer target. Call from FORTRAN: CALL WHENILE(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 WHENIGT A subroutine that returns all locations in an integer array that are greater than an integer target. Call from FORTRAN: CALL WHENIGT(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 WHENIGE A subroutine that returns all locations in an integer array that are greater than or equal to an integer target. Call from FORTRAN: CALL WHENIGE(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 2 OSRCHI A subroutine that searches an ordered integer array and returns the index of the first location that contains an integer target. The total number of occurences of the target in the array can also be returned. Call from FORTRAN: CALL OSRCHI(n,iarray,inc,itarget,index,iwhere,inum) n Number of elements of the array to be searched. iarray Integer array to be searched. inc A positive skip increment indicates an ascending array and returns the index of the first element encountered, starting at the beginning of array. A negative skip increment indicates a descending array and returns the index of the last element encountered, starting at the beginning of array. itarget Integer target of the search. index Index of the first location in the searched array that contains the target. Exceptions: (1) If n < 1, index = 0 (2) If no equal array elements, index = n+1. iwhere Index of the first location in the searched array that would contain the target if it were found in the array (If the target is found, index=iwhere). Exception: if n is less than 1, iwhere=0. inum Number of target elements found in the array. For the total number of occurences of the target in the array, this parameter must be specified nonzero. 2 OSRCHF A subroutine that searches an ordered real array and returns the index of the first location that contains a real target. The total number of occurences of the target in the array can also be returned. Call from FORTRAN: CALL OSRCHF(n,array,inc,target,index,iwhere,inum) n Number of elements of the array to be searched. array Real array to be searched. inc A positive skip increment indicates an ascending array and returns the index of the first element encountered, starting at the beginning of array. A negative skip increment indicates a descending array and returns the index of the last element encountered, starting at the beginning of array. target Real target of the search. index Index of the first location in the searched array that contains the target. Exceptions: (1) If n < 1, index = 0 (2) If no equal array elements, index = n+1. iwhere Index of the first location in the searched array that would contain the target if it were found in the array (If the target is found, index=iwhere). Exception: if n is less than 1, iwhere=0. inum Number of target elements found in the array. For the total number of occurences of the target in the array, this parameter must be specified nonzero. 1 ISAMAX An integer function that returns the index of the first occurence of the element in a real vector with the largest absolute value. Call from FORTRAN: index = ISAMAX(n,sx,incx) n Number of elements to process in vector sx. sx Real vector to be searched. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 1 ICAMAX An integer function that returns the index of the first occurence of the element in a complex vector with the largest absolute value. Call from FORTRAN: index = ICAMAX(n,cx,incx) n Number of elements to process in vector cx. cx Complex vector to be searched. incx Skip distance between elements of cx. For contiguous elements, incx = 1. 1 SASUM A real function that returns the sum of the absolute values of a real vector. Call from FORTRAN: sum = SASUM(n,sx,incx) n Number of elements to process in vector sx. sx Real vector to be summed. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 1 SCASUM A real function that returns the sum of the absolute values of a complex vector. Call from FORTRAN: csum = SCASUM(n,cx,incx) n Number of elements to process in vector cx. cx Complex vector to be summed. incx Skip distance between elements of cx. For contiguous elements, incx = 1. 1 SAXPY A subroutine that adds a real scalar multiple of one real vector to another real vector. Call from FORTRAN: CALL SAXPY(n,sa,sx,incx,sy,incy) n Number of elements in the vectors. sa Real scalar multiplier. sx Real vector. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Real result vector. incy Skip distance between elements of sy. For contiguous elements, incy = 1. 1 CAXPY A subroutine that adds a complex scalar multiple of one complex vector to another complex vector. Call from FORTRAN: CALL CAXPY(n,ca,cx,incx,cy,incy) n Number of elements in the vectors. ca Complex scalar multiplier. cx Complex vector. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Complex result vector. incy Skip distance between elements of cy. For contiguous elements, incy = 1. 1 SCOPY A subroutine that copies one real vector to another. Call from FORTRAN: CALL SCOPY(n,sx,incx,sy,incy) n Number of elements in the vectors. sx Real vector to be copied. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Real result vector. incy Skip distance between elements of sy. For contiguous elements, incy = 1. 1 CCOPY A subroutine that copies one complex vector to another. Call from FORTRAN: CALL CCOPY(n,cx,incx,cy,incy) n Number of elements in vectors. cx Complex vector to be copied. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Complex result vector. incy Skip distance between elements of cy. For contiguous elements, incy = 1. 1 SDOT A real function that computes the inner (dot) product of two real vectors. Call from FORTRAN: dot = SDOT(n,sx,incx,sy,incy) n Number of elements in the vectors. sx Real vector operand. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Real vector operand. incy Skip distance between elements of sy. For contiguous elements, incy = 1. 1 CDOTC A complex function that computes the inner (dot) product of the complex conjugate of one complex vector with another complex vector. Call from FORTRAN: cdot = CDOTC(n,cx,incx,cy,incy) n Number of elements in the vectors. cx Complex vector operand. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Complex vector operand. incy Skip distance between elements of cy. For contiguous elements, incy = 1. 1 CDOTU A complex function that computes the inner (dot) product of two complex vectors. Call from FORTRAN: cdot = CDOTU(n,cx,incx,cy,incy) n Number of elements in the vectors. cx Complex vector operand. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Complex vector operand. incy Skip distance between elements of cy. For contiguous elements, incy = 1. 1 SNRM2 A real function that computes the Euclidean norm of a real vector. Call from FORTRAN: eucnorm = SNRM2(n,sx,incx) n Number of elements in vector. sx Real vector operand incx Skip distance between elements of sx. For contiguous elements, incx = 1. See page 4-10 of CRAY-1 Computer Systems - Library Reference Manual, SR-0014, for equation. 1 SCNRM2 A real function that computes the Euclidean norm of a complex vector. Call from FORTRAN: eucnorm = SCNRM2(n,cx,incx) n Number of elements in vector. cx Complex vector operand incx Skip distance between elements of cx. For contiguous elements, incx = 1. See page 4-11 of CRAY-1 Computer Systems - Library Reference Manual, SR-0014, for equation. 1 SROTG A subroutine that computes the elements of a Givens rotation matrix. Call from FORTRAN: CALL SROTG(a,b,c,s) a scalar supplied by user which returns the computed value, r. b scalar supplied by user which returns the computed value, z. c scalar cosine of rotation matrix (computed). s scalar sine of rotation matrix (computed). See page 4-12 of CRAY-1 Library Reference Manual for equations. 1 SROT A subroutine that performs a matrix multiplication. If the coefficients c and s satisfy c*c+s*s=1.0, the transformation is a Givens rotation. The matrix multiplication is a (2 by 2) times a (2 by n) and is used to modify coordinates (x,y). Call from FORTRAN: CALL SROT(n,sx,incx,sy,incy,c,s) n Number of elements in vectors. sx Real vector to be modified. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Real vector to be modified. incy Skip distance between elements of sy. For contiguous elements, incy = 1. c Real cosine normally calculated using SROTG. s Real sine normally calculated using SROTG. See page 4-13 of CRAY-1 Library Reference Manual for additional information. 1 SROTMG A subroutine that computes the elements of a modified Givens plane rotation matrix. Call from FORTRAN: CALL SROTMG(d1,d2,b1,b2,param) d1 Input scale factor (updated on output). d2 Input scale factor (updated on output). b1 Input scalar (updated on output). b2 Input scalar. param A five element array containing output parameters. See pages 4-13 to 4-19 of CRAY-1 Library Reference Manual for additional information. 1 SROTM A subroutine that applies the modified Givens plane rotation con- structed by SROTMG. Call from FORTRAN: CALL SROTM(n,sx,incx,sy,incy,param) n Number of elements in vectors. sx Real vector. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Real vector. incy Skip distance between elements of sy. For contiguous elements, incy = 1. param A five element array containing input parameters that are normally calculated using SROTMG. See pages 4-19 to 4-21 of CRAY-1 Library Reference Manual for additional information. 1 SSCAL This subroutine scales a real vector by multiplying it by a real number. Call from FORTRAN: CALL SSCAL(n,sa,sx,incx) n Number of elements in vector. sa Real scaling factor. sx Real vector to be scaled. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 1 CSSCAL This subroutine scales a complex vector by multiplying it by a real number. Call from FORTRAN: CALL CSSCAL(n,sa,cx,incx) n Number of elements in vector. sa Real scaling factor. cx Complex vector to be scaled. incx Skip distance between elements of cx. For contiguous elements, incx = 1. 1 CSCAL This subroutine scales a complex vector by multiplying it by a complex number. Call from FORTRAN: CALL CSCAL(n,ca,cx,incx) n Number of elements in vector. ca Complex scaling factor. cx Complex vector to be scaled. incx Skip distance between elements of cx. For contiguous elements, incx = 1. 1 SSWAP A subroutine that exchanges two real vectors. Call from FORTRAN: CALL SSWAP(n,sx,incx,sy,incy) n Number of elements in vectors. sx One real vector. incx Skip distance between elements of sx. For contiguous elements, incx = 1. sy Another real vector. incy Skip distance between elements of sy. For contiguous elements, incy = 1. 1 CSWAP A subroutine that exchanges two complex vectors. Call from FORTRAN: CALL CSWAP(n,cx,incx,cy,incy) n Number of elements in vectors. cx One complex vector. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Another complex vector. incy Skip distance between elements of cy. For contiguous elements, incy = 1. 1 SPAXPY A subroutine that is a useful primitive for the lower upper factor- ization and solution of sparse linear systems. It is defined in FORTRAN in the following way: DO 10 I=1,N 10 SY(INDEX(I))=SA*SX(I)+SY(INDEX(I)) Call from FORTRAN: CALL SPAXPY(n,sa,sx,sy,index) n Number of elements in the vectors. sa Real scalar multiplier. sx Real vector operand. sy Real vector operand. index Vector of indexes. 1 SPDOT A real function that is a useful primitive for the lower upper factorization and solution of sparse linear systems. It is defined in FORTRAN in the following way: DO 10 I=1,N 10 PDOT=PDOT+SY(INDEX(I))*SX(I) Call from FORTRAN: pdot = SPDOT(n,sy,index,sx) n Number of elements in the vectors. sx Real vector operand. sy Real vector operand. index Vector of indexes. 1 ISMAX An integer function that returns the first index of the largest element of a real vector. Call from FORTRAN: imax = ISMAX(n,sx,incx) n Number of elements to process in vector sx. sx Real vector to be searched. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 1 ISMIN An integer function that returns the first index of the smallest element of a real vector. Call from FORTRAN: imin = ISMIN(n,sx,incx) n Number of elements to process in vector sx. sx Real vector to be searched. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 1 ISAMIN An integer function that returns the first index of the element with the smallest absolute value. Call from FORTRAN: imin = ISAMIN(n,sx,incx) n Number of elements to process in vector sx. sx Real vector to be searched. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 1 SSUM A real function that sums the elements of a real vector. Call from FORTRAN: sum = SSUM(n,sx,incx) n Number of elements in vector. sx Real vector to be summed. incx Skip distance between elements of sx. For contiguous elements, incx = 1. 1 CSUM A complex function that sums the elements of a complex vector. Call from FORTRAN: sum = CSUM(n,cx,incx) n Number of elements in vector. cx Complex vector to be summed. incx Skip distance between elements of cx. For contiguous elements, incx = 1. 1 CROTG A subroutine that computes the elements of a complex Givens plane rotation matrix. Call from FORTRAN: CALL CROTG(ca,cb,cc,cs) ca Complex number supplied by user which returns with a computed value. cb Complex number supplied by user which returns with a computed value. cc Complex cosine of rotation matrix (computed). cs Complex sine of rotation matrix (computed). See page 4-28 of CRAY-1 Library Reference Manual for equation. 1 CROT A subroutine that applies the complex Givens plane rotation computed by the subroutine CROTG. Call from FORTRAN: CALL CROT(n,cx,incx,cy,incy,cc,cs) n Number of elements in vectors. cx Complex vector to be modified. incx Skip distance between elements of cx. For contiguous elements, incx = 1. cy Complex vector to be modified. incy Skip distance between elements of cy. For contiguous elements, incy = 1. cc Complex cosine normally calculated using CROTG. cs Complex sine normally calculated using CROTG. See page 4-28 of CRAY-1 Library Reference Manual for equation. 1 SMACH A function that returns machine constants for the real limits of a given machine. Call from FORTRAN: x = SMACH(job) job = 1 The machine epsilon (the smallest number epsilon such that (1. + e <> 1) and (1. - e <> 1)). = 2 A number close to smallest normalized, represent- able number. = 3 A number close to largest normalized, representable number. 1 CMACH A function that returns machine constants for the complex limits of a given machine. Call from FORTRAN: x = CMACH(job) job = 1 The machine epsilon (the smallest number epsilon such that (1. + e <> 1) and (1. - e <> 1)). = 2 A number close to the square root of the smallest normalized, representable number. = 3 A number close to the square root of the largest normalized, representable number. 1 CFFT2 A subroutine that calculates a Fourier synthesis if the sign of IX is negative and a Fourier analysis if the sign of IX is positive. Call from FORTRAN: CALL CFFT2(init,ix,n,x,work,y) init <>0 Generates sine and cosine tables in WORK = 0 Calculates Fourier transforms using sine and cosine tables of previous call. ix > 0 Calculates Fourier analysis < 0 Calculates Fourier synthesis. n Size of Fourier transform; 2**m where 2<=m for the CRAY-1. x Input vector. Vector of n complex values. work Working storage. Vector of (5/2)n complex values. y Result vector. Vector of n complex values. For equations and other additional information, see the CRAY-1 Computer Systems - Library Reference Manual, SR-0014, pages 4-51 to 4-52. 1 RCFFT2 A subroutine that calculates a Fourier synthesis if the sign of IX is negative and a Fourier analysis if the sign of IX is positive. Call from FORTRAN: CALL RCFFT2(init,ix,n,x,work,y) init <>0 Generates sine and cosine tables in WORK = 0 Calculates Fourier transforms using sine and cosine tables of previous call. ix > 0 Calculates Fourier analysis <=0 Calculates Fourier synthesis. n Size of Fourier transform; 2**m where 2<=m. x Input vector. Vector of n real values. work Working storage. Vector of (3/2)n+2 complex values. y Result vector. Vector of (n/2)+1 complex values. For equations and other additional information, see the CRAY-1 Computer Systems - Library Reference Manual, SR-0014, page 4-52. 1 CRFFT2 A subroutine that calculates a Fourier synthesis if the sign of IX is negative and a Fourier analysis if the sign of IX is positive. Call from FORTRAN: CALL CRFFT2(init,ix,n,x,work,y) init <>0 Generates sine and cosine tables in WORK = 0 Calculates Fourier transforms using sine and cosine tables of previous call. ix > 0 Calculates Fourier analysis <=0 Calculates Fourier synthesis. n Size of Fourier transform; 2**m where 2<=m. x Input vector. Vector of (n/2)+1 complex values. work Working storage. Vector of (3/2)n+2 complex values. y Result vector. Vector of n complex values. For equations and other additional information, see the CRAY-1 Computer Systems - Library Reference Manual, SR-0014, page 4-53. 1 FILTERG A subroutine that computes a convolution of two vectors. Call from FORTRAN: CALL FILTERG(a,m,d,n,o) a Vector of filter coefficients. m Number of filter coefficients. d Input data vector. n Number of data points. o Output vector. For additional information, see pages 4-53 to 4-54 of CRAY-1 Computer Systems - Library Reference Manual, SR-0014. 1 FILTERS A subroutine that computes the same convolution of two vectors as FILTERG except that it assumes the filter coefficient vector is symmetric. Call from FORTRAN: CALL FILTERS(a,m,d,n,o) a Symmetric filter coefficient vector. m M is formally the length of vector A but because A is symmetric, only m/2 elements of A are ever referenced. d Input data vector. n Number of data points. o Output vector. For additional information, see pages 4-54 to 4-55 of CRAY-1 Computer Systems - Library Reference Manual, SR-0014. 1 OPFILT A subroutine that computes the solution to the Weiner-Levinson system of linear equations Ta=b where T is a Toeplitz matrix in which elements are described by the following: t(i,j)=R(k) for abs(j-i)+1=k and k=1,...,n. Call from FORTRAN: CALL OPFILT(m,a,b,c,r) m Order of system of equations. a Output vector of filter coefficients. b Information auto-correlation vector. c Scratch vector of length 2m. r Signal auto-correlation vector. For additional information, see pages 4-55 to 4-56 of CRAY-1 Computer Systems - Library Reference Manual, SR-0014. 1 GATHER A subroutine that allows the user to gather a vector from a source vector as in the following way: A(I) = B(INDEX(I)) where I=1,N. Call from FORTRAN: CALL GATHER(n,a,b,index) n Number of elements in the vectors. a Output vector. b Source vector. index Vector of indexes. 1 SCATTER A subroutine that allows the user to scatter a vector into another vector as in the following way: A(INDEX(I)) = B(I) Call from FORTRAN: CALL SCATTER(n,a,index,b) n Number of elements in each vector. a Output vector. index Vector of indexes. b Source vector. 1 FOLR A subroutine that solves first-order linear recurrences where vector B is overwritten by result vector C. It has the form: EQUIVALENCE(B,C) C(1) = B(1) DO 10 I = 2,N 10 C(I) = -A(I) * C(I-1) + B(I) Call from FORTRAN: CALL FOLR(n,a,inca,b,incb) n Length of linear recurrence. a Vector A of length N of above formula. (A(1) is arbitrary.) inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of above formula on input and vector C of formula on output. (The output overwrites the input.) incb Skip distance between elements of the vector operand B and result C. For contiguous elements, incb = 1. 1 FOLRP A subroutine that solves first-order linear recurrences where vector B is overwritten by result vector C. It has the form: EQUIVALENCE(B,C) C(1) = B(1) DO 10 I = 2,N 10 C(I) = A(I) * C(I-1) + B(I) Call from FORTRAN: CALL FOLRP(n,a,inca,b,incb) n Length of linear recurrence. a Vector A of length N of above formula. (A(1) is arbitrary.) inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of above formula on input and vector C of formula on output. (The output overwrites the input.) incb Skip distance between elements of the vector operand B and result C. For contiguous elements, incb = 1. 1 FOLR2 A subroutine that solves first-order linear recurrences with input vectors A and B and result vector C. It has the form: EQUIVALENCE(B,C) C(1) = B(1) DO 10 I = 2,N 10 C(I) = -A(I) * C(I-1) + B(I) Call from FORTRAN: CALL FOLR2(n,a,inca,b,incb,c,incc) n Length of linear recurrence. a Vector A of length N of above formula. (A(1) is arbitrary.) inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of above formula. incb Skip distance between elements of the vector operand B. For contiguous elements, incb=1. c Vector C of above formula. incc Skip distance between elements of the vector result C. For contiguous elements, incc=1. 1 FOLR2P A subroutine that solves first-order linear recurrences with input vectors A and B and result vector C. It has the form: EQUIVALENCE(B,C) C(1) = B(1) DO 10 I = 2,N 10 C(I) = A(I) * C(I-1) + B(I) Call from FORTRAN: CALL FOLR2P(n,a,inca,b,incb,c,incc) n Length of linear recurrence. a Vector A of length N of above formula. (A(1) is arbitrary.) inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of above formula. incb Skip distance between elements of the vector operand B. For contiguous elements, incb=1. c Vector C of above formula. incc Skip distance between elements of the vector result C. For contiguous elements, incc=1. 1 FOLRN A real function that solves for the last term of a first-order linear recurrence where vector B is overwritten by result C. It has the form: DO 10 I = 2,N 10 B(I) = -A(I) * B(I-1) + B(I) Call from FORTRAN: result = FOLRN(n,a,inca,b,incb) n Length of linear recurrence. a Vector A of length N of above formula. (A(1) is arbitrary.) inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of length N of above formula. (The output overwrites the input.) incb Skip distance between elements of the vector operand and result B. For contiguous elements, incb = 1. 1 SOLR A subroutine that solves second-order linear recurrences with input vectors A and B and result vector C. It has the form: DO 10 I = 1,N 10 C(I+2) = A(I) * C(I+1) + B(I) * C(I) Call from FORTRAN: CALL SOLR(n,a,inca,b,incb,c,incc) n Length of linear recurrence. a Vector A of length N of above equation. inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of length N of above equation. incb Skip distance between elements of the vector operand B. For contiguous elements, incb=1. c Vector result C of length N+2 of above equation. incc Skip distance between elements of the vector result C. For contiguous elements, incc=1. C(1) and C(2) are input to this routine; C(3) to C(N+2) are output from this routine. 1 SOLRN A real function that solves for the last term of a second-order linear recurrence with input vectors A and B and result vector C. It has the form: DO 10 I = 1,N 10 C(I+2) = A(I) * C(I+1) + B(I) * C(I) Call from FORTRAN: result = SOLR(n,a,inca,b,incb,c,incc) n Length of linear recurrence. a Vector A of length N of above equation. inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of length N of above equation. incb Skip distance between elements of the vector operand B. For contiguous elements, incb=1. c Vector result C of length N+2 of above equation. incc Skip distance between elements of the vector result C. For contiguous elements, incc=1. C(1) and C(2) are input to this routine; C(3) to C(N+2) are output from this routine. 1 SOLR3 A subroutine that computes a second-order linear recurrence of three terms. It has input vectors A and B and result vector C, and is of the form: DO 10 I = 1,N 10 C(I+2) = C(I+2) + A(I)*C(I+1) + B(I)*C(I) Call from FORTRAN: CALL SOLR3(n,a,inca,b,incb,c,incc) n Length of linear recurrence. a Vector A of length N of above equation. inca Skip distance between elements of the vector operand A. For contiguous elements, inca=1. b Vector B of length N of above equation. incb Skip distance between elements of the vector operand B. For contiguous elements, incb=1. c Vector result C of length N+2 of above equation. incc Skip distance between elements of the vector result C. For contiguous elements, incc=1. C(1) and C(2) are input to this routine; C(3) to C(N+2) are output from this routine. 1 MINV A subroutine that computes the determinant and inverse of a square matrix and can also solve several systems of linear equations. Call from FORTRAN: CALL MINV(ab,n,nd,scratch,det,eps,m,mode) ab Augmented matrix of the square matrix A and the n x m matrix B of the right-hand sides for each system of equations to solve. The solution over- writes the corresponding right-hand side. In the calling routine, AB must be dimensioned A(nd,n+m). n Order of matrix A. nd Leading dimension of AB. scratch User-defined working storage array of length at least 2*n. det Determinant of matrix A. eps Uuser-defined tolerance for the product of pivot elements. m > 0 Number of systems of linear equations to solve = 0 Determinant of A is computed, depending on the value of MODE. mode +1 A is overwritten with A inverse =0 A is not saved and A inverse is not computed. 1 MXM A subroutine that computes a matrix times matrix product (C=AB) and assumes a skip distance between elements of the matrices to be 1. Call from FORTRAN: CALL MXM(a,nar,b,nac,c,nbc) a First matrix of product. nar Number of rows of matrices A and C. b Second matrix of product. nac Number of columns of matrix A and the number of rows of matrix B. c Result matrix. nbc Number of columns of matrices B and C. 1 MXV A subroutine that computes a matrix times a vector and assumes a skip distance between elements of the matrix to be 1. Performs the following FORTRAN calculations: DO 10 I = 1,NAR 10 C(I)=A(I,1)*B(1)+A(I,2)*B(2)+...+A(I,NBR)*B(NBR) Call from FORTRAN: CALL MXV(a,nar,b,nbr,c) a Matrix of product. nar Number of rows of matrices A and C. b Vector of product. nbr Number of elements of vector B and the number of columns of matrix A. c Resulting vector. 1 MXMA A subroutine that computes a matrix times matrix product (C=AB) and allows for arbitrary spacing of matrix elements. Call from FORTRAN: CALL MXMA(a,na,iad,b,nb,ibd,c,nc,icd,nar,nac,nbc) a First matrix of product. na Spacing between column elements of A. iad Spacing between row elements of A. b Second matrix of product. nb Spacing between column elements of B. ibd Spacing between row elements of B. c Output matrix. nc Spacing between column elements of C. icd Spacing between row elements of C. nar Number of rows in first operand and result. nac Number of columns in first operand and number of rows in second operand. nbc Number of columns in second operand and result. 1 MXVA A subroutine that computes a matrix times a vector and allows for arbitrary spacing of matrix elements. Call from FORTRAN: CALL MXVA(a,na,iad,b,nb,c,nc,nar,nbr) a Matrix of product. na Spacing between column elements of A. iad Spacing between row elements of A. b Vector of product. nb Spacing between elements of B. c Result vector. nc Spacing between elements of C. nar Number of rows in first operand and number of elements in the result. nbc Number of columns in first operand and number of elements in second operand. 1 IILZ A function that returns the number of zero values before the first nonzero value in an integer array. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = IILZ(n,l,incl) n Number of elements to process in the vector. l Integer vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 1 IFLZ A function that returns the number of zero values before the first nonzero value in a real array. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = IFLZ(n,l,incl) n Number of elements to process in the vector. l Real vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 1 ILLZ A function that returns the number of false values preceding the first true value in a logical vector. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = ILLZ(n,l,incl) n Number of elements to process in the vector. l Logical vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 1 ILIZ A function that returns the number of positive or zero values preceding the first negative value in an integer vector. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = ILIZ(n,l,incl) n Number of elements to process in the vector. l Integer vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 1 ILFZ A function that returns the number of positive or zero values preceding the first negative value in a real vector. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = ILFZ(n,l,incl) n Number of elements to process in the vector. l Real vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 1 ILSUM A function that counts the total number of true values in a vector declared LOGICAL. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = ILSUM(n,l,incl) n Number of elements to process in the vector. l Logical vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 1 IISUM A function that counts the total number of negative values in a vector declared INTEGER. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = IISUM(n,l,incl) n Number of elements to process in the vector. l Integer vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 1 IFSUM A function that counts the total number of negative values in a vector declared REAL. It returns zero if the number of elements, N, is less than one. Call from FORTRAN: kount = IFSUM(n,l,incl) n Number of elements to process in the vector. l Real vector operand. incl Skip distance between elements of the vector operand. For contiguous elements, incl = 1. 1 ISRCHFEQ A function that returns the first location in a real array that is equal to a real target. Call from FORTRAN: location = ISRCHFEQ(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 1 ISRCHFNE A function that returns the first location in a real array that is not equal to a real target. Call from FORTRAN: location = ISRCHFNE(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 1 ISRCHFLT A function that returns the first location in a real array that is less than a real target. Call from FORTRAN: location = ISRCHFLT(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 1 ISRCHFLE A function that returns the first location in a real array that is less than or equal to a real target. Call from FORTRAN: location = ISRCHFLE(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 1 ISRCHFGT A function that returns the first location in a real array that is greater than a real target. Call from FORTRAN: location = ISRCHFGT(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 1 ISRCHFGE A function that returns the first location in a real array that is greater than or equal to a real target. Call from FORTRAN: location = ISRCHFGE(n,array,inc,target) n Number of elements to be searched. If n <= 0, then 0 is returned. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. If TARGET is not found, then the returned value is n+1. 1 ISRCHIEQ A function that returns the first location in an integer array that is equal to an integer target. Call from FORTRAN: location = ISRCHIEQ(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 1 ISRCHINE A function that returns the first location in an integer array that is not equal to an integer target. Call from FORTRAN: location = ISRCHINE(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 1 ISRCHILT A function that returns the first location in an integer array that is less than an integer target. Call from FORTRAN: location = ISRCHILT(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 1 ISRCHILE A function that returns the first location in an integer array that is less than or equal to an integer target. Call from FORTRAN: location = ISRCHILE(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 1 ISRCHIGT A function that returns the first location in an integer array that is greater than an integer target. Call from FORTRAN: location = ISRCHIGT(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 1 ISRCHIGE A function that returns the first location in an integer array that is greater than or equal to an integer target. Call from FORTRAN: location = ISRCHIGE(n,iarray,inc,itarget) n Number of elements to be searched. If n <= 0, then 0 is returned. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget integer value searched for in array. If ITARGET is not found, then the returned value is n+1. 1 WHENFEQ A subroutine that returns all locations in a real array that are equal to a real target. Call from FORTRAN: CALL WHENFEQ(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 WHENFNE A subroutine that returns all locations in a real array that are not equal to a real target. Call from FORTRAN: CALL WHENFNE(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 WHENFLT A subroutine that returns all locations in a real array that are less than a real target. Call from FORTRAN: CALL WHENFLT(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 WHENFLE A subroutine that returns all locations in a real array that are less than or equal to a real target. Call from FORTRAN: CALL WHENFLE(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 WHENFGT A subroutine that returns all locations in a real array that are greater than a real target. Call from FORTRAN: CALL WHENFGT(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 WHENFGE A subroutine that returns all locations in a real array that are greater than or equal to a real target. Call from FORTRAN: CALL WHENFGE(n,array,inc,target,index,nval) n Number of elements to be searched. array Real array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. target Real value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 WHENIEQ A subroutine that returns all locations in an integer array that are equal to an integer target. Call from FORTRAN: CALL WHENIEQ(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 WHENINE A subroutine that returns all locations in an integer array that are not equal to an integer target. Call from FORTRAN: CALL WHENINE(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 WHENILT A subroutine that returns all locations in an integer array that are less than an integer target. Call from FORTRAN: CALL WHENILT(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 WHENILE A subroutine that returns all locations in an integer array that are less than or equal to an integer target. Call from FORTRAN: CALL WHENILE(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 WHENIGT A subroutine that returns all locations in an integer array that are greater than an integer target. Call from FORTRAN: CALL WHENIGT(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 WHENIGE A subroutine that returns all locations in an integer array that are greater than or equal to an integer target. Call from FORTRAN: CALL WHENIGE(n,iarray,inc,itarget,index,nval) n Number of elements to be searched. iarray Integer array to be searched. inc Skip distance between elements of the searched array. For contiguous elements, inc = 1. itarget Integer value searched for in array. index Integer array containing the index of the found target in the array. nval Number of values put in the index array. 1 OSRCHI A subroutine that searches an ordered integer array and returns the index of the first location that contains an integer target. The total number of occurences of the target in the array can also be returned. Call from FORTRAN: CALL OSRCHI(n,iarray,inc,itarget,index,iwhere,inum) n Number of elements of the array to be searched. iarray Integer array to be searched. inc A positive skip increment indicates an ascending array and returns the index of the first element encountered, starting at the beginning of array. A negative skip increment indicates a descending array and returns the index of the last element encountered, starting at the beginning of array. itarget Integer target of the search. index Index of the first location in the searched array that contains the target. Exceptions: (1) If n < 1, index = 0 (2) If no equal array elements, index = n+1. iwhere Index of the first location in the searched array that would contain the target if it were found in the array (If the target is found, index=iwhere). Exception: if n is less than 1, iwhere=0. inum Number of target elements found in the array. For the total number of occurences of the target in the array, this parameter must be specified nonzero. 1 OSRCHF A subroutine that searches an ordered real array and returns the index of the first location that contains a real target. The total number of occurences of the target in the array can also be returned. Call from FORTRAN: CALL OSRCHF(n,array,inc,target,index,iwhere,inum) n Number of elements of the array to be searched. array Real array to be searched. inc A positive skip increment indicates an ascending array and returns the index of the first element encountered, starting at the beginning of array. A negative skip increment indicates a descending array and returns the index of the last element encountered, starting at the beginning of array. target Real target of the search. index Index of the first location in the searched array that contains the target. Exceptions: (1) If n < 1, index = 0 (2) If no equal array elements, index = n+1. iwhere Index of the first location in the searched array that would contain the target if it were found in the array (If the target is found, index=iwhere). Exception: if n is less than 1, iwhere=0. inum Number of target elements found in the array. For the total number of occurences of the target in the array, this parameter must be specified nonzero. 1 LINPACK LINPACK is a package of FORTRAN routines that solve systems of linear equations and compute the QR, Cholesky, and singular value decompositions. The original FORTRAN programs are documented in the LINPACK User's Guide; J.J. Dongarra, C.B. Moler, J.R. Bunch, and G.W. Stewart; Society for Industrial and Applied Mathematics, Philadelphia, 1979. 1 EISPACK EISPACK is a package of FORTRAN routines for solving the eigen- value problem, computing and using the singular value decomposi- tion, and solving banded symmetric systems of linear equations. The original FORTRAN versions are documented in the Matrix Eigensystem Routines - EISPACK Guide, second edition; B.T. Smith, J.M. Boyle, J.J. Dongarra, B.S. Garbow, Y. Ikebe, V.C. Klema, C.B. Moler; Springer-Verlag, New York, 1977.