Linear Algebra
- Video of Andreas Noack and Jiahao Chen speaking at the Linear Algebra and Optimization seminar at the Institute for Computational and Mathematical Engineering at Stanford.
- Learn the theory of linear algebra in Python Jupyter notebooks.
- Benchmarking Matrix Multiplication
- Linear Algebra stdlib in Julia
- DirectSum.jl : Abstract tangent bundle vector space type operations.
- Divergences.jl : A Julia package that makes it easy to evaluate divergence measures between two vectors. The package allows calculating the gradient and the diagonal of the Hessian of several divergences which can be used to good effect by the MomentBasedEstimators package.
- Elemental.jl : A Julia interface to the Elemental linear algebra library with third-party interfaces.
- GenericLinearAlgebra.jl : Partly to extend linear algebra functionality in base to cover generic element types, e.g.
BigFloatandQuaternion, and partly to be a place to experiment with fast linear algebra routines. - IntelVectorMath.jl : Julia bindings for the Intel Vector Math Library.
- IterativeSolvers.jl : Iterative algorithms for solving linear systems, eigen systems, and singular value problems.
- LinearMaps.jl : A Julia package for defining and working with linear maps, also known as linear transformations or linear operators acting on vectors. The only requirement for a LinearMap is that it can act on a vector (by multiplication) efficiently.
- LLLplus.jl : LLL lattice reduction, sphere decoder, and related lattice tools.
- MKL.jl : Intel MKL linear algebra backend for Julia.
- PartitionedArrays.jl : distributed (a.k.a. partitioned) vectors and sparse matrices in Julia. It can be used for parallel algebraic multigrid (AMG) to solve PDE problems. JuliaCon 2024 video
- VSL.jl : Julia bindings for the Intel Vector Statistics Library. Requires
MKL.jl.
Array Data Structures
See also algorithm-data-structure.
- ArrayInterface.jl : Designs for new Base array interface primitives.
- BlockArrays.jl : BlockArrays for Julia.
- CategoricalArrays.jl : Arrays for working with categorical data (both nominal and ordinal) in Julia.
- ComponentArrays.jl : Arrays with arbitrarily nested named components.
- ContinuumArrays.jl : A package for representing quasi arrays with continuous indices.
- DiskArrays.jl : Accessing array data on slower media (e.g., hard disk).
- IndirectArrays.jl : Julia implementation of indexed or “lookup” arrays.
- InfiniteArrays.jl : A Julia package for representing infinite-dimensional arrays.
- LabelledArrays.jl : Arrays with a label for each element.
- LazyArrays.j : Lazy arrays and linear algebra in Julia.
- LazyGrids.jl : lazy representation of multi-dimensional grids.
- MappedArrays.jl : Lazy in-place transformations of arrays.
- NamedArrays.jl : Julia type that implements a drop-in replacement of Array with named dimensions and Dict-type indexes.
- OffsetArrays.jl : Fortran-like arrays with arbitrary, zero or negative starting indices.
- QuasiArrays.jl : A package for representing quasi-arrays, viz. arrays with non-classical indexing, including possibly continuous indexing.
- RandomMatrices.jl : Random Matrices, extending the
Distributionspackage to provide methods for working with matrix-valued random variables. - RangeArrays.jl : Efficient and convenient array data structures where the columns of the arrays are generated (on the fly) by Ranges.
- RecursiveArrayTools.jl : Tools for easily handling nesting array objects like arrays of arrays.
- ShiftedArrays.jl : Lazy shifted arrays implementation for data analysis in Julia.
- StaticArrays.jl : Statically sized arrays for Julia.
- StrideArrays.jl : Library supporting the ArrayInterface.jl strided array interface.
- StructArrays.jl : Efficient implementation of struct arrays.
- SuffixArrays.j : Native Julia suffix array implementation.
- UniqueVectors.jl : Vectors of unique elements, with quick reverse lookups.
- Vec.jl : Provides 2D and 3D vector types for vector operations. All types are immutable and are subtypes of
StaticArrays.jl.
Matrices
Special Array/Matrix Algorithms, for Array Types, see Data Types section.
- AxisAlgorithms.jl : Efficient filtering and linear algebra routines for multidimensional arrays.
- BandedMatrices.j : A Julia package for representing banded matrices.
- CatIndices.jl : Julia package for indices-aware array concatenation and growth.
- EndpointRanges.jl : Julia package for doing arithmetic on endpoints in array indexing.
- HMatrices.jl : A Julia library for hierarchical matrices.
- IncrementalSVD.jl : Simon Funk’s approach to collaborative filtering using the singular value decomposition, implemented in Julia.
- Kronecker.jl : efficiently work with Kronecker products.
- KSVD.jl : K-SVD is an algorithm for creating over-complete dictionaries for sparse representations. JuliaCon 2024 video
- LowRankApprox.jl : Fast low-rank matrix approximation in Julia.
- MatrixDepot.jl : An Extensible Test Matrix Collection for Julia. Documentation
- PaddedViews.jl : Add virtual padding to the edges of an array.
- PDMats.jl : Uniform Interface for positive definite matrices of various structures.
- PositiveFactorizations.jl : Positive-definite (approximations) to matrices.
- Pseudospectra.jl : a package for computing pseudospectra of non-symmetric matrices, and plotting them along with eigenvalues (“spectral portraits”).
- RandomizedDiagonalEstimation.jl : randomized diagonal estimation of matrices and matrix functions. JuliaCon 2024 video
- SpecialMatrices.j : Julia package for working with special matrix types.
- ToeplitzMatrices.jl : Fast matrix multiplication and division for Toeplitz matrices in Julia.
- TSVD.jl : Truncated singular value decomposition with partial reorthogonalization.
- WoodburyMatrices.jl : Library support for the Woodbury matrix identity.
Sparse Matrices
- InteractiveFixedEffectModels.jl : Estimate factor models on sparse datasets.
- MUMPS.jl : An interface to MUMPS, a libray for the solution of sparse linear systems on multicore computers.
- HarwellRutherfordBoeing.jl : A Julia Reader for the Harwell-Boeing and Rutherford-Boeing Formats.
- MatrixMarket.jl : A package to read the MatrixMarket file format.
- Metis.jl : Julia interface to the Metis graph-partitioning algorithms.
- MKLSparse.j : Override sparse-dense operations when
MKL.jlis available. - Pardiso.jl : Calling the PARDISO library from Julia.
Tensors
- AbstractTensors.jl : Tensor algebra abstract type interoperability with vector bundle parameter.
- Finch.jl : Finch is a cutting-edge Julia-to-Julia compiler specially designed for optimizing loop nests over sparse or structured multidimensional arrays.
- ITensors.jl : A Julia library for efficient tensor calculations.
- Leibniz.jl : Operator algebras for mixed-symmetry multivariate differentiable tensor fields.
- TensorCast.jl : working with multi-dimensional arrays in index notation.
- TensorOperations.jl : Fast tensor operations using a convenient Einstein index notation.
- Tullio.jl : A very flexible einsum macro. A package for writing array operations in index notation.