Class Hypergeometric


  • public class Hypergeometric
    extends java.lang.Object

    The function 2F1(a,b,c,x) is the hypergeometric function or Gauss's hypergeometric function.

    The Pochhammer(a,b) = Gamma(a+b)/Gamma(a) 2F1(a,b,c,x) = sum from k = 0 to infinity of Poch(a,k)*Poch(b,k)*z**k/(k! * Poch(c,k))

    It is the solution of the hypergeometric differential equation: z(1-z)y" + [c-(a+b+1)z]y' - aby = 0


    The FORTRAN code this class is based upon is from Computation of Special Functions by Shanjie Zhang and Jianming Jin and copyright 1996 John Wiley & Sons, Inc.

    From the diskette that the FORTRAN code came on:

     DISCLAIMER OF WARRANTY
     
     Although we have made a great effort to test and validate the 
     computer programs, we make no warranties, express or implied, that 
     these  programs  are  free  of  error,  or are consistent with any 
     particular  standard  of  merchantability,  or that they will meet 
     your requirements for any particular application.  They should not 
     be relied on for  solving problems  whose incorrect solution could 
     result in  injury to  a person or loss of property.  If you do use 
     the programs in such a manner, it is at your own risk. The authors 
     and publisher  disclaim all liability for  direct or consequential 
     damages resulting from your use of the programs.
     
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private double a
      Input parameter
      private double b
      Input parameter
      private double c
      Input argument
      static int COMPLEX_VERSION  
      private double[] imagResult  
      private double imagZ  
      static int REAL_VERSION  
      private double[] realResult
      outputted result
      private double realZ
      Input argument
      private double[] result
      Outputted result
      private int version
      Tells whether real number or complex number version
      private double x
      Input argument
    • Constructor Summary

      Constructors 
      Constructor Description
      Hypergeometric()  
      Hypergeometric​(double a, double b, double c, double x, double[] result)  
      Hypergeometric​(double a, double b, double c, double realZ, double imagZ, double[] realResult, double[] imagResult)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private void complexArgument()
      This is a port of subroutine HYGFZ from Computation of Special Functions by Shanjie Zhang and Jianming Jin, pp. 380-385.
      void finalize()
      Cleanup memory.
      private void realArgument()
      This is a port of subroutine HYGFX from Computation of Special Functions by Shanjie Zhang and Jianming Jin, pp. 376-379.
      void run()  
      void testcomplexArgument()  
      void testrealArgument()  
      private double zabs​(double zr, double zi)
      zabs computes the absolute value or magnitude of a double precision complex variable zr + j*zi.
      private void zdiv​(double ar, double ai, double br, double bi, double[] cr, double[] ci)
      complex divide c = a/b.
      private void zexp​(double ar, double ai, double[] br, double[] bi)
      complex exponential function b = exp(a).
      private void zlog​(double ar, double ai, double[] br, double[] bi, int[] ierr)
      complex logarithm b = clog(a).
      private void zmlt​(double ar, double ai, double br, double bi, double[] cr, double[] ci)
      complex multiply c = a * b.
      private void zpow​(double zr, double zi, double a, double[] br, double[] bi, int[] ierr)
      b = z**a = exp(a*log(z))
      private void zshch​(double zr, double zi, double[] cshr, double[] cshi, double[] cchr, double[] cchi)
      zshch computes the complex hyperbolic functions csh = sinh(x+i*y) and cch = cosh(x+i*y).
      private void zsqrt​(double ar, double ai, double[] br, double[] bi)
      complex square root b = csqrt(a).
      • Methods inherited from class java.lang.Object

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

      • version

        private int version
        Tells whether real number or complex number version
      • a

        private double a
        Input parameter
      • b

        private double b
        Input parameter
      • c

        private double c
        Input argument
      • result

        private double[] result
        Outputted result
      • x

        private double x
        Input argument
      • realZ

        private double realZ
        Input argument
      • imagZ

        private double imagZ
      • realResult

        private double[] realResult
        outputted result
      • imagResult

        private double[] imagResult
    • Constructor Detail

      • Hypergeometric

        public Hypergeometric()
      • Hypergeometric

        public Hypergeometric​(double a,
                              double b,
                              double c,
                              double x,
                              double[] result)
        Parameters:
        a - input parameter
        b - input parameter
        c - input parameter c must not equal 0, -1, -2, ...
        x - input argument
        result - outputted result
      • Hypergeometric

        public Hypergeometric​(double a,
                              double b,
                              double c,
                              double realZ,
                              double imagZ,
                              double[] realResult,
                              double[] imagResult)
        Parameters:
        a - input real parameter
        b - input real parameter
        c - input real parameter c must not equal 0, -1, -2, ...
        realZ - input real part of argument
        imagZ - input imaginary part of argument
        realResult - real part of outputted result
        imagResult - imaginary part of outputted result
    • Method Detail

      • finalize

        public void finalize()
                      throws java.lang.Throwable
        Cleanup memory.
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable - DOCUMENT ME!
      • run

        public void run()
      • testrealArgument

        public void testrealArgument()
      • testcomplexArgument

        public void testcomplexArgument()
      • realArgument

        private void realArgument()
        This is a port of subroutine HYGFX from Computation of Special Functions by Shanjie Zhang and Jianming Jin, pp. 376-379. c != 0, -1, -2 x
        • complexArgument

          private void complexArgument()
          This is a port of subroutine HYGFZ from Computation of Special Functions by Shanjie Zhang and Jianming Jin, pp. 380-385.
        • zpow

          private void zpow​(double zr,
                            double zi,
                            double a,
                            double[] br,
                            double[] bi,
                            int[] ierr)
          b = z**a = exp(a*log(z))
          Parameters:
          zr -
          zi -
          a -
          br -
          bi -
          ierr -
        • zabs

          private double zabs​(double zr,
                              double zi)
          zabs computes the absolute value or magnitude of a double precision complex variable zr + j*zi.
          Parameters:
          zr - double
          zi - double
          Returns:
          double
        • zdiv

          private void zdiv​(double ar,
                            double ai,
                            double br,
                            double bi,
                            double[] cr,
                            double[] ci)
          complex divide c = a/b.
          Parameters:
          ar - double
          ai - double
          br - double
          bi - double
          cr - double[]
          ci - double[]
        • zexp

          private void zexp​(double ar,
                            double ai,
                            double[] br,
                            double[] bi)
          complex exponential function b = exp(a).
          Parameters:
          ar - double
          ai - double
          br - double[]
          bi - double[]
        • zlog

          private void zlog​(double ar,
                            double ai,
                            double[] br,
                            double[] bi,
                            int[] ierr)
          complex logarithm b = clog(a).
          Parameters:
          ar - double
          ai - double
          br - double[]
          bi - double[]
          ierr - int[] ierr = 0, normal return ierr = 1, z = cmplx(0.0, 0.0)
        • zmlt

          private void zmlt​(double ar,
                            double ai,
                            double br,
                            double bi,
                            double[] cr,
                            double[] ci)
          complex multiply c = a * b.
          Parameters:
          ar - double
          ai - double
          br - double
          bi - double
          cr - double[]
          ci - double[]
        • zshch

          private void zshch​(double zr,
                             double zi,
                             double[] cshr,
                             double[] cshi,
                             double[] cchr,
                             double[] cchi)
          zshch computes the complex hyperbolic functions csh = sinh(x+i*y) and cch = cosh(x+i*y).
          Parameters:
          zr - double
          zi - double
          cshr - double[]
          cshi - double[]
          cchr - double[]
          cchi - double[]
        • zsqrt

          private void zsqrt​(double ar,
                             double ai,
                             double[] br,
                             double[] bi)
          complex square root b = csqrt(a).
          Parameters:
          ar - double
          ai - double
          br - double[]
          bi - double[]