matrico

A flonum matrix module for CHICKEN Scheme.

  1. matrico
  2. matrico Function
  3. Matrix Type
  4. Matrix Generators
  5. Matrix Dimensions
  6. Matrix Predicates
  7. Matrix Accessors
  8. Matrix Expanders
  9. Matrix Mappers
    1. Entry-Wise Elementary Functions
    2. Entry-Wise Rounding Functions
    3. Entry-Wise Generalized Functions
    4. Entry-Wise Trigonometric Functions
    5. Entry-Wise Inverse Trigonometric Functions
    6. Entry-Wise Hyperbolic Functions
    7. Entry-Wise Inverse Hyperbolic Functions
    8. Entry-Wise Haversed Trigonometric Functions
    9. Entry-Wise Logarithmic Hyperbolic Functions
    10. Entry-Wise Roots
    11. Entry-Wise Logarithms
    12. Entry-Wise Exponential
    13. Entry-Wise Special Functions
  10. Matrix Reducers
    1. Sums
    2. Products
    3. Minima
    4. Maxima
    5. Midrange
    6. Means
    7. Norms
  11. Linear Algebra
    1. Linear Problems
    2. Traces
    3. Matrix Multiplication
    4. Multivariate Statistics
  12. Analysis
  13. Matrix Utilities
  14. Additional Flonum Operations
  15. Authors
  16. Repository
  17. License
  18. Version History

matrico Function

[procedure] (matrico)

returns void, prints help message for matrico function.

[procedure] (matrico sym)

returns any, depending on argument symbol sym:

Matrix Type

[type] matrix

a list-of-f64vectors (flonum-)matrix type. This record type is not directly accessible, and can only be manipulated through "mx-" functions.

Matrix Generators

[procedure] (mx rows cols val)

returns rows-by-cols matrix with all entries set to flonum val for positive fixnums rows and cols.

[procedure] (mx% lst)

returns matrix from row-major list-of-lists-of-flonums lst.

[procedure] (mx-identity dims)

returns dims-by-dims identity matrix for a positive fixnum dims.

[procedure] (mx-exchange dims)

returns dims-by-dims exchange matrix for a positive fixnum dims.

[procedure] (mx-hilbert dims)

returns dims-by-dims Hilbert matrix for a positive fixnum dims.

[procedure] (mx-pascal dims)

returns dims-by-dims (lower triangular) Pascal matrix for a positive fixnum dims.

[procedure] (mx-lehmer rows cols)

returns rows-by-cols Lehmer matrix for the positive fixnums rows and cols.

[procedure] (mx-random rows cols low upp)

returns rows-by-cols uniformly distributed random matrix in the interval flonum low to flonum upp for the positive fixnums rows and cols.

[procedure] (mx-tridiag dims low mid upp)

returns dims-by-dims matrix with lower, main, upper band entries given by the flonums low, mid, upp for a positive fixnum dims.

[procedure] (mx-unit rows num)

returns dims-by-one column-matrix of zeros except the positive fixnum num-th entry set to one for a positive fixnum dims, aka canonical base vector.

[procedure] (mx-iota dims)

returns dims-by-one column-matrix with entries set to corresponding row index for a positive fixnum dims.

[procedure] (mx-linspace x y num)

returns matrix of positive fixnum num row-wise linearly spaced entries with endpoints given by flonums or column-matrixes x and y.

[procedure] (mx-logspace x y num)

returns matrix of positive fixnum num row-wise (base-10) logarithmic spaced entries with endpoints given by flonums or column matrixes x and y.

Matrix Dimensions

[procedure] (mx-cols mat)

returns fixnum number of columns of matrix mat.

[procedure] (mx-rows mat)

returns fixnum number of rows of matrix mat.

[procedure] (mx-numel mat)

returns fixnum number of entries of matrix mat.

[procedure] (mx-dims mat)

returns fixnum number of dimensions of matrix mat.

Matrix Predicates

[procedure] (mx? any)

returns boolean answering if any is a matrix.

[procedure] (mx-col? mat)

returns boolean answering if matrix mat has only a single column.

[procedure] (mx-row? mat)

returns boolean answering if matrix mat has only a single row.

[procedure] (mx-scalar? mat)

returns boolean answering if matrix mat has only a single row and single column.

[procedure] (mx-vector? mat)

returns boolean answering if matrix mat has only a single row or single column.

[procedure] (mx-square? mat)

returns boolean answering if matrix mat has the same number of rows and columns.

[procedure] (mx-samecols? x y)

returns boolean answering if matrixes x and y have same number of columns.

[procedure] (mx-samerows? x y)

returns boolean answering if matrixes x and y have same number of rows.

[procedure] (mx-samedim? x y)

returns boolean answering if matrixes x and y have same number of columns and rows.

[procedure] (mx-any? pred mat)

returns boolean answering if any entry of matrix mat fulfills predicate procedure pred.

[procedure] (mx-all? pred mat)

returns boolean answering if all entries of matrix mat fulfill predicate procedure pred.

[procedure] (mx=? x y tol)

returns boolean answering if all entry-wise distances between matrixes x and y are below tolerance flonum tol.

Matrix Accessors

[procedure] (mx-ref11 mat)

returns flonum being the entry in the first row and first column of matrix mat.

[procedure] (mx-ref mat row col)

returns flonum being matrix mat entry in row and column specified by fixnums row, col.

[procedure] (mx-set mat row col val)

returns matrix copy of matrix mat but with entry in row fixnum row and column fixnum col set to flonum or one-by-one matrix val.

[procedure] (mx-set! mat row col val)

returns void, sets entry of matrix mat in row and column specified by fixnums row and col to flonum or one-by-one matrix val.

[procedure] (mx-col mat col)

returns matrix being matrix mat's column specified by fixnum col.

[procedure] (mx-row mat row)

returns matrix being matrix mat's row specified by fixnum row.

[procedure] (mx-diag mat)

returns column-matrix holding square matrix mat's diagonal entries.

[procedure] (mx-submatrix mat row1 row2 col1 col2)

returns matrix holding entries of matrix mat in rows specified by fixnums row1 to row2 and columns specified by fixnums col1 to col2.

Matrix Expanders

[procedure] (mx+ x y)

returns matrix of entry-wise addition of matrixes x and y.

[procedure] (mx* x y)

returns matrix of entry-wise multiplication of matrixes x and y.

[procedure] (mx- x y)

returns matrix of entry-wise subtraction of matrixes x and y.

[procedure] (mx/ x y)

returns matrix of entry-wise division of matrixes x by y.

[procedure] (mx^ x y)

returns matrix of entry-wise exponentiation of matrixes x to the y.

[procedure] (mx-where pred x y)

returns matrix of entries of matrixes x or y based on predicate procedure pred.

Matrix Mappers

Entry-Wise Elementary Functions

[procedure] (mx- x)

returns matrix of entry-wise negation of matrix x.

[procedure] (mx/ x)

returns matrix of entry-wise reciprocal of matrix x.

[procedure] (mx*2 x)

returns matrix of entry-wise doubling of matrix x.

[procedure] (mx^2 x)

returns matrix of entry-wise squaring of matrix x.

Entry-Wise Rounding Functions

[procedure] (mx-round mat)

returns matrix with entries of matrix mat rounded to nearest integer.

[procedure] (mx-floor mat)

returns matrix with entries of matrix mat rounded to nearest upper integer.

[procedure] (mx-ceil mat)

returns matrix with entries of matrix mat rounded to nearest lower integer.

Entry-Wise Generalized Functions

[procedure] (mx-abs mat)

returns matrix with entry-wise absolute value of matrix mat.

[procedure] (mx-sign mat)

returns matrix with entry-wise sign of matrix mat.

[procedure] (mx-delta mat)

returns matrix with entry-wise Kronecker delta of matrix mat.

[procedure] (mx-heaviside mat)

returns matrix with entry-wise Heaviside step of matrix mat.

Entry-Wise Trigonometric Functions

[procedure] (mx-sin mat)

returns matrix with entry-wise sine of matrix mat.

[procedure] (mx-cos mat)

returns matrix with entry-wise cosine of matrix mat.

[procedure] (mx-tan mat)

returns matrix with entry-wise tangent of matrix mat.

Entry-Wise Inverse Trigonometric Functions

[procedure] (mx-asin mat)

returns matrix with entry-wise inverse sine of matrix mat, aka arcsine.

[procedure] (mx-acos mat)

returns matrix with entry-wise inverse cosine of matrix mat, aka arccosine.

[procedure] (mx-atan mat)

returns matrix with entry-wise inverse tangent of matrix mat, aka arctangent.

Entry-Wise Hyperbolic Functions

[procedure] (mx-sinh mat)

returns matrix with entry-wise hyperbolic sine of matrix mat.

[procedure] (mx-cosh mat)

returns matrix with entry-wise hyperbolic cosine of matrix mat.

[procedure] (mx-tanh mat)

returns matrix with entry-wise hyperbolic tangent of matrix mat.

Entry-Wise Inverse Hyperbolic Functions

[procedure] (mx-asinh mat)

returns matrix with entry-wise inverse hyperbolic sine of matrix mat, aka area hyperbolic sine.

[procedure] (mx-acosh mat)

returns matrix with entry-wise inverse hyperbolic cosine of matrix mat, aka area hyperbolic cosine.

[procedure] (mx-atanh mat)

returns matrix with entry-wise inverse hyperbolic tangent of matrix mat, aka area hyperbolic tangent.

Entry-Wise Haversed Trigonometric Functions

[procedure] (mx-hsin mat)

returns matrix with entry-wise haversed sine of matrix mat.

[procedure] (mx-hcos mat)

returns matrix with entry-wise haversed cosine of matrix mat.

Entry-Wise Logarithmic Hyperbolic Functions

[procedure] (mx-lnsinh mat)

returns matrix with entry-wise log-sinh of matrix mat.

[procedure] (mx-lncosh mat)

returns matrix with entry-wise log-cosh of matrix mat.

Entry-Wise Roots

[procedure] (mx-sqrt mat)

returns matrix with entry-wise square root of matrix mat.

[procedure] (mx-signsqrt mat)

returns matrix with entry-wise sign times square-root of absolute value of matrix mat.

Entry-Wise Logarithms

[procedure] (mx-ln mat)

returns matrix with entry-wise natural logarithm of matrix mat.

[procedure] (mx-lb mat)

returns matrix with entry-wise base-2 logarithm of matrix mat.

[procedure] (mx-lg mat)

returns matrix with entry-wise base-10 logarithm of matrix mat.

Entry-Wise Exponential

[procedure] (mx-exp mat)

returns matrix with entry-wise exponential of matrix mat.

[procedure] (mx-gauss mat)

returns matrix with entry-wise Gaussian of matrix mat.

Entry-Wise Special Functions

[procedure] (mx-sinc mat)

returns matrix with entry-wise cardinal sine of matrix mat.

[procedure] (mx-sigm mat)

returns matrix with entry-wise sigmoid of matrix mat.

[procedure] (mx-stirling mat)

returns matrix with entry-wise Stirling approximation of matrix mat.

Matrix Reducers

Sums

[procedure] (mx-rowsum mat)

returns column-matrix of summing row entries of matrix mat.

[procedure] (mx-colsum mat)

returns row-matrix of summing column entries of matrix mat.

[procedure] (mx-sum mat)

returns flonum of summing all entries of matrix mat.

Products

[procedure] (mx-rowprod mat)

returns column-matrix of multiplying row entries of matrix mat.

[procedure] (mx-colprod mat)

returns row-matrix of multiplying column entries of matrix mat.

[procedure] (mx-prod mat)

returns flonum of multiplying all entries of matrix mat.

Minima

[procedure] (mx-rowmin mat)

returns column-matrix of row-wise minima of matrix mat.

[procedure] (mx-colmin mat)

returns row-matrix of column-wise minima of matrix mat.

[procedure] (mx-min mat)

returns flonum minimum of all matrix mat entries.

Maxima

[procedure] (mx-rowmax mat)

returns column-matrix of row-wise maxima of matrix mat.

[procedure] (mx-colmax mat)

returns row-matrix of column-wise maxima of matrix mat.

[procedure] (mx-max mat)

returns flonum maximum of all matrix mat entries.

Midrange

[procedure] (mx-rowmidr mat)

returns column-matrix of row-wise midrange of matrix mat.

[procedure] (mx-colmidr mat)

returns row-matrix of column-wise midrange of matrix mat.

[procedure] (mx-midr mat)

returns flonum midrange of all matrix mat entries.

Means

[procedure] (mx-rowmean mat typ)

returns column-matrix of row-wise power means of matrix mat of type symbol typ, which can be -1, 0, 1, 2, or 'inf.

[procedure] (mx-colmean mat typ)

returns row-matrix of column-wise power means of matrix mat of type symbol typ, which can be -1, 0, 1, 2, or 'inf.

[procedure] (mx-mean mat typ)

returns flonum power mean of all matrix mat entries of type symbol typ, which can be -1, 0, 1, 2, or 'inf.

Norms

[procedure] (mx-rownorm mat typ)

returns column matrix of row-wise matrix norms of matrix mat of type symbol typ, which can be 1, 2, or 'inf.

[procedure] (mx-colnorm mat typ)

returns row matrix of column-wise matrix norms of matrix mat of type symbol typ, which can be 1, 2, or 'inf.

[procedure] (mx-norm mat typ)

returns flonum matrix norms of matrix mat of type symbol typ, which can be 1, 'inf, 'fro, or 'max.

Linear Algebra

[procedure] (mx-horcat x y)

returns matrix of horizontally concatenated matrixes x and y.

[procedure] (mx-vercat x y)

returns matrix of vertically concatenated matrixes x and y.

[procedure] (mx-vec mat)

returns matrix of vertically concatenated columns of matrix mat, aka vectorization.

[procedure] (mx-transpose mat)

returns matrix of entries of matrix mat with swapped row and column indices.

[procedure] (mx-axpy a x y)

returns matrix of entry-wise generalized addition of flonum a times matrix x plus matrix y.

[procedure] (mx-sympart mat)

returns matrix being symmetric part of square matrix mat.

[procedure] (mx-skewpart mat)

returns matrix being skey-symmetric part of square matrix mat, aka anti-symmetric part.

[procedure] (mx-diagonal mat)

returns diagonal matrix from column matrix mat.

Linear Problems

[procedure] (mx-qr mat)

returns pair of orthogonal matrix (Q) and upper right triangular matrix (R) factoring full column rank matrix mat.

[procedure] (mx-solver mat)

returns function returning column-matrix solving the linear (least-squares) problem of matrix mat, given a column-matrix vec via QR decomposition.

[procedure] (mx-solve mat vec)

returns column-matrix solving the linear problem of matrix mat and column-matrix vec via QR decomposition.

[procedure] (mx-orth mat)

returns matrix orthogonalizing matrix mat.

[procedure] (mx-absdet mat)

returns flonum being absolute value of the determinant of matrix mat.

[procedure] (mx-logdet mat)

returns flonum being the (natural) logarithm of the determinant of matrix mat.

Traces

[procedure] (mx-trace mat)

returns flonum being sum of square matrix mat's diagonal entries.

[procedure] (mx-multrace mat)

returns flonum being product of square matrix mat's diagonal entries.

[procedure] (mx-prodtrace* x yt)

returns flonum being the trace of the matrix product of matrix x and transposed matrix yt.

[procedure] (mx-prodtrace x y)

returns flonum being the trace of the matrix product of matrixes x and y.

Matrix Multiplication

[procedure] (mx-scalar xt y)

returns flonum resulting from scalar product of column-matrixes xt and y.

[procedure] (mx-dyadic x y)

returns flonum resulting from dyadic product of column-matrix x and row-matrix y.

[procedure] (mx-dot* xt y)

returns matrix resulting from matrix multiplication of (transposed) matrix xt and matrix y.

[procedure] (mx-dot x y)

returns matrix resulting from matrix multiplication of matrixes x and y.

[procedure] (mx-gram mat)

returns matrix resulting from matrix multiplication of transposed matrix mat with itself, aka Gram matrix.

[procedure] (mx-gram* mat)

returns matrix resulting from matrix multiplication of matrix mat with itself transposed.

[procedure] (mx-square mat)

returns matrix resulting from matrix multiplication of matrix mat with itself.

Multivariate Statistics

[procedure] (mx-xcov x y)

returns matrix of cross-covariances of matrixes x and y, representing columns of observations.

[procedure] (mx-cov mat)

returns matrix of covariances of matrix mat, representing columns of observations.

[procedure] (mx-var mat)

returns column matrix of variances of matrix mat, representing columns of observations.

[procedure] (mx-std mat)

returns column matrix of standard deviations of matrix mat, representing columns of observations.

[procedure] (mx-xcor x y)

returns matrix of cross-correlations of matrixes x and y, representing columns of observations.

[procedure] (mx-cor mat)

returns matrix of correlations of matrix mat, representing columns of observations.

[procedure] (mx-angle x y)

returns matrix of angles between matrixes x and y, representing columns of observations.

[procedure] (mx-coher x y)

returns flonum of distance coherence between matrixes x and y.

Analysis

[procedure] (mx-diff mat)

returns matrix of differences of consecutives columns of matrix mat.

[procedure] (mx-trapz mat)

returns column-matrix trapezoid approximate integral of matrix mat being columns data-points of rows-dimensional function.

[procedure] (mx-ode2-hyp num sys tim x0)

returns states-times-steps matrix trajectory solving an ordinary differential equation, by a 2nd order hyperbolic Runge-Kutta method of fixnum num stages, with vector field procedure or pair of vector field and output procedures sys, time step flonum and time horizon flonum in pair tim, initial state column-matrix x0.

[procedure] (mx-ode2-ssp num sys tim x0)

returns states-times-steps matrix trajectory solving an ordinary differential equation, by a 2nd order strong stability preserving Runge-Kutta method of fixnum num stages, with vector field procedure or pair of vector field and output procedures sys, time step flonum and time horizon flonum in pair tim, initial state column-matrix x0.

Matrix Utilities

[procedure] (mx->list mat)

returns list of entries of one-dimensional matrix mat.

[procedure] (mx-print mat)

returns void, prints matrix mat to terminal.

[procedure] (mx-export str mat . sep)

returns void, writes matrix mat to new character sep-separated-value file in relative path string str, by default sep is , resulting in CSV.

[procedure] (mx-save str mat)

returns void, writes matrix mat to new Scheme (SCM) file with name string str.

[procedure] (mx-load str)

returns matrix loaded from SCM file in relative path specified by string str.

Additional Flonum Operations

The matrico module implicitly exports the (chicken flonum) module, as well as the following additional flonum operations:

[procedure] fp

is an alias for exact->inexact.

[procedure] (fp% n d)

returns flonum fraction with numerator fixnum n and denominator fixnum d.

[procedure] (fpzero?? x)

returns boolean answering if flonum x is exactly zero.

[procedure] (fpzero? x tol)

returns boolean answering if absolute value of flonum x is less than flonum tol.

[procedure] (fp*2 x)

returns flonum double of flonum x.

[procedure] (fp^2 x)

returns flonum square of flonum x.

[procedure] (fprec x)

returns flonum reciprocal of flonum x.

[procedure] (fptau)

returns flonum circle constant Tau via fraction.

[procedure] (fpeul)

returns flonum Euler's number via fraction.

[procedure] (fpphi)

returns flonum golden ratio via fraction of consecutive Fibonacci numbers.

[procedure] (fpdelta x)

returns flonum Kronecker delta of flonum x.

[procedure] (fpheaviside x)

returns flonum Heaviside step function of flonum x.

[procedure] (fpsign x)

returns flonum sign of flonum x.

[procedure] (fpln x)

returns flonum natural logarithm of flonum x.

[procedure] (fplb x)

returns flonum base-2 logarithm of flonum x.

[procedure] (fplg x)

returns flonum base-10 logarithm of flonum x.

[procedure] (fphsin x)

returns flonum haversed sine of flonum x.

[procedure] (fphcos x)

returns flonum haversed cosine of flonum x.

[procedure] (fplnsinh x)

returns flonum log-of-sinh of flonum x.

[procedure] (fplncosh x)

returns flonum log-of-cosh of flonum x.

[procedure] (fpsignsqrt x)

returns flonum sign times square root of absolute value of flonum x.

[procedure] (fpsinc x)

returns flonum cardinal sine function with removed singularity of flonum x.

[procedure] (fpsigm x)

returns flonum standard logistic function of flonum x, aka sigmoid.

[procedure] (fpgauss x)

returns flonum Gauss bell curve function evaluation of flonum x.

[procedure] (fpstirling x)

returns flonum Stirling approximation of factorial of flonum x.

Authors

Christian Himpe

Repository

https://git.io/matrico

License

Copyright (c) 2022 Christian Himpe. zlib-acknowledgement license

Version History

0.1
Initial Release
0.2
Major Update
0.3
Major Update
0.4
Minor Update
0.5
Minor Update
0.6
Major Update (details)