# LINPLUS Linear Algebra Utilities

LINPLUS is a FORTRAN77 library which carries out operations such as matrix-vector products, matrix factorization, linear solvers including Gauss-elimination, Jacobi iteration, Gauss-Seidel iteration, Conjugate Gradient (CG), for matrices in a variety of formats, including banded, border-banded, circulant, lower triangular, pentadiagonal, sparse, symmetric, toeplitz, tridiagonal, upper triangular and vandermonde formats.

The routines are primarily organized by the arithmetic type, and the storage format of the matrix they operate on. Some of these formats were defined by LINPACK, while others are new; I just made them up when I had to solve problems involving such matrices. The formats include:

• C83 - Complex double precision tridiagonal;
• C8CI - Complex double precision circulant;
• C8GE - Complex double precision general;
• C8TO - Complex double precision Toeplitz;
• R83 - Real double precision tridiagonal;
• R83P - Real double precision tridiagonal periodic;
• R83S - Real double precision tridiagonal scalar;
• R83V - Real double precision tridiagonal, 3 vector storage;
• R85 - Real double precision pentadiagonal;
• R8BB - Real double precision border-banded;
• R8BLT - Real double precision banded lower triangular matrix;
• R8BTO - Real double precision block Toeplitz;
• R8BUT - Real double precision banded upper triangular matrix;
• R8CB - Real double precision compact band;
• R8CBB - Real double precision compact border-banded;
• R8CC - Real double precision compressed column sparse = Harwell Boeing Unsymmetric Assembled format = MATLAB sparse format;
• R8CI - Real double precision circulant;
• R8GB - Real double precision general band, used by LINPACK and LAPACK;
• R8GD - Real double precision general diagonal;
• R8GE - Real double precision general, used by LINPACK and LAPACK;
• R8LT - Real double precision lower triangular;
• R8LTT - Real double precision lower triangular Toeplitz, (moved to a separate library);
• R8NCF - Real double precision Nonsymmetric Coordinate Format, one of the formats used by NSPCG;
• R8PBL - Real double precision positive-definite symmetric band matrix, store diagonal and lower triangle;
• R8PBU - Real double precision positive-definite symmetric band matrix, store diagonal and upper triangle;
• R8PO - Real double precision positive-definite symmetric, used by LINPACK and LAPACK;
• R8PP - Real double precision positive-definite symmetric Packed, used by LINPACK and LAPACK;
• R8RI - Real double precision Row-Indexed matrix, used by Numerical Recipes;
• R8S3 - Real double precision sparse matrix stored by row, column, value (used by SLAP/DLAP, symmetric or nonsymmetric);
• R8SD - Real double precision symmetric diagonal;
• R8SM - Real double precision Sherman Morrison system A - u * v';
• R8SP - Real double precision sparse matrix stored by row, column, value, used by CSPARSE ("sparse triplet"), SLAP/DLAP (nonsymmetric SLAP triad format), MATLAB, and SPARSEKIT ("COO" format);
• R8SR - Real double precision sparse matrix stored by diagonal and rows;
• R8SS - Real double precision symmetric skyline;
• R8STO - Real double precision symmetric Toeplitz;
• R8TO - Real double precision Toeplitz;
• R8UT - Real double precision upper triangular;
• R8UTP - Real double precision upper triangular, packed (only nonzeros are stored);
• R8VEC - Real double precision vector, which in some cases is used to store a matrix;
• R8VM - Real double precision Vandermonde;

### Languages:

LINPLUS is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version and a Python version.

### Related Data and Programs:

CC, a data directory which contains examples of the Compressed Column (CC) sparse matrix file format;

CG, a FORTRAN77 library which implements a simple version of the conjugate gradient (CG) method for solving a system of linear equations of the form A*x=b, suitable for situations in which the matrix A is positive definite (only real, positive eigenvalues) and symmetric.

CG_RC, a FORTRAN77 library which implements the conjugate gradient (CG) method for solving a positive definite sparse linear system A*x=b, using reverse communication.

CR, a data directory which contains examples of the Compressed Row (CR) sparse matrix file format;

HB_TO_ST, a FORTRAN77 program which converts a sparse matrix from Harwell-Boeing to sparse triplet format.

HBSMC, a dataset directory which contains the Harwell-Boeing Sparse Matrix Collection of large sparse matrices.

LAPACK, a FORTRAN77 library which contains modern linear algebra routines.

LINPACK, a FORTRAN77 library which factors and solves systems of linear equations in a variety of formats and arithmetic types.

LINPACK_BENCH, a FORTRAN77 program which measures the time taken by LINPACK to solve a particular linear system.

MGMRES, a FORTRAN77 library which applies the restarted GMRES algorithm to solve a sparse linear system.

SPARSEKIT, a FORTRAN77 library which carries out operations on sparse matrices, including conversion between various formats.

TEMPLATES, a FORTRAN77 library which implements various iterative methods for solving a linear system.

TEST_MAT, a FORTRAN77 library which defines test matrices, some of which have known determinants, eigenvalues and eigenvectors, inverses and so on.

TOEPLITZ, a FORTRAN77 library solves a variety of Toeplitz and circulant linear systems.

TOEPLITZ_CHOLESKY, a FORTRAN77 library which computes the Cholesky factorization of a nonnegative definite symmetric Toeplitz matrix.

WATHEN, a FORTRAN77 library which compares storage schemes (full, banded, sparse triplet) and solution strategies (Linpack full, Linpack banded, conjugate gradient (CG)) for linear systems involving the Wathen matrix, which can arise when solving a problem using the finite element method (FEM).

### Reference:

1. Edward Anderson, Zhaojun Bai, Christian Bischof, Susan Blackford, James Demmel, Jack Dongarra, Jeremy Du Croz, Anne Greenbaum, Sven Hammarling, Alan McKenney, Danny Sorensen,
LAPACK User's Guide,
Third Edition,
SIAM, 1999,
ISBN: 0898714478,
LC: QA76.73.F25L36
2. Frank Beckman,
The Solution of Linear Equations by the Conjugate Gradient Method,
in Mathematical Methods for Digital Computers,
edited by John Ralston, Herbert Wilf,
Wiley, 1967,
ISBN: 0471706892.
3. Paul Bratley, Bennett Fox, Linus Schrage,
A Guide to Simulation,
Second Edition,
Springer, 1987,
ISBN: 0387964673.
4. Ward Cheney, David Kincaid,
Numerical Mathematics and Computing,
Brooks-Cole Publishing, 2004,
ISBN: 0534201121.
5. Philip Davis,
Circulant Matrices,
Second Edition,
Chelsea, 1994,
ISBN: 0828403384,
LC: QA188.D37.
6. Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
LINPACK User's Guide,
SIAM, 1979,
ISBN13: 978-0-898711-72-1,
LC: QA214.L56.
7. Iain Duff, Roger Grimes, John Lewis,
User's Guide for the Harwell-Boeing Sparse Matrix Collection,
October 1992.
8. Bennett Fox,
Algorithm 647: Implementation and Relative Efficiency of Quasirandom Sequence Generators,
ACM Transactions on Mathematical Software,
Volume 12, Number 4, December 1986, pages 362-376.
9. Gene Golub, Charles VanLoan,
Matrix Computations, Third Edition,
Johns Hopkins, 1996,
ISBN: 0-8018-4513-X,
LC: QA188.G65.
10. Roger Hockney,
A fast direct solution of Poisson's equation using Fourier Analysis,
Journal of the ACM,
Volume 12, Number 1, pages 95-113, January 1965.
11. David Kahaner, Cleve Moler, Steven Nash,
Numerical Methods and Software,
Prentice Hall, 1989,
ISBN: 0-13-627258-4,
LC: TA345.K34.
12. Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh,
Algorithm 539: Basic Linear Algebra Subprograms for Fortran Usage,
ACM Transactions on Mathematical Software,
Volume 5, Number 3, September 1979, pages 308-323.
13. Albert Nijenhuis, Herbert Wilf,
Combinatorial Algorithms for Computers and Calculators,
Second Edition,
ISBN: 0-12-519260-6,
LC: QA164.N54.
14. William Press, Brian Flannery, Saul Teukolsky, William Vetterling,
Numerical Recipes in FORTRAN: The Art of Scientific Computing,
Third Edition,
Cambridge University Press, 2007,
ISBN13: 978-0-521-88068-8,
LC: QA297.N866.

### List of Routines:

• C83_CR_FA decomposes a C83 matrix using cyclic reduction.
• C83_CR_SL solves a linear system factored by C83_CR_FA.
• C83_CR_SLS solves several linear systems factored by C83_CR_FA.
• C83_INDICATOR sets up a C83 indicator matrix.
• C83_MXV multiplies a C83 matrix times a C8VEC.
• C83_PRINT prints a C83 matrix.
• C83_PRINT_SOME prints some of a C83 matrix.
• C8MAT_PRINT prints a C8MAT.
• C8MAT_PRINT_SOME prints some of a C8MAT.
• C8VEC_INDICATOR sets a C8VEC to the indicator vector.
• C8VEC_PRINT prints a C8VEC, with an optional title.
• C8VEC_PRINT_SOME prints some of a C8VEC.
• GET_SEED returns a seed for the random number generator.
• GET_UNIT returns a free FORTRAN unit number.
• HILBERT_INVERSE returns the inverse of the Hilbert matrix.
• I4_LOG_10 returns the integer part of the logarithm base 10 of ABS(X).
• I4_SWAP switches two I4's.
• I4_UNIFORM returns a scaled pseudorandom I4.
• I4VEC_PRINT prints an I4VEC.
• I4VEC_SEARCH_BINARY_A searches an ascending sorted I4VEC for a value.
• R8_SWAP switches two R8's.
• R8_UNIFORM returns a scaled pseudorandom R8.
• R8_UNIFORM_01 returns a unit pseudorandom R8.
• R83_CR_FA decomposes a real tridiagonal matrix using cyclic reduction.
• R83_CR_SL solves a real linear system factored by R83_CR_FA.
• R83_GS_SL solves an R83 system using Gauss-Seidel iteration.
• R83_INDICATOR sets up an R83 indicator matrix.
• R83_JAC_SL solves an R83 system using Jacobi iteration.
• R83_MXV multiplies an R83 matrix times a vector.
• R83_NP_DET returns the determinant of an R83 system factored by R83_NP_FA.
• R83_NP_FA factors an R83 matrix without pivoting.
• R83_NP_FS factors and solves an R83 system.
• R83_NP_FSS factors and solves multiple R83 systems.
• R83_NP_ML computes A * x or x * A, where A has been factored by R83_NP_FA.
• R83_NP_SL solves an R83 system factored by R83_NP_FA.
• R83_PRINT prints an R83 matrix.
• R83_PRINT_SOME prints some of an R83 matrix.
• R83_RANDOM randomizes an R83 matrix.
• R83_TO_R8GE copies an R83 matrix to an R8GE matrix.
• R83_VXM multiplies a vector by an R83 matrix.
• R83NP_FS factors and solves an R83NP system.
• R83P_DET computes the determinant of a matrix factored by R83P_FA.
• R83P_FA factors an R83P matrix.
• R83P_INDICATOR sets up an R83P indicator matrix.
• R83P_ML computes A * x or x * A, where A has been factored by R83P_FA.
• R83P_MXV multiplies an R83P matrix times a vector.
• R83P_PRINT prints an R83P matrix.
• R83P_PRINT_SOME prints some of an R83P matrix.
• R83P_RANDOM randomizes an R83P matrix.
• R83P_SL solves an R83P system.
• R83P_TO_R8GE copies an R83P matrix to an R8GE matrix.
• R83P_VXM multiplies a vector by an R83P matrix.
• R85_INDICATOR sets up an R85 indicator matrix.
• R85_NP_FS factors and solves an R85 linear system.
• R85_MXV multiplies an R85 matrix times a vector.
• R85_PRINT prints an R85 matrix.
• R85_PRINT_SOME prints some of an R85 matrix.
• R85_RANDOM randomizes an R85 matrix.
• R85_TO_R8GE copies an R85 matrix into an R8GE matrix.
• R85_VXM multiplies a vector by an R85 matrix.
• R8BB_ADD adds a value to an entry in an R8BB matrix.
• R8BB_FA factors an R8BB matrix.
• R8BB_GET returns an entry of an R8BB matrix.
• R8BB_INDICATOR sets up an R8BB indicator matrix.
• R8BB_MXV multiplies an R8BB matrix by an R8VEC.
• R8BB_PRINT prints an R8BB matrix.
• R8BB_PRINT_SOME prints some of an R8BB matrix.
• R8BB_RANDOM randomizes an R8BB matrix.
• R8BB_SET sets an entry of an R8BB matrix.
• R8BB_SL solves an R8BB system factored by R8BB_FA.
• R8BB_TO_R8GE copies an R8BB matrix to an R8GE matrix.
• R8BB_VXM multiplies an R8VEC by an R8BB matrix.
• R8BLT_DET computes the determinant of an R8BLT matrix.
• R8BLT_INDICATOR sets up an R8BLT indicator matrix.
• R8BLT_MXV multiplies an R8BLT matrix by an R8VEC.
• R8BLT_PRINT prints an R8BLT matrix.
• R8BLT_PRINT_SOME prints some of an R8BLT matrix.
• R8BLT_RANDOM randomizes an R8BLT matrix.
• R8BLT_SL solves an R8BLT system.
• R8BLT_TO_R8GE copies an R8BLT matrix to an R8GE matrix.
• R8BLT_VXM multiplies an R8VEC by an R8BLT matrix.
• R8BTO_INDICATOR sets up an R8BTO indicator matrix.
• R8BTO_MXV multiplies an R8BTO matrix by an R8VEC.
• R8BTO_PRINT prints an R8BTO matrix.
• R8BTO_PRINT_SOME prints some of an R8BTO matrix.
• R8BTO_RANDOM randomizes an R8BTO matrix.
• R8BTO_SL solves an R8BTO system.
• R8BTO_TO_R8GE copies an R8BTO matrix to an R8GE matrix.
• R8BTO_VXM multiplies an R8VEC by an R8BTO matrix.
• R8BUT_DET computes the determinant of an R8BUT matrix.
• R8BUT_INDICATOR sets up an R8BUT indicator matrix.
• R8BUT_MXV multiplies an R8BUT matrix by an R8VEC.
• R8BUT_PRINT prints an R8BUT matrix.
• R8BUT_PRINT_SOME prints some of an R8BUT matrix.
• R8BUT_RANDOM randomizes an R8BUT matrix.
• R8BUT_SL solves an R8BUT system.
• R8BUT_TO_R8GE copies an R8BUT matrix to an R8GE matrix.
• R8BUT_VXM multiplies an R8VECr by an R8BUT matrix.
• R8CB_DET computes the determinant of an R8CB matrix factored by R8CB_NP_FA.
• R8CB_INDICATOR sets up an R8CB indicator matrix.
• R8CB_ML computes A * x or A' * X, using R8CB_NP_FA factors.
• R8CB_MXV multiplies an R8CB matrix by an R8VEC.
• R8CB_NP_FA factors an R8CB matrix by Gaussian elimination.
• R8CB_NP_SL solves an R8CB system factored by R8CB_NP_FA.
• R8CB_PRINT prints an R8CB matrix.
• R8CB_PRINT_SOME prints some of an R8CB matrix.
• R8CB_RANDOM randomizes an R8CB matrix.
• R8CB_TO_R8VEC copies an R8CB matrix to an R8VEC.
• R8CB_TO_R8GE copies an R8CB matrix to an R8GE matrix.
• R8CB_VXM multiplies an R8VEC by an R8CB matrix.
• R8CBB_ADD adds a value to an entry of an R8CBB matrix.
• R8CBB_ERROR checks the dimensions of an R8CBB matrix.
• R8CBB_FA factors an R8CBB matrix.
• R8CBB_GET returns the value of an entry of an R8CBB matrix.
• R8CBB_INDICATOR sets up an R8CBB indicator matrix.
• R8CBB_MXV multiplies an R8CBB matrix by an R8VEC.
• R8CBB_PRINT prints an R8CBB matrix.
• R8CBB_PRINT_SOME prints some of an R8CBB matrix.
• R8CBB_RANDOM randomizes an R8CBB matrix.
• R8CBB_SET sets the value of an entry in an R8CBB matrix.
• R8CBB_SL solves an R8CBB system factored by R8CBB_FA.
• R8CBB_TO_R8GE copies an R8CBB matrix to an R8GE matrix.
• R8CBB_VXM multiplies an R8VEC by an R8CBB matrix.
• R8CC_GET gets a value of an R8CC matrix.
• R8CC_IJK seeks K, the sparse index of (I,J), the full index of an R8CC matrix.
• R8CC_INC increments a value of an R8CC matrix.
• R8CC_INDICATOR sets up an R8CC indicator matrix.
• R8CC_KIJ seeks (I,J), the full index of K, the sparse index of an R8CC matrix.
• R8CC_MXV multiplies an R8CC matrix by an R8VEC.
• R8CC_PRINT prints an R8CC matrix.
• R8CC_PRINT_SOME prints some of an R8CC matrix.
• R8CC_RANDOM randomizes an R8CC matrix.
• R8CC_READ_SIZE reads the sizes of an R8CC sparse matrix from a file.
• R8CC_SET sets a value of an R8CC matrix.
• R8CC_TO_R8GE converts an R8CC matrix to an R8GE matrix.
• R8CC_VXM multiplies an R8VEC times an R8CC matrix.
• R8CC_WRITE writes an R8CC matrix to three files.
• R8CI_EVAL returns the eigenvalues of an R8CI matrix.
• R8CI_INDICATOR sets up an R8CI indicator matrix.
• R8CI_MXV multiplies an R8CI matrix by an R8VEC.
• R8CI_PRINT prints an R8CI matrix.
• R8CI_PRINT_SOME prints some of an R8CI matrix.
• R8CI_RANDOM randomizes an R8CI matrix.
• R8CI_SL solves an R8CI system.
• R8CI_TO_R8GE copies an R8CI matrix into an R8GE matrix.
• R8CI_VXM multiplies an R8VEC by an R8CI matrix.
• R8COL_SWAP swaps columns I and J of an R8COL.
• R8GB_DET computes the determinant of a matrix factored by R8GB_FA or R8GB_TRF.
• R8GB_FA performs a LINPACK-style PLU factorization of an R8GB matrix.
• R8GB_INDICATOR sets up an R8GB indicator matrix.
• R8GB_ML computes A * x or A' * X, using R8GB_FA factors.
• R8GB_MU computes A * x or A' * X, using R8GB_TRF factors.
• R8GB_MXV multiplies an R8GB matrix by an R8VEC.
• R8GB_NZ_NUM counts the nonzeroes in an R8GB matrix.
• R8GB_PRINT prints an R8GB matrix.
• R8GB_PRINT_SOME prints some of an R8GB matrix.
• R8GB_RANDOM randomizes an R8GB matrix.
• R8GB_SL solves a system factored by R8GB_FA.
• R8GB_TO_R8S3 copies an R8GB matrix to an R8S3 matrix.
• R8GB_TO_R8SP copies an R8GB matrix to an R8SP matrix.
• R8GB_TO_R8VEC copies an R8GB matrix to an R8VEC.
• R8GB_TO_R8GE copies an R8GB matrix to an R8GE matrix.
• R8GB_TRF performs a LAPACK-style PLU factorization of an R8GB matrix.
• R8GB_TRS solves an R8GB linear system factored by R8GB_TRF.
• R8GB_VXM multiplies an R8VEC by an R8GB matrix.
• R8GD_ERROR checks the dimensions of an R8GD matrix.
• R8GD_INDICATOR sets up an R8GD indicator matrix.
• R8GD_MXV multiplies an R8GD matrix by an R8VEC.
• R8GD_PRINT prints an R8GD matrix.
• R8GD_PRINT_SOME prints some of an R8GD matrix.
• R8GD_RANDOM randomizes an R8GD matrix.
• R8GD_TO_R8GE copies an R8GD matrix to an R8GE matrix.
• R8GD_VXM multiplies an R8VEC by an R8GD matrix.
• R8GE_DET computes the determinant of a matrix factored by R8GE_FA or R8GE_TRF.
• R8GE_DILU produces the diagonal incomplete LU factor of an R8GE matrix.
• R8GE_FA performs a LINPACK style PLU factorization of an R8GE matrix.
• R8GE_FS factors and solves an R8GE system.
• R8GE_FSS factors and solves multiple R8GE systems.
• R8GE_IDENTITY copies the identity matrix to an R8GE matrix.
• R8GE_ILU produces the incomplete LU factors of an R8GE matrix.
• R8GE_INDICATOR sets up an R8GE indicator matrix.
• R8GE_MXM multiplies two R8GE matrices.
• R8GE_MXV multiplies an R8GE matrix times a vector.
• R8GE_PRINT prints an R8GE matrix.
• R8GE_PRINT_SOME prints some of an R8GE matrix.
• R8GE_RANDOM randomizes an R8GE matrix.
• R8GE_SL solves a system factored by R8GE_FA.
• R8GE_TO_R8VEC copies an R8GE matrix to an R8VEC.
• R8LT_DET computes the determinant of an R8LT matrix.
• R8LT_INDICATOR sets up an R8LT indicator matrix.
• R8LT_INVERSE computes the inverse of an R8LT matrix.
• R8LT_MXM multiplies two R8LT matrices.
• R8LT_MXV multiplies an R8LT matrix by an R8VEC.
• R8LT_PRINT prints an R8LT matrix.
• R8LT_PRINT_SOME prints some of an R8LT matrix.
• R8LT_RANDOM randomizes an R8LT matrix.
• R8LT_SL solves an R8LT system.
• R8LT_VXM multiplies an R8VEC by an R8LT matrix.
• R8MAT_COPY copies an R8MAT.
• R8MAT_DIAG_GET_VECTOR gets the value of the diagonal of a matrix.
• R8MAT_DIAG_SET_SCALAR sets the diagonal of a matrix to a scalar value.
• R8MAT_PRINT prints an R8MAT.
• R8MAT_PRINT_SOME prints some of an R8MAT.
• R8NCF_INDICATOR sets up an R8NCF indicator matrix.
• R8NCF_PRINT prints an R8NCF matrix.
• R8NCF_PRINT_SOME prints some of an R8NCF matrix.
• R8PBL_DET computes the determinant of a matrix factored by R8PBL_FA.
• R8PBL_INDICATOR sets up an R8PBL indicator matrix.
• R8PBL_PRINT prints an R8PBL matrix.
• R8PBL_PRINT_SOME prints some of an R8PBL matrix.
• R8PBL_RANDOM randomizes an R8PBL matrix.
• R8PBL_TO_R8GE copies an R8PBL matrix to an R8GE matrix.
• R8PBU_CG uses the conjugate gradient method on an R8PBU system.
• R8PBU_DET computes the determinant of a matrix factored by R8PBU_FA.
• R8PBU_FA factors an R8PBU matrix.
• R8PBU_INDICATOR sets up an R8PBU indicator matrix.
• R8PBU_ML multiplies an R8VEC times a matrix that was factored by R8PBU_FA.
• R8PBU_MXV multiplies an R8PBU matrix by an R8VEC.
• R8PBU_PRINT prints an R8PBU matrix.
• R8PBU_PRINT_SOME prints some of an R8PBU matrix.
• R8PBU_RANDOM randomizes an R8PBU matrix.
• R8PBU_SL solves an R8PBU system factored by R8PBU_FA.
• R8PBU_SOR uses SOR iteration to solve an R8PBU linear system.
• R8PBU_TO_R8GE copies an R8PBU matrix to an R8GE matrix.
• R8PO_DET computes the determinant of a matrix factored by R8PO_FA.
• R8PO_FA factors an R8PO matrix.
• R8PO_INDICATOR sets up an R8PO indicator matrix.
• R8PO_INVERSE computes the inverse of a matrix factored by R8PO_FA.
• R8PO_ML computes A * x = b after A has been factored by R8PO_FA.
• R8PO_MXM multiplies two R8PO matrices.
• R8PO_MXV multiplies an R8PO matrix by an R8VEC.
• R8PO_PRINT prints an R8PO matrix.
• R8PO_PRINT_SOME prints some of an R8PO matrix.
• R8PO_RANDOM randomizes an R8PO matrix.
• R8PO_SL solves an R8PO system factored by R8PO_FA.
• R8PO_TO_R8GE copies an R8PO matrix to an R8GE matrix.
• R8PP_DET computes the determinant of an R8PP matrix factored by R8PP_FA.
• R8PP_FA factors an R8PP matrix.
• R8PP_INDICATOR sets up an R8PP indicator matrix.
• R8PP_MXV multiplies an R8PP matrix by an R8VEC.
• R8PP_PRINT prints an R8PP matrix.
• R8PP_PRINT_SOME prints some of an R8PP matrix.
• R8PP_RANDOM randomizes an R8PP matrix.
• R8PP_SL solves an R8PP system factored by R8PP_FA.
• R8PP_TO_R8GE copies an R8PP matrix to an R8GE matrix.
• R8ROW_SWAP swaps two rows of an R8ROW.
• R8S3_DIAGONAL reorders a square R8S3 matrix so the diagonal entries are first.
• R8S3_INDICATOR sets up an R8S3 indicator matrix.
• R8S3_JAC_SL solves an R8S3 system using Jacobi iteration.
• R8S3_MXV multiplies an R8S3 matrix by an R8VEC.
• R8S3_PRINT prints an R8S3 matrix.
• R8S3_PRINT_SOME prints some of an R8S3 matrix.
• R8S3_READ_SIZE reads the size of a square R8S3 matrix from a file.
• R8S3_TO_R8GE copies an R8S3 matrix to an R8GE matrix.
• R8S3_VXM multiplies an R8VEC times an R8S3 matrix.
• R8S3_WRITE writes a square R8S3 matrix to a file.
• R8SD_CG uses the conjugate gradient method on an R8SD linear system.
• R8SD_INDICATOR sets up an R8SD indicator matrix.
• R8SD_MXV multiplies an R8SD matrix by an R8VEC.
• R8SD_PRINT prints an R8SD matrix.
• R8SD_PRINT_SOME prints some of an R8SD matrix.
• R8SD_RANDOM randomizes an R8SD matrix.
• R8SD_TO_R8GE copies an R8SD matrix to an R8GE matrix.
• R8SM_ML multiplies a factored square R8SM matrix by an R8VEC.
• R8SM_MXV multiplies an R8SM matrix by an R8VEC.
• R8SM_PRINT prints an R8SM matrix.
• R8SM_PRINT_SOME prints some of an R8SM matrix.
• R8SM_RANDOM randomizes an R8SM matrix.
• R8SM_SL solves a square R8SM system that has been factored.
• R8SM_TO_R8GE copies an R8SM matrix to an R8GE matrix.
• R8SM_VXM multiplies an R8VEC by an R8SM matrix.
• R8SP_CHECK checks that an R8SP matrix data structure is properly sorted.
• R8SP_IJ_TO_K seeks the compressed index of the (I,J) entry of A.
• R8SP_INDICATOR sets up an R8SP indicator matrix.
• R8SP_MXV multiplies an R8SP matrix by an R8VEC.
• R8SP_PRINT prints an R8SP matrix.
• R8SP_PRINT_SOME prints some of an R8SP matrix.
• R8SP_RANDOM sets a random R8SP matrix.
• R8SP_READ_SIZE reads the size of an R8SP matrix from a file.
• R8SP_TO_R8GE converts an R8SP matrix to an R8GE matrix.
• R8SP_TO_R8NCF converts an R8SP matrix to an R8NCF matrix.
• R8SP_VXM multiplies an R8VEC times an R8SP matrix.
• R8SP_WRITE writes a square R8SP matrix to a file.
• R8SR_INDICATOR sets up an R8SR indicator matrix.
• R8SR_MXV multiplies an R8SR matrix by an R8VEC.
• R8SR_PRINT prints an R8SR matrix.
• R8SR_PRINT_SOME prints some of an R8SR matrix.
• R8SR_RANDOM randomizes an R8SR matrix.
• R8SR_TO_R8GE converts an R8SR matrix to an R8GE matrix.
• R8SR_VXM multiplies an R8VEC times an R8SR matrix.
• R8SS_ERROR checks dimensions for an R8SS matrix.
• R8SS_INDICATOR sets up an R8SS indicator matrix.
• R8SS_MXV multiplies an R8SS matrix by an R8VEC.
• R8SS_PRINT prints an R8SS matrix.
• R8SS_PRINT_SOME prints some of an R8SS matrix.
• R8SS_RANDOM randomizes an R8SS matrix.
• R8SS_TO_R8GE copies an R8SS matrix to an R8GE matrix.
• R8STO_INDICATOR sets up an R8STO indicator matrix.
• R8STO_INVERSE computes the inverse of an R8STO matrix.
• R8STO_MXV multiplies an R8STO matrix by an R8VEC.
• R8STO_PRINT prints an R8STO matrix.
• R8STO_PRINT_SOME prints some of an R8STO matrix.
• R8STO_RANDOM randomizes an R8STO matrix.
• R8STO_SL solves an R8STO system.
• R8STO_TO_R8GE copies an R8STO matrix to an R8GE matrix.
• R8STO_YW_SL solves the Yule-Walker equations for an R8STO matrix.
• R8TO_INDICATOR sets up an R8TO indicator matrix.
• R8TO_MXV multiplies an R8TO matrix by an R8VEC.
• R8TO_PRINT prints an R8TO matrix.
• R8TO_PRINT_SOME prints some of an R8TO matrix.
• R8TO_RANDOM randomizes an R8TO matrix.
• R8TO_SL solves an R8TO system.
• R8TO_TO_R8GE copies an R8TO matrix to an R8GE matrix.
• R8TO_VXM multiplies an R8VEC by an R8TO matrix.
• R8UT_DET computes the determinant of an R8UT matrix.
• R8UT_INDICATOR sets up an R8UT indicator matrix.
• R8UT_INVERSE computes the inverse of an R8UT matrix.
• R8UT_MXM multiplies two R8UT matrices.
• R8UT_MXV multiplies an R8UT matrix by an R8VEC.
• R8UT_PRINT prints an R8UT matrix.
• R8UT_PRINT_SOME prints some of an R8UT matrix.
• R8UT_RANDOM randomizes an R8UT matrix.
• R8UT_SL solves an R8UT system.
• R8UT_VXM multiplies an R8VEC by an R8UT matrix.
• R8VEC_INDICATOR sets an R8VEC to the indicator vector.
• R8VEC_PRINT prints an R8VEC.
• R8VEC_PRINT_SOME prints "some" of an R8VEC.
• R8VEC_PRODUCT multiplies the entries of an R8VEC.
• R8VEC_TO_R8CB copies an R8VEC into an R8CB matrix.
• R8VEC_TO_R8GB copies an R8VEC into an R8GB matrix.
• R8VEC_TO_R8GE copies an R8VEC into an R8GE matrix.
• R8VEC_UNIFORM_01 returns a unit pseudorandom R8VEC.
• R8VEC_WRITE writes an R8VEC to a file.
• R8VEC2_PRINT_SOME prints "some" of a pair of R8VEC's.
• R8VM_DET computes the determinant of an R8VM matrix.
• R8VM_MXV multiplies an R8VM matrix by an R8VEC.
• R8VM_PRINT prints an R8VM matrix.
• R8VM_PRINT_SOME prints some of an R8VM matrix.
• R8VM_RANDOM randomizes an R8VM matrix.
• R8VM_SL solves an R8VM linear system.
• R8VM_TO_R8GE copies an R8VM matrix to an R8GE matrix.
• R8VM_VXM multiplies an R8VEC by an R8VM matrix.
• S_LEN_TRIM returns the length of a string to the last nonblank.
• SORT_HEAP_EXTERNAL externally sorts a list of items into ascending order.
• TIMESTAMP prints out the current YMDHMS date as a timestamp.

You can go up one level to the FORTRAN77 source codes.

Last revised on 08 May 2010.