Linear Algebra

Linear Algebra


  • 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. BigFloat and Quaternion, 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 Distributions package 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

Wikipedia: Matrix Theory

Special Array/Matrix Algorithms, for Array Types, see Data Types section.

Sparse Matrices


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.