Package gov.nih.mipav.model.algorithms
Class Hypergeometric
- java.lang.Object
-
- gov.nih.mipav.model.algorithms.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
fromk = 0
to infinity ofPoch(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 parameterprivate double
b
Input parameterprivate double
c
Input argumentstatic int
COMPLEX_VERSION
private double[]
imagResult
private double
imagZ
static int
REAL_VERSION
private double[]
realResult
outputted resultprivate double
realZ
Input argumentprivate double[]
result
Outputted resultprivate int
version
Tells whether real number or complex number versionprivate 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).
-
-
-
Field Detail
-
REAL_VERSION
public static final int REAL_VERSION
- See Also:
- Constant Field Values
-
COMPLEX_VERSION
public static final int COMPLEX_VERSION
- See Also:
- Constant Field Values
-
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 parameterb
- input parameterc
- input parameter c must not equal 0, -1, -2, ...x
- input argumentresult
- outputted result
-
Hypergeometric
public Hypergeometric(double a, double b, double c, double realZ, double imagZ, double[] realResult, double[] imagResult)
- Parameters:
a
- input real parameterb
- input real parameterc
- input real parameter c must not equal 0, -1, -2, ...realZ
- input real part of argumentimagZ
- input imaginary part of argumentrealResult
- real part of outputted resultimagResult
- imaginary part of outputted result
-
-
Method Detail
-
finalize
public void finalize() throws java.lang.Throwable
Cleanup memory.- Overrides:
finalize
in classjava.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 <= 1
-
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
- doublezi
- 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
- doubleai
- doublebr
- doublebi
- doublecr
- double[]ci
- double[]
-
zexp
private void zexp(double ar, double ai, double[] br, double[] bi)
complex exponential function b = exp(a).- Parameters:
ar
- doubleai
- doublebr
- double[]bi
- double[]
-
zlog
private void zlog(double ar, double ai, double[] br, double[] bi, int[] ierr)
complex logarithm b = clog(a).- Parameters:
ar
- doubleai
- doublebr
- 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
- doubleai
- doublebr
- doublebi
- doublecr
- 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
- doublezi
- doublecshr
- 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
- doubleai
- doublebr
- double[]bi
- double[]
-
-