Mathematics
Mathematical libraries/packages, and related resources in Julia.
Organizations¶
- Julia Approximation
- Julia Crypto
- Julia Linear Algebra
- Julia Math
- Julia Matrices
- Julia Diff
- Julia sparse
- Julia DSP
- Julia Arrays
General Mathematics packages¶
- andrioni/MPFR.jl : A Julia package for the GNU MPFR library.
- dillondaudert/UMAP.jl : Uniform Manifold Approximation and Projection (UMAP) implementation in Julia.
- dmbates/NLreg.jl : Nonlinear regression in Julia.
- GiovineItalia/Hexagons.jl : Useful tools for working with hexagonal grids.
- JuliaManifolds/Manifolds.jl : a unified interface to define and use manifolds as well as a library of manifolds to use for your projects.
- JuliaMath/FastPow.jl :
@fastpow
speeds up the computation of integer powers in any Julia expression by transforming them into optimal sequences of multiplications, with a slight sacrifice in accuracy. - JuliaMath/GSL.jl : Julia interface to the GNU Scientific Library - GSL.
- JuliaMath/NaNMath.jl : Implementations of basic math functions which return NaN instead of throwing a
DomainError
. - JuliaMath/Tau.jl : A simple module providing definition of the Tau constant = 2pi.
- SciML/NonlinearSolve.jl : Fast implementations of root finding algorithms in Julia using the SciML common interface.
- thofma/Hecke.jl : Computational algebraic number theory.
Cryptography¶
- andrewcooke/CRC.jl : a Julia module for calculating Cyclic Redundancy Checksums (CRCs).
- JuliaCrypto/MD5.jl : A pure julia MD5 implementation.
- JuliaCrypto/Nettle.jl : is a simple wrapper around libnettle, a cryptographic library, providing MD5, SHA1, SHA2 hashing and HMAC functionality, as well as AES encryption/decryption
- JuliaCrypto/SEAL.jl : wrapping the Microsoft SEAL library for homomorphic encryption
- JuliaCrypto/SHA.jl : a performant, 100% native-julia SHA-1, SHA-2 224, 256, 384 and 512, and SHA-3 224, 256, 384 and 512 functions.
- JuliaIO/CRC32.jl : computing the CRC-32 checksum.
- JuliaLang/MbedTLS.jl : Wrapper around mbedtls.
- JuliaRandom/RNGTest.jl : A package that is a Julia interface to the test suite TestU01 of Pierre l'Ecuyer to test random numbers.
- braneproject/ECC.jl : Elliptic Curve Cryptography in Julia (secp256k1 curve).
Cryptocurrency¶
- Julia-Blockchain/LearnBlockChain : Block chain tutorial in Julia.
Computer Arithmetic¶
- Wikipedia: Computer Arithmetic
- ent : Primes, Congruences, and Secrets.
- jlapeyre/DeepConvert.jl : This package provides convenient literal construction of values of large data types.
- tshort/Calc.jl : An RPN calculator for the Julia REPL.
Floating Point¶
For floating-point datatypes, see data-structures.
- JeffreySarnoff/ErrorfreeArithmetic.jl : Error-free transformations for arithmetic ops.
- JeffreySarnoff/FastRounding.jl : Faster directed rounding for inline arithmetic.
- JuliaIntervals/ValidatedNumerics.jl : Rigorous floating-point calculations via interval arithmetic.
Algebra¶
Resources: williamstein/adeles algebraic number theory
- JuliaComputing/SemiringAlgebra.jl : Semiring Algebra. A linear algebraic approach to graph algorithms that exploits the sparse adjacency matrix representation of graphs can provide a variety of benefits.
- MurrayT/OEIS.jl : A basic wrapper to allow access to OEIS integer sequences from within Julia.
- Nemocas/Nemo.jl : A computer algebra package for the Julia programming language.
- scheinerman/Mods.jl : Easy modular arithmetic for Julia.
- thofma/Hecke.jl : A package for algebraic number theory that works on top of
Nemo.jl
by Tommy Hofmann and Claus Fieker.
Boolean Algebra¶
- scheinerman/ShowSet.jl : Nicer output for Set and IntSet objects.
Numerical Analysis¶
- cdsousa/LinearExpressions.jl : Linear symbolic expressions for the Julia language.
- floswald/ApproXD.jl : B-splines and linear high-dimensional approximators in multiple dimensions for Julia.
- gwater/PiecewiseInterpolation.jl : A simple interface for interpolations on timeseries with first order discontinuities (using
Dierckx.jl
). - JeffreySarnoff/RollingFunctions.jl : Roll a function over data, run a statistic along a
weighted
data window. - JuliaApproximation/FastGaussQuadrature.jl : A Julia package to compute n-point Gauss quadrature nodes and weights to 16-digit accuracy and in O(n) time.
- JuliaApproximation/FastTransforms.jl : Julia package for fast orthogonal polynomial transforms.
- JuliaDynamics/Simplices.jl : Compute exact simplex intersections in N dimensions.
- JuliaMath/Interpolations.jl : Fast, continuous interpolation of discrete datasets in Julia.
- JuliaSmoothOptimizers/AMD.jl : Approximate Minimum Degree (AMD) Ordering in Julia.
- jump-dev/Dualization.jl : Automatic dualization feature for MathOptInterface.jl conic optimization problems.
- jump-dev/KNITRO.jl : Julia interface to the Knitro solver.
- kbarbary/Dierckx.jl : Julia package for 1-d and 2-d splines, a wrapper for the dierckx Fortran library.
- mrtkp9993/NumericalAlgorithms.jl : Statistics & Numerical algorithms implemented in Julia.
- sisl/GridInterpolations.jl : Multi-dimensional grid interpolation in arbitrary dimensions on a recti-linear grid.
- stevengj/Sobol.jl : is a generation of Sobol low-discrepancy sequence (LDS) implementation, that generates quasi-random sequences of points in N dimensions which are equally distributed over an N-dimensional hypercube.
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
- aaw/IncrementalSVD.jl : Simon Funk's approach to collaborative filtering using the singular value decomposition, implemented in Julia.
- chakravala/DirectSum.jl : Abstract tangent bundle vector space type operations.
- chakravala/Leibniz.jl : Operator algebras for mixed-symmetry multivariate differentiable tensor fields.
- christianpeel/LLLplus.jl : LLL lattice reduction, sphere decoder, and related lattice tools.
- fverdugo/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
- gragusa/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.
- JuliaFolds/FGenerators.jl : A package for defining
Transducers.jl
-compatible extendedfoldl
with a simple@yield
-based syntax. - JuliaFolds/Transducers.jl : provides composable algorithms on "sequence" of inputs. This feature, available in Clojure language, is a transformation matrix for linear transformations that is now in Julia.
- JuliaLinearAlgebra/GenericLinearAlgebra.jl : Partly to extend linear algebra functionality in base to cover generic element types, e.g.
BigFloat
andQuaternion
, and partly to be a place to experiment with fast linear algebra routines. - JuliaLinearAlgebra/IterativeSolvers.jl : Iterative algorithms for solving linear systems, eigen systems, and singular value problems.
- JuliaLinearAlgebra/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.
- JuliaLinearAlgebra/MKL.jl : Intel MKL linear algebra backend for Julia.
- JuliaMath/IntelVectorMath.jl : Julia bindings for the Intel Vector Math Library.
- JuliaParallel/Elemental.jl : A Julia interface to the Elemental linear algebra library with third-party interfaces.
-
JuliaRandom/VSL.jl : Julia bindings for the Intel Vector Statistics Library. Requires
MKL.jl
. -
mcabbott/TensorCast.jl : working with multi-dimensional arrays in index notation.
- wildart/LMCLUS.jl : Julia's package for Linear Manifold Clustering.
Array Data Structures¶
- davidavdav/NamedArrays.jl : Julia type that implements a drop-in replacement of Array with named dimensions and Dict-type indexes.
- eschnett/FastArrays.jl : Multi-dimensional arrays with arbitrary upper and lower bounds that can be fixed at compile time.
- garrison/UniqueVectors.jl : Vectors of unique elements, with quick reverse lookups.
- JuliaApproximation/ContinuumArrays.jl : A package for representing quasi arrays with continuous indices.
- JuliaApproximation/QuasiArrays.jl : A package for representing quasi-arrays, viz. arrays with non-classical indexing, including possibly continuous indexing.
- JuliaArrays/ArrayInterface.jl : Designs for new Base array interface primitives.
- JuliaArrays/BlockArrays.jl : BlockArrays for Julia.
- JuliaArrays/IndirectArrays.jl : Julia implementation of indexed or "lookup" arrays.
- JuliaArrays/InfiniteArrays.jl : A Julia package for representing infinite-dimensional arrays.
- JuliaArrays/LazyArrays.jl : Lazy arrays and linear algebra in Julia.
- JuliaArrays/LazyGrids.jl : lazy representation of multi-dimensional grids.
- JuliaArrays/MappedArrays.jl : Lazy in-place transformations of arrays.
- JuliaArrays/OffsetArrays.jl : Fortran-like arrays with arbitrary, zero or negative starting indices for arrays in Julia. The main purpose of this package is to simplify translation from Fortran codes intensively using Fortran arrays with negative and zero starting indices, such as the codes accompanying the book Numerical Solution of Hyperbolic Partial Differential Equations by prof. John A. Trangenstein.
- JuliaArrays/RangeArrays.jl : Efficient and convenient array data structures where the columns of the arrays are generated (on the fly) by Ranges.
- JuliaArrays/ShiftedArrays.jl : Lazy shifted arrays implementation for data analysis in Julia.
- JuliaArrays/StaticArrays.jl : Statically sized arrays for Julia.
- JuliaArrays/StructArrays.jl : Efficient implementation of struct arrays.
- JuliaCollections/SuffixArrays.jl : Native Julia suffix array implementation.
- JuliaData/CategoricalArrays.jl : Arrays for working with categorical data (both nominal and ordinal) in Julia.
- JuliaMath/RandomMatrices.jl : Random Matrices, extending the
Distributions
package to provide methods for working with matrix-valued random variables. - JuliaSIMD/StrideArrays.jl : Library supporting the ArrayInterface.jl strided array interface.
- meggart/DiskArrays.jl : Accessing array data on slower media (e.g., hard disk).
- RalphAS/Pseudospectra.jl : a package for computing pseudospectra of non-symmetric matrices, and plotting them along with eigenvalues ("spectral portraits").
- sisl/Vec.jl : Provides 2D and 3D vector types for vector operations. All types are immutable and are subtypes of
StaticArrays.jl
. - timholy/NamedAxesArrays.jl : Performant arrays where each axis can be named.
Matrices¶
Special Array/Matrix Algorithms, for Array Types, see Data Types section.
- RomeoV/KSVD.jl : K-SVD is an algorithm for creating over-complete dictionaries for sparse representations. JuliaCon 2024 video
- JuliaArrays/CatIndices.jl : Julia package for indices-aware array concatenation and growth.
- JuliaArrays/EndpointRanges.jl : Julia package for doing arithmetic on endpoints in array indexing.
- JuliaArrays/PaddedViews.jl : Add virtual padding to the edges of an array.
- JuliaLinearAlgebra/TSVD.jl : Truncated singular value decomposition with partial reorthogonalization.
- JuliaMatrices/BandedMatrices.jl : A Julia package for representing banded matrices.
- JuliaMatrices/LowRankApprox.jl : Fast low-rank matrix approximation in Julia.
- JuliaMatrices/MatrixDepot.jl : An Extensible Test Matrix Collection for Julia. Documentation
- JuliaMatrices/SpecialMatrices.jl : Julia package for working with special matrix types.
- JuliaMatrices/ToeplitzMatrices.jl : Fast matrix multiplication and division for Toeplitz matrices in Julia.
- JuliaStats/PDMats.jl : Uniform Interface for positive definite matrices of various structures.
- MichielStock/Kronecker.jl : A general-purpose toolbox for efficient Kronecker-based algebra that combines lazy evaluation and algebraic tricks such that it can implicitly work with huge matrices. It allows to work with large Kronecker systems both much faster and using much less memory than the naive implementation of the Kronecker product.
- timholy/AxisAlgorithms.jl : Efficient filtering and linear algebra routines for multidimensional arrays.
- timholy/PositiveFactorizations.jl : Positive-definite (approximations) to matrices.
- timholy/WoodburyMatrices.jl : Library support for the Woodbury matrix identity.
- WaveProp/HMatrices.jl : A Julia library for hierarchical matrices.
- niclaspopp/RandomizedDiagonalEstimation.jl : randomized diagonal estimation of matrices and matrix functions. JuliaCon 2024 video
Sparse Matrices¶
- FixedEffects/InteractiveFixedEffectModels.jl : Estimate factor models on sparse datasets.
- JuliaSmoothOptimizers/MUMPS.jl : An interface to MUMPS, a libray for the solution of sparse linear systems on multicore computers.
- JuliaSparse/HarwellRutherfordBoeing.jl : A Julia Reader for the Harwell-Boeing and Rutherford-Boeing Formats.
- JuliaSparse/MatrixMarket.jl : A package to read the MatrixMarket file format.
- JuliaSparse/Metis.jl : Julia interface to the Metis graph-partitioning algorithms.
- JuliaSparse/MKLSparse.jl : Override sparse-dense operations when MKL is available.
- JuliaSparse/Pardiso.jl : Calling the PARDISO library from Julia.
Tensors¶
- ahwillia/Einsum.jl : Einstein summation notation in julia.
- chakravala/AbstractTensors.jl : Tensor algebra abstract type interoperability with vector bundle parameter.
- ITensor/ITensors.jl : A Julia library for efficient tensor calculations.
- Jutho/TensorOperations.jl : Julia package for tensor contractions and related operations.
- mcabbott/Tullio.jl : A very flexible einsum macro. A package for writing array operations in index notation.
- willow-ahrens/Finch.jl : Finch is a cutting-edge Julia-to-Julia compiler specially designed for optimizing loop nests over sparse or structured multidimensional arrays.
Digital signal processing (DSP)¶
- JuliaDSP/DSP.jl : Filter design, periodograms, window functions, and other digital signal processing functionality.
- JuliaDSP/Wavelets.jl : Fast Discrete Wavelet Transforms written in Julia by JuliaDSP.
- nantonel/ImageMethodReverb.jl : Julia implementation of a Room Acoustics Impulse Response Generator using the Randomized Image Method (RIM).
- sairus7/SortFilters.jl : Fast moving quantile filters implemented as fast moving window sort algorithm.
- stevengj/MDCT.jl : This module computes the modified discrete cosine transform (MDCT) in the Julia language and the inverse transform (IMDCT), using the fast type-IV discrete cosine transform (DCT-IV) functions in Julia (via FFTW).
Fast Fourier transform (FFT)¶
- bionanoimaging/FourierTools.jl : Tools for working with Fourier space. JuliaCon 2021 video
- gwater/HexFFT.jl : Fast Fourier transform on hexagonal grids using Birdsong and Rummelt's algorithm.
- JuliaArrays/FFTViews.jl : Julia package for fast fourier transforms and periodic views.
- JuliaMath/FFTW.jl : Julia bindings to the FFTW library for fast Fourier transforms.
- JuliaMath/NFFT.jl : Julia implementation of the Non-equidistant Fast Fourier Transform (NFFT).
Symbolic Computation¶
Polynomials¶
- andreasnoack/FastPolynomialRoots.jl : Fast and backward stable computation of roots of polynomials in Julia.
- daviddelaat/MultiPoly.jl : Sparse multivariate polynomials in Julia. (No
Project.toml
) - giordano/PolynomialRoots.jl : Fast complex polynomial root finder, with support for arbitrary precision calculations
- JuliaAlgebra/FixedPolynomials.jl : A package for really fast evaluation of multivariate polynomials. (No
Project.toml
) - JuliaAlgebra/MultivariatePolynomials.jl : Multivariate polynomials and multivariate moments.
- JuliaAlgebra/SemialgebraicSets.jl : Extension of MultivariatePolynomials to semi-algebraic sets.
- JuliaIntervals/TaylorModels.jl : A numerical mathematics package to treat the high-order scaling property of the remainder bound interval in a Taylor polynomial. 📹 JuliaCon 2018.
- JuliaMath/Polynomials.jl : Polynomial manipulations and PolyExt, an extension of Polynomial.jl to support polynomial division, with handy conversions and promotion rules.
- pjabardo/Jacobi.jl : Jacobi polynomials and Gauss quadrature related functions.
- RJDennis/ChebyshevApprox.jl : Julia code to approximate continuous functions using Chebyshev polynomials.
- simonbyrne/Remez.jl : Remez algorithm for computing minimax polynomial approximations.
- timholy/CoordinateSplittingPTrees.jl : Accurate and efficient full-degree multidimensional polynomial interpolation.
Functions¶
Evaluation and approximations of functions
- gwater/Struve.jl : Struve functions for Julia.
- jlapeyre/LambertW.jl : A package implementing the Lambert_W function and associated omega constant.
- JuliaApproximation/ApproxFun.jl : Julia package for function approximation.
- JuliaApproximation/BasisFunctions.jl : A collection of routines for working with a number of standard basis functions. For more complete software packages to manipulate numerical function approximations, please consider ApproxFun.
- JuliaApproximation/FrameFun.jl : Exploring practical possibilities of approximating functions with frames rather than with a basis.
- JuliaMath/SpecialFunctions.jl : Special mathematical functions in Julia.
- nolta/Elliptic.jl : Elliptic integral and Jacobi elliptic special functions.
Calculus¶
- Riemann Hypothesis book with the source code on github.
- Calculus With Julia : Introductory Calculus with the Julia Programming Language.
- An IJulia notebook showing Taylor's method integration of the pendulum.
- giordano/Cuba.jl : Library for multidimensional numerical integration with the Cuba library.
- JuliaApproximation/FastGaussQuadrature.jl : Computes Gauss quadrature rules to 16-digit precision (so far Legendre, Jacobi, Lobatto, Radau).
- JuliaDiff/FiniteDiff.jl : Fast non-allocating calculations of gradients, Jacobians, and Hessians with sparsity support.
- JuliaDiff/FiniteDifferences.jl : estimating derivatives with finite differences.
- JuliaDiff/TaylorSeries.jl : A julia package for Taylor expansions in one independent variable.
- JuliaMath/Calculus.jl : Calculus package.
- JuliaMath/Cubature.jl : One- and multi-dimensional adaptive integration routines for the Julia language.
- JuliaMath/HCubature.jl : Pure-Julia multidimensional h-adaptive integration.
- JuliaMath/Roots.jl : Root finding functions for Julia.
- krcools/WiltonInts84.jl : Integrals of arbitrary powers of R over flat triangles.
- scheinerman/RiemannComplexNumbers.jl : The RiemannComplexNumbers module is an alternative Complex type for Julia (with a single complex infinity value).
- SciFracX/FractionalCalculus.jl : High performance and high precision numerical fractional calculus computing.
- SciML/Integrals.jl : A common interface for quadrature and numerical integration.
Automatic Differentiation¶
- gdalle/DifferentiationInterface.jl : An interface to various automatic differentiation backends in Julia. JuliaCon 2024 video
- dfdx/Yota.jl : Reverse-mode automatic differentiation for static and dynamic graphs.
- EnzymeAD/Enzyme.jl : Julia bindings for the Enzyme automatic differentiator. The Enzyme project is a tool for performing reverse-mode automatic differentiation (AD) of statically-analyzable LLVM IR.
- FluxML/Zygote.jl : Source-to-source automatic differentiation (AD) in Julia, and is the next-gen AD system for the Flux differentiable programming framework.
- gaurav-arya/StochasticAD.jl : automatic differentiation of programs containing discrete randomness. JuliaCon 2023 video
- JuliaDiff/ChainRules.jl : forward and reverse mode automatic differentiation primitives.
- JuliaDiff/Diffractor.jl : An experimental next-generation, compiler-based AD system for Julia.
- JuliaDiff/DualNumbers.jl : Julia package for representing dual numbers and for performing dual algebra.
- JuliaDiff/ForwardDiff.jl : Forward Mode Automatic Differentiation for Julia.
- JuliaDiff/HyperDualNumbers.jl : Hyper-Dual Numbers for Exact Second-Derivative Calculations, is structured similar to the DualNumbers package, which aims for complete support for HyperDual types for numerical functions within Julia's Base. Currently, basic mathematical operations and trigonometric functions are supported.
- JuliaDiff/ReverseDiff.jl : Reverse Mode Automatic Differentiation for Julia.
- mlubin/ReverseDiffSparse.jl : Hessian algorithmic differentiation to compute hessian sparsity pattern.
- TimSiebert1/ADOLC.jl : A Julia wrapper of the automatic differentiation package coin-or/ADOL-C. JuliaCon 2024 video
Mathematical Analysis¶
Wikipedia: Mathematical Analysis
- chakravala/Fatou.jl : Fatou/Julia sets in Julia (Fractals, Newton basins, Mandelbrot).
- chakravala/Wilkinson.jl : Toolkit for studying numerical analysis and floating point algebra round-off error in Julia.
- chkwon/Complementarity.jl : This package provides a modeling and computational interface for solving Mixed Complementarity Problems (MCP), modeling by
JuMP.jl
and computing byPATHSolver.jl
. - chkwon/PATHSolver.jl : This package provides a Julia wrapper of the PATH Solver for solving linear Mixed Complementarity Problems (MCP).
Discrete math¶
- jlapeyre/PermPlain.jl : Permutations of integers.
- jlapeyre/ZChop.jl : Replaces small numbers with zero.
- scheinerman/Permutations.jl : Permutations class for Julia.
- scheinerman/SimplePosets.jl : Simple partially ordered sets for Julia.
- StefanKarpinski/Collatz.jl : The Collatz conjecture.
Graph Theory¶
See graph theory section.
Information theory¶
- Tchanders/InformationMeasures.jl : Entropy, mutual information and higher order measures from information theory, with various estimators and discretisation methods.