Special functions and Chebyshev polynomials

Version on this page:
LTS Haskell 22.26:
Stackage Nightly 2024-06-21:
Latest on Hackage:

See all snapshots math-functions appears in

BSD-3-Clause licensed by Bryan O'Sullivan, Aleksey Khudyakov
Maintained by Bryan O'Sullivan
This version can be pinned in stack with:math-functions-,2777

math-functions: efficient, special purpose mathematical functions

This package provides a number of special-purpose mathematical functions used in statistical and numerical computing.

Where possible, we give citations and computational complexity estimates for the algorithms used.

Get involved!

Please report bugs via the github issue tracker.

Master git mirror:

  • git clone git://

There’s also a Mercurial mirror:

  • hg clone

(You can create and contribute changes using either Mercurial or git.)


This library is written and maintained by Bryan O’Sullivan [email protected] and Aleksey Khudyakov [email protected].


Changes in

  • log1p and expm1 are simply reexported from GHC.Float. They’re methods of Floating type class.

  • On windows expm1 is implemented in pure haskell for older GHCs.

Changes in

  • Bug fixes and documentation tweaks

Changes in

  • logGamma now uses Lancsoz approximation and same as logGammaL. Old implementation of logGamma moved to Numeric.SpecFunctions.Extra.logGammaAS245.

  • Precision of logGamma for z<1 improved.

  • New much more precise implementation for incompleteGamma

  • Dependency on erf pacakge dropped. erf and erfc just do direct calls to C.

  • Numeric.SpecFunctions.expm1 added

  • Numeric.SpecFunctions.log1pmx added.

  • logGammaCorrection exported in Numeric.SpecFunctions.Extra.

  • Module Numeric.Series added for working with infinite sequences, series summation and evaluation of continued fractions.

  • Module statistics: Statistics.Math.RootFinding copied to Numeric.RootFinding. Instances for binary and aeson dropped.

  • Root-finding using Newton-Raphson added

  • Numeric.MathFunctions.Comparison.ulpDelta added. It calculates signed distance between two doubles.

  • Other bug fixes.

Changes in

  • Module statistics: Statistics.Function.Comparison moved to Numeric.MathFunctions.Comparison. Old implementation if within compared negative numbers incorrectly.

  • addUlps and ulpDistance added to Numeric.MathFunctions.Comparison.

  • relativeError and eqRelErr added to Numeric.MathFunctions.Comparison.

  • Precision of logFactorial is slightly improved.

Changes in

  • logChoose added for calculation of logarithm of binomial coefficient

  • chooseExact and logChooseFast added

  • sinc added

Changes in

  • Fix for test suite on 32bit platform

Changes in 0.1.5

  • Numeric.Sum: new module adds accurate floating point summation.

Changes in 0.1.4

  • logFactorial type is genberalized. It accepts any Integral type

  • Evaluation of polynomials using Horner’s method where coefficients are store in lists added

Changes in 0.1.3

  • Error function and its inverse added.

  • Digamma function added

  • Evaluation of polynomials using Horner’s method added.

  • Crash bug in the inverse incomplete beta fixed.