Class Erf


  • public class Erf
    extends java.lang.Object
    This is a utility class that provides computation methods related to the error functions.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static double X_CRIT
      The number X_CRIT is used by erf(double, double) internally.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private Erf()
      Default constructor.
    • 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 double erfc​(double x)
      Returns the complementary error function.
      static double erfcInv​(double x)
      Returns the inverse erfc.
      static double erfInv​(double x)
      Returns the inverse erf.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • X_CRIT

        private static final double X_CRIT
        The number X_CRIT is used by erf(double, double) internally. This number solves erf(x)=0.5 within 1ulp. More precisely, the current implementations of erf(double) and erfc(double) satisfy:
        erf(X_CRIT) < 0.5,
        erf(Math.nextUp(X_CRIT) > 0.5,
        erfc(X_CRIT) = 0.5, and
        erfc(Math.nextUp(X_CRIT) < 0.5
        See Also:
        Constant Field Values
    • Constructor Detail

      • Erf

        private Erf()
        Default constructor. Prohibit instantiation.
    • Method Detail

      • erf

        public static double erf​(double x)
        Returns the error function.

        erf(x) = 2/√π 0x e-t2dt

        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, then erf(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:
        MaxCountExceededException - 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.

        erfc(x) = 2/√π x e-t2dt
        = 1 - erf(x)

        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, then erf(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:
        MaxCountExceededException - if the algorithm fails to converge.
        Since:
        2.2
        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 value
        x2 - 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)
        Since:
        3.2
      • erfcInv

        public static double erfcInv​(double x)
        Returns the inverse erfc.
        Parameters:
        x - the value
        Returns:
        t such that x = erfc(t)
        Since:
        3.2