# Library Contents

The NAG Parallel Library Manual contains two categories of routines which can be called by users. They are listed separately in the two sections below.

Fully Documented Routines

183 routines, for each of which an individual routine document is provided. These are regarded as the primary contents of the NAG Parallel Library.

Fundamental Support Routines

15 comparatively simple routines which are documented in compact form in the relevant Chapter Introductions (X01, X02).

Note: all the routines in the above categories have either six-character names ending in 'F' or seven-character names ending in 'FP'.

### Chapter A00 - Library Identification

 A00AAFP Prints details of the NAG Parallel Library implementation

### Chapter C06 - Summation of Series

 C06FUFP Direct or inverse two-dimensional Fourier transform of a complex sequence C06GXFP Factorizes a positive integer n as n = n1 × n2. This routine may be used in conjunction with C06MCFP C06MCFP Direct or inverse one-dimensional discrete Fourier transform of a complex sequence C06MXFP Direct or inverse three-dimensional discrete Fourier transform of a complex sequence

### Chapter E04 - Minimizing or Maximizing a Function

 E04FDFP Unconstrained minimum of a sum of squares, Gauss--Newton algorithm using function values only (easy-to-use) E04JBFP Minimum of a general nonlinear function with unconstrained, Gauss--Newton algorithm using function values only (easy-to-use)

### Chapter F01 - Matrix Operations and Distribution

 F01CPFP Element-wise maximum or minimum in absolute value of integer matrices F01WAFP Gather real matrix, regarded as submatrix of matrix distributed in cyclic two-dimensional block format, used with routines from Chapters F07 and F08 F01WBFP Gather real matrix distributed in cyclic two-dimensional block format, used with routines from Chapter F04 F01WGFP Gather complex matrix distributed in cyclic two-dimensional block format, used with routines from Chapters F07 and F08 F01WHFP Gather complex matrix distributed in cyclic two-dimensional block format, used with routines from Chapter F04 F01WNFP Scatter real matrix from the root processor to the Library Grid using cyclic two-dimensional block format, used with routines from Chapters F07 and F08 F01WPFP Scatter real matrix from the root processor to the Library Grid using cyclic two-dimensional block format, used with routines from Chapter F04 F01WUFP Scatter complex matrix from the root processor to the Library Grid using cyclic two-dimensional block format, used with routines from Chapters F07 and F08 F01WVFP Scatter complex matrix from the root processor to the Library Grid using cyclic two-dimensional block format, used with routines from Chapter F04 F01XAFP Scatter real sparse matrix, stored in coordinate storage format, using cyclic row block distribution F01XEFP Scatter real vector distributed conformally to sparse matrix, used with routines from Chapter F11 F01XFFP Gather real vector distributed conformally to sparse matrix, used with routines from Chapter F11 F01XGFP Scatter integer vector distributed conformally to sparse matrix, used with routines from Chapter F11 F01XHFP Gather integer vector distributed conformally to sparse matrix, used with routines from Chapter F11 F01XPFP Scatter complex sparse matrix, stored in coordinate storage format, using cyclic row block distribution, used with routines from Chapter F11 F01XTFP Scatter complex vector distributed conformally to sparse matrix, used with routines from Chapter F11 F01XUFP Gather complex vector distributed conformally to sparse matrix, used with routines from Chapter F11 F01YAFP In-place generation of real sparse matrix using cyclic row block distribution F01YBFP In-place generation of real sparse matrix using cyclic row block distribution (suitable for repeated sparsity pattern), used with routines from Chapter F11 F01YEFP In-place generation of real dense vector distributed conformally to sparse matrix F01YPFP In-place generation of complex sparse matrix according to cyclic row block distribution, used with routines from Chapter F11 F01YQFP In-place generation of complex sparse matrix according to cyclic row block distribution (suitable for repeated sparsity pattern) F01YTFP In-place generation of complex dense vector distributed conformally to sparse matrix, used with routines from Chapter F11 F01YWFP In-place generation of complex Hermitian banded matrix in column block fashion, used with routines from Chapter F07 F01YXFP In-place generation of real symmetric banded matrix in column block fashion, used with routines from Chapter F07 F01YYFP In-place generation of real matrix in row block fashion on a one-dimensional grid of processors, used with routines from Chapter F07 F01YZFP In-place generation of complex matrix in row block fashion on a one-dimensional grid of processors, used with routines from Chapter F07 F01ZHFP Generates an l by m by n three-dimensional array A(i,j,k) on a grid of processors in i-block form F01ZMFP In-place generation of real matrix in row block fashion, used with routines from Chapters C06 and F04 F01ZNFP In-place generation of complex matrix in row block fashion, used with routines from Chapter F04 F01ZPFP Gather real vector distributed conformally to matrix, used with routines from Chapters F07 and F08 F01ZQFP In-place generation of real matrix in cyclic two-dimensional block fashion, used with routines from Chapters F07 and F08 F01ZRFP In-place generation of real matrix in column block fashion, used with routines from Chapters F02 and F04 F01ZSFP In-place generation of real matrix in cyclic two-dimensional block fashion, used with routines from Chapter F04 (Black Box) F01ZVFP In-place generation of complex matrix in cyclic two-dimensional block fashion, used with routines from Chapters F07 and F08 F01ZWFP In-place generation of complex matrix in column block fashion, used with routines from Chapters F02 and F04 F01ZXFP In-place generation of complex matrix in cyclic two-dimensional block fashion, used with routines from Chapter F04 (Black Box) F01ZYFP In-place generation of complex vector in column block fashion, used with routines from Chapter F07 F01ZZFP In-place generation of real vector in column block fashion, used with routines from Chapter F07

### Chapter F02 - Eigenvalues and Eigenvectors

 F02FQFP Eigenvalues and eigenvectors of real symmetric matrix, one-sided Jacobi method F02FRFP Eigenvalues and eigenvectors of complex Hermitian matrix, one-sided Jacobi method F02WQFP Singular Value Decomposition (SVD) of real matrix, one-sided Jacobi method F02WRFP Singular Value Decomposition (SVD) of complex matrix, one-sided Jacobi method

### Chapter F04 - Simultaneous Linear Equations

 F04EBFP Solution of real linear system (Black Box) F04ECFP Solution of complex linear equations (Black Box) F04FBFP Solution of real symmetric positive-definite linear system (Black Box) F04FCFP Solution of complex Hermitian positive-definite linear system (Black Box) F04GBFP Solution of real linear least-squares problem (Black Box) F04HBFP Solution of real symmetric banded linear system (Black Box) F04HZFP Solution of complex Hermitian banded linear system (Black Box) F04JBFP Solution of real symmetric tridiagonal linear system (Black Box) F04JZFP Solution of complex Hermitian tridiagonal linear system (Black Box)

### Chapter F07 - Linear Equations (ScaLAPACK)

 F07ADFP (PDGETRF) LU factorization of real general matrix F07AEFP (PDGETRS) Solution of real linear system, matrix already factorized by F07ADFP (PDGETRF) F07ARFP (PZGETRF) LU factorization of complex general matrix F07ASFP (PZGETRS) Solution of complex linear system, matrix already factorized by F07ARFP (PZGETRF) F07FDFP (PDPOTRF) Cholesky factorization of real symmetric positive-definite matrix F07FEFP (PDPOTRS) Solution of real symmetric positive-definite linear system, matrix already factorized by F07FDFP (PDPOTRF) F07FRFP (PZPOTRF) Cholesky factorization of complex Hermitian positive-definite matrix F07FSFP (PZPOTRS) Solution of complex Hermitian positive-definite linear system, matrix already factorized by F07FRFP (PZPOTRF) F07HDFP (PDPBTRF) Cholesky factorization of real symmetric banded matrix with no pivoting F07HEFP (PDPBTRS) Solution of real symmetric banded linear system, matrix already factorized by F07HDFP (PDPBTRF) F07HRFP (PZPBTRF) Cholesky factorization of complex Hermitian banded matrix with no-pivoting F07HSFP (PZPBTRS) Solution of complex Hermitian banded linear system, matrix already factorized by F07HRFP (PZPBTRF) F07JDFP (PDPTTRF) Cholesky factorization of real symmetric tridiagonal matrix with no-pivoting F07JEFP (PDPTTRS) Solution of real symmetric tridiagonal linear system, matrix already factorized by F07JDFP (PDPTTRF) F07JRFP (PZPTTRF) Factorization of complex Hermitian tridiagonal matrix with no-pivoting F07JSFP (PZPTTRS) Solution of real symmetric tridiagonal linear system, matrix already factorized by F07JRFP (PZPTTRF) F07TGFP (PDTRCON) Estimates condition number of real triangular matrix

### Chapter F08 - Least-squares and Eigenvalue Problems (ScaLAPACK)

 F08AEFP (PDGEQRF) QR factorization of real general rectangular matrix F08AFFP (PDORGQR) Form all or part of an orthogonal Q from QR factorization determined by F08AEFP (PDGEQRF) F08AGFP (PDORMQR) Apply the orthogonal transformation determined by F08AEFP (PDORMQR) F08ASFP (PZGEQRF) QR factorization of complex general rectangular matrix F08ATFP (PZUNGQR) Form all or part of a unitary Q from QR factorization determined by F08ASFP (PZGEQRF) F08AUFP (PZUNMQR) Apply the unitary transformation determined by F08ASFP (PZUNMQR) F08FEFP (PDSYTRD) Orthogonal reduction of real symmetric matrix to tridiagonal form F08FGFP (PDORMTR) Apply orthogonal transformation determined by F08FEFP (PDSYTRD) F08FSFP (PZHETRD) Unitary reduction of complex Hermitian matrix to real symmetric tridiagonal form F08FUFP (PZUNMTR) Apply unitary transformation matrix determined by F08FSFP (PZHETRD) F08JJFP (PDSTEBZ) All or selected eigenvalues of real symmetric tridiagonal matrix by bisection F08JKFP (PDSTEIN) Selected eigenvectors of real symmetric tridiagonal matrix by inverse iteration, storing eigenvectors in real array F08JXFP (PZSTEIN) Selected eigenvectors of real symmetric tridiagonal matrix by inverse iteration, storing eigenvectors in complex array

### Chapter F11 - Sparse Linear Algebra

 F11BAFP Real sparse nonsymmetric linear system, reverse-communication, set-up for F11BBFP F11BBFP Real sparse nonsymmetric linear system, reverse-communication, solver using preconditioned RGMRES, CGS or Bi-CGSTAB F11BCFP Real sparse nonsymmetric linear system, reverse-communication, diagnostic for F11BBFP F11BRFP Complex sparse non-Hermitian linear system, reverse-communication, set-up for F11BSFP F11BSFP Complex sparse non-Hermitian linear system, reverse-communication, solver using preconditioned GMRES, CGS or Bi-CGSTAB F11BTFP Complex sparse non-Hermitian linear system, reverse-communication, diagnostic for F11BSFP F11DAFP Incomplete LU factorization of the local diagonal blocks of a real sparse matrix, represented in coordinate storage format, distributed on a logical grid of processors in cyclic row block form F11DBFP Solution of real system of linear equations, involving a real block diagonal sparse matrix, represented in coordinate storage format, distributed on a logical grid of processors in cyclic row block form F11DCFP Black Box routine for sparse system of linear equations F11DDFP Apply iterations of SOR method to real sparse linear system, used mostly as SOR preconditioner for real sparse matrix F11DEFP Solution of real sparse nonsymmetric linear system using Jacobi, SOR or no preconditioned RGMRES, CGS or Bi-CGSTAB (Black Box) F11DFFP Real sparse nonsymmetric linear system, reverse-communication, incomplete LU factorization of local or overlapping diagonal blocks, used mostly as incomplete LU preconditioner for real sparse matrix F11DGFP Real sparse nonsymmetric linear system, reverse-communication, preconditioner for real sparse matrix F11DHFP Solution of real sparse nonsymmetric linear system using block-Jacobi preconditioned RGMRES, CGS or Bi-CGSTAB (Black Box) F11DKFP Apply iterations of relaxed Jacobi iterative method to a real sparse linear system, used mostly as Jacobi preconditioner for real sparse matrix F11DRFP Apply iterations of SOR method to the complex sparse linear system, used mostly as SOR preconditioner for complex sparse matrix F11DSFP Solution of complex sparse non-Hermitian linear system using Jacobi, SOR or no preconditioned RGMRES, CGS or Bi-CGSTAB (Black Box) F11DTFP Computes incomplete LU factorization of local diagonal blocks of complex sparse matrix F11DUFP Complex sparse non-Hermitian linear system, reverse-communication, block-Jacobi preconditioner generated by F11DTFP F11DVFP Solution of complex sparse non-Hermitian linear system using block-Jacobi preconditioned RGMRES, CGS or Bi-CGSTAB (Black Box) F11DXFP Apply iterations of relaxed Jacobi iterative method to complex sparse linear system, used mostly as Jacobi preconditioner for complex sparse matrix F11GAFP Real sparse symmetric linear system, reverse-communication, set-up for F11GBFP F11GBFP Real sparse symmetric linear system, reverse-communication, solver using preconditioned CG or SYMMLQ F11GCFP Real sparse symmetric linear system, reverse-communication, diagnostic for F11GBFP F11JEFP Solution of real sparse symmetric linear system using Jacobi, SSOR or no preconditioned CG or SYMMLQ (Black Box) F11JHFP Solution of sparse symmetric linear system using block-Jacobi preconditioned CG or SYMMLQ (Black Box) F11XBFP Matrix-vector multiplication for real sparse matrix F11XPFP Matrix-vector multiplication for complex sparse matrix F11YAFP Permutation of non-zero entries of real sparse matrix with repeated sparsity pattern F11YBFP Permutation of real vector from distribution based order to local indexing based order F11YCFP Permutation of real vector from local indexing based order to distribution based order F11YNFP Permutation of non-zero entries of complex sparse matrix with repeated sparsity pattern F11YPFP Permutation of complex vector from distribution based order to local indexing based order F11YQFP Permutation of complex vector from local indexing based order to distribution based order F11ZAFP General set-up routine for real sparse matrix distributed in cyclic row block form F11ZBFP General set-up routine for real sparse matrix distributed in cyclic row block form (suitable for repeated sparsity pattern) F11ZGFP Generates multi-colour ordering for real sparse matrix with symmetric sparsity pattern, distributed in row block form F11ZPFP General set-up routine for complex sparse matrix, distributed in cyclic row block form (suitable for repeated sparsity pattern) F11ZUFP Generates multi-colour ordering for complex sparse matrix with symmetric sparsity pattern, distributed in row block form. F11ZZFP Release of internally allocated memory

### Chapter G05 - Random Number Generators

 G05AAFP Function returning pseudo-random real number from the interval (0,1) G05ABFP Selects random number generator and initialises seeds to give repeatable sequence G05ACFP Function returning pseudo-random real number from the interval [a,b), uniform distribution G05ADFP Function returning pseudo-random real number from the interval [a,b), Normal distribution G05AEFP Function returning pseudo-random real number from the interval [a,b), exponential distribution G05AZFP Function returning pseudo-random integer from the interval [ia,ib), uniform distribution G05BAFP Pseudo-random real numbers from the interval (0,0), uniform distribution G05BBFP Selects random number generator and initialises seeds to give repeatable sequence G05BCFP Pseudo-random real numbers from the interval (a,b), uniform distribution G05BDFP Pseudo-random real numbers from the interval (a,b), Normal distribution G05BEFP Pseudo-random real numbers from the interval (a,b), exponential distribution G05BZFP Pseudo-random integers from the interval (ia,ib), uniform distribution

### Chapter X01 - Mathematical Constants

 X01AAF pi X01ABF Euler's constant, gamma

### Chapter X02 - Machine Constants

 X02AHF Largest permissible argument for sin and cos X02AJF Machine precision X02AKF Smallest positive model number X02ALF Largest positive model number X02AMF Safe range of real floating-point arithmetic X02ANF Safe range of complex floating-point arithmetic X02BBF Largest representable integer X02BEF Maximum number of decimal digits that can be represented X02BHF Parameter of floating-point arithmetic model, b X02BJF Parameter of floating-point arithmetic model, p X02BKF Parameter of floating-point arithmetic model, emin X02BLF Parameter of floating-point arithmetic model, emax X02DJF Parameter of floating-point arithmetic model, ROUNDS

### Chapter X04 - Input/Output Utilities

 X04AAF Returns or sets unit number for error message X04ABF Returns or sets unit number for advisory messages X04BCFP Reads real general matrix, from external file, into array distributed in cyclic two-dimensional form, used with routines from Chapters F07 and F08 X04BDFP Outputs real general matrix, stored in cyclic two-dimensional block fashion, to an external file, used with routines from Chapters F07 and F08 X04BFFP Outputs set of real general matrices distributed on a two-dimensional logical processor grid, used with routines from Chapter F02 X04BGFP Reads general real matrix from external file into array distributed in cyclic two-dimensional block form, used with routines from Chapter F04 (Black Box) X04BHFP Outputs general real matrix, stored in cyclic two-dimensional block fashion, to external file, used with routines from Chapter F04 (Black Box) X04BMFP Outputs set of general integer matrices distributed on a two-dimensional logical processor grid X04BRFP Reads complex general matrix from an external file into array distributed in cyclic two-dimensional block form, used with routines from Chapters F07 and F08 X04BSFP Outputs complex general matrix, stored in cyclic two-dimensional block fashion to an external file, used with routines from Chapters F07 and F08 X04BUFP Outputs set of complex general matrices distributed on a two-dimensional logical processor grid, used with routines from Chapter F02 X04BVFP Reads general complex matrix from an external file into an array distributed in cyclic two-dimensional block form, used with routines from Chapter F04 (Black Box) X04BWFP Outputs general complex matrix, stored in cyclic two-dimensional block fashion, used with routines from Chapter F04 (Black Box) X04BXFP Outputs real matrix stored in row block fashion X04BZFP Outputs complex matrix stored in row block fashion X04YAFP Outputs real dense vector, distributed conformally to a sparse matrix on a logical grid of processors, to an external file X04YPFP Outputs complex vector, distributed conformally to sparse matrix to a sequential file

### Chapter Z01 - Library Utilities

 Z01AAFP Defines two-dimensional logical processor grid (Library Grid) and returns the BLACS context Z01ABFP Undefines logical processor grid and invalidates the BLACS context initialised by Z01AAFP Z01ACFP Root processor identifier Z01AEFP Used in creating processes outside the default library mechanism, allows multigridding, used in more advanced applications Z01BAFP Row and column indices of the root processor within the logical grid Z01BBFP Identifies logical processors in context in the two-dimensional grid declared by Z01AAFP Z01BEFP Topology to be used by BLACS for broadcasting and global operations Z01BGFP Information about MPI tasks Z01CAFP Number of rows or columns of matrix held locally on a given processor when the matrix is distributed in the cyclic two-dimensional block fashion (NUMROC) Z01CBFP Length of the workspace for F08AEFP (PDGEQRF) and F08AFFP (PDORGQR) Z01CCFP Length of the workspace for F08AGFP (PDORMQR) Z01CDFP Process coordinate which possesses the entry of a distributed matrix specified by a global index (INDXG2P) Z01CEFP Length of the workspace for F08FEFP (PDSYTRD) Z01CFFP Computes number of rows of a row block distributed matrix owned by a processor Z01ZAFP Returns information on coordinates in Library Grid set up by Z01AAFP Z01ZBFP Creates an MPI communicator from a Library context

### Chapter Z02 - Error Checking Mode

 Z02EAFP Specification of error checking level, can reduce the amount of checking carried out in subsequent calls to other Library routines