Class SpecialFunctions


  • public final class SpecialFunctions
    extends java.lang.Object
    SpecialFunctions - special (non-elementary functions).
    Version:
    5.1.0
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      private static double argumentAdditionSeriesEi​(double x)
      Supporting function while Exponential integral function Ei(x) calculation
      static double beta​(double x, double y)
      Beta special function
      private static double continuedFractionEi​(double x)
      Supporting function while Exponential integral function Ei(x) calculation
      static double diGamma​(double x)
      Digamma function as the logarithmic derivative of the Gamma special function
      static double erf​(double x)
      Calculates the error function
      static double erfc​(double x)
      Calculates the complementary error function.
      static double erfcInv​(double z)
      Calculates the complementary inverse error function evaluated at x.
      private static double erfImp​(double z, boolean invert)
      Calculates the inverse error function evaluated at x.
      static double erfInv​(double x)
      Calculates the inverse error function evaluated at x.
      private static double erfInvImpl​(double p, double q, double s)
      The implementation of the inverse error function.
      static double exponentialIntegralEi​(double x)
      Exponential integral function Ei(x)
      static double gamma​(double x)
      Real valued Gamma function
      private static double gammaInt​(long n)
      Gamma function for the integers
      private static double halleyIteration​(double x, double wInitial, int maxIter)
      Halley's iteration used in Lambert-W approximation
      static double hypergeometricF​(double a, double b, double c, double z, double maxIterations, double precision)
      The Gaussian or ordinary hypergeometric special function
      private static double hypergeometricFDirect​(double a, double b, double c, double z, double maxIterations, double precision)
      The Gaussian or ordinary hypergeometric special function - direct
      static double incompleteBeta​(double a, double b, double x)
      Log Incomplete Beta special function
      static double incompleteGammaLower​(double s, double x)
      Incomplete lower gamma function
      static double incompleteGammaUpper​(double s, double x)
      Incomplete upper gamma function
      static double inverseRegularizedBeta​(double a, double b, double p)
      Inerse regularized incomplete Beta special function
      static double inverseRegularizedGammaLowerP​(double a, double p)
      Inverse of regularized lower gamma function 'P'
      static double lambertW​(double x, double branch)
      Real-valued Lambert-W function approximation.
      private static double lambertW0​(double x)
      W0 - Principal branch of Lambert-W function
      private static double lambertW1​(double x)
      Minus 1 branch of Lambert-W function Analytical approximations for real values of the Lambert W-function - D.A.
      static double lanchosGamma​(double x)
      Gamma function implementation based on Lanchos approximation algorithm
      static double logarithmicIntegralLi​(double x)
      Logarithmic integral function li(x)
      static double logBeta​(double x, double y)
      Log Beta special function
      static double logGamma​(double x)
      Real valued log gamma function.
      static double offsetLogarithmicIntegralLi​(double x)
      Offset logarithmic integral function Li(x)
      private static double powerSeriesEi​(double x)
      Supporting function while Exponential integral function Ei(x) calculation
      static double regularizedBeta​(double a, double b, double x)
      Regularized incomplete Beta special function
      static double regularizedGammaLowerP​(double s, double x)
      Regularized lower gamma function 'P'
      static double regularizedGammaUpperQ​(double s, double x)
      Regularized upper gamma function 'Q'
      private static double seriesEval​(double r)
      Private method used in Lambert-W approximation - near zero
      static double sgnGamma​(double x)
      Signum from the real valued gamma function.
      • Methods inherited from class java.lang.Object

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

      • EI_DBL_EPSILON

        private static final double EI_DBL_EPSILON
        Constants for Exponential integral function Ei(x) calculation
      • EI_EPSILON

        private static final double EI_EPSILON
      • doublePrecision

        private static final double doublePrecision
    • Constructor Detail

      • SpecialFunctions

        public SpecialFunctions()
    • Method Detail

      • exponentialIntegralEi

        public static double exponentialIntegralEi​(double x)
        Exponential integral function Ei(x)
        Parameters:
        x - Point at which function will be evaluated.
        Returns:
        Exponential integral function Ei(x)
      • continuedFractionEi

        private static double continuedFractionEi​(double x)
        Supporting function while Exponential integral function Ei(x) calculation
      • powerSeriesEi

        private static double powerSeriesEi​(double x)
        Supporting function while Exponential integral function Ei(x) calculation
      • argumentAdditionSeriesEi

        private static double argumentAdditionSeriesEi​(double x)
        Supporting function while Exponential integral function Ei(x) calculation
      • logarithmicIntegralLi

        public static double logarithmicIntegralLi​(double x)
        Logarithmic integral function li(x)
        Parameters:
        x - Point at which function will be evaluated.
        Returns:
        Logarithmic integral function li(x)
      • offsetLogarithmicIntegralLi

        public static double offsetLogarithmicIntegralLi​(double x)
        Offset logarithmic integral function Li(x)
        Parameters:
        x - Point at which function will be evaluated.
        Returns:
        Offset logarithmic integral function Li(x)
      • erf

        public static double erf​(double x)
        Calculates the error function
        Parameters:
        x - Point at which function will be evaluated.
        Returns:
        Error function erf(x)
      • erfc

        public static double erfc​(double x)
        Calculates the complementary error function.
        Parameters:
        x - Point at which function will be evaluated.
        Returns:
        Complementary error function erfc(x)
      • erfInv

        public static double erfInv​(double x)
        Calculates the inverse error function evaluated at x.
        Parameters:
        x - Point at which function will be evaluated.
        Returns:
        Inverse error function erfInv(x)
      • erfImp

        private static double erfImp​(double z,
                                     boolean invert)
        Calculates the inverse error function evaluated at x.
        Parameters:
        z -
        invert -
        Returns:
      • erfcInv

        public static double erfcInv​(double z)
        Calculates the complementary inverse error function evaluated at x.
        Parameters:
        z - Point at which function will be evaluated.
        Returns:
        Inverse of complementary inverse error function erfcInv(x)
      • erfInvImpl

        private static double erfInvImpl​(double p,
                                         double q,
                                         double s)
        The implementation of the inverse error function.
        Parameters:
        p -
        q -
        s -
        Returns:
      • gammaInt

        private static double gammaInt​(long n)
        Gamma function for the integers
        Parameters:
        n - Integer number
        Returns:
        Returns Gamma function for the integers.
      • gamma

        public static double gamma​(double x)
        Real valued Gamma function
        Parameters:
        x - Argument value
        Returns:
        Returns gamma function value.
      • lanchosGamma

        public static double lanchosGamma​(double x)
        Gamma function implementation based on Lanchos approximation algorithm
        Parameters:
        x - Function parameter
        Returns:
        Gamma function value (Lanchos approx).
      • logGamma

        public static double logGamma​(double x)
        Real valued log gamma function.
        Parameters:
        x - Argument value
        Returns:
        Returns log value from gamma function.
      • sgnGamma

        public static double sgnGamma​(double x)
        Signum from the real valued gamma function.
        Parameters:
        x - Argument value
        Returns:
        Returns signum of the gamma(x)
      • regularizedGammaLowerP

        public static double regularizedGammaLowerP​(double s,
                                                    double x)
        Regularized lower gamma function 'P'
        Parameters:
        s - Argument value
        x - Argument value
        Returns:
        Value of the regularized lower gamma function 'P'.
      • inverseRegularizedGammaLowerP

        public static double inverseRegularizedGammaLowerP​(double a,
                                                           double p)
        Inverse of regularized lower gamma function 'P'
        Parameters:
        a - Argument value
        p - Argument value
        Returns:
        Value of the inverse regularized lower gamma function 'P'.
      • incompleteGammaLower

        public static double incompleteGammaLower​(double s,
                                                  double x)
        Incomplete lower gamma function
        Parameters:
        s - Argument value
        x - Argument value
        Returns:
        Value of the incomplete lower gamma function.
      • regularizedGammaUpperQ

        public static double regularizedGammaUpperQ​(double s,
                                                    double x)
        Regularized upper gamma function 'Q'
        Parameters:
        s - Argument value
        x - Argument value
        Returns:
        Value of the regularized upper gamma function 'Q'.
      • incompleteGammaUpper

        public static double incompleteGammaUpper​(double s,
                                                  double x)
        Incomplete upper gamma function
        Parameters:
        s - Argument value
        x - Argument value
        Returns:
        Value of the incomplete upper gamma function.
      • diGamma

        public static double diGamma​(double x)
        Digamma function as the logarithmic derivative of the Gamma special function
        Parameters:
        x - Argument value
        Returns:
        Approximated value of the digamma function.
      • logBeta

        public static double logBeta​(double x,
                                     double y)
        Log Beta special function
        Parameters:
        x - Argument value
        y - Argument value
        Returns:
        Return logBeta special function (for positive x and positive y)
      • beta

        public static double beta​(double x,
                                  double y)
        Beta special function
        Parameters:
        x - Argument value
        y - Argument value
        Returns:
        Return Beta special function (for positive x and positive y)
      • incompleteBeta

        public static double incompleteBeta​(double a,
                                            double b,
                                            double x)
        Log Incomplete Beta special function
        Parameters:
        a - Argument value
        b - Argument value
        x - Argument value
        Returns:
        Return incomplete Beta special function for positive a and positive b and x between 0 and 1
      • regularizedBeta

        public static double regularizedBeta​(double a,
                                             double b,
                                             double x)
        Regularized incomplete Beta special function
        Parameters:
        a - Argument value
        b - Argument value
        x - Argument value
        Returns:
        Return incomplete Beta special function for positive a and positive b and x between 0 and 1
      • inverseRegularizedBeta

        public static double inverseRegularizedBeta​(double a,
                                                    double b,
                                                    double p)
        Inerse regularized incomplete Beta special function
        Parameters:
        a - Argument value
        b - Argument value
        p - Argument value
        Returns:
        Return inverse incomplete Beta special function for positive a and positive b and x between 0 and 1
      • halleyIteration

        private static double halleyIteration​(double x,
                                              double wInitial,
                                              int maxIter)
        Halley's iteration used in Lambert-W approximation
        Parameters:
        x - Point at which Halley iteration will be calculated
        wInitial - Starting point
        maxIter - Maximum number of iteration
        Returns:
        Halley's iteration value if successful, otherwise Double.NaN
      • seriesEval

        private static double seriesEval​(double r)
        Private method used in Lambert-W approximation - near zero
        Parameters:
        r -
        Returns:
        Ner zero approximation
      • lambertW0

        private static double lambertW0​(double x)
        W0 - Principal branch of Lambert-W function
        Parameters:
        x -
        Returns:
        Approximation of principal branch of Lambert-W function
      • lambertW1

        private static double lambertW1​(double x)
        Minus 1 branch of Lambert-W function Analytical approximations for real values of the Lambert W-function - D.A. Barry Mathematics and Computers in Simulation 53 (2000) 95–103
        Parameters:
        x -
        Returns:
        Approxmiation of minus 1 branch of Lambert-W function
      • lambertW

        public static double lambertW​(double x,
                                      double branch)
        Real-valued Lambert-W function approximation.
        Parameters:
        x - Point at which function will be approximated
        branch - Branch id, 0 for principal branch, -1 for the other branch
        Returns:
        Principal branch for x greater or equal than -1/e, otherwise Double.NaN. Minus 1 branch for x greater or equal than -1/e and lower than 0, otherwise Double.NaN.
      • hypergeometricF

        public static double hypergeometricF​(double a,
                                             double b,
                                             double c,
                                             double z,
                                             double maxIterations,
                                             double precision)
        The Gaussian or ordinary hypergeometric special function
        Parameters:
        a - Argument value
        b - Argument value
        c - Argument value
        z - Argument value
        maxIterations - Stop condition
        precision - Stop condition
        Returns:
        Returns hypergeometric special function approximation
      • hypergeometricFDirect

        private static double hypergeometricFDirect​(double a,
                                                    double b,
                                                    double c,
                                                    double z,
                                                    double maxIterations,
                                                    double precision)
        The Gaussian or ordinary hypergeometric special function - direct
        Parameters:
        a - Argument value
        b - Argument value
        c - Argument value
        z - Argument value
        maxIterations - Stop condition
        precision - Stop condition
        Returns:
        Returns hypergeometric special function approximation - direct