Class Erf
- java.lang.Object
-
- org.hipparchus.special.Erf
-
public class Erf extends Object
This is a utility class that provides computation methods related to the error functions.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static double
erf(double x)
Returns the error function.static double
erf(double x1, double x2)
Returns the difference between erf(x1) and erf(x2).static <T extends CalculusFieldElement<T>>
Terf(T x)
Returns the error function.static <T extends CalculusFieldElement<T>>
Terf(T x1, T x2)
Returns the difference between erf(x1) and erf(x2).static double
erfc(double x)
Returns the complementary error function. \[ \mathrm{erfc}(x) = \frac{2}{\sqrt{\pi}} \int_{t=x}^\infty e^{-t^2}dt = 1 - \mathrm{erf}static <T extends CalculusFieldElement<T>>
Terfc(T x)
Returns the complementary error function.static double
erfcInv(double x)
Returns the inverse erfc.static <T extends CalculusFieldElement<T>>
TerfcInv(T x)
Returns the inverse erfc.static double
erfInv(double x)
Returns the inverse erf.static <T extends CalculusFieldElement<T>>
TerfInv(T x)
Returns the inverse erf.
-
-
-
Method Detail
-
erf
public static double erf(double x)
Returns the error function.This implementation computes erf(x) using the
regularized gamma function
, following Erf, equation (3)The value returned is always between -1 and 1 (inclusive). If
abs(x) > 40
, thenerf(x)
is indistinguishable from either 1 or -1 as a double, so the appropriate extreme value is returned.- Parameters:
x
- the value.- Returns:
- the error function erf(x)
- Throws:
MathIllegalStateException
- if the algorithm fails to converge.- See Also:
Gamma.regularizedGammaP(double, double, double, int)
-
erf
public static <T extends CalculusFieldElement<T>> T erf(T x)
Returns the error function.This implementation computes erf(x) using the
regularized gamma function
, following Erf, equation (3)The value returned is always between -1 and 1 (inclusive). If
abs(x) > 40
, thenerf(x)
is indistinguishable from either 1 or -1 as a double, so the appropriate extreme value is returned.- Type Parameters:
T
- type of the field elements- Parameters:
x
- the value.- Returns:
- the error function erf(x)
- Throws:
MathIllegalStateException
- if the algorithm fails to converge.- See Also:
Gamma.regularizedGammaP(double, double, double, int)
-
erfc
public static double erfc(double x)
Returns the complementary error function. \[ \mathrm{erfc}(x) = \frac{2}{\sqrt{\pi}} \int_{t=x}^\infty e^{-t^2}dt = 1 - \mathrm{erf}This implementation computes erfc(x) using the
regularized gamma function
, following Erf, equation (3).The value returned is always between 0 and 2 (inclusive). If
abs(x) > 40
, thenerf(x)
is indistinguishable from either 0 or 2 as a double, so the appropriate extreme value is returned.- Parameters:
x
- the value- Returns:
- the complementary error function erfc(x)
- Throws:
MathIllegalStateException
- if the algorithm fails to converge.- See Also:
Gamma.regularizedGammaQ(double, double, double, int)
-
erfc
public static <T extends CalculusFieldElement<T>> T erfc(T x)
Returns the complementary error function.This implementation computes erfc(x) using the
regularized gamma function
, following Erf, equation (3).The value returned is always between 0 and 2 (inclusive). If
abs(x) > 40
, thenerf(x)
is indistinguishable from either 0 or 2 as a double, so the appropriate extreme value is returned. This implies that the current implementation does not allow the use ofDfp
with extended precision.- Type Parameters:
T
- type of the field elements- Parameters:
x
- the value- Returns:
- the complementary error function erfc(x)
- Throws:
MathIllegalStateException
- if the algorithm fails to converge.- See Also:
Gamma.regularizedGammaQ(double, double, double, int)
-
erf
public static double erf(double x1, double x2)
Returns the difference between erf(x1) and erf(x2).The implementation uses either erf(double) or erfc(double) depending on which provides the most precise result.
- Parameters:
x1
- the first valuex2
- the second value- Returns:
- erf(x2) - erf(x1)
-
erf
public static <T extends CalculusFieldElement<T>> T erf(T x1, T x2)
Returns the difference between erf(x1) and erf(x2).The implementation uses either erf(double) or erfc(double) depending on which provides the most precise result.
- Type Parameters:
T
- type of the field elements- Parameters:
x1
- the first valuex2
- the second value- Returns:
- erf(x2) - erf(x1)
-
erfInv
public static double erfInv(double x)
Returns the inverse erf.This implementation is described in the paper: Approximating the erfinv function by Mike Giles, Oxford-Man Institute of Quantitative Finance, which was published in GPU Computing Gems, volume 2, 2010. The source code is available here.
- Parameters:
x
- the value- Returns:
- t such that x = erf(t)
-
erfInv
public static <T extends CalculusFieldElement<T>> T erfInv(T x)
Returns the inverse erf.This implementation is described in the paper: Approximating the erfinv function by Mike Giles, Oxford-Man Institute of Quantitative Finance, which was published in GPU Computing Gems, volume 2, 2010. The source code is available here.
- Type Parameters:
T
- type of the filed elements- Parameters:
x
- the value- Returns:
- t such that x = erf(t)
-
erfcInv
public static double erfcInv(double x)
Returns the inverse erfc.- Parameters:
x
- the value- Returns:
- t such that x = erfc(t)
-
erfcInv
public static <T extends CalculusFieldElement<T>> T erfcInv(T x)
Returns the inverse erfc.- Type Parameters:
T
- type of the field elements- Parameters:
x
- the value- Returns:
- t such that x = erfc(t)
-
-