# π General mathematical tools in Julia

Contents

Mathematical libraries/ packages, and related resources.

^{1}

## See also

- Julia Approximation
- Julia Crypto
- Julia Linear Algebra
- Julia Math
- Julia Matrices
- Julia Diff
- Julia sparse
- Julia DSP.

- ποΈ means the package may not support current versions of Julia.
- ποΈ means the package may be a WIP.

## General Mathematics packages

- AppleAccelerate.jl :: Julia interface to OS X’s Accelerate framework.
- EntropicCone.jl :: Entropic Cone approximation and optimization
- GSL.jl :: Julia interface to the GNU Scientific Library - GSL.
- Hecke.jl :: Computational algebraic number theory
- Hexagons.jl :: Useful tools for working with hexagonal grids.
- MPFR.jl :: A Julia package for the GNU MPFR library.
- MTH229.jl :: Helper files for using Julia with MTH229.
- NaNMath.jl :: Implementations of basic math functions which return NaN instead of throwing a
`DomainError`

. - NLreg.jl :: Nonlinear regression in Julia.
- Tau.jl :: A simple module providing definition of the Tau constant = 2pi.
- TSne.jl :: Julia port of L.J.P. van der Maaten and G.E. Hinton’s T-SNE visualisation technique.

WIP or may not work

- ποΈ ApApproximation.jl :: Implementation of the almost-periodic approximation.
- ποΈ Cartesian.jl :: Fast multidimensional algorithms. Now in Julia
`Base`

. - ποΈ ContinuedFractions.jl :: Types and functions for working with continued fractions in Julia. (No
`Project.toml`

) - ποΈ CRF.jl :: Conditional Random Fields in Julia.
- ποΈ Devectorize.jl :: A Julia framework for delayed expression evaluation.
- ποΈ Entropy.jl :: This package contains functionality for computing binless estimates of entropy from discrete and continuous samples for continuous distributions.
- ποΈ ExtremeValueDistributions.jl :: A Julia package to fit extreme value distributions.
- ποΈ FloorLayout.jl :: Framework and various drivers for floor layout formulation analysis.
- ποΈ MathToolkit.jl :: A Julia package providing various functions mainly for the purpose of experimental mathematics.
- ποΈ Multicombinations.jl :: An iterator for k-combinations with repetitions, k-multicombinations, k-multisubsets.
- ποΈ Shannon.jl :: Entropy, Mutual Information, KL-Divergence related to Shannon’s information theory and functions to binarize data.
- ποΈ SimilarityMetrics.jl :: Standard similarity metrics in Julia.
- ποΈ Smolyak :: Efficient implementations of Smolyak’s algorithm for function approxmation in Python and Julia.
- ποΈ TwoBasedIndexing.jl :: Two-based indexing.
- ποΈ Uncertain.jl :: Uncertain quantities and error propagation for the Julia language.
- ποΈ univariate__opt.jl :: Univariate optimization and root-finding code for Julia.
- ποΈ Unums.jl :: Unum (Universal Number) types and operations.
- ποΈ utils.jl :: basic utilities needed for scientific coding with julia.

## Cryptography

- MbedTLS.jl :: Wrapper around mbedtls.
- MD5.jl :: A pure julia MD5 implementation.
- 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
- RNGTest.jl :: A package that is a Julia interface to the test suite TestU01 of Pierre l’Ecuyer to test random numbers.
- 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.
- SEAL.jl :: wrapping the Microsoft SEAL library for homomorphic encryption

WIP or may not work

- ποΈ ToyFHE.jl :: Toy implementation of FHE algorithms.
- ποΈ BlockCipherSelfStudy.jl :: Blocks, and RC5.
- ποΈ Crypto.jl :: A library that wraps OpenSSL, but also has pure Julia implementations for reference.
- ποΈ FNVHash.jl :: FNV (Fowler/Noll/Vo) is a fast, non-cryptographic hash algorithm with good dispersion.
- ποΈ OpenSSL.jl :: WIP OpenSSL bindings for Julia.
- ποΈ OpenSSLCrypto.jl :: Julia interface to the crypto API of openssl.
- ποΈ RNGTesting :: Scripts for testing Julia’s RNG’s.
- ποΈ Sha256.jl :: sha25 hash algorithm for Julia.
- ποΈ Stupid.jl :: Analysis of an 8 bit version of the cipher at http://news.quelsolaar.com/#comments101.

### Cryptocurrency

WIP or may not work

- ποΈ BitCoin.jl :: A library for working with Bitcoin written in Julia.
- ποΈ BitcoinBlockchain.jl :: Julia package for analyzing the Bitcoin blockchain via the API provided by https://blockchain.info/.

## Computer Arithmetic

- Elementary Number Theory :: Primes, Congruences, and Secrets.
- Calc.jl :: An RPN calculator for the Julia REPL.
- DeepConvert.jl :: This package provides convenient literal construction of values of large data types.

### Floating Point

For floating-point datatypes, see Data Types Section.

- ErrorfreeArithmetic.jl :: Error-free transformations for arithmetic ops.
- FastRounding.jl :: Faster directed rounding for inline arithmetic.
- ValidatedNumerics.jl :: Rigorous floating-point calculations via interval arithmetic.

WIP or may not work

- ποΈ ErrorFreeTransforms.jl :: Map the rounding errors in floating point arithmetic with error-free transformations (EFT).
- ποΈ Ryu.jl :: Julia implementation of ryu that converts floating point numbers to decimal strings.
- ποΈ UnumX.jl :: Experimental Unums.

## Modelling and Simulations

- Mimi.jl :: Integrated Assessment Modeling Framework.
- OptiMimi.jl :: Optimization for the
`Mimi.jl`

modeling framework.

## Algebra

Resources: Ideles adeles algebraic number theory.

- Equations.jl :: Derive mathematical relations.
- Hecke.jl :: A package for algebraic number theory that works on top of
`Nemo.jl`

by Tommy Hofmann and Claus Fieker. - HemirealFactorization.jl :: Matrix factorizations over the hemireals.
- HemirealNumbers.jl :: Implementation of hemireal arithmetic for Julia.
- Mods.jl :: Easy modular arithmetic for Julia.
- Nemo.jl :: A computer algebra package for the Julia programming language.
- OEIS.jl :: A basic wrapper to allow access to OEIS integer sequences from within Julia.
- SemiringAlgebra.jl :: Semiring Algebra.

WIP or may not work

- ποΈ algebra :: A hierarchy of abstract algebraic structures in Julia.
- ποΈ Clockwork.jl :: Represent modular arithmetic via clock symbols.
- ποΈ Cuhre.jl :: Simplified Julia interface to Cuhre integration routine.
- ποΈ Digits.jl :: A module for integer digit manipulation.
- ποΈ FirstOrderLogic.jl :: This package aims to include functions that manipulate mathematical logic.
- ποΈ Juniper.jl :: A simple computer algebra system.

### Boolean Algebra

- ShowSet.jl :: Nicer output for Set and IntSet objects.

WIP or may not work

- ποΈ BitCircuits.jl :: Boolean circuit evaluation using bitwise operations.

## Numerical Analysis

- AMD.jl :: Approximate Minimum Degree Ordering in Julia.
- ApproXD.jl :: B-splines and linear high-dimensional approximators in multiple dimensions for Julia.
- Dierckx.jl:: Julia package for 1-d and 2-d splines, a wrapper for the dierckx Fortran library.
- Dualization.jl :: Automatic dualization feature for MathOptInterface.jl conic optimization problems.
- Expokit.jl :: A package that provides Julia implementations of some routines contained in EXPOKIT.
- FastGaussQuadrature.jl :: A Julia package to compute n-point Gauss quadrature nodes and weights to 16-digit accuracy and in O(n) time.
- FastTransforms.jl :: Julia package for fast orthogonal polynomial transforms.
- GridInterpolations.jl :: Multi-dimensional grid interpolation in arbitrary dimensions on a recti-linear grid.
- Interpolations.jl :: Fast, continuous interpolation of discrete datasets in Julia.
- Knitro.jl :: Julia interface to the Knitro solver.
- LinearExpressions.jl :: Linear symbolic expressions for the Julia language.
- NumericalAlgorithms.jl :: Statistics & Numerical algorithms implemented in Julia.
- PiecewiseInterpolation.jl :: A simple interface for interpolations on timeseries with first order discontinuities (using
`Dierckx.jl`

). - Simplices.jl :: Compute exact simplex intersections in N dimensions.
- 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.

WIP or may not work

- ποΈ Dopri.jl :: A Julia wrapper for the DOPRI5 and DOP853 integrators.
- ποΈ EiSCor.jl :: A Julia wrapper of the Fortran library eiscor.
- ποΈ Grid.jl :: Interpolation and related operations on grids. Deprecated in favor of
`Interpolations`

. - ποΈ OpenSpecFun.jl :: A Julia wrapper for the OpenSpecFun library of special functions.
- ποΈ RK4.jl :: This package implements a fairly fast Runge-Kutta 4th order with fixed stepsize, also implements a stochastic solver that is not technically provably accurate, but works well for finite bandwidth SDE’s.
- ποΈ RungeKuttaFehlberg.jl :: A Julia implementation of the RKF45 method for time integration.

## Linear Algebra

- CLBLAS.jl :: CLBLAS integration for Julia. (No
`Project.toml`

) - 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. Source code.
- FEMBasis.jl :: Package contains interpolation routines for standard finite element function spaces.
- FGenerators.jl :: A package for defining Transducers.jl-compatible extended foldl with a simple
`@yield`

-based syntax. - 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. - IncrementalSVD.jl :: Simon Funk’s approach to collaborative filtering using the singular value decomposition, implemented in Julia.
- IntelVectorMath.jl :: Julia bindings for the Intel Vector Math Library.
- ITensors.jl:: A Julia library for efficient tensor calculations.
- IterativeSolvers.jl :: Iterative algorithms for solving linear systems, eigensystems, and singular value problems.
- JuliaFEM.jl :: Finite Element method solver.
- Krylov.jl :: A Julia Basket of Hand-Picked Krylov Methods.
- Leibniz.jl :: Operator algebras for mixed-symmetry multivariate differentiable tensor fields.
- 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.
- LMCLUS.jl :: Julia’s package for Linear Manifold Clustering.
- MKL.jl :: Intel MKL linear algebra backend for Julia
- MUMPS :: A wrapper for a MUltifrontal Massively Parallel sparse direct Solver of large linear systems in Julia.
- MUMPSjInv.jl :: An alternative implementation of a Julia interface to the sparse direct solver MUMPS. A MUMPS package for Julia is already registered but that package does not conform to the packaging standards for Julia.
- PETSc.jl :: This package provides a high level interface for PETSc, enabling the use of PETSc as an AbstractArray.
- SugarBLAS.jl :: Syntactic sugar for BLAS polynomials.
- TensorOperations.jl :: Julia package for tensor contractions and related operations.
- 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.
- Tullio.jl :: A package for writing array operations in index notation.
- VSL.jl :: Julia bindings for the Intel Vector Statistics Library.

WIP or may not work

- ποΈ Accelereval.jl :: A Julia framework for accelerated re-compiled evaluation of numerical functions that ensures faster computation.
- ποΈ BSplines.jl :: This package provides B-Splines for 1D signals, i.e. functions of type Real -> Real.
- ποΈ CUSOLVER.jl :: Julia bindings for the NVIDIA CUSOLVER library. CUSOLVER is a high-performance direct-solver matrix linear algebra library.
- ποΈ CUSPARSE.jl :: Julia interface to NVIDIA’s CUSPARSE library.
- ποΈ Hypre.jl :: A wrapper for the Hypre library.
- ποΈ IDRsSolver.jl :: Induced Dimension Reduction method [IDR(s)] for solving general linear equations. Incorporated into
`IterativeSolvers.jl`

. - ποΈ IterativeLinearSolvers.jl.
- ποΈ JointMoments.jl :: Tensors and statistics for joint central moments.
- ποΈ LDA.jl :: Linear Discriminant Analysis and Kernel Fisher Analysis.
- ποΈ LMesh.jl :: A Mesh package that implements the type of mesh sugessted by Logg (2012).
- ποΈ MiniBall.jl :: Julia package for a smallest enclosing sphere for points in arbitrary dimensions.
- ποΈ NumericalShadow.jl :: Library to calculate numerical shadows in Julia language.
- ποΈ NumericExtensions.jl :: Julia extensions to provide high performance computational support for fast vectorized computation.
- ποΈ NumericFunctors.jl :: Typed functors for numerical computations.
- ποΈ NumericFuns.jl :: Math functions and functors for numerical computations.
- ποΈ OpenCLBLAS.jl :: OpenCL BLAS library wrapper for Julia with samples.
- ποΈ ParallelLinalg.jl :: Distributed Dense Linear Algebra for Julia.
- ποΈ PNLA_Julia :: Polynomial Multi-functional Numerical Linear Algebra package for solving all kinds of problems with multivariate polynomials in double precision in Julia.
- ποΈ SALT.jl :: SALT (steady-state ab-initio laser theory) solver package for Julia. (No
`Project.toml`

) - ποΈ SuperLU.jl :: Julia interface to the SuperLU solver package for sparse systems.

### Matrices

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

- AxisAlgorithms.jl :: Efficient filtering and linear algebra routines for multidimensional arrays.
- CatIndices.jl :: Julia package for indices-aware array concatenation and growth.
- ConvolutionTools.jl :: Tools for convolutions of multi-dimensional arrays in Julia.
- EndpointRanges.jl :: Julia package for doing arithmetic on endpoints in array indexing.
- Kronecker.jl :: A general-purpose toolbox for efficient Kronecker-based algebra that combines lazy evaluation and algebraic tricks such that it can implicitely 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.
- KSVD.jl :: K-SVD is an algorithm for creating overcomplete dictionaries for sparse representations.
- LowRankApprox.jl :: Fast low-rank matrix approximation in Julia.
- 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.

WIP or may not work

- ποΈ ArrayIteration.jl :: Testing new ideas for array iteration. Some of the features have already moved to Julia itself.
- ποΈ ArrayMeta.jl :: metaprogramming for Julia arrays.
- ποΈ ArrayViews.jl :: A Julia package to explore a new system of array views. No longer necessary in Julia 0.4 or higher.
- ποΈ ArrayViewsAPL.jl :: Generic array-view type with APL indexing semantics.
- ποΈ FArrayMod.jl :: provides the ability to use arbitrary starting indices for arrays in Julia programming language.
- ποΈ HMat.jl :: Hierarchical Matrix.
- ποΈ InplaceOps.jl :: Convenient macros for in-place matrix operations in Julia.
- ποΈ julia-delayed-matrix :: Delayed processing of Vector / Matrix expression in Julia with various backends.
- ποΈ LargeColumns.jl :: Handle large columns (vectors of equal length) with bits types in Julia using mmap.
- ποΈ Showoff.jl :: Nicely format an array of n things for tables and plots.

#### Sparse Matrices

- HarwellRutherfordBoeing.jl :: A Julia Reader for the Harwell-Boeing and Rutherford-Boeing Formats.
- InteractiveFixedEffectModels.jl :: Estimate factor models on sparse datasets.
- MatrixMarket.jl :: A package to read the MatrixMarket file format.
- Metis.jl :: Julia interface to the Metis graph-partitioning algorithms.
- MKLSparse.jl :: Override sparse-dense operations when MKL is available.
- MUMPS.jl :: An interface to MUMPS (a MUltifrontal Massively Parallel sparse direct Solver) to efficiently solve large and sparse linear systems in scientific computing.
- Pardiso.jl :: Calling the PARDISO library from Julia.

WIP or may not work

- ποΈ CSparse.jl :: A Julia implementation of functions in the CSparse and CXSparse libraries.
- ποΈ MultiFrontalCholesky.jl :: The Cholesky decomposition of a Hermitian, positive-definite matrix into the product of a lower triangular matrix and its conjugate transpose, used for efficient numerical solutions and Monte Carlo simulations.
- ποΈ MUMPSseq.jl :: Alternative Julia interface to MUMPS sparse system solver.
- ποΈ ParallelSparseMatMul.jl :: A Julia library for parallel sparse matrix multiplication using shared memory.
- ποΈ SparseData.jl :: A Julia package to support working with sparse data sets (e.g. text corpus).
- ποΈ WSMP.jl :: Interface to the Watson Sparse Matrix Package.

### Resources

- Homer Reid’s Introduction to Numerical Analysis - Basic Numerical Programming in Julia course.
- 2015Apr09 : 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.
- The Performance Cost of Integer Overflow Checking.
- julia-paper-arrays :: Julia position paper for ARRAY ‘14.
- Benchmarking Matrix Multiplication

## Digital signal processing (DSP)

- DSP.jl ::Filter design, periodograms, window functions, and other digital signal processing functionality.
- ImageMethodReverb.jl :: Julia implementation of a Room Acoustics Impulse Response Generator using the Randomized Image Method (RIM).
- 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 tranform (DCT-IV) functions in Julia (via FFTW).

WIP or may not work

- ποΈ APES.jl :: Amplitude and Phase Estimation of a Sinusoid.
- ποΈ ChaosCommunications.jl :: Simulation of chaos-based communication systems in Julia.
- ποΈ CompressedSensing :: A basic compressed sensing algorithms available via the official package list with documentation.
- ποΈ Estimation.jl :: A julia package for DSP related estimation.
- ποΈ Fdtd.jl :: 3D Room Acoustics Finite Difference Time Domain (FDTD) Simulator.
- ποΈ KDSP.jl :: Yet another implementation of common DSP routines in Julia.
- ποΈ KernelRecursiveLeastSquares.jl :: Julia implementation of Kernel Recursive Least Squares algorithm.
- ποΈ Multirate.jl :: Streaming polyphase DSP filters with sample rate conversion.
- ποΈ WDSP.jl :: Digital signal processing used in turbulence implemented in Julia.

### Fast Fourier transform (FFT)

- FFTViews.jl :: Julia package for fast fourier transforms and periodic views.
- FFTW.jl :: Julia bindings to the FFTW library for fast Fourier transforms.
- HexFFT.jl :: Fast Fourier transform on hexagonal grids using Birdsong and Rummelt’s algorithm.
- NFFT.jl :: Julia implementation of the NFFT : Non-equidistant Fast Fourier Transform.

WIP or may not work

## Symbolic Computation

- Reduce.jl :: Symbolic parser generator for Julia language expressions using REDUCE algebra term rewriter.
- Symata.jl :: language for symbolic mathematics.
- Symbolics.jl :: A fast and modern CAS for a fast and modern language.
- SymEngine.jl :: Julia wrappers of SymEngine.
- SymPy.jl :: Julia interface to SymPy via PyCall.

## Polynomials

- ChebyshevApprox :: Julia code to approximate continuous functions using Chebyshev polynomials.
- CoordinateSplittingPTrees.jl :: Accurate and efficient full-degree multidimensional polynomial interpolation.
- FastPolynomialRoots.jl :: Fast and backward stable computation of roots of polynomials in Julia.
- FixedPolynomials.jl :: A package for really fast evaluation of multivariate polynomials. (No
`Porject.toml`

) - Jacobi.jl :: Jacobi polynomials and Gauss quadrature related functions.
- MultiPoly.jl :: Sparse multivariate polynomials in Julia. (No
`Porject.toml`

) - MultivariatePolynomials.jl :: Multivariate polynomials and multivariate moments.
- Polynomial.jl :: Polynomial manipulations and PolyExt.jl, an extension of Polynomial.jl to support polynomial division, with handy conversions and promotion rules.
- PolynomialRoots.jl :: Fast complex polynomial root finder, with support for arbitrary precision calculations
- Remez.jl :: Remez algorithm for computing minimax polynomial approximations.
- SemialgebraicSets.jl :: Extension of MultivariatePolynomials to semialgebraic sets.
- TaylorModels.jl :: A numerical mathematics package to treat the high-order scaling property of the remainder bound interval in a Taylor polynomial.

WIP or may not work

- ποΈ InterPol.jl :: Interpolating polynomial for Julia.
- ποΈ Orthopolys.jl :: Orthogonal Polynomials - Currently supports Jacobi polyonomials, Gegenbauer polynomials, Hermite polynomials.
- ποΈ TempInterp.jl :: Evaluation of Chebyshev polynomials and splines.

## Functions

Evaluation and approximations of functions

- ApproxFun.jl :: Julia package for function approximation.
- BasisFunctions.jl :: A collection of routines for working with a number of standard basis functions, mainly for use in the FrameFuns package.
- Elliptic.jl :: Elliptic integral and Jacobi elliptic special functions.
- FrameFun.jl :: Exploring practical possibilities of approximating functions with frames rather than with a basis.
- LambertW.jl :: A package implementing the Lambert_W function and associated omega constant.
- SpecialFunctions.jl :: Special mathematical functions in Julia.
- Struve.jl :: Struve functions for Julia.

WIP or may not work

- ποΈ FastAnonymous.jl :: Fast
**anonymous functions**for Julia. A native feature for Julia 0.5+.

## Calculus

- Calculus.jl :: Calculus package.
- ChainRules.jl :: forward and reverse mode automatic differentiation primitives.
- Cuba.jl :: Library for multidimensional numerical integration with the Cuba library.
- Cubature.jl :: One- and multi-dimensional adaptive integration routines for the Julia language.
- DualNumbers.jl :: Julia package for representing dual numbers and for performing dual algebra.
- Einsum.jl :: Einstein summation notation in julia.
- FastGaussQuadrature.jl :: Computes Gauss quadrature rules to 16-digit precision (so far Legendre, Jacobi, Lobatto, Radau).
- FiniteDifferences.jl :: High accuracy derivatives, estimated via numerical finite differences.
- ForwardDiff.jl :: Forward Mode Automatic Differentiation for Julia.
- HCubature.jl :: Pure-Julia multidimensional h-adaptive integration.
- 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.
- NLsolve.jl :: Julia solvers for systems of nonlinear equations.
- ReverseDiff.jl :: Reverse Mode Automatic Differentiation for Julia.
- ReverseDiffSparse.jl :: Hessian algorithmic differentiation to compute hessian sparsity pattern.
- RiemannComplexNumbers.jl :: The RiemannComplexNumbers module is an alternative Complex type for Julia (with a single complex infinity value).
- Roots.jl :: Root finding functions for Julia.
- TaylorSeries.jl :: A julia package for Taylor expansions in one independent variable.

WIP or may not work

- ποΈ IFastSum.jl :: Accurate summation (Yuhang Zhao’s iFastSum).
- ποΈ MINE.jl :: Julia wrapper for Maximal Information-based Nonparametric Exploration (MIC and MINE family).
- ποΈ Options.jl :: A framework for providing optional arguments to functions.
- ποΈ PowerSeries.jl :: Truncated Power Series for Julia.
- ποΈ Quadrature.jl : Gauss quadrature in Base.
- ποΈ ReverseDiffOverload.jl :: Reverse mode differentiation for pre-defined functions.
- ποΈ ReverseDiffSource.jl :: Automated differentiation by reverse accumulation. Documentation.
- ποΈ ReverseDiffTape.jl :: A Julia package for reverse mode differentiation on a tape.

### Solving Differential equations

- DiffEqSensitivity.jl :: A component of the DiffEq ecosystem for sensitivity analysis.
- DifferentialEquations.jl :: Equations within the realm of this package include ordinary differential equations, stochastic ordinary differential equations (SODEs or SDEs), differential algebraic equations (DAEs), stochastic partial differential equations (SPDEs), partial differential equations (with both finite difference and finite element methods), and differential delay equations.
- DiffModels.jl : Diffusion Model simulation and first-passage time densities in Julia.
- DynamicalSystems.jl :: Julia software library for the exploration of chaos and nonlinear dynamics.
- RiemannHilbert.jl :: A Julia package for solving RiemannβHilbert problems.
- SingularIntegralEquations.jl :: An experimental Julia package for solving singular integral equations.
- Sundials.jl :: A Julia package that interfaces to the Sundials library and includes a nonlinear solver (KINSOL), ODE’s (CVODE), and DAE’s (IDA).
- WiltonInts84.jl :: Integrals of arbitrary powers of R over flat triangles.

WIP or may not work

- ποΈ DynamicalSystems.jl :: A collection of Julia functions that produce the systems of ODEs for various dynamical systems.
- ποΈ HPFEM.jl :: HP Finite elements in Julia.
- ποΈ JFinEALE.jl(404) :: A Finite Element Analysis Learning Environment (FinEALE) package for finite element analysis of continua. This toolkit is a redesign of the Matlab toolkit.
- ποΈ Makhno.jl :: Spectral element code implemented in Julia.
- ποΈ MovcolN.jl :: Moving collocation method to solve one dimensional partial differential equations.
- ποΈ TetGen.jl :: Finite Element method solver, a Julia wrapper for the C++ project TetGen.

### Resources about 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.

## Mathematical Analysis

- Complementarity.jl :: This package provides a modeling and computational interface for solving Mixed Complementarity Problems (MCP), modeling by JuMP.jl and computing by PATHSolver.jl.
- Fatou.jl :: Fatou sets in Julia (Fractals, Newton basins, Mandelbrot).
- PATHSolver.jl :: Coverage StatusThis package provides a Julia wrapper of the PATH Solver for solving Mixed Complementarity Problems (MCP).
- Wilkinson.jl :: Toolkit for studying numerical analysis and floating point algebra round-off error in Julia.

## Discrete math

π Discrete math. π Combinatorics.

- Collatz.jl:: The Collatz conjecture.
- PermPlain.jl :: Permutations implemented with plain data types - This package implements methods for manipulating permutations. The methods operate on data types in the Base module, or in modules providing generic data types.
- Permutations.jl by @scheinerman :: Permutations class for Julia.
- PermutationsA.jl by @jlapeyre :: Permutation data types and methods.
- SimplePosets.jl :: Simple partially ordered sets for Julia.
- ZChop.jl :: Replaces small numbers with zero.

WIP or may not work

- ποΈ Catalan.jl :: a combinatorics library for Julia.
- ποΈ DiscreteInference.jl :: Viterbi algorithm.
- ποΈ IPPMath.jl :: A Julia package for vectorized math computation based on Intel IPP.
- ποΈ PrimeSieve.jl :: This package provides an interface to tables of primes and a sieve library.
- ποΈ RomanNumerals.jl :: Support for Roman numerals in Julia.
- ποΈ Shannon.jl :: Entropy, Mutual Information, KL-Divergence related to Shannon’s information theory and functions to binarize data.

### Graph Theory

For graph/tree datatypes, see Data Types

- Dendriform.jl :: Dendriform di-algebra algorithms to compute using Loday’s arithmetic on groves of planar binary trees.
- GraphDataFrameBridge.jl :: Tools for interoperability between DataFrame objects and LightGraphs and MetaGraphs objects.
- MatrixNetworks.jl :: Graph and Network algorithms.
- RobustShortestPath.jl :: Robust Shortest Path Finder.
- XGBoost.jl :: XGBoost Julia Package.

WIP or may not work

- ποΈ bloom.jl :: Bloom filter implementation in Julia.
- ποΈ Blox.jl :: Views of concatenated AbstractArrays in Julia.
- ποΈ Brim.jl :: BRIM modularity - Various ways to optimize the modularity of bipartite networks using BRIM in Julia.
- ποΈ Flow.jl :: DataFlow programming for Julia.
- ποΈ GraphicalModels.jl :: Data structures and parsing tools for representing graphical models in Julia.
- ποΈ GraphLayout.jl :: Graph layout algorithms in pure Julia.
- ποΈ Graphs.jl :: a package for working with graph types and algorithms in Julia.
- ποΈ InfoTheory.jl :: Estimating information theoretic measures (entropy, mutual information etc) from data.
- ποΈ InvariantEnsembles.jl :: Sample random unitary invariant ensembles.
- ποΈ L1DecisionTree.jl.
- ποΈ LiftedHierarchies.jl :: Hierarchical relaxations for mixed-integer optimization (Lasserre, Sherali-Adams, etc.)
- ποΈ LSH.jl :: Locality Sensitive Hashing functions.
- ποΈ MinimalPerfectHashes.jl :: An implementation of minimal perfect hash function generation as described in Czech et. al. 1992. http://bit.ly/137iukS
- ποΈ Networks.jl :: A library for working with Graphs in Julia.
- ποΈ RandomForestBehaviors.jl :: Microscopic driving models based on random forests.
- ποΈ RepresentationTheory.jl :: representation theory of the symmetric group.
- ποΈ rsk :: Code for exploring the RobinsonβSchenstedβKnuth correspondence.
- ποΈ SFrames.jl :: Wrapper around the open-source components of Graphlab.
- ποΈ Sims.jl :: Non-causal, equation-based modeling in Julia.
- ποΈ TSPSubgradient.jl :: A TSP approximation with the subgradient method.

Resources:

- aleph_star :: (
**Not a package**) Reinforcement learning with A* and a deep heuristic. - π Graphal gorithms

## PUZZLES

**Puzzles, problem solving games**

- Chess.jl :: Julia chess programming library.

WIP or may not work

- ποΈ PlayingCards.jl :: Package for simulating Playing Cards games in Julia.
- ποΈ Sudoku.jl by @hayd :: A port of Peter Norvig’s
**Solving Every Sudoku Puzzle**to Julia. - ποΈ sudoku.jl by @johnmyleswhite :: A simple Sudoku solver in Julia.
- ποΈ sudoku by @Alexander-N :: Reimplementing the Python version of Peter Norvig’s Sudoku solver in Julia.
- ποΈ SudokuService :: Sudoku-as-a-service, powered by Julia, JuMP modelling, and CoinOR CBC integer programming solver.
- ποΈ Tetris.jl :: Tetris.

### Resources

- Project_Euler_Julia.ipynb :: Solutions to Project Euler Problems, algorithm & math puzzles.