The Compaq Extended Math Library (CXML) is a set of computationally intensive mathematical subroutines that are optimized for the Alpha platform.

CXML includes subroutines covering the areas of:

- Basic Linear Algebra (BLAS) - includes BLAS 1, BLAS 1E, BLAS 1S, BLAS 2 and BLAS 3.
- Linear and Eigen System Solvers (LAPACK)
- Sparse Linear System Solvers: includes direct and iterative solvers
- Signal Processing: includes FFTs, cos/sin transforms, convolution, correlations and digital filters

In addition, CXML provides SCIPORT. SCIPORT is a Compaq Computer Corporation implementation of CRAY SCILIB. SCIPORT provides 64 bit single precision library routines for CRAY users porting programs to Alpha systems.

For further information, select a CXML subcomponent from the following table, or refer to the CXML Index of Routines.

**CXML Subcomponents**

Sub-componentFunctionarray-math routinesStandard math functions operating on arraysblas1 routinesVector-vector linear algebra subprogramsblas1e routinesEnhancements to BLAS 1blas1s routinesSparse version of BLAS 1blas2 routinesMatrix-vector linear algebra subprogramsblas3 routinesMatrix-matrix linear algebra subprogramslapack routinesDense linear system solvers and eigensolversiterative-solver routinesSparse iterative linear system solversskyline-solver routinesDirect solver for skyline matricessignal-processing routinesFFTs, cos/sin transforms, convolution, correlation, filtersrandom-number routinesRandom number generator subprogramssort routinesSort subprograms

CXML includes a parallel version of the library for SMP configuration. The parallel library contains the exact same set of subroutines with the same name and calling standards with a subset of the routines parallelized to take advantage of additional CPUs. The following routines are parallelized in this version of CXML: {S,D,C,Z}GEMV BLAS2 {S,D,C,Z}GEMM BLAS3 {S,D,C,Z}GETRF LAPACK {S,D,C,Z}POTRF {S,D,C,Z}FFT Signal Processing - 1D {S,D,C,Z}FFT_APPLY {S,D,C,Z}FFT_INIT {S,D,C,Z}FFT_EXIT {S,D,C,Z}FFT_2D Signal Processing - 2D {S,D,C,Z}FFT_INIT_2D {S,D,C,Z}FFT_APPLY_2D {S,D,C,Z}FFT_EXIT_2D {S,D,C,Z}FFT_3D Signal Processing - 3D {S,D,C,Z}FFT_INIT_3D {S,D,C,Z}FFT_APPLY_3D {S,D,C,Z}FFT_EXIT_3D DITSOL_DRIVER Iterative Solvers DITSOL_PBCG DITSOL_PCG DITSOL_PCGS DITSOL_PGMRES DITSOL_PLSCG DITSOL_PTFQMR DMATVEC_GENR DMATVEC_SDIA DMATVEC_UDIA DCREATE_DIAG_GENR DCREATE_DIAG_SDIA DCREATE_DIAG_UDIA DAPPLY_DIAG_ALL DCREATE_POLY_GENR DCREATE_POLY_SDIA DCREATE_POLY_UDIA DAPPLY_POLY_GENR DAPPLY_POLY_SDIA DAPPLY_POLY_UDIA DSSKYF Skyline Solvers DUSKYF

To compile and link a Fortran program that contains calls to CXML routines, use one of the following commands: Compaq Tru64 UNIX f77 my_prog.f -lcxml f90 my_prog.f90 -lcxml LINUX fort my_prog.f -lcxml To compile and link a C program that contains calls to CXML routines, use one of the following commands: Compaq Tru64 UNIX cc -migrate my_prog.c -lcxml LINUX ccc my_prog.c -lcxml Notes: my_prog.f and my_prog.f90 are example Fortran programs. my_prog.c is an example C program. For Tru64 UNIX, using the -migrate flag lets you take advantage of the Compaq C compilation environment. To compile and link a Fortran program with the parallel version of CXML: f77 my_prog.f -lcxmlp

In the absence of any action by the user, the parallel version of CXML will create as many threads as there are physical processors available on the system. However, the user can control the number of threads created (and consequently the number of processors used) by setting the environment variable OMP_NUM_THREADS. For example, the parallel version of the CXML will create three execution threads if the following command is entered: > setenv OMP_NUM_THREADS 3 NOTE: Do not set OMP_NUM_THREADS to a value greater than the number of physical processors. This is likely to cause severe performance degradation.

array-math , blas1 , blas1e , blas1s , blas2 , blas3 , signal-processing , lapack, iterative-solvers , skyline-solvers , random-numbers , sortCXML Release Notes and Readmefile - located in:/usr/doc/cxml-3.6.0Examplesillustrating the use of CXML - located in:/usr/doc/cxml-3.6.0/examplesCompaq Extended Math Library Reference Guide LAPACK User's Guide, E. Anderson, et al., SIAM, 1995.