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