Numeric Linear Algebra

Version on this page:
LTS Haskell 8.2:
Stackage Nightly 2017-02-20:
Latest on Hackage:
BSD3 licensed and maintained by Alberto Ruiz

Linear systems, matrix decompositions, and other numerical computations based on BLAS and LAPACK.

Standard interface: Numeric.LinearAlgebra.

Safer interface with statically checked dimensions: Numeric.LinearAlgebra.Static.

Code examples:


* Many new functions and instances in the Static module

* meanCov and gaussianSample use Herm type

* thinQR, thinRQ

* compactSVDTol

* unitary changed to normalize, also admits Vector (Complex Double)

* eigSH, chol, and other functions that work with Hermitian or symmetric matrices
now take a special "Herm" argument that can be created by means of "sym"
or "mTm". The unchecked versions of those functions have been removed and we
use "trustSym" to create the Herm type when the matrix is known to be Hermitian/symmetric.

* Improved matrix extraction (??) and rectangular matrix slices without data copy

* Basic support of Int32 and Int64 elements

* remap, more general cond, sortIndex

* Experimental support of type safe modular arithmetic, including linear
system solver and LU factorization

* Elementary row operations and inplace matrix slice products in the ST monad

* Improved development tools.

* Old compatibility modules removed, simpler organization of internal modules

* unitary, pairwiseD2, tr'

* ldlPacked, ldlSolve for indefinite symmetric systems (apparently not faster
than the general solver based on the LU)

* LU, LDL, and QR types for these compact decompositions.

* Added (|||) and (===) for "besides" and "above"

* rowOuters

* The modules Numeric.GSL.* have been moved to the new package hmatrix-gsl.

* The package "hmatrix" now depends only on BLAS and LAPACK and the
license has been changed to BSD3.

* Added more organized reexport modules:

For normal usage we only need to import Numeric.LinearAlgebra.HMatrix.

(The documentation is now hidden for Data.Packed.*, Numeric.Container, and
the other Numeric.LinearAlgebra.* modules, but they continue to be exposed
for backwards compatibility.)

* Added support for empty arrays, extending automatic conformability
(very useful for construction of block matrices).

* Added experimental support for sparse linear systems.

* Added experimental support for static dimension checking and inference
using type-level literals.

* Added a different operator for the matrix-vector product.
(available from the new reexport module).

* "join" deprecated (use "vjoin").

* "dot" now conjugates the first input vector.

* Added "udot" (unconjugated dot product).

* Added to/from ByteString

* Added "sortVector", "roundVector"

* Added Monoid instance for Matrix using matrix product.

* Added several pretty print functions

* Improved "build", "konst", "linspace", "LSDiv", loadMatrix', and other small changes.

* In hmatrix-glpk: (:=>:) change to (:>=:). Added L_1 linear system solvers.

* Improved error messages.

* Added many usage examples in the documentation.

* general pinvTol and improved pinv

* One-dimensional minimization

* Doubly-adaptive quadrature for difficult integrands

* Data.Packed.Foreign (additional FFI helpers)

* NFData instance of Matrix

* Unidimensional root finding

* In Numeric.LinearAlgebra.Util:
pairwise2D, rowOuters, null1, null1sym, size, unitary, mt, (¦), (?), (¿)

* diagBlock

* meanCov moved to Container

* In Numeric.LinearAlgebra.Util:
convolution: corr, conv, corr2, conv2, separable, corrMin
kronecker: vec, vech, dup, vtrans

* integration over infinite intervals

* msadams and msbdf methods for ode

* Numeric.LinearAlgebra.Util

* (<\>) extended to multiple right-hand sides

* orth

* tests moved to new package hmatrix-tests

* geigSH' (symmetric generalized eigensystem)

* mapVectorWithIndex

* exported Mul

* mapMatrixWithIndex{,M,M_}

* flag -fvector default = True

* invlndet (inverse and log of determinant)

* step, cond

* find

* assoc, accum

* Module reorganization

* Support for Float and Complex Float elements (excluding LAPACK computations)

* Binary instances for Vector and Matrix

* optimiseMult

* mapVectorM, mapVectorWithIndexM, unzipVectorWith, and related functions.

* diagRect admits diagonal vectors of any length without producing an error,
and takes an additional argument for the off-diagonal elements.

* different signatures in some functions

* flag -fvector to optionally use Data.Vector.Storable.Vector
without any conversion.

* Simpler module structure.

* toBlocks, toBlocksEvery

* cholSolve, mbCholSH

* GSL Nonlinear Least-Squares fitting using Levenberg-Marquardt.

* GSL special functions moved to separate package hmatrix-special.

* Added offset of Vector, allowing fast, noncopy subVector (slice).
Vector is now identical to Roman Leshchinskiy's Data.Vector.Storable.Vector,
so we can convert from/to them in O(1).

* Removed Data.Packed.Convert, see examples/vector.hs

* odeSolve

* Matrix arithmetic automatically replicates matrix with single row/column

* latexFormat, dispcf

* fromRows/fromColumns now automatically expand vectors of dim 1
to match the common dimension.
fromBlocks also replicates single row/column matrices.
Previously all dimensions had to be exactly the same.

* display utilities: dispf, disps, vecdisp

* scalar

* minimizeV, minimizeVD, using Vector instead of lists.

* runBenchmarks

* singularValues, fullSVD, thinSVD, compactSVD, leftSV, rightSV
and complete interface to [d|z]gesdd.
Algorithms based on the SVD of large matrices can now be
significantly faster.

* eigenvalues, eigenvaluesSH

* linearSolveLS, rq

* ranksv

* buildVector/buildMatrix

* removed NFData instances

* added randomVector, gaussianSample, uniformSample, meanCov

* added rankSVD, nullspaceSVD

* rank, nullspacePrec, and economy svd defined in terms of ranksvd.

* economy svd now admits zero rank matrices and return a "degenerate
rank 1" decomposition with zero singular value.

* added NFData instances for Matrix and Vector.

* liftVector, liftVector2 replaced by mapVector, zipVector.

comments powered byDisqus