POCH
This function evaluates a generalization of Pochhammer’s symbol.
Function Return Value
POCH — Function value. (Output)
The generalized Pochhammer symbol is Γ(a + x)/Γ(a).
Required Arguments
A — The first argument. (Input)
X — The second, differential argument. (Input)
FORTRAN 90 Interface
Generic: POCH (A, X)
Specific: The specific interface names are S_POCH and D_POCH.
FORTRAN 77 Interface
Single: POCH (A, X)
Double: The double precision function name is DPOCH.
Description
Pochhammer’s symbol is (a)n = (a)(a ‑ 1)…(a ‑ n + 1) for n a nonnegative integer. Pochhammer’s generalized symbol is defined to be
See
GAMMA for the definition of
Γ(
x).
Note that a straightforward evaluation of Pochhammer’s generalized symbol with either gamma or log gamma functions can be especially unreliable when a is large or x is small.
Substantial loss can occur if a + x or a are close to a negative integer unless ∣x∣ is sufficiently small. To insure that the result does not overflow or underflow, one can keep the arguments a and a + x well within the range dictated by the gamma function routine GAMMA or one can keep ∣x∣ small whenever a is large. POCH also works for a variety of arguments outside these rough limits, but any more general limits that are also useful are difficult to specify.
Comments
Informational Errors
Type | Code | Description |
---|
3 | 2 | Result of POCH(A, X) is accurate to less than one‑half precision because the absolute value of the X is too large. Therefore, A + X cannot be evaluated accurately. |
3 | 2 | Result of POCH(A, X) is accurate to less than one‑half precision because either A or A + X is too close to a negative integer. |
For X a nonnegative integer, POCH(A, X) is just Pochhammer’s symbol.
Example
In this example, (1.6)0.8 is computed and printed.
USE POCH_INT
USE UMACH_INT
IMPLICIT NONE
! Declare variables
INTEGER NOUT
REAL A, VALUE, X
! Compute
A = 1.6
X = 0.8
VALUE = POCH(A, X)
! Print the results
CALL UMACH (2, NOUT)
WRITE (NOUT,99999) A, X, VALUE
99999 FORMAT (' POCH(', F6.3, ',', F6.3, ') = ', F6.4)
END
Output
POCH( 1.600, 0.800) = 1.3902