26 SAVE gcs, pi, sq2pil, ngcs,
xmin,
xmax, dxrel, first
27 DATA gcs( 1) / .0085711955 90989331e0/
28 DATA gcs( 2) / .0044153813 24841007e0/
29 DATA gcs( 3) / .0568504368 1599363e0/
30 DATA gcs( 4) /-.0042198353 96418561e0/
31 DATA gcs( 5) / .0013268081 81212460e0/
32 DATA gcs( 6) /-.0001893024 529798880e0/
33 DATA gcs( 7) / .0000360692 532744124e0/
34 DATA gcs( 8) /-.0000060567 619044608e0/
35 DATA gcs( 9) / .0000010558 295463022e0/
36 DATA gcs(10) /-.0000001811 967365542e0/
37 DATA gcs(11) / .0000000311 772496471e0/
38 DATA gcs(12) /-.0000000053 542196390e0/
39 DATA gcs(13) / .0000000009 193275519e0/
40 DATA gcs(14) /-.0000000001 577941280e0/
41 DATA gcs(15) / .0000000000 270798062e0/
42 DATA gcs(16) /-.0000000000 046468186e0/
43 DATA gcs(17) / .0000000000 007973350e0/
44 DATA gcs(18) /-.0000000000 001368078e0/
45 DATA gcs(19) / .0000000000 000234731e0/
46 DATA gcs(20) /-.0000000000 000040274e0/
47 DATA gcs(21) / .0000000000 000006910e0/
48 DATA gcs(22) /-.0000000000 000001185e0/
49 DATA gcs(23) / .0000000000 000000203e0/
50 DATA pi /3.14159 26535 89793 24e0/
52 DATA sq2pil /0.91893 85332 04672 74e0/
77 IF (y.GT.10.0)
GO TO 50
83 IF (x.LT.0.) n = n - 1
94 IF (x .EQ. 0.)
CALL xermsg (
'SLATEC',
'GAMMA',
'X IS 0', 4, 2)
95 IF (x .LT. 0. .AND. x+n-2 .EQ. 0.)
CALL xermsg (
'SLATEC',
'GAMMA'
96 1,
'X IS A NEGATIVE INTEGER', 4, 2)
97 IF (x .LT. (-0.5) .AND. abs((x-aint(x-0.5))/x) .LT. dxrel) call
98 1
xermsg(
'SLATEC',
'GAMMA',
99 2
'ANSWER LT HALF PRECISION BECAUSE X TOO NEAR NEGATIVE INTEGER'
116 50
IF (x .GT.
xmax)
CALL xermsg (
'SLATEC',
'GAMMA',
117 +
'X SO BIG GAMMA OVERFLOWS', 3, 2)
120 IF (x .LT.
xmin)
CALL xermsg (
'SLATEC',
'GAMMA',
121 +
'X SO SMALL GAMMA UNDERFLOWS', 2, 1)
122 IF (x.LT.
xmin)
RETURN
124 gamma = exp((y-0.5)*log(y) - y + sq2pil +
r9lgmc(y) )
127 IF (abs((x-aint(x-0.5))/x) .LT. dxrel)
CALL xermsg (
'SLATEC',
129 +
'ANSWER LT HALF PRECISION, X TOO NEAR NEGATIVE INTEGER', 1, 1)
132 IF (sinpiy .EQ. 0.)
CALL xermsg (
'SLATEC',
'GAMMA',
133 +
'X IS A NEGATIVE INTEGER', 4, 2)
subroutine gamlim(XMIN, XMAX)
function inits(OS, NOS, ETA)
octave_int< T > xmin(const octave_int< T > &x, const octave_int< T > &y)
octave_int< T > xmax(const octave_int< T > &x, const octave_int< T > &y)
subroutine xermsg(LIBRAR, SUBROU, MESSG, NERR, LEVEL)