"Special functions" are functions that appear in the solution of many advanced science and engineering problems, but aren't common enough to have reached the typical high school curriculum, or the .NET Framework's System.Math
class. They are typically the value of some integral, or the solution to some differential equation, or the sum of some infinite series, and sometimes all three. The Meta.Numerics library can compute the values of more than 50 special functions. Nearly all
are computed a full precision and most are returned only a little slower than "standard functions" like the logarithm.
Like the System.Math functions, the special functions are simple static methods of static utility classes. They are in the Meta.Numerics.Functions namespace.
The special functions of real numbers are members of the AdvancedMath or OrthogonalPolynomials classes.
Here is a C# example that computes an inverse error function:
double y = 0.75;
double x = AdvancedMath.InverseErf(y);
For special functions that are solutions of hypergeometric differential equations, such as Bessel functions, modified Bessel functions, Airy functions, and Coulomb wave functions, there are overloads that return both regular and irregular solutions and their
derivatives in a single, optimized call.
int L = 2;
double eta = -3.4;
double rho = 5.6;
SolutionPair s = AdvancedMath.Coulomb(L, eta, rho);
The special functions of complex numbers are members of the AdvancedComplexMath class.
Here is a C# example that computes the complex Riemann zeta function:
Complex z = new Complex(1.0, 2.0);
Complex zeta = AdvancedComplexMath.ReimannZeta(z);
The special functions of integers are members of the AdvancedIntegerMath class.