DPOCH1(3)

SYNOPSIS
DOUBLE PRECISION FUNCTION DPOCH1 (A, X)

NAME
dpoch1 - Calculate a generalization of Pochhammer's symbol starting from first order.

LIBRARY
SLATEC (FNLIB)

CATEGORY
C1, C7A

TYPE
DOUBLE PRECISION (POCH1-S, DPOCH1-D)

KEYWORDS
FIRST ORDER, FNLIB, POCHHAMMER, SPECIAL FUNCTIONS

AUTHOR
Fullerton, W., (LANL)

DESCRIPTION
Evaluate a double precision generalization of Pochhammer's symbol for double precision A and X for special situations that require especially accurate values when X is small in POCH1(A,X) = (POCH(A,X)-1)/X = (GAMMA(A+X)/GAMMA(A) - 1.0)/X . This specification is particularly suited for stably computing expressions such as (GAMMA(A+X)/GAMMA(A) - GAMMA(B+X)/GAMMA(B))/X = POCH1(A,X) - POCH1(B,X) Note that POCH1(A,0.0) = PSI(A) When ABS(X) is so small that substantial cancellation will occur if the straightforward formula is used, we use an expansion due to Fields and discussed by Y. L. Luke, The Special Functions and Their Approximations, Vol. 1, Academic Press, 1969, page 34. The ratio POCH(A,X) = GAMMA(A+X)/GAMMA(A) is written by Luke as (A+(X-1)/2)**X * polynomial in (A+(X-1)/2)**(-2) . In order to maintain significance in POCH1, we write for positive a (A+(X-1)/2)**X = EXP(X*LOG(A+(X-1)/2)) = EXP(Q) = 1.0 + Q*EXPREL(Q) . Likewise the polynomial is written POLY = 1.0 + X*POLY1(A,X) . Thus, POCH1(A,X) = (POCH(A,X) - 1) / X = EXPREL(Q)*(Q/X + Q*POLY1(A,X)) + POLY1(A,X)

REFERENCES
(NONE)

ROUTINES CALLED
D1MACH, DCOT, DEXPRL, DPOCH, DPSI, XERMSG

REVISION HISTORY (YYMMDD)
770801 DATE WRITTEN
890531 Changed all specific intrinsics to generic. (WRB)
890911 Removed unnecessary intrinsics. (WRB)
890911 REVISION DATE from Version 3.2
891214 Prologue converted to Version 4.0 format. (BAB)
900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
900727 Added EXTERNAL statement. (WRB)