== matrico A flonum matrix module for CHICKEN Scheme. [[toc:]] == matrico Function (matrico) returns ''void'', prints help message for '''matrico''' function. (matrico sym) returns ''any'', depending on argument ''symbol'' {{sym}}: * {{'list}} - returns ''void'', prints list of "{{mx}}" functions; * {{'about}} - returns ''void'', prints summary about '''matrico'''; * {{'banner}} - returns ''void'', prints the '''matrico''' banner; * {{'version}} - returns ''pair'' holding major and minor version numbers of '''matrico'''; * {{'citation}} - returns ''void'', prints citation information for '''matrico'''; * {{'benchmark}} - returns ''fixnum'', prints approximated million-instructions-per-second for current machine; * otherwise - returns ''boolean'' answering if argument is a symbol matching an existing function, starting with "{{mx}}", and prints its docstring. == Matrix 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 (mx rows cols val) returns {{rows}}-by-{{cols}} ''matrix'' with all entries set to ''flonum'' {{val}} for positive ''fixnum''s {{rows}} and {{cols}}. (mx% lst) returns ''matrix'' from row-major ''list''-of-''lists''-of-''flonum''s {{lst}}. (mx-identity dims) returns {{dims}}-by-{{dims}} identity ''matrix'' for a positive ''fixnum'' {{dims}}. (mx-exchange dims) returns {{dims}}-by-{{dims}} [[https://en.wikipedia.org/wiki/Exchange_matrix|exchange ''matrix'']] for a positive ''fixnum'' {{dims}}. (mx-hilbert dims) returns {{dims}}-by-{{dims}} [[https://en.wikipedia.org/wiki/Hilbert_matrix|Hilbert ''matrix'']] for a positive ''fixnum'' {{dims}}. (mx-pascal dims) returns {{dims}}-by-{{dims}} (lower triangular) [[https://en.wikipedia.org/wiki/Pascal_matrix|Pascal ''matrix'']] for a positive ''fixnum'' {{dims}}. (mx-lehmer rows cols) returns {{rows}}-by-{{cols}} [[https://en.wikipedia.org/wiki/Lehmer_matrix|Lehmer ''matrix'']] for the positive ''fixnum''s {{rows}} and {{cols}}. (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 ''fixnum''s {{rows}} and {{cols}}. (mx-tridiag dims low mid upp) returns {{dims}}-by-{{dims}} ''matrix'' with lower, main, upper band entries given by the ''flonum''s {{low}}, {{mid}}, {{upp}} for a positive ''fixnum'' {{dims}}. (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. (mx-iota dims) returns {{dims}}-by-one column-''matrix'' with entries set to corresponding row index for a positive ''fixnum'' {{dims}}. (mx-linspace x y num) returns ''matrix'' of positive ''fixnum'' {{num}} row-wise linearly spaced entries with endpoints given by ''flonum''s or column-''matrix''es {{x}} and {{y}}. (mx-logspace x y num) returns ''matrix'' of positive ''fixnum'' {{num}} row-wise (base-10) logarithmic spaced entries with endpoints given by ''flonum''s or column ''matrix''es {{x}} and {{y}}. == Matrix Dimensions (mx-cols mat) returns ''fixnum'' number of columns of ''matrix'' {{mat}}. (mx-rows mat) returns ''fixnum'' number of rows of ''matrix'' {{mat}}. (mx-numel mat) returns ''fixnum'' number of entries of ''matrix'' {{mat}}. (mx-dims mat) returns ''fixnum'' number of dimensions of ''matrix'' {{mat}}. == Matrix Predicates (mx? any) returns ''boolean'' answering if {{any}} is a ''matrix''. (mx-col? mat) returns ''boolean'' answering if ''matrix'' {{mat}} has only a single column. (mx-row? mat) returns ''boolean'' answering if ''matrix'' {{mat}} has only a single row. (mx-scalar? mat) returns ''boolean'' answering if ''matrix'' {{mat}} has only a single row and single column. (mx-vector? mat) returns ''boolean'' answering if ''matrix'' {{mat}} has only a single row or single column. (mx-square? mat) returns ''boolean'' answering if ''matrix'' {{mat}} has the same number of rows and columns. (mx-samecols? x y) returns ''boolean'' answering if ''matrix''es {{x}} and {{y}} have same number of columns. (mx-samerows? x y) returns ''boolean'' answering if ''matrix''es {{x}} and {{y}} have same number of rows. (mx-samedim? x y) returns ''boolean'' answering if ''matrix''es {{x}} and {{y}} have same number of columns and rows. (mx-any? pred mat) returns ''boolean'' answering if any entry of ''matrix'' {{mat}} fulfills predicate ''procedure'' {{pred}}. (mx-all? pred mat) returns ''boolean'' answering if all entries of ''matrix'' {{mat}} fulfill predicate ''procedure'' {{pred}}. (mx=? x y tol) returns ''boolean'' answering if all entry-wise distances between ''matrix''es {{x}} and {{y}} are below tolerance ''flonum'' {{tol}}. == Matrix Accessors (mx-ref11 mat) returns ''flonum'' being the entry in the first row and first column of ''matrix'' {{mat}}. (mx-ref mat row col) returns ''flonum'' being ''matrix'' {{mat}} entry in row and column specified by ''fixnum''s {{row}}, {{col}}. (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}}. (mx-set! mat row col val) returns ''void'', sets entry of ''matrix'' {{mat}} in row and column specified by ''fixnum''s {{row}} and {{col}} to ''flonum'' or one-by-one ''matrix'' {{val}}. (mx-col mat col) returns ''matrix'' being ''matrix'' {{mat}}'s column specified by ''fixnum'' {{col}}. (mx-row mat row) returns ''matrix'' being ''matrix'' {{mat}}'s row specified by ''fixnum'' {{row}}. (mx-diag mat) returns column-''matrix'' holding square ''matrix'' {{mat}}'s diagonal entries. (mx-submatrix mat row1 row2 col1 col2) returns ''matrix'' holding entries of ''matrix'' {{mat}} in rows specified by ''fixnum''s {{row1}} to {{row2}} and columns specified by ''fixnum''s {{col1}} to {{col2}}. == Matrix Expanders (mx+ x y) returns ''matrix'' of entry-wise addition of ''matrix''es {{x}} and {{y}}. (mx* x y) returns ''matrix'' of entry-wise multiplication of ''matrix''es {{x}} and {{y}}. (mx- x y) returns ''matrix'' of entry-wise subtraction of ''matrix''es {{x}} and {{y}}. (mx/ x y) returns ''matrix'' of entry-wise division of ''matrix''es {{x}} by {{y}}. (mx^ x y) returns ''matrix'' of entry-wise exponentiation of ''matrix''es {{x}} to the {{y}}. (mx-where pred x y) returns ''matrix'' of entries of ''matrix''es {{x}} or {{y}} based on predicate ''procedure'' {{pred}}. == Matrix Mappers === Entry-Wise Elementary Functions (mx- x) returns ''matrix'' of entry-wise negation of ''matrix'' {{x}}. (mx/ x) returns ''matrix'' of entry-wise reciprocal of ''matrix'' {{x}}. (mx*2 x) returns ''matrix'' of entry-wise doubling of ''matrix'' {{x}}. (mx^2 x) returns ''matrix'' of entry-wise squaring of ''matrix'' {{x}}. === Entry-Wise Rounding Functions (mx-round mat) returns ''matrix'' with entries of ''matrix'' {{mat}} rounded to nearest integer. (mx-floor mat) returns ''matrix'' with entries of ''matrix'' {{mat}} rounded to nearest upper integer. (mx-ceil mat) returns ''matrix'' with entries of ''matrix'' {{mat}} rounded to nearest lower integer. === Entry-Wise Generalized Functions (mx-abs mat) returns ''matrix'' with entry-wise absolute value of ''matrix'' {{mat}}. (mx-sign mat) returns ''matrix'' with entry-wise sign of ''matrix'' {{mat}}. (mx-delta mat) returns ''matrix'' with entry-wise Kronecker delta of ''matrix'' {{mat}}. (mx-heaviside mat) returns ''matrix'' with entry-wise Heaviside step of ''matrix'' {{mat}}. === Entry-Wise Trigonometric Functions (mx-sin mat) returns ''matrix'' with entry-wise sine of ''matrix'' {{mat}}. (mx-cos mat) returns ''matrix'' with entry-wise cosine of ''matrix'' {{mat}}. (mx-tan mat) returns ''matrix'' with entry-wise tangent of ''matrix'' {{mat}}. === Entry-Wise Inverse Trigonometric Functions (mx-asin mat) returns ''matrix'' with entry-wise inverse sine of ''matrix'' {{mat}}, aka arcsine. (mx-acos mat) returns ''matrix'' with entry-wise inverse cosine of ''matrix'' {{mat}}, aka arccosine. (mx-atan mat) returns ''matrix'' with entry-wise inverse tangent of ''matrix'' {{mat}}, aka arctangent. === Entry-Wise Hyperbolic Functions (mx-sinh mat) returns ''matrix'' with entry-wise hyperbolic sine of ''matrix'' {{mat}}. (mx-cosh mat) returns ''matrix'' with entry-wise hyperbolic cosine of ''matrix'' {{mat}}. (mx-tanh mat) returns ''matrix'' with entry-wise hyperbolic tangent of ''matrix'' {{mat}}. === Entry-Wise Inverse Hyperbolic Functions (mx-asinh mat) returns ''matrix'' with entry-wise inverse hyperbolic sine of ''matrix'' {{mat}}, aka area hyperbolic sine. (mx-acosh mat) returns ''matrix'' with entry-wise inverse hyperbolic cosine of ''matrix'' {{mat}}, aka area hyperbolic cosine. (mx-atanh mat) returns ''matrix'' with entry-wise inverse hyperbolic tangent of ''matrix'' {{mat}}, aka area hyperbolic tangent. === Entry-Wise Haversed Trigonometric Functions (mx-hsin mat) returns ''matrix'' with entry-wise haversed sine of ''matrix'' {{mat}}. (mx-hcos mat) returns ''matrix'' with entry-wise haversed cosine of ''matrix'' {{mat}}. === Entry-Wise Logarithmic Hyperbolic Functions (mx-lnsinh mat) returns ''matrix'' with entry-wise log-sinh of ''matrix'' {{mat}}. (mx-lncosh mat) returns ''matrix'' with entry-wise log-cosh of ''matrix'' {{mat}}. === Entry-Wise Roots (mx-sqrt mat) returns ''matrix'' with entry-wise square root of ''matrix'' {{mat}}. (mx-signsqrt mat) returns ''matrix'' with entry-wise sign times square-root of absolute value of ''matrix'' {{mat}}. === Entry-Wise Logarithms (mx-ln mat) returns ''matrix'' with entry-wise natural logarithm of ''matrix'' {{mat}}. (mx-lb mat) returns ''matrix'' with entry-wise base-2 logarithm of ''matrix'' {{mat}}. (mx-lg mat) returns ''matrix'' with entry-wise base-10 logarithm of ''matrix'' {{mat}}. === Entry-Wise Exponential (mx-exp mat) returns ''matrix'' with entry-wise exponential of ''matrix'' {{mat}}. (mx-gauss mat) returns ''matrix'' with entry-wise Gaussian of ''matrix'' {{mat}}. === Entry-Wise Special Functions (mx-sinc mat) returns ''matrix'' with entry-wise cardinal sine of ''matrix'' {{mat}}. (mx-sigm mat) returns ''matrix'' with entry-wise sigmoid of ''matrix'' {{mat}}. (mx-stirling mat) returns ''matrix'' with entry-wise Stirling approximation of ''matrix'' {{mat}}. == Matrix Reducers === Sums (mx-rowsum mat) returns column-''matrix'' of summing row entries of ''matrix'' {{mat}}. (mx-colsum mat) returns row-''matrix'' of summing column entries of ''matrix'' {{mat}}. (mx-sum mat) returns ''flonum'' of summing all entries of ''matrix'' {{mat}}. === Products (mx-rowprod mat) returns column-''matrix'' of multiplying row entries of ''matrix'' {{mat}}. (mx-colprod mat) returns row-''matrix'' of multiplying column entries of ''matrix'' {{mat}}. (mx-prod mat) returns ''flonum'' of multiplying all entries of ''matrix'' {{mat}}. === Minima (mx-rowmin mat) returns column-''matrix'' of row-wise minima of ''matrix'' {{mat}}. (mx-colmin mat) returns row-''matrix'' of column-wise minima of ''matrix'' {{mat}}. (mx-min mat) returns ''flonum'' minimum of all ''matrix'' {{mat}} entries. === Maxima (mx-rowmax mat) returns column-''matrix'' of row-wise maxima of ''matrix'' {{mat}}. (mx-colmax mat) returns row-''matrix'' of column-wise maxima of ''matrix'' {{mat}}. (mx-max mat) returns ''flonum'' maximum of all ''matrix'' {{mat}} entries. === Midrange (mx-rowmidr mat) returns column-''matrix'' of row-wise midrange of ''matrix'' {{mat}}. (mx-colmidr mat) returns row-''matrix'' of column-wise midrange of ''matrix'' {{mat}}. (mx-midr mat) returns ''flonum'' midrange of all ''matrix'' {{mat}} entries. === Means (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}}. (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}}. (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 (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}}. (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}}. (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 (mx-horcat x y) returns ''matrix'' of horizontally concatenated ''matrix''es {{x}} and {{y}}. (mx-vercat x y) returns ''matrix'' of vertically concatenated ''matrix''es {{x}} and {{y}}. (mx-vec mat) returns ''matrix'' of vertically concatenated columns of ''matrix'' {{mat}}, aka vectorization. (mx-transpose mat) returns ''matrix'' of entries of ''matrix'' {{mat}} with swapped row and column indices. (mx-axpy a x y) returns ''matrix'' of entry-wise generalized addition of ''flonum'' {{a}} times ''matrix'' {{x}} plus ''matrix'' {{y}}. (mx-sympart mat) returns ''matrix'' being symmetric part of square ''matrix'' {{mat}}. (mx-skewpart mat) returns ''matrix'' being skey-symmetric part of square ''matrix'' {{mat}}, aka anti-symmetric part. (mx-diagonal mat) returns diagonal ''matrix'' from column ''matrix'' {{mat}}. === Linear Problems (mx-qr mat) returns ''pair'' of orthogonal ''matrix'' (Q) and upper right triangular ''matrix'' (R) factoring full column rank ''matrix'' {{mat}}. (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. (mx-solve mat vec) returns column-''matrix'' solving the linear problem of ''matrix'' {{mat}} and column-''matrix'' {{vec}} via QR decomposition. (mx-orth mat) returns ''matrix'' orthogonalizing ''matrix'' {{mat}}. (mx-absdet mat) returns ''flonum'' being absolute value of the determinant of ''matrix'' {{mat}}. (mx-logdet mat) returns ''flonum'' being the (natural) logarithm of the determinant of ''matrix'' {{mat}}. === Traces (mx-trace mat) returns ''flonum'' being sum of square ''matrix'' {{mat}}'s diagonal entries. (mx-multrace mat) returns ''flonum'' being product of square ''matrix'' {{mat}}'s diagonal entries. (mx-prodtrace* x yt) returns ''flonum'' being the trace of the matrix product of ''matrix'' {{x}} and transposed ''matrix'' {{yt}}. (mx-prodtrace x y) returns ''flonum'' being the trace of the matrix product of ''matrix''es {{x}} and {{y}}. === Matrix Multiplication (mx-scalar xt y) returns ''flonum'' resulting from scalar product of column-''matrix''es {{xt}} and {{y}}. (mx-dyadic x y) returns ''flonum'' resulting from dyadic product of column-''matrix'' {{x}} and row-''matrix'' {{y}}. (mx-dot* xt y) returns ''matrix'' resulting from matrix multiplication of (transposed) ''matrix'' {{xt}} and ''matrix'' {{y}}. (mx-dot x y) returns ''matrix'' resulting from matrix multiplication of ''matrix''es {{x}} and {{y}}. (mx-gram mat) returns ''matrix'' resulting from matrix multiplication of transposed ''matrix'' {{mat}} with itself, aka Gram matrix. (mx-gram* mat) returns ''matrix'' resulting from matrix multiplication of ''matrix'' {{mat}} with itself transposed. (mx-square mat) returns ''matrix'' resulting from matrix multiplication of ''matrix'' {{mat}} with itself. === Multivariate Statistics (mx-xcov x y) returns ''matrix'' of cross-covariances of ''matrix''es {{x}} and {{y}}, representing columns of observations. (mx-cov mat) returns ''matrix'' of covariances of ''matrix'' {{mat}}, representing columns of observations. (mx-var mat) returns column ''matrix'' of variances of ''matrix'' {{mat}}, representing columns of observations. (mx-std mat) returns column ''matrix'' of standard deviations of ''matrix'' {{mat}}, representing columns of observations. (mx-xcor x y) returns ''matrix'' of cross-correlations of ''matrix''es {{x}} and {{y}}, representing columns of observations. (mx-cor mat) returns ''matrix'' of correlations of ''matrix'' {{mat}}, representing columns of observations. (mx-angle x y) returns ''matrix'' of angles between ''matrix''es {{x}} and {{y}}, representing columns of observations. (mx-coher x y) returns ''flonum'' of distance coherence between ''matrix''es {{x}} and {{y}}. == Analysis (mx-diff mat) returns ''matrix'' of differences of consecutives columns of ''matrix'' {{mat}}. (mx-trapz mat) returns column-''matrix'' trapezoid approximate integral of ''matrix'' {{mat}} being columns data-points of rows-dimensional function. (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 ''procedure''s {{sys}}, time step ''flonum'' and time horizon ''flonum'' in ''pair'' {{tim}}, initial state column-''matrix'' {{x0}}. (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 ''procedure''s {{sys}}, time step ''flonum'' and time horizon ''flonum'' in ''pair'' {{tim}}, initial state column-''matrix'' {{x0}}. == Matrix Utilities (mx->list mat) returns ''list'' of entries of one-dimensional ''matrix'' {{mat}}. (mx-print mat) returns ''void'', prints ''matrix'' {{mat}} to terminal. (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. (mx-save str mat) returns ''void'', writes ''matrix'' {{mat}} to new Scheme (SCM) file with name ''string'' {{str}}. (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 [[http://wiki.call-cc.org/man/5/Module%20(chicken%20flonum)|'''(chicken flonum)''']] module, as well as the following additional ''flonum'' operations: fp is an alias for {{exact->inexact}}. (fp% n d) returns ''flonum'' fraction with numerator ''fixnum'' {{n}} and denominator ''fixnum'' {{d}}. (fpzero?? x) returns ''boolean'' answering if ''flonum'' {{x}} is exactly zero. (fpzero? x tol) returns ''boolean'' answering if absolute value of ''flonum'' {{x}} is less than ''flonum'' {{tol}}. (fp*2 x) returns ''flonum'' double of ''flonum'' {{x}}. (fp^2 x) returns ''flonum'' square of ''flonum'' {{x}}. (fprec x) returns ''flonum'' reciprocal of ''flonum'' {{x}}. (fptau) returns ''flonum'' [[https://tauday.com|circle constant Tau]] via fraction. (fpeul) returns ''flonum'' [[https://en.wikipedia.org/wiki/E_(mathematical_constant)|Euler's number]] via fraction. (fpphi) returns ''flonum'' [[https://en.wikipedia.org/wiki/Golden_ratio|golden ratio]] via fraction of consecutive Fibonacci numbers. (fpdelta x) returns ''flonum'' [[https://en.wikipedia.org/wiki/Kronecker_delta|Kronecker delta]] of ''flonum'' {{x}}. (fpheaviside x) returns ''flonum'' [[https://en.wikipedia.org/wiki/Heaviside_step_function|Heaviside step function]] of ''flonum'' {{x}}. (fpsign x) returns ''flonum'' [[https://en.wikipedia.org/wiki/Sign_function|sign]] of ''flonum'' {{x}}. (fpln x) returns ''flonum'' natural logarithm of ''flonum'' {{x}}. (fplb x) returns ''flonum'' base-2 logarithm of ''flonum'' {{x}}. (fplg x) returns ''flonum'' base-10 logarithm of ''flonum'' {{x}}. (fphsin x) returns ''flonum'' [[https://mathworld.wolfram.com/Haversine.html|haversed sine]] of ''flonum'' {{x}}. (fphcos x) returns ''flonum'' [[https://mathworld.wolfram.com/Havercosine.html|haversed cosine]] of ''flonum'' {{x}}. (fplnsinh x) returns ''flonum'' log-of-sinh of ''flonum'' {{x}}. (fplncosh x) returns ''flonum'' log-of-cosh of ''flonum'' {{x}}. (fpsignsqrt x) returns ''flonum'' sign times square root of absolute value of ''flonum'' {{x}}. (fpsinc x) returns ''flonum'' [[https://en.wikipedia.org/wiki/Sinc_function|cardinal sine function]] with removed singularity of ''flonum'' {{x}}. (fpsigm x) returns ''flonum'' [[https://en.wikipedia.org/wiki/Sigmoid_function|standard logistic function]] of ''flonum'' {{x}}, aka sigmoid. (fpgauss x) returns ''flonum'' [[https://en.wikipedia.org/wiki/Gaussian_function|Gauss bell curve function]] evaluation of ''flonum'' {{x}}. (fpstirling x) returns ''flonum'' [[https://en.wikipedia.org/wiki/Stirling%27s_approximation|Stirling approximation]] of factorial of ''flonum'' {{x}}. == Authors [[https://himpe.science|Christian Himpe]] == Repository [[https://git.io/matrico]] == License Copyright (c) 2022 Christian Himpe. [[https://spdx.org/licenses/zlib-acknowledgement.html|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 ([[https://github.com/gramian/matrico#changelog|details]])