5 * Revision 1.1.1.1 1996/04/01 15:02:08 mclareni
10 #if defined(CERNLIB_QUAD)
11 #if defined(CERNLIB_DOUBLE)
12 SUBROUTINE QBSJA(X,A,NMAX,ND,B)
14 #if !defined(CERNLIB_DOUBLE)
15 SUBROUTINE DBSJA(X,A,NMAX,ND,B)
18 #include "gen/imp128.inc"
19 REAL SX,D,T,Q,U,V,TC(11)
21 CHARACTER NAMEJ*(*),NAMEI*(*)
22 #if defined(CERNLIB_DOUBLE)
23 PARAMETER (NAMEJ = 'DBSJA/QBSJA',
24 1 NAMEI = 'DBSIA/QBSIA')
26 #if !defined(CERNLIB_DOUBLE)
27 PARAMETER (NAMEJ = 'DBSJA', NAMEI = 'DBSIA')
29 LOGICAL LJA,LIA,LEV,LER
30 DIMENSION B(0:*),BA(0:100),RR(0:100)
32 PARAMETER (Z1 = 1, HF = Z1/2, Z10 = 10)
34 DATA TC / 5.7941 E-5,-1.76148E-3, 2.08645E-2,-1.29013E-1,
35 1 8.5777 E-1, 1.0125 E+0, 7.75 E-1, 2.3026 E+0,
36 2 1.3863 E+0, 7.3576 E-1, 1.3591 E+0/
43 #if defined(CERNLIB_DOUBLE)
44 ENTRY QBSIA(X,A,NMAX,ND,B)
46 #if !defined(CERNLIB_DOUBLE)
47 ENTRY DBSIA(X,A,NMAX,ND,B)
56 IF(LJA) CALL MTLPRT(NAMEJ,'C343.1',ERRTXT)
57 IF(LIA) CALL MTLPRT(NAMEI,'C343.1',ERRTXT)
59 ELSEIF(.NOT.(0 .LE. A .AND. A .LT. 1)) THEN
61 IF(LJA) CALL MTLPRT(NAMEJ,'C343.2',ERRTXT)
62 IF(LIA) CALL MTLPRT(NAMEI,'C343.2',ERRTXT)
64 ELSEIF(ABS(NMAX) .GT. 100) THEN
65 WRITE(ERRTXT,103) NMAX
66 IF(LJA) CALL MTLPRT(NAMEJ,'C343.3',ERRTXT)
67 IF(LIA) CALL MTLPRT(NAMEI,'C343.3',ERRTXT)
88 T=V/(U*(1+(TC(7)-LOG(U))/(1+U)))
92 #if defined(CERNLIB_DOUBLE)
93 F=(HF*X)**A/QGAMMA(1+A)
95 #if !defined(CERNLIB_DOUBLE)
96 F=(HF*X)**A/DGAMMA(1+A)
104 IF(LJA .OR. LIA .AND. X .LT. D) THEN
111 T=V/(U*(1+(TC(7)-LOG(U))/(1+U)))
114 NU=1+MAX(Q,TC(11)*SX*T)
122 3 AL=AL*(XN+A)/(XN+1)
126 DO 4 N = 2*(NU/2),1,-1
130 IF(N .LE. NMX) RR(N-1)=R
142 23 AL=AL*(XN+2*A)/(XN+1)
150 IF(N .LE. NMX) RR(N-1)=R
159 IF(ABS(B(N)-BA(N)) .GT. EPS*ABS(B(N))) THEN
163 IF(MU .LE. 50) GO TO 2
164 WRITE(ERRTXT,104) X,A
165 IF(LJA) CALL MTLPRT(NAMEJ,'C343.4',ERRTXT)
166 IF(LIA) CALL MTLPRT(NAMEI,'C343.4',ERRTXT)
172 B(1)=AL*A*B(0)+SGN*B(1)
174 13 B(N+1)=AL*(A-N)*B(N)+SGN*B(N-1)
177 101 FORMAT('ILLEGAL ARGUMENT X = ',1P,D15.8)
178 102 FORMAT('ILLEGAL ORDER A = ',1P,D15.8)
179 103 FORMAT('ILLEGAL NMAX = ',I5)
180 104 FORMAT('NO CONVERGENCE FOR X = ',1P,D15.8,' A = ',D15.8,