File indexing completed on 2025-08-05 08:15:41
0001 SUBROUTINE DKIA(IFAC,X,A,DKI,DKID,IERRO)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107 DOUBLE PRECISION A,D,DF1,DF2,DF3,DF4,DKI,
0108 + DKID,PNU,X
0109 INTEGER IERRO,IFAC
0110 IERRO=0
0111 PNU=A
0112 IF ((X.GT.1500.D0).OR.(X.LE.0.D0)) THEN
0113 IERRO=2
0114 DKI=0.D0
0115 DKID=0.D0
0116 ENDIF
0117 IF (ABS(PNU).GT.1500.D0) THEN
0118 IERRO=2
0119 DKI=0.D0
0120 DKID=0.D0
0121 ENDIF
0122 IF (IERRO.EQ.0) THEN
0123
0124
0125
0126
0127 IF (PNU.LT.0.D0) PNU=-PNU
0128 D=X-3.1D0
0129 DF1=0.044D0*ABS(D)**1.9D0+D
0130 DF2=380.D0*(ABS((X-3.D0)/2300.D0))**0.572D0
0131 DF3=0.4D0*X+7.5D0
0132 DF4=3.7D0*X-10.D0
0133 IF (PNU.GT.DF1) THEN
0134 CALL SERKIA(IFAC,X,PNU,DKI,DKID,IERRO)
0135 ELSEIF ((X.GT.3.D0).AND.(PNU.LT.DF2)) THEN
0136 CALL FRAKIA(IFAC,X,PNU,DKI,DKID,IERRO)
0137 ELSEIF ((PNU.GT.DF3).AND.(PNU.LT.DF4)) THEN
0138 CALL AIEXKI(IFAC,X,PNU,DKI,DKID,IERRO)
0139 ELSE
0140 CALL DKINT(IFAC,X,PNU,DKI,DKID,IERRO)
0141 ENDIF
0142 ENDIF
0143 RETURN
0144 END
0145
0146 SUBROUTINE DKINT(IFAC,XX,PNUA,DKINF,DKIND,IERRO)
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211 DOUBLE PRECISION CHI,CONTR1,COSCHI,COSH2M,COSHM,COSTH,
0212 + D1MACH,DF1,DKIND,DKINF,DMAIN,DMU,DMU2,DMU3,DMU5,DMU7,
0213 + DMU9,DMUFAC,DMUTAN,FDOMIN,FOS1,FOSD1,HIR,HIRD,PI,
0214 + PINU,PNU,PNUA,SINCHI,SINH2M,SINHM,SINTH,THET,UNDER,
0215 + X,XX
0216 INTEGER IERRO,IFAC
0217 COMMON/ARGU/X,PNU
0218 COMMON/PARMON/THET,SINTH,COSTH,FDOMIN
0219 COMMON/PAROS1/DMU,COSHM,SINHM,DMUFAC,COSCHI,SINCHI
0220 COMMON/PAROS2/COSH2M,SINH2M,DMAIN
0221 COMMON/PAROS3/DMUTAN
0222
0223 UNDER=D1MACH(1)*1.D+8
0224 X=XX
0225 PNU=PNUA
0226 IERRO=0
0227 IF (X.GE.PNU) THEN
0228
0229
0230
0231 SINTH=PNU/X
0232 THET=ASIN(SINTH)
0233 COSTH=COS(THET)
0234 FDOMIN=X*(COSTH+THET*SINTH)
0235 IF (IFAC.EQ.1) THEN
0236 IF (-FDOMIN.LE.LOG(UNDER)) IERRO=1
0237 ENDIF
0238 IF (IERRO.EQ.0) THEN
0239
0240
0241
0242
0243 CALL TRAPRE(1,HIR)
0244 IF (IFAC.EQ.1) THEN
0245 DKINF=0.5D0*HIR*EXP(-FDOMIN)
0246 ELSE
0247 DKINF=0.5D0*HIR
0248 ENDIF
0249
0250
0251
0252
0253 CALL TRAPRE(10,HIRD)
0254 IF (IFAC.EQ.1) THEN
0255 DKIND=-HIRD*EXP(-FDOMIN)
0256 ELSE
0257 DKIND=-HIRD
0258 ENDIF
0259 ELSE
0260 DKINF=0.D0
0261 DKIND=0.D0
0262 ENDIF
0263 ELSE
0264
0265
0266
0267 PI=ACOS(-1.D0)
0268 IF (IFAC.EQ.1) THEN
0269 IF ((-PI*PNU*0.5D0).LE.LOG(UNDER)) IERRO=1
0270 ENDIF
0271 IF (IERRO.EQ.0) THEN
0272 COSHM=PNU/X
0273 DMU=LOG(COSHM+SQRT((COSHM-1.D0)*(COSHM+1.D0)))
0274 DMU2=2.D0*DMU
0275 COSH2M=COSH(DMU2)
0276 SINHM=SINH(DMU)
0277 SINH2M=SINH(DMU2)
0278 IF (DMU.GT.0.1D0) THEN
0279 CHI=X*SINHM-PNU*DMU
0280 DMUFAC=DMU*COSHM-SINHM
0281 ELSE
0282 DMU2=DMU*DMU
0283 DMU3=DMU2*DMU
0284 DMU5=DMU3*DMU2
0285 DMU7=DMU5*DMU2
0286 DMU9=DMU7*DMU2
0287 CHI=-2.D0*X*(1.D0/6.D0*DMU3+1.D0/60.D0*DMU5+
0288 + 3.D0/5040.D0*DMU7+4.D0/362880.D0*DMU9)
0289 DMUFAC=DMU3/3.D0+DMU5/30.D0+DMU7/840.D0+DMU9/45360.D0
0290 ENDIF
0291 DMUTAN=DMU-TANH(DMU)
0292 COSCHI=COS(CHI)
0293 SINCHI=SIN(CHI)
0294 PINU=PI*PNU
0295 DMAIN=PINU*0.5D0
0296
0297
0298
0299 CALL TRAPRE(2,FOS1)
0300
0301
0302
0303 IF (IFAC.EQ.1) THEN
0304 DF1=EXP(-DMAIN)
0305 CONTR1=DF1*FOS1
0306 ELSE
0307 DF1=1.D0
0308 CONTR1=DF1*FOS1
0309 ENDIF
0310 DKINF=CONTR1
0311
0312
0313
0314
0315
0316
0317 CALL TRAPRE(20,FOSD1)
0318
0319
0320
0321 IF (IFAC.EQ.1) THEN
0322 DF1=EXP(-DMAIN)
0323 CONTR1=DF1*FOSD1
0324 ELSE
0325 DF1=1.D0
0326 CONTR1=DF1*FOSD1
0327 ENDIF
0328 DKIND=CONTR1
0329 ELSE
0330 DKINF=0.D0
0331 DKIND=0.D0
0332 ENDIF
0333 ENDIF
0334 RETURN
0335 END
0336
0337 DOUBLE PRECISION FUNCTION FA(U)
0338
0339
0340
0341
0342
0343
0344
0345
0346
0347
0348
0349
0350
0351
0352
0353
0354
0355
0356
0357 DOUBLE PRECISION D1MACH,PHIR,U,UNDER
0358
0359 UNDER=D1MACH(1)*1.D+8
0360 IF ((-PHIR(U)).LE.LOG(UNDER)) THEN
0361 FA=0.D0
0362 ELSE
0363 FA=EXP(-PHIR(U))
0364 ENDIF
0365 RETURN
0366 END
0367
0368 DOUBLE PRECISION FUNCTION FAD(T)
0369
0370
0371
0372
0373
0374
0375
0376
0377
0378
0379
0380
0381
0382
0383
0384
0385
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396
0397
0398
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410 DOUBLE PRECISION ANG,ANGH,COSTH,COSVU,D1MACH,
0411 + DFAC,DJACO,EXPO,FDOMIN,FU1,FUAC,PHIR,S,SINANH,
0412 + SINHU,SINHUH,SINTH,T,THET,U,U2,U3,U5,U7,UH,UNDER,
0413 + V,VU,Y
0414 COMMON/PARMON/THET,SINTH,COSTH,FDOMIN
0415
0416 UNDER=D1MACH(1)*1.D+8
0417 S=SINH(T)
0418 Y=EXP(S)
0419 U=LOG(1.D0+Y)
0420 DJACO=COSH(T)*Y/(1.D0+Y)
0421 IF (ABS(U).LT.1.D-1) THEN
0422 IF (ABS(U).LT.UNDER) THEN
0423 DFAC=COSTH
0424 ELSE
0425 UH=U*0.5D0
0426 SINHUH=SINH(UH)
0427 FU1=2.D0*SINHUH*SINHUH
0428 U2=U*U
0429 U3=U2*U
0430 U5=U2*U3
0431 U7=U5*U2
0432 FUAC=U3/6.D0+U5/120.D0+U7/5040.D0
0433 SINHU=SINH(U)
0434 VU=V(U)
0435 COSVU=COS(VU)
0436 ANG=ASIN(-SINTH/(COSTH*U/SINHU+COSVU)*
0437 + (SINHU+U)*FUAC/(SINHU*SINHU))
0438 ANGH=0.5D0*ANG
0439 SINANH=SIN(ANGH)
0440 DFAC=COSTH+(FU1+2.D0*SINANH*SINANH)/COSVU
0441 ENDIF
0442 ELSE
0443 VU=V(U)
0444 ANG=THET-VU
0445 FU1=COSH(U)-1.D0
0446 ANGH=0.5D0*ANG
0447 SINANH=SIN(ANGH)
0448 DFAC=COSTH+(FU1+2.D0*SINANH*SINANH)/COS(VU)
0449 ENDIF
0450 IF ((-PHIR(U)).LE.LOG(UNDER)) THEN
0451 EXPO=0.D0
0452 ELSE
0453 EXPO=EXP(-PHIR(U))
0454 ENDIF
0455 FAD=EXPO*DFAC*DJACO
0456 RETURN
0457 END
0458
0459 DOUBLE PRECISION FUNCTION FDTAU2(T)
0460
0461
0462
0463
0464
0465
0466
0467
0468
0469
0470
0471
0472
0473
0474
0475
0476
0477
0478
0479
0480
0481
0482
0483
0484
0485
0486
0487
0488
0489
0490
0491
0492
0493
0494
0495
0496
0497
0498
0499
0500
0501
0502
0503
0504
0505
0506
0507
0508
0509
0510
0511
0512
0513
0514
0515
0516
0517
0518
0519
0520
0521
0522
0523
0524
0525 DOUBLE PRECISION ARGU,ARGU2,COSCHI,COSH2M,COSHM,
0526 + COSHU,COSS,D1,D1MACH,DELTA,DERI,DJACO,DMAIN,DMU,
0527 + DMU2,DMUFAC,DMUTAN,EXPON,F1,G1,GAMMA,PHIB,RESTO,
0528 + S,SIGMA,SIGMAU,SINCHI,SINH2M,SINHM,SINHU,SINHU2,
0529 + SINS,T,U,UNDER,X,Y,Z,Z2,Z3,Z5,Z7
0530 COMMON/PAROS1/DMU,COSHM,SINHM,DMUFAC,COSCHI,SINCHI
0531 COMMON/PAROS2/COSH2M,SINH2M,DMAIN
0532 COMMON/PAROS3/DMUTAN
0533
0534 UNDER=D1MACH(1)*1.D+8
0535 S=SINH(T)
0536 X=EXP(S)
0537 U=DMUTAN+LOG(X+SQRT(X*X+1.D0))
0538 Y=U-DMU
0539 COSHU=COSH(U)
0540 SINHU=SINH(U)
0541 IF (ABS(Y).LE.1.D-1) THEN
0542 IF (ABS(Y).GT.UNDER) THEN
0543 F1=SINH(Y)/Y
0544 ELSE
0545 F1=1.D0
0546 ENDIF
0547 Z=Y*2.D0
0548 Z2=Z*Z
0549 Z3=Z2*Z
0550 Z5=Z3*Z2
0551 Z7=Z5*Z2
0552 G1=Z/6.D0+Z3/120.D0+Z5/5040.D0+Z7/362880.D0
0553 DMU2=2.D0*DMU
0554 DERI=SINHU/(F1-COSHM*COSHU)*SQRT(COSH(DMU2)*F1*F1+
0555 + 2.D0*SINH(DMU2)*G1-COSHM*COSHM)
0556 DERI=1.D0/DERI
0557 ELSE
0558 D1=COSHM*U-DMUFAC
0559 ARGU=D1/SINHU
0560 ARGU2=ARGU*ARGU
0561 SINHU2=SINHU*SINHU
0562 DERI=1.D0/SQRT(1.D0-ARGU2)*(COSHM/SINHU-
0563 + D1*COSHU/SINHU2)
0564 IF (U.LT.DMU) DERI=-DERI
0565 ENDIF
0566 DJACO=COSH(T)*X/SQRT(1.D0+X*X)
0567 IF ((-(PHIB(U)-DMAIN)).LE.LOG(UNDER)) THEN
0568 EXPON=0.D0
0569 FDTAU2=0.D0
0570 ELSE
0571 EXPON=EXP(-(PHIB(U)-DMAIN))
0572 SIGMAU=SIGMA(U)
0573 SINS=SIN(SIGMAU)
0574 COSS=COS(SIGMAU)
0575 GAMMA=COSCHI*SINS*SINHU-SINCHI*COSS*COSHU
0576 DELTA=-COSCHI*COSS*COSHU-SINCHI*SINS*SINHU
0577 RESTO=DELTA+GAMMA*DERI
0578 FDTAU2=EXPON*RESTO*DJACO
0579 ENDIF
0580 RETURN
0581 END
0582
0583 DOUBLE PRECISION FUNCTION FSTAU2(T)
0584
0585
0586
0587
0588
0589
0590
0591
0592
0593
0594
0595
0596
0597
0598
0599
0600
0601
0602
0603
0604
0605
0606
0607
0608
0609
0610
0611
0612
0613
0614
0615
0616
0617
0618
0619
0620
0621
0622
0623
0624
0625
0626
0627
0628
0629
0630
0631
0632
0633
0634
0635
0636
0637 DOUBLE PRECISION ARGU,ARGU2,COSCHI,COSH2M,
0638 + COSHM,D1,D1MACH,DERI,DJACO,DMAIN,DMU,DMU2,
0639 + DMUFAC,DMUTAN,EXPON,F1,G1,PHIB,RESTO,S,SINCHI,
0640 + SINH2M,SINHM,SINHU,SINHU2,T,U,UNDER,X,Y,Z,Z2,
0641 + Z3,Z5,Z7
0642 COMMON/PAROS1/DMU,COSHM,SINHM,DMUFAC,COSCHI,SINCHI
0643 COMMON/PAROS2/COSH2M,SINH2M,DMAIN
0644 COMMON/PAROS3/DMUTAN
0645
0646 UNDER=D1MACH(1)*1.D+8
0647 S=SINH(T)
0648 X=EXP(S)
0649 U=DMUTAN+LOG(X+SQRT(X*X+1.D0))
0650 Y=U-DMU
0651 IF (ABS(Y).GT.UNDER) THEN
0652 F1=SINH(Y)/Y
0653 ELSE
0654 F1=1.D0
0655 ENDIF
0656 Z=Y*2.D0
0657 Z2=Z*Z
0658 IF (ABS(Y).LE.0.1D0) THEN
0659 Z3=Z2*Z
0660 Z5=Z3*Z2
0661 Z7=Z5*Z2
0662 G1=Z/6.D0+Z3/120.D0+Z5/5040.D0+Z7/362880.D0
0663 DMU2=2.D0*DMU
0664 DERI=SINH(U)/(F1-COSHM*COSH(U))*
0665 + SQRT(COSH(DMU2)*F1*F1+2.D0*SINH(DMU2)*G1-
0666 + COSHM*COSHM)
0667 DERI=1.D0/DERI
0668 ELSE
0669 D1=COSHM*U-DMUFAC
0670 SINHU=SINH(U)
0671 ARGU=D1/SINHU
0672 ARGU2=ARGU*ARGU
0673 SINHU2=SINHU*SINHU
0674 DERI=1.D0/SQRT(1.D0-ARGU2)*
0675 + (COSHM/SINHU-D1*COSH(U)/SINHU2)
0676 IF (U.LT.DMU) DERI=-DERI
0677 ENDIF
0678 DJACO=COSH(T)*X/SQRT(1.D0+X*X)
0679 IF ((-(PHIB(U)-DMAIN)).LE.LOG(UNDER)) THEN
0680 EXPON=0.D0
0681 FSTAU2=0.D0
0682 ELSE
0683 EXPON=EXP(-(PHIB(U)-DMAIN))
0684 RESTO=(COSCHI+SINCHI*DERI)
0685 FSTAU2=EXPON*RESTO*DJACO
0686 ENDIF
0687 RETURN
0688 END
0689
0690 SUBROUTINE TRAPRE(IC,TI)
0691
0692
0693
0694
0695
0696
0697
0698
0699
0700
0701
0702
0703
0704
0705
0706
0707
0708
0709
0710
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721
0722
0723
0724
0725 DOUBLE PRECISION A,B,D1MACH,DELTA,EPS,FINTE,H,
0726 + PNU,SUM,TI,TIN,X,XAC,Z
0727 INTEGER I,IC,IFI,N
0728 COMMON/ARGU/X,PNU
0729 EPS=D1MACH(3)
0730 IF (EPS.LT.1.D-14) EPS=1.D-14
0731 N=0
0732
0733 Z=X/PNU
0734 IF ((Z.GT.0.999D0).AND.(Z.LT.1.001D0)) THEN
0735 IF ((IC.EQ.1).OR.(IC.EQ.10)) THEN
0736 A=-3.5D0
0737 ELSE
0738 A=-4.5D0
0739 ENDIF
0740 ELSE
0741 IF ((IC.EQ.2).OR.(IC.EQ.20)) THEN
0742 A=-2.5D0
0743 ELSE
0744 A=-4.5D0
0745 ENDIF
0746 ENDIF
0747 B=-A
0748 H=B-A
0749 TI=0.5D0*H*(FINTE(IC,A)+FINTE(IC,B))
0750 DELTA=1.D0+EPS
0751 11 N=N+1
0752 H=0.5D0*H
0753 IF (N.EQ.1) THEN
0754 IFI=1
0755 ELSE
0756 IFI=2*IFI
0757 ENDIF
0758 SUM=0.D0
0759 DO 3 I=1,IFI
0760 XAC=A+DBLE(2*I-1)*H
0761 SUM=SUM+FINTE(IC,XAC)
0762 3 CONTINUE
0763 TIN=0.5D0*TI+H*SUM
0764 IF ((TIN.NE.0.D0).AND.(N.GT.4)) THEN
0765 DELTA=ABS(1.D0-TI/TIN)
0766 ENDIF
0767 TI=TIN
0768 IF ((DELTA.GT.EPS).AND.(N.LT.9)) GOTO 11
0769 RETURN
0770 END
0771
0772 DOUBLE PRECISION FUNCTION FINTE(IC,T)
0773
0774
0775
0776
0777
0778
0779
0780
0781
0782
0783
0784
0785
0786
0787
0788
0789
0790
0791
0792
0793
0794
0795
0796
0797
0798 DOUBLE PRECISION FA,FAD,FDTAU2,FSTAU2,T
0799 INTEGER IC
0800 IF (IC.EQ.1) THEN
0801 FINTE=FA(T)
0802 ENDIF
0803 IF (IC.EQ.2) THEN
0804 FINTE=FSTAU2(T)
0805 ENDIF
0806 IF (IC.EQ.10) THEN
0807 FINTE=FAD(T)
0808 ENDIF
0809 IF (IC.EQ.20) THEN
0810 FINTE=FDTAU2(T)
0811 ENDIF
0812 END
0813
0814 SUBROUTINE FRAKIA(IFAC,X,PNU,PSER,PSERD,IERRO)
0815
0816
0817
0818
0819
0820
0821
0822
0823
0824
0825
0826
0827
0828
0829
0830
0831
0832
0833
0834
0835
0836
0837
0838
0839
0840
0841
0842
0843
0844
0845
0846
0847
0848
0849
0850
0851
0852
0853
0854
0855
0856
0857
0858
0859
0860
0861
0862
0863
0864
0865
0866
0867
0868
0869
0870
0871
0872
0873
0874
0875
0876 DOUBLE PRECISION A,A2,AA,AB,B,CC,COSTH,D,D1MACH,
0877 + DELS,DELTA,FC,FDOMIN,K,KP,PI,PIA,PISQ,PNU,PRECI,
0878 + PSER,PSERD,Q0B,Q1B,QB,QQB,S,SINTH,THET,UNDER,X,Z0
0879 INTEGER IERRO,IFAC,MM
0880
0881 UNDER=D1MACH(1)*1.D+8
0882 PI=ACOS(-1.D0)
0883 IERRO=0
0884 IF (IFAC.EQ.1) THEN
0885 IF (X.GE.PNU) THEN
0886 SINTH=PNU/X
0887 THET=ASIN(SINTH)
0888 COSTH=COS(THET)
0889 FDOMIN=X*(COSTH+THET*SINTH)
0890 IF (-FDOMIN.LE.LOG(UNDER)) IERRO=1
0891 ELSE
0892 IF ((-PI*PNU*0.5D0).LE.LOG(UNDER)) IERRO=1
0893 ENDIF
0894 ENDIF
0895 IF (IERRO.EQ.0) THEN
0896 PRECI=D1MACH(3)*10
0897 A=PNU
0898 A2=A*A
0899 PISQ=PI**0.5D0
0900
0901 MM=2
0902 AB=-(0.25D0+A2)
0903 AA=AB
0904 CC=-AB
0905 Q0B=0.D0
0906 Q1B=1.D0
0907 QQB=CC
0908 B=2.D0*(1.D0+X)
0909 D=1.D0/B
0910 DELTA=D
0911 FC=DELTA
0912 S=QQB*DELTA
0913 AB=-2.D0+AB
0914 B=B+2.D0
0915 91 D=1.D0/(B+AB*D)
0916 DELTA=(B*D-1.D0)*DELTA
0917 FC=FC+DELTA
0918 CC=-AB*CC/MM
0919 QB=(Q0B-(B-2.D0)*Q1B)/AB
0920 Q0B=Q1B
0921 Q1B=QB
0922 QQB=QQB+CC*Q1B
0923 DELS=QQB*DELTA
0924 S=S+DELS
0925 B=B+2.D0
0926 AB=-2.D0*MM+AB
0927 MM=MM+1
0928 IF (MM.LT.10000) THEN
0929 IF (ABS(DELS/S).GT.PRECI) GOTO 91
0930 ENDIF
0931 Z0=1.D0/(1.D0+S)
0932 IF (IFAC.EQ.1) THEN
0933 K=PISQ*(2.D0*X)**(-0.5D0)*EXP(-X)*Z0
0934 KP=-K/X*(0.5D0+X-(A2+0.25D0)*FC)
0935 ELSE
0936 IF (X.LT.A) THEN
0937 PIA=PI*A
0938 K=PISQ*(2.D0*X)**(-0.5D0)*EXP(-X+PIA*0.5D0)*Z0
0939 KP=-K/X*(0.5D0+X-(A2+0.25D0)*FC)
0940 ELSE
0941 SINTH=A/X
0942 THET=ASIN(SINTH)
0943 COSTH=COS(THET)
0944 FDOMIN=X*(COSTH+THET*SINTH)
0945 K=PISQ*(2.D0*X)**(-0.5D0)*EXP(-X+FDOMIN)*Z0
0946 KP=-K/X*(0.5D0+X-(A2+0.25D0)*FC)
0947 ENDIF
0948 ENDIF
0949 PSER=K
0950 PSERD=KP
0951 ELSE
0952 PSER=0.D0
0953 PSERD=0.D0
0954 ENDIF
0955 RETURN
0956 END
0957
0958 SUBROUTINE SERKIA(IFAC,X,PNU,PSER,PSERD,IERRO)
0959
0960
0961
0962
0963
0964
0965
0966
0967
0968
0969
0970
0971
0972
0973
0974
0975
0976
0977
0978
0979
0980
0981
0982
0983
0984
0985
0986
0987
0988
0989
0990
0991
0992
0993
0994
0995
0996
0997
0998
0999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027 DOUBLE PRECISION A,A2,A2N,ACCP,ACCQ,ARGU,C,COCI,COSTH,
1028 + D1MACH,DDS,DEE,DELTAK,DELTKP,DF1,DSMALL,ETA0,ETA02,
1029 + EULER,F(0:500),FDOMIN,K,KP,OVER,P0(0:9),P1(0:9),P2(0:6),
1030 + PI,PIA,PIA2,PNU,PRECI,PSER,PSERD,Q0(0:9),Q1(0:9),Q2(0:6),
1031 + R(0:500),SIG0,SINTH,THET,UNDER,X,X2
1032 INTEGER IERRO,IFAC,L,M,N
1033 SAVE P0,Q0,P1,Q1,P2,Q2
1034 DATA P0/1.08871504904797411683D5,3.64707573081160914640D5,
1035 + 4.88801471582878013158D5,3.36275736298197324009D5,
1036 + 1.26899226277838479804D5,
1037 + 2.60795543527084582682D4,2.73352480554497990544D3,
1038 + 1.26447543569902963184D2,
1039 + 1.85446022125533909390D0,1.90716219990037648146D-3/
1040 DATA Q0/6.14884786346071135090D5,2.29801588515708014282D6,
1041 + 3.50310844128424021934D6,
1042 + 2.81194990286041080264D6,1.28236441994358406742D6,
1043 + 3.35209348711803753154D5,
1044 + 4.84319580247948701171D4,3.54877039006873206531D3,
1045 + 1.11207201299804390166D2,1.D0/
1046 DATA P1/-1.044100987526487618670D10,-1.508574107180079913696D10,
1047 + -5.582652833355901160542D9,4.052529174369477275446D8,
1048 + 5.461712273118594275192D8,
1049 + 9.510404403068169395714D7,6.281126609997342119416D6,
1050 + 1.651178048950518520416D5,
1051 + 1.498824421329341285521D3,2.974686506595477984776D0/
1052 DATA Q1/1.808868161493543887787D10,3.869142051704700267785D10,
1053 + 3.003264575147162634046D10,1.075554651494601843525D10,
1054 + 1.901298501823290694245D9,
1055 + 1.665999832151229472632D8,6.952188089169487375936D6,
1056 + 1.253235080625688652718D5,7.904420414560291396996D2,1.D0/
1057 DATA P2/7.08638611024520906826D-3,-6.54026368947801591128D-2,
1058 + 2.92684143106158043933D-1,4.66821392319665609167D0,
1059 + -3.43943790382690949054D0,
1060 + -7.72786486869252994370D0,-9.88841771200290647461D-01/
1061 DATA Q2/-7.08638611024520908189D-3,6.59931690706339630254D-2,
1062 + -2.98754421632058618922D-1,-4.63752355513412248006D0,
1063 + 3.79700454098863541593D0,7.06184065426336718524D0,1.D0/
1064 PI=ACOS(-1.D0)
1065 ETA0=1.8055470716051069198764D0
1066 EULER=0.577215664901532860606512D0
1067 PRECI=D1MACH(3)*10
1068
1069 OVER=D1MACH(2)*1.D-8
1070
1071 UNDER=D1MACH(1)*1.D+8
1072 IERRO=0
1073 IF (IFAC.EQ.1) THEN
1074 IF (X.GE.PNU) THEN
1075 SINTH=PNU/X
1076 THET=ASIN(SINTH)
1077 COSTH=COS(THET)
1078 FDOMIN=X*(COSTH+THET*SINTH)
1079 IF (-FDOMIN.LE.LOG(UNDER)) IERRO=1
1080 ELSE
1081 IF ((-PI*PNU*0.5D0).LE.LOG(UNDER)) IERRO=1
1082 ENDIF
1083 ENDIF
1084
1085
1086
1087
1088 IF (IERRO.EQ.0) THEN
1089 A=PNU
1090 ETA02=ETA0*ETA0
1091 A2=A*A
1092 N=0
1093 ACCP=0.D0
1094 ACCQ=0.D0
1095 IF (A.LE.2.D0) THEN
1096 33 A2N=A2**N
1097 ACCP=ACCP+P0(N)*A2N
1098 ACCQ=ACCQ+Q0(N)*A2N
1099 N=N+1
1100 IF (N.LE.9) GOTO 33
1101 SIG0=A*(A2-ETA02)*ACCP/ACCQ
1102 ELSE
1103 IF ((A.GT.2.D0).AND.(A.LE.4.D0)) THEN
1104 44 A2N=A2**N
1105 ACCP=ACCP+P1(N)*A2N
1106 ACCQ=ACCQ+Q1(N)*A2N
1107 N=N+1
1108 IF (N.LE.9) GOTO 44
1109 SIG0=A*ACCP/ACCQ
1110 ELSE
1111 55 A2N=A2**N
1112 ACCP=ACCP+P2(N)/A2N
1113 ACCQ=ACCQ+Q2(N)/A2N
1114 N=N+1
1115 IF (N.LE.6) GOTO 55
1116 SIG0=ATAN(A)*0.5D0+A*(LOG(1.D0+A2)*0.5D0+ACCP/ACCQ)
1117 ENDIF
1118 ENDIF
1119
1120
1121
1122 PIA=PI*A
1123 ARGU=SIG0-A*LOG(X*0.5D0)
1124 R(0)=COS(ARGU)
1125 R(1)=1.D0/(1.D0+A2)*(R(0)-A*SIN(ARGU))
1126 IF (A.LT.UNDER) THEN
1127 F(0)=-(EULER+LOG(X*0.5D0))
1128 ELSE
1129 F(0)=1.D0/A*SIN(ARGU)
1130 ENDIF
1131 C=1.D0
1132 K=F(0)
1133 KP=-0.5D0*R(0)
1134
1135
1136
1137 X2=0.25D0*X*X
1138 M=1
1139 COCI=1.D0/(M*M+A2)
1140 DELTAK=K*10
1141 DELTKP=KP*10
1142 66 F(M)=(M*F(M-1)+R(M-1))*COCI
1143 C=X2*C/M
1144 DELTAK=F(M)*C
1145 K=K+DELTAK
1146 DELTKP=(M*F(M)-0.5D0*R(M))*C
1147 KP=KP+DELTKP
1148 M=M+1
1149 COCI=1.D0/(M*M+A2)
1150 R(M)=((2.D0*M-1.D0)*R(M-1)-R(M-2))*COCI
1151 IF (K.GT.OVER) M=500
1152 IF (KP.GT.OVER) M=500
1153 IF (M.LT.500) THEN
1154 IF ((ABS(DELTAK/K).GT.PRECI).OR.
1155 + (ABS(DELTKP/KP).GT.PRECI)) GOTO 66
1156 ENDIF
1157 PIA2=2.D0*PIA
1158 IF (IFAC.EQ.1) THEN
1159 IF (-PIA2.LE.LOG(UNDER)) THEN
1160 DEE=0.D0
1161 ELSE
1162 DEE=EXP(-PIA2)
1163 ENDIF
1164 IF (A.LT.1.D-1) THEN
1165 IF (A.LT.UNDER) THEN
1166 DF1=1.D0
1167 ELSE
1168 L=0
1169 DDS=1.D0
1170 DSMALL=1.D0
1171 47 L=L+1
1172 DDS=-DDS*PIA2/(L+1.D0)
1173 DSMALL=DSMALL+DDS
1174 IF (ABS(DDS/DSMALL).GT.PRECI) GOTO 47
1175 DF1=EXP(PIA*0.5D0)*SQRT(DSMALL)
1176 ENDIF
1177 ELSE
1178 DF1=EXP(PIA*0.5D0)*SQRT((1.D0-DEE)/PIA2)
1179 ENDIF
1180 PSER=K/DF1
1181 PSERD=KP*2.D0/X/DF1
1182 ELSE
1183 IF (X.LT.A) THEN
1184 IF (-PIA2.LE.LOG(UNDER)) THEN
1185 DEE=0.D0
1186 ELSE
1187 DEE=EXP(-PIA2)
1188 ENDIF
1189 IF (A.LT.1.D-1) THEN
1190 IF (A.LT.UNDER) THEN
1191 DF1=1.D0
1192 ELSE
1193 L=0
1194 DDS=1.D0
1195 DSMALL=1.D0
1196 48 L=L+1
1197 DDS=-DDS*PIA2/(L+1.D0)
1198 DSMALL=DSMALL+DDS
1199 IF (ABS(DDS/DSMALL).GT.PRECI) GOTO 48
1200 DF1=SQRT(DSMALL)
1201 ENDIF
1202 ELSE
1203 DF1=SQRT((1.D0-DEE)/PIA2)
1204 ENDIF
1205 ELSE
1206 SINTH=A/X
1207 THET=ASIN(SINTH)
1208 COSTH=COS(THET)
1209 FDOMIN=X*(COSTH+THET*SINTH)
1210 IF (-PIA2.LE.LOG(UNDER)) THEN
1211 DEE=0.D0
1212 ELSE
1213 DEE=EXP(-PIA2)
1214 ENDIF
1215 IF (A.LT.1.D-1) THEN
1216 IF (A.LT.UNDER) THEN
1217 DF1=1.D0
1218 ELSE
1219 L=0
1220 DDS=1.D0
1221 DSMALL=1.D0
1222 49 L=L+1
1223 DDS=-DDS*PIA2/(L+1.D0)
1224 DSMALL=DSMALL+DDS
1225 IF (ABS(DDS/DSMALL).GT.PRECI) GOTO 49
1226 DF1=EXP(PIA*0.5D0-FDOMIN)*SQRT(DSMALL)
1227 ENDIF
1228 ELSE
1229 DF1=EXP(PIA*0.5D0-FDOMIN)*SQRT((1.D0-DEE)/PIA2)
1230 ENDIF
1231 ENDIF
1232 PSER=K/DF1
1233 PSERD=KP*2.D0/X/DF1
1234 ENDIF
1235 ELSE
1236 PSER=0.D0
1237 PSERD=0.D0
1238 ENDIF
1239 RETURN
1240 END
1241
1242 SUBROUTINE AIEXKI(IFAC,X,A,DKAI,DKAID,IERROK)
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346 DOUBLE PRECISION A,A0EX,A13,A2,A23,A2K,AC(0:5,0:20),
1347 + AII,AIR,APIHAL,ARG,AS,ASP,B0EX,B0PEX,BC(0:5,0:20),
1348 + BS,BSO,BSP,BSPO,C0EX,CHI,CHIEX,CHIN(0:26),COSTH,
1349 + COZMAS(0:12),D0EX,D1MACH,DAII,DAIR,DF,DKAI,DKAID
1350 DOUBLE PRECISION DZZ,ETA,ETAJ,ETAK,ETAL,EXPAM,
1351 + EXPAPI,F2,F4,FAC,FACD,FDOMIN,PHI(0:35),PHIEX,PHIEX2,
1352 + PHIS,PI,PIHALF,PSI,PSI12,PSI2,PSI3,SAS,SBS,SCS,SDS,
1353 + SIG,SINTH,THET,UNDER,X,Y,Z,Z2,Z21M,ZDS,ZMASF
1354 INTEGER IERRO,IERROK,IFAC,IFACA,IFUN,INDA(0:5),INDB(0:5),
1355 + J,K,L
1356 SAVE PHI,CHIN,AC,BC
1357
1358 DATA PHI/1.D0,0.2D0,.25714285714285714286D-1,
1359 + -.56507936507936507937D-2,-.39367965367965367965D-2,
1360 + -.5209362066504924D-3,.3708541264731741D-3,
1361 + .2123827840293627D-3,.2150629788753145D-4,
1362 + -.2636904062981799D-4,-.1405469826493129D-4,
1363 + -.1149328899029441D-5,.1972641193938624D-5,
1364 + .1014324305593329D-5,.7034331100192200D-7,
1365 + -.1525044777392676D-6,-.7677866256900572D-7,
1366 + -.4669842638693018D-8,.1206673645965329D-7,
1367 + .5990877668092344D-8,.3269102150077715D-9,
1368 + -.97138350244428335095D-9,-.47745934295232233834D-9,
1369 + -.23750318642839155779D-10,.79244598109106655567D-10,
1370 + .38653584230817865528D-10,.17734105846426807873D-11,
1371 + -.65332110030864751956D-11,-.31673512094772575686D-11,
1372 + -.13524195177121030660D-12,.54324103217903338951D-12,
1373 + .26204918647967626464D-12,.10488134973664584898D-13,
1374 + -.45490420121539001435D-13,-.21851238232690420878D-13,
1375 + -.82456080260379042800D-15/
1376 DATA CHIN/.2D0,.1142857142857142857142857D-1,
1377 + -.2438095238095238095238095D-1,-.1003471449185734900020614D-1,
1378 + .8811404468547325690182833D-3,.2318339655809043564145605D-2,
1379 + .7794494413564441575646057D-3,-.1373952504077228744949558D-3,
1380 + -.2162301322540308393022684D-3,-.6585004634375583559042795D-4,
1381 + .1502851367097217578058824D-4,.1991904617871647675455262D-4,
1382 + .5731972706719818525615427D-5,-.1496427612747891044606885D-5,
1383 + -.1821231830428939670133992D-5,-.5054254875930882534538217D-6,
1384 + .1433283859497625931203415D-6,.1657681319078678321113361D-6,
1385 + .4485592642702540575627044D-7,-.1346138242826094098161839D-7,
1386 + -.1504601862773535117708677D-7,-.3995660198654805921651406D-8,
1387 + .1250124931952495738882300D-8,.1363187174221864073749532D-8,
1388 + .3567608459777506132029204D-9,-.1152749290139859167119863D-9,
1389 + -.1233547289799408517691696D-9/
1390 DATA COZMAS/.9428090415820634D0,-.4242640687119285D0,
1391 + .2904188565587606D0,-.2234261009999160D0,
1392 + .1821754153944745D0,-.1539625154198624D0,
1393 + .1333737583085222D0,-.1176617834148007D0,
1394 + .1052687194772381D0,-.9524025714638822D-1,
1395 + .8695738197073783D-1,-.8000034897653656D-1,
1396 + .7407421797273086D-1/
1397 DATA AC(0,0)/1.D0/
1398 DATA AC(1,0)/-.44444444444444444445D-2/
1399 DATA AC(1,1)/-.18441558441558441558D-2/
1400 DATA AC(1,2)/.11213675213675213675D-2/
1401 DATA AC(1,3)/.13457752124418791086D-2/
1402 DATA AC(1,4)/.0003880626562979504D0/
1403 DATA AC(1,5)/-.0001830686723781799D0/
1404 DATA AC(1,6)/-.0001995460887806733D0/
1405 DATA AC(1,7)/-.00005256191234041587D0/
1406 DATA AC(1,8)/.00002460619652459158D0/
1407 DATA AC(1,9)/.00002519246780924541D0/
1408 DATA AC(1,10)/.6333157376533242D-5/
1409 DATA AC(1,11)/-.2957485733830202D-5/
1410 DATA AC(1,12)/-.2925255920564838D-5/
1411 DATA AC(1,13)/-.7159702610502009D-6/
1412 DATA AC(1,14)/.3331510720390949D-6/
1413 DATA AC(1,15)/.3227670475692310D-6/
1414 DATA AC(1,16)/.7767729381664199D-7/
1415 DATA AC(1,17)/-.3600954237921120D-7/
1416 DATA AC(1,18)/-.3441724449034226D-7/
1417 DATA AC(1,19)/-.8188194356398772D-8/
1418 DATA AC(1,20)/.3783148485152038D-8/
1419 DATA AC(2,0)/.69373554135458897365D-3/
1420 DATA AC(2,1)/.46448349036584330703D-3/
1421 DATA AC(2,2)/-.42838130171535112460D-3/
1422 DATA AC(2,3)/-.0007026702868771135D0/
1423 DATA AC(2,4)/-.0002632580046778811D0/
1424 DATA AC(2,5)/.0001663853666288703D0/
1425 DATA AC(2,6)/.0002212087687818584D0/
1426 DATA AC(2,7)/.00007020345615329662D0/
1427 DATA AC(2,8)/-.00004000421782540614D0/
1428 DATA AC(2,9)/-.00004786324966453962D0/
1429 DATA AC(2,10)/-.00001394600741473631D0/
1430 DATA AC(2,11)/.7536186591273727D-5/
1431 DATA AC(2,12)/.8478502161067667D-5/
1432 DATA AC(2,13)/.2345355228453912D-5/
1433 DATA AC(2,14)/-.1225943294710883D-5/
1434 DATA AC(2,15)/-.1325082343401027D-5/
1435 DATA AC(2,16)/-.3539954776569997D-6/
1436 DATA AC(2,17)/.1808291719376674D-6/
1437 DATA AC(2,18)/.1900383515233655D-6/
1438 DATA AC(3,0)/-.35421197145774384076D-3/
1439 DATA AC(3,1)/-.31232252789031883276D-3/
1440 DATA AC(3,2)/.3716442237502298D-3/
1441 DATA AC(3,3)/.0007539269155977733D0/
1442 DATA AC(3,4)/.0003408300059444739D0/
1443 DATA AC(3,5)/-.0002634968172069594D0/
1444 DATA AC(3,6)/-.0004089275726648432D0/
1445 DATA AC(3,7)/-.0001501108759563460D0/
1446 DATA AC(3,8)/.00009964015205538056D0/
1447 DATA AC(3,9)/.0001352492955751283D0/
1448 DATA AC(3,10)/.00004443117087272903D0/
1449 DATA AC(3,11)/-.00002713205071914117D0/
1450 DATA AC(3,12)/-.00003396796969771860D0/
1451 DATA AC(3,13)/-.00001040708865273043D0/
1452 DATA AC(3,14)/.6024639065414414D-5/
1453 DATA AC(3,15)/.7143919607846883D-5/
1454 DATA AC(4,0)/.378194199201773D-3/
1455 DATA AC(4,1)/.000404943905523634D0/
1456 DATA AC(4,2)/-.000579130526946453D0/
1457 DATA AC(4,3)/-.00138017901171011D0/
1458 DATA AC(4,4)/-.000722520056780091D0/
1459 DATA AC(4,5)/.000651265924036825D0/
1460 DATA AC(4,6)/.00114674563328389D0/
1461 DATA AC(4,7)/.000474423189340405D0/
1462 DATA AC(4,8)/-.000356495172735468D0/
1463 DATA AC(4,9)/-.000538157791035111D0/
1464 DATA AC(4,10)/-.000195687390661225D0/
1465 DATA AC(4,11)/.000132563525210293D0/
1466 DATA AC(4,12)/.000181949256267291D0/
1467 DATA AC(5,0)/-.69114139728829416760D-3/
1468 DATA AC(5,1)/-.00085995326611774383285D0/
1469 DATA AC(5,2)/.0014202335568143511489D0/
1470 DATA AC(5,3)/.0038535426995603052443D0/
1471 DATA AC(5,4)/.0022752811642901374595D0/
1472 DATA AC(5,5)/-.0023219572034556988366D0/
1473 DATA AC(5,6)/-.0045478643394434635622D0/
1474 DATA AC(5,7)/-.0020824431758272449919D0/
1475 DATA AC(5,8)/.0017370443573195808719D0/
1476 DATA BC(0,0)/.14285714285714285714D-1/
1477 DATA BC(0,1)/.88888888888888888889D-2/
1478 DATA BC(0,2)/.20482374768089053803D-2/
1479 DATA BC(0,3)/-.57826617826617826618D-3/
1480 DATA BC(0,4)/-.60412089799844901886D-3/
1481 DATA BC(0,5)/-.0001472685745626922D0/
1482 DATA BC(0,6)/.00005324102148009784D0/
1483 DATA BC(0,7)/.00005206561006583416D0/
1484 DATA BC(0,8)/.00001233115050894939D0/
1485 DATA BC(0,9)/-.4905932728531366D-5/
1486 DATA BC(0,10)/-.4632230987136350D-5/
1487 DATA BC(0,11)/-.1077174523455235D-5/
1488 DATA BC(0,12)/.4475963978932822D-6/
1489 DATA BC(0,13)/.4152586188464624D-6/
1490 DATA BC(0,14)/.9555819293589234D-7/
1491 DATA BC(0,15)/-.4060599208403059D-7/
1492 DATA BC(0,16)/-.3731367187988482D-7/
1493 DATA BC(0,17)/-.8532670645553778D-8/
1494 DATA BC(0,18)/.3673017245573624D-8/
1495 DATA BC(0,19)/.3355960460784536D-8/
1496 DATA BC(0,20)/.7643107095110475D-9/
1497 DATA BC(1,0)/-.11848595848595848596D-2/
1498 DATA BC(1,1)/-.13940630797773654917D-2/
1499 DATA BC(1,2)/-.48141005586383737645D-3/
1500 DATA BC(1,3)/.26841705366016142958D-3/
1501 DATA BC(1,4)/.0003419706982709903D0/
1502 DATA BC(1,5)/.0001034548234902078D0/
1503 DATA BC(1,6)/-.00005418191982095504D0/
1504 DATA BC(1,7)/-.00006202184830690167D0/
1505 DATA BC(1,8)/-.00001724885886056087D0/
1506 DATA BC(1,9)/.8744675992887053D-5/
1507 DATA BC(1,10)/.9420684216180929D-5/
1508 DATA BC(1,11)/.2494922112085850D-5/
1509 DATA BC(1,12)/-.1238458608836357D-5/
1510 DATA BC(1,13)/-.1285461713809769D-5/
1511 DATA BC(1,14)/-.3299710862537507D-6/
1512 DATA BC(1,15)/.1613441105788315D-6/
1513 DATA BC(1,16)/.1633623194402374D-6/
1514 DATA BC(1,17)/.4104252949605779D-7/
1515 DATA BC(1,18)/-.1984317042326989D-7/
1516 DATA BC(1,19)/-.1973948142769706D-7/
1517 DATA BC(1,20)/-.4882194808588752D-8/
1518 DATA BC(2,0)/.43829180944898810994D-3/
1519 DATA BC(2,1)/.71104865116708668943D-3/
1520 DATA BC(2,2)/.31858383945387580576D-3/
1521 DATA BC(2,3)/-.0002404809426804458D0/
1522 DATA BC(2,4)/-.0003722966038621536D0/
1523 DATA BC(2,5)/-.0001352752059595618D0/
1524 DATA BC(2,6)/.00008691694372704142D0/
1525 DATA BC(2,7)/.0001158750753591377D0/
1526 DATA BC(2,8)/.00003724965927846447D0/
1527 DATA BC(2,9)/-.00002198334949606935D0/
1528 DATA BC(2,10)/-.00002686449633870452D0/
1529 DATA BC(2,11)/-.8023061612032524D-5/
1530 DATA BC(2,12)/.4494756592180126D-5/
1531 DATA BC(2,13)/.5193504763856015D-5/
1532 DATA BC(2,14)/.1477156191529617D-5/
1533 DATA BC(2,15)/-.7988793826096784D-6/
1534 DATA BC(3,0)/-.37670439477105454219D-3/
1535 DATA BC(3,1)/-.75856271658798642365D-3/
1536 DATA BC(3,2)/-.0004103253968775048D0/
1537 DATA BC(3,3)/.0003791263310429010D0/
1538 DATA BC(3,4)/.0006850981673903450D0/
1539 DATA BC(3,5)/.0002878310571932216D0/
1540 DATA BC(3,6)/-.0002157010636115705D0/
1541 DATA BC(3,7)/-.0003260863991373500D0/
1542 DATA BC(3,8)/-.0001181317008748678D0/
1543 DATA BC(3,9)/.00007887526841582582D0/
1544 DATA BC(3,10)/.0001072081833420685D0/
1545 DATA BC(3,11)/.00003544595251288735D0/
1546 DATA BC(3,12)/-.00002201447920733824D0/
1547 DATA BC(3,13)/-.00002789336359620813D0/
1548 DATA BC(4,0)/.00058453330122076187255D0/
1549 DATA BC(4,1)/.0013854690422372401251D0/
1550 DATA BC(4,2)/.00086830374184946900245D0/
1551 DATA BC(4,3)/-.00093502904801345951693D0/
1552 DATA BC(4,4)/-.0019175486005525492059D0/
1553 DATA BC(4,5)/-.00090795047113308137941D0/
1554 DATA BC(4,6)/.00077050429806392235104D0/
1555 DATA BC(4,7)/.0012953100128255983488D0/
1556 DATA BC(4,8)/.00051933869471899550762D0/
1557 DATA BC(4,9)/-.00038482631948759834653D0/
1558 DATA BC(4,10)/-.00057335393099012476502D0/
1559 DATA BC(5,0)/-.0014301070053470410656D0/
1560 DATA BC(5,1)/-.0038637811942002539408D0/
1561 DATA BC(5,2)/-.0027322816261168328245D0/
1562 DATA BC(5,3)/.0033294980346743452748D0/
1563 DATA BC(5,4)/.0075972237660887795911D0/
1564 DATA BC(5,5)/.0039816655673062060620D0/
1565 DATA BC(5,6)/-.0037510180460986006595D0/
1566 DATA INDA/0,20,18,15,12,8/
1567 DATA INDB/20,20,15,13,10,6/
1568
1569 UNDER=D1MACH(1)*1.D+8
1570
1571 PI=ACOS(-1.D0)
1572 PIHALF=PI*0.5D0
1573 IERROK=0
1574 IF (IFAC.EQ.1) THEN
1575 IF (X.GE.A) THEN
1576 SINTH=A/X
1577 THET=ASIN(SINTH)
1578 COSTH=COS(THET)
1579 FDOMIN=X*(COSTH+THET*SINTH)
1580 IF (-FDOMIN.LE.LOG(UNDER)) IERROK=1
1581 ELSE
1582 IF ((-PI*A*0.5D0).LE.LOG(UNDER)) IERROK=1
1583 ENDIF
1584 ENDIF
1585 IF (IERROK.EQ.0) THEN
1586 DF=2.D0**(1.D0/3.D0)
1587
1588 Z=X/A
1589 A2=A*A
1590 A13=A**(1.D0/3.D0)
1591 A23=A13*A13
1592 IF (IFAC.EQ.1) THEN
1593 APIHAL=A*PIHALF
1594 EXPAPI=EXP(-APIHAL)
1595 FAC=PI*EXPAPI/A13
1596 FACD=2.D0*PI*EXPAPI/Z/A23
1597 ELSE
1598 IF (X.LT.A) THEN
1599 FAC=PI/A13
1600 FACD=2.D0*PI/Z/A23
1601 ELSE
1602 SINTH=A/X
1603 THET=ASIN(SINTH)
1604 COSTH=COS(THET)
1605 FDOMIN=X*(COSTH+THET*SINTH)
1606 EXPAM=EXP(-A*PIHALF+FDOMIN)
1607 FAC=PI*EXPAM/A13
1608 FACD=2.D0*PI*EXPAM/Z/A23
1609 ENDIF
1610 ENDIF
1611 F4=A13**4
1612 IF (Z.LE.0.9D0) THEN
1613 ZDS=SQRT((1.D0-Z)*(1.D0+Z))
1614 PSI=(1.5D0*(LOG((1.D0+ZDS)/Z)-ZDS))**(2.D0/3.D0)
1615 ELSEIF (Z.GT.1.1D0) THEN
1616 ZDS=SQRT((Z-1.D0)*(1.D0+Z))
1617 PSI=-(1.5D0*(ZDS-ACOS(1.D0/Z)))**(2.D0/3.D0)
1618 ELSE
1619 Y=Z-1.D0
1620 ZMASF=COZMAS(12)
1621 DO 8 K=0,11
1622 J=11-K
1623 ZMASF=COZMAS(J)+Y*ZMASF
1624 8 CONTINUE
1625 ZMASF=ABS(Y)**(1.5D0)*ZMASF
1626 IF (Z.LT.1.D0) THEN
1627 PSI=(1.5D0*ZMASF)**(2.D0/3.D0)
1628 ELSE
1629 PSI=-(1.5D0*ZMASF)**(2.D0/3.D0)
1630 ENDIF
1631 ENDIF
1632 ETA=PSI/DF
1633 ARG=-A23*PSI
1634 PSI2=PSI*PSI
1635 PSI3=PSI2*PSI
1636 IF ((Z.GT.0.8D0).AND.(Z.LT.1.2D0)) THEN
1637 PHIS=0.D0
1638 CHI=0.D0
1639 SAS=0.D0
1640 SBS=0.D0
1641 SDS=0.D0
1642 SCS=1.D0
1643 BS=0.D0
1644 BSPO=0.D0
1645 DO 41 L=0,20
1646 IF (L.EQ.0) THEN
1647 ETAL=1.D0
1648 ELSE
1649 ETAL=ETAL*ETA
1650 ENDIF
1651 CHI=CHI+CHIN(L)*ETAL
1652 41 CONTINUE
1653 CHI=CHI/DF
1654 DO 10 K=0,20
1655 BSO=BS
1656 BSPO=BSP
1657 AS=0.D0
1658 BS=0.D0
1659 ASP=0.D0
1660 BSP=0.D0
1661 IF (K.EQ.0) THEN
1662 ETAK=1.D0
1663 A2K=1.D0
1664 SIG=1.D0
1665 ELSE
1666 ETAK=ETAK*ETA
1667 A2K=A2K*A2
1668 SIG=-1.D0*SIG
1669 ENDIF
1670 PHIS=PHIS+PHI(K)*ETAK
1671 F2=SIG/A2K
1672 IF (K.LE.5) THEN
1673 DO 20 J=0,20
1674 IF (J.EQ.0) THEN
1675 ETAJ=1.D0
1676 ELSE
1677 ETAJ=ETAJ*ETA
1678 ENDIF
1679 IF (J.LE.INDA(K)) THEN
1680 AS=AS+AC(K,J)*ETAJ
1681 ENDIF
1682 IF (J.LE.INDB(K)) THEN
1683 BS=BS+BC(K,J)*ETAJ
1684 ENDIF
1685 IF ((J+1).LE.INDA(K)) THEN
1686 ASP=ASP+(J+1)*AC(K,J+1)*ETAJ
1687 ENDIF
1688 IF ((J+1).LE.INDB(K)) THEN
1689 BSP=BSP+(J+1)*BC(K,J+1)*ETAJ
1690 ENDIF
1691 20 CONTINUE
1692 ASP=1.D0/DF*ASP
1693 BS=BS*DF
1694 SAS=SAS+AS*F2
1695 SBS=SBS+BS*F2/DF
1696 SDS=SDS-(CHI*AS+ASP+PSI*BS)*F2
1697 ENDIF
1698 IF ((K.GT.0).AND.(K.LE.6)) THEN
1699 SCS=SCS+(AS+CHI*BSO+BSPO)*F2
1700 ENDIF
1701 10 CONTINUE
1702 PHIS=DF*PHIS
1703 SBS=DF*SBS
1704 ELSE
1705
1706 Z2=Z*Z
1707 Z21M=1.D0-Z2
1708 PHIEX=(4.D0*PSI/Z21M)**0.25D0
1709 PHIEX2=PHIEX*PHIEX
1710 A0EX=1.D0
1711 B0EX=-5.D0/48.D0/(PSI*PSI)+PHIEX2/48.D0/PSI*
1712 + (5.D0/Z21M-3.D0)
1713 CHIEX=0.25D0/PSI*(1.D0-Z2*PHIEX2**3*0.25D0)
1714 CHI=CHIEX
1715 D0EX=-(7.D0/48.D0/PSI+PHIEX2/48.D0*
1716 + (9.D0-7.D0/Z21M))
1717 IF (PSI.GT.0.D0) THEN
1718 PSI12=SQRT(PSI)
1719 DZZ=SQRT(Z21M)
1720 ELSE
1721 PSI12=SQRT(-PSI)
1722 DZZ=SQRT(ABS(Z21M))
1723 ENDIF
1724 B0PEX=5.D0/24.D0/PSI3+PHIEX2/48.D0*((2.D0*CHI*PSI-1.D0)/
1725 + PSI2*(5.D0/Z21M-3.D0)-10.D0*Z2*PSI12/
1726 + Z21M**2/DZZ/PSI)
1727 C0EX=1.D0
1728 SAS=A0EX
1729 SBS=B0EX
1730 SCS=C0EX
1731 SDS=D0EX
1732 BS=0.D0
1733 BSP=0.D0
1734 A2K=1.D0
1735 SIG=1.D0
1736 DO 30 K=1,6
1737 BSO=BS
1738 BSPO=BSP
1739 AS=0.D0
1740 BS=0.D0
1741 ASP=0.D0
1742 BSP=0.D0
1743 A2K=A2K*A2
1744 SIG=-1.D0*SIG
1745 F2=SIG/A2K
1746 IF (K.LE.5) THEN
1747 DO 40 J=0,20
1748 IF (J.EQ.0) THEN
1749 ETAJ=1.D0
1750 ELSE
1751 ETAJ=ETAJ*ETA
1752 ENDIF
1753 IF (J.LE.INDA(K)) THEN
1754 AS=AS+AC(K,J)*ETAJ
1755 ENDIF
1756 IF (J.LE.INDB(K)) THEN
1757 BS=BS+BC(K,J)*ETAJ
1758 ENDIF
1759 IF ((J+1).LE.INDA(K)) THEN
1760 ASP=ASP+(J+1)*AC(K,J+1)*ETAJ
1761 ENDIF
1762 IF ((J+1).LE.INDB(K)) THEN
1763 BSP=BSP+(J+1)*BC(K,J+1)*ETAJ
1764 ENDIF
1765 40 CONTINUE
1766 BS=DF*BS
1767 ASP=ASP/DF
1768 SAS=SAS+AS*F2
1769 SBS=SBS+BS*F2
1770 SDS=SDS-(CHI*AS+ASP+PSI*BS)*F2
1771 ENDIF
1772 IF (K.GE.2) THEN
1773 SCS=SCS+(AS+CHI*BSO+BSPO)*F2
1774 ELSE
1775 SCS=SCS+(AS+CHI*B0EX+B0PEX)*F2
1776 ENDIF
1777 30 CONTINUE
1778 PHIS=PHIEX
1779 ENDIF
1780
1781 IFUN=1
1782 IFACA=1
1783 CALL AIZ(IFUN,IFACA,ARG,0.D0,AIR,AII,IERRO)
1784 IFUN=2
1785 IFACA=1
1786 CALL AIZ(IFUN,IFACA,ARG,0.D0,DAIR,DAII,IERRO)
1787 DKAI=FAC*PHIS*(AIR*SAS+DAIR*SBS/F4)
1788 DKAID=FACD/PHIS*(DAIR*SCS+AIR*SDS/A23)
1789 ELSE
1790 DKAI=0.D0
1791 DKAID=0.D0
1792 ENDIF
1793 RETURN
1794 END
1795
1796 SUBROUTINE DLIA(IFAC,X,A,DLI,DLID,IERRO)
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900 DOUBLE PRECISION A,D,DF1,DF2,DF3,DLI,DLID,PNU,X
1901 INTEGER IERRO,IFAC
1902 IERRO=0
1903 PNU=A
1904 IF ((X.GT.1500.D0).OR.(X.LE.0.D0)) THEN
1905 IERRO=2
1906 DLI=0.D0
1907 DLID=0.D0
1908 ENDIF
1909 IF (ABS(PNU).GT.1500.D0) THEN
1910 IERRO=2
1911 DLI=0.D0
1912 DLID=0.D0
1913 ENDIF
1914 IF (IERRO.EQ.0) THEN
1915
1916
1917
1918
1919 IF (PNU.LT.0.D0) PNU=-PNU
1920 D=X-3.1D0
1921 DF1=0.044D0*ABS(D)**1.9D0+D
1922 DF2=0.7D0*X-10.D0
1923 DF3=3.7D0*X-10.D0
1924 IF ((PNU.GT.DF1).OR.(((PNU.LE.25.D0).AND.(X.LE.60.D0))))
1925 + THEN
1926 CALL SERLIA(IFAC,X,PNU,DLI,DLID,IERRO)
1927 ELSEIF (PNU.LT.DF2) THEN
1928 CALL EXPLIA(IFAC,X,PNU,DLI,DLID,IERRO)
1929 ELSEIF (PNU.LT.DF3) THEN
1930 CALL AIEXLI(IFAC,X,PNU,DLI,DLID,IERRO)
1931 ELSE
1932 CALL DLINT(IFAC,X,PNU,DLI,DLID,IERRO)
1933 ENDIF
1934 ENDIF
1935 RETURN
1936 END
1937
1938 SUBROUTINE DLINT(IFAC,XX,PNUA,DLINF,DLIND,IERRO)
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996 DOUBLE PRECISION CHI,CONTR1,COSCHI,COSH2M,COSHM,
1997 + D1MACH,DF1,DFF,DLIND,DLINF,DMAIN,DMU,DMU2,DMU3,
1998 + DMU5,DMU7,DMU9,DMUFAC,DMUTAN,EXPO,FOS1,FOSD1,OVER,
1999 + PI,PINU,PNU,PNUA,SINCHI,SINH2M,SINHM,UNDER,X,XX
2000 INTEGER IERRO,IFAC
2001 COMMON/ARGU/X,PNU
2002 COMMON/PAROS1/DMU,COSHM,SINHM,DMUFAC,COSCHI,SINCHI
2003 COMMON/PAROS2/COSH2M,SINH2M,DMAIN
2004 COMMON/PAROS3/DMUTAN
2005
2006 OVER=D1MACH(2)*1.D-8
2007
2008 UNDER=D1MACH(1)*1.D+8
2009 X=XX
2010 PNU=PNUA
2011 PI=ACOS(-1.D0)
2012 IERRO=0
2013
2014
2015
2016
2017
2018 PI=ACOS(-1.D0)
2019 IF (IFAC.EQ.1) THEN
2020 IF ((PI*PNU*0.5D0).GE.LOG(OVER)) IERRO=1
2021 ENDIF
2022 IF (IERRO.EQ.0) THEN
2023 COSHM=PNU/X
2024 DMU=LOG(COSHM+SQRT((COSHM-1.D0)*(COSHM+1.D0)))
2025 DMU2=2.D0*DMU
2026 COSH2M=COSH(DMU2)
2027 SINHM=SINH(DMU)
2028 SINH2M=SINH(DMU2)
2029 IF (DMU.GT.0.1D0) THEN
2030 CHI=X*SINHM-PNU*DMU
2031 DMUFAC=DMU*COSHM-SINHM
2032 ELSE
2033 DMU2=DMU*DMU
2034 DMU3=DMU2*DMU
2035 DMU5=DMU3*DMU2
2036 DMU7=DMU5*DMU2
2037 DMU9=DMU7*DMU2
2038 CHI=-2.D0*X*(1.D0/6.D0*DMU3+1.D0/60.D0*DMU5+
2039 + 3.D0/5040.D0*DMU7+4.D0/362880.D0*DMU9)
2040 DMUFAC=DMU3/3.D0+DMU5/30.D0+DMU7/840.D0+DMU9/45360.D0
2041 ENDIF
2042 DMUTAN=DMU-TANH(DMU)
2043 COSCHI=COS(CHI)
2044 SINCHI=SIN(CHI)
2045 PINU=PI*PNU
2046 DMAIN=PINU*0.5D0
2047
2048
2049
2050 CALL TRAPRL(1,FOS1)
2051
2052
2053
2054 IF (IFAC.EQ.1) THEN
2055 EXPO=EXP(DMAIN)
2056 DFF=EXPO/PI
2057 IF ((-2.D0*PINU).LE.LOG(UNDER)) THEN
2058 DF1=DFF*0.5D0
2059 ELSE
2060 DF1=DFF*(1.D0-EXP(-2.D0*PINU))*0.5D0
2061 ENDIF
2062 CONTR1=DF1*FOS1
2063 ELSE
2064 DFF=1.D0/PI
2065 IF ((-2.D0*PINU).LE.LOG(UNDER)) THEN
2066 DF1=DFF*0.5D0
2067 ELSE
2068 DF1=DFF*(1.D0-EXP(-2.D0*PINU))*0.5D0
2069 ENDIF
2070 CONTR1=DF1*FOS1
2071 ENDIF
2072 DLINF=CONTR1
2073
2074
2075
2076
2077
2078
2079 CALL TRAPRL(10,FOSD1)
2080
2081
2082
2083 IF (IFAC.EQ.1) THEN
2084 EXPO=EXP(DMAIN)
2085 DFF=EXPO/PI
2086 IF ((-2.D0*PINU).LE.LOG(UNDER)) THEN
2087 DF1=DFF*0.5D0
2088 ELSE
2089 DF1=DFF*(1.D0-EXP(-2.D0*PINU))*0.5D0
2090 ENDIF
2091 CONTR1=DF1*FOSD1
2092 ELSE
2093 DFF=1.D0/PI
2094 IF ((-2.D0*PINU).LE.LOG(UNDER)) THEN
2095 DF1=DFF*0.5D0
2096 ELSE
2097 DF1=DFF*(1.D0-EXP(-2.D0*PINU))*0.5D0
2098 ENDIF
2099 CONTR1=DF1*FOSD1
2100 ENDIF
2101 DLIND=CONTR1
2102 ELSE
2103 DLINF=0.D0
2104 DLIND=0.D0
2105 ENDIF
2106 RETURN
2107 END
2108
2109 DOUBLE PRECISION FUNCTION FSTAL2(T)
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163 DOUBLE PRECISION ARGU,ARGU2,COSCHI,COSH2M,COSHM,
2164 + D1,D1MACH,DERI,DJACO,DMAIN,DMU,DMU2,DMUFAC,DMUTAN,
2165 + EXPON,F1,G1,PHIB,RESTO,S,SINCHI,SINH2M,SINHM,
2166 + SINHU,SINHU2,T,U,UNDER,X,Y,Z,Z2,Z3,Z5,Z7
2167 COMMON/PAROS1/DMU,COSHM,SINHM,DMUFAC,COSCHI,SINCHI
2168 COMMON/PAROS2/COSH2M,SINH2M,DMAIN
2169 COMMON/PAROS3/DMUTAN
2170
2171 UNDER=D1MACH(1)*1.D+8
2172 S=SINH(T)
2173 X=EXP(S)
2174 U=DMUTAN+LOG(X+SQRT(X*X+1.D0))
2175 Y=U-DMU
2176 IF (ABS(Y).LE.0.1D0) THEN
2177 IF (ABS(Y).GT.UNDER) THEN
2178 F1=SINH(Y)/Y
2179 ELSE
2180 F1=1.D0
2181 ENDIF
2182 Z=Y*2.D0
2183 Z2=Z*Z
2184 Z3=Z2*Z
2185 Z5=Z3*Z2
2186 Z7=Z5*Z2
2187 G1=Z/6.D0+Z3/120.D0+Z5/5040.D0+Z7/362880.D0
2188 DMU2=2.D0*DMU
2189 DERI=SINH(U)/(F1-COSHM*COSH(U))*
2190 + SQRT(COSH(DMU2)*F1*F1+2.D0*SINH(DMU2)*G1-
2191 + COSHM*COSHM)
2192 DERI=1.D0/DERI
2193 ELSE
2194 D1=COSHM*U-DMUFAC
2195 SINHU=SINH(U)
2196 ARGU=D1/SINHU
2197 ARGU2=ARGU*ARGU
2198 SINHU2=SINHU*SINHU
2199 DERI=1.D0/SQRT(1.D0-ARGU2)*
2200 + (COSHM/SINHU-D1*COSH(U)/SINHU2)
2201 IF (U.LT.DMU) DERI=-DERI
2202 ENDIF
2203 DJACO=COSH(T)*X/SQRT(1.D0+X*X)
2204 IF ((-(PHIB(U)-DMAIN)).LE.LOG(UNDER)) THEN
2205 EXPON=0.D0
2206 FSTAL2=0.D0
2207 ELSE
2208 EXPON=EXP(-(PHIB(U)-DMAIN))
2209 RESTO=(SINCHI-COSCHI*DERI)
2210 FSTAL2=EXPON*RESTO*DJACO
2211 ENDIF
2212 RETURN
2213 END
2214
2215 DOUBLE PRECISION FUNCTION FDTAL2(T)
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281 DOUBLE PRECISION ARGU,ARGU2,COSCHI,COSH2M,COSHM,
2282 + COSHU,COSS,D1,D1MACH,DELTA,DERI,DJACO,DMAIN,DMU,
2283 + DMU2,DMUFAC,DMUTAN,EXPON,F1,G1,GAMMA,PHIB,RESTO,
2284 + S,SIGMA,SIGMAU,SINCHI,SINH2M,SINHM,SINHU,SINHU2,
2285 + SINS,T,U,UNDER,X,Y,Z,Z2,Z3,Z5,Z7
2286 COMMON/PAROS1/DMU,COSHM,SINHM,DMUFAC,COSCHI,SINCHI
2287 COMMON/PAROS2/COSH2M,SINH2M,DMAIN
2288 COMMON/PAROS3/DMUTAN
2289
2290 UNDER=D1MACH(1)*1.D+8
2291 S=SINH(T)
2292 X=EXP(S)
2293 U=DMUTAN+LOG(X+SQRT(X*X+1.D0))
2294 Y=U-DMU
2295 COSHU=COSH(U)
2296 SINHU=SINH(U)
2297 IF (ABS(Y).LE.0.1) THEN
2298 IF (ABS(Y).GT.UNDER) THEN
2299 F1=SINH(Y)/Y
2300 ELSE
2301 F1=1.D0
2302 ENDIF
2303 Z=Y*2.D0
2304 Z2=Z*Z
2305 Z3=Z2*Z
2306 Z5=Z3*Z2
2307 Z7=Z5*Z2
2308 G1=Z/6.D0+Z3/120.D0+Z5/5040.D0+Z7/362880.D0
2309 DMU2=2.D0*DMU
2310 DERI=SINHU/(F1-COSHM*COSHU)*SQRT(COSH(DMU2)*F1*F1+
2311 + 2.D0*SINH(DMU2)*G1-COSHM*COSHM)
2312 DERI=1.D0/DERI
2313 ELSE
2314 D1=COSHM*U-DMUFAC
2315 ARGU=D1/SINHU
2316 ARGU2=ARGU*ARGU
2317 SINHU2=SINHU*SINHU
2318 DERI=1.D0/SQRT(1.D0-ARGU2)*(COSHM/SINHU-
2319 + D1*COSHU/SINHU2)
2320 IF (U.LT.DMU) DERI=-DERI
2321 ENDIF
2322 DJACO=COSH(T)*X/SQRT(1.D0+X*X)
2323 IF ((-(PHIB(U)-DMAIN)).LE.LOG(UNDER)) THEN
2324 EXPON=0.D0
2325 FDTAL2=0.D0
2326 ELSE
2327 EXPON=EXP(-(PHIB(U)-DMAIN))
2328 SIGMAU=SIGMA(U)
2329 SINS=SIN(SIGMAU)
2330 COSS=COS(SIGMAU)
2331 GAMMA=SINCHI*SINS*SINHU+COSCHI*COSS*COSHU
2332 DELTA=-SINCHI*COSS*COSHU+COSCHI*SINS*SINHU
2333 RESTO=DELTA+GAMMA*DERI
2334 FDTAL2=EXPON*RESTO*DJACO
2335 ENDIF
2336 RETURN
2337 END
2338
2339 SUBROUTINE TRAPRL(IC,TI)
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369 DOUBLE PRECISION A,B,D1MACH,DELTA,EPS,FINTEL,
2370 + H,PNU,SUM,TI,TIN,X,XAC,Z
2371 INTEGER I,IC,IFI,N
2372 COMMON/ARGU/X,PNU
2373 EPS=D1MACH(3)
2374 IF (EPS.LT.1.D-14) EPS=1.D-14
2375 N=0
2376
2377 Z=X/PNU
2378 IF ((Z.GT.0.999D0).AND.(Z.LT.1.001D0)) THEN
2379 A=-4.5
2380 ELSE
2381 A=-2.5D0
2382 ENDIF
2383 B=-A
2384 H=B-A
2385 TI=0.5D0*H*(FINTEL(IC,A)+FINTEL(IC,B))
2386 DELTA=1.D0+EPS
2387 11 N=N+1
2388 H=0.5D0*H
2389 IF (N.EQ.1) THEN
2390 IFI=1
2391 ELSE
2392 IFI=2*IFI
2393 ENDIF
2394 SUM=0.D0
2395 DO 3 I=1,IFI
2396 XAC=A+DBLE(2*I-1)*H
2397 SUM=SUM+FINTEL(IC,XAC)
2398 3 CONTINUE
2399 TIN=0.5D0*TI+H*SUM
2400 IF ((TIN.NE.0.D0).AND.(N.GT.4)) THEN
2401 DELTA=ABS(1.D0-TI/TIN)
2402 ENDIF
2403 TI=TIN
2404 IF ((DELTA.GT.EPS).AND.(N.LT.9)) GOTO 11
2405 RETURN
2406 END
2407
2408 DOUBLE PRECISION FUNCTION FINTEL(IC,T)
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430 DOUBLE PRECISION FDTAL2,FSTAL2,T
2431 INTEGER IC
2432 IF (IC.EQ.1) THEN
2433 FINTEL=FSTAL2(T)
2434 ENDIF
2435 IF (IC.EQ.10) THEN
2436 FINTEL=FDTAL2(T)
2437 ENDIF
2438 RETURN
2439 END
2440
2441 SUBROUTINE SERLIA(IFAC,X,PNU,PSER,PSERD,IERRO)
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510 DOUBLE PRECISION A,A2,A2H,A2N,ACCP,ACCQ,ARGU,C,COCI,
2511 + COSTH,D1MACH,DDS,DEE,DELTAK,DELTKP,DF1,DSMALL,ETA0,
2512 + ETA02,EULER,F(0:500),FDOMIN,K,KP,OVER,P0(0:9),P1(0:9),
2513 + P2(0:6),PI,PIA,PIA2,PNU,PRECI,PSER,PSERD,Q0(0:9),
2514 + Q1(0:9),Q2(0:6),R(0:500),SIG0,SINTH,THET,UNDER,X,X2
2515 INTEGER IERRO,IFAC,L,M,N
2516 SAVE P0,Q0,P1,Q1,P2,Q2
2517 DATA P0/1.08871504904797411683D5,3.64707573081160914640D5,
2518 + 4.88801471582878013158D5,3.36275736298197324009D5,
2519 + 1.26899226277838479804D5,
2520 + 2.60795543527084582682D4,2.73352480554497990544D3,
2521 + 1.26447543569902963184D2,
2522 + 1.85446022125533909390D0,1.90716219990037648146D-3/
2523 DATA Q0/6.14884786346071135090D5,2.29801588515708014282D6,
2524 + 3.50310844128424021934D6,
2525 + 2.81194990286041080264D6,1.28236441994358406742D6,
2526 + 3.35209348711803753154D5,
2527 + 4.84319580247948701171D4,3.54877039006873206531D3,
2528 + 1.11207201299804390166D2,1.D0/
2529 DATA P1/-1.044100987526487618670D10,-1.508574107180079913696D10,
2530 + -5.582652833355901160542D9,4.052529174369477275446D8,
2531 + 5.461712273118594275192D8,
2532 + 9.510404403068169395714D7,6.281126609997342119416D6,
2533 + 1.651178048950518520416D5,
2534 + 1.498824421329341285521D3,2.974686506595477984776D0/
2535 DATA Q1/1.808868161493543887787D10,3.869142051704700267785D10,
2536 + 3.003264575147162634046D10,1.075554651494601843525D10,
2537 + 1.901298501823290694245D9,
2538 + 1.665999832151229472632D8,6.952188089169487375936D6,
2539 + 1.253235080625688652718D5,7.904420414560291396996D2,1.D0/
2540 DATA P2/7.08638611024520906826D-3,-6.54026368947801591128D-2,
2541 + 2.92684143106158043933D-1,4.66821392319665609167D0,
2542 + -3.43943790382690949054D0,
2543 + -7.72786486869252994370D0,-9.88841771200290647461D-01/
2544 DATA Q2/-7.08638611024520908189D-3,6.59931690706339630254D-2,
2545 + -2.98754421632058618922D-1,-4.63752355513412248006D0,
2546 + 3.79700454098863541593D0,7.06184065426336718524D0,1.D0/
2547
2548 OVER=D1MACH(2)*1.D-8
2549
2550 UNDER=D1MACH(1)*1.D+8
2551 PI=ACOS(-1.D0)
2552 IERRO=0
2553 IF (IFAC.EQ.1) THEN
2554 IF (X.GE.PNU) THEN
2555 SINTH=PNU/X
2556 THET=ASIN(SINTH)
2557 COSTH=COS(THET)
2558 FDOMIN=X*(COSTH+THET*SINTH)
2559 IF (FDOMIN.GE.LOG(OVER)) IERRO=1
2560 ELSE
2561 IF ((PI*PNU*0.5D0).GE.LOG(OVER)) IERRO=1
2562 ENDIF
2563 ENDIF
2564 IF (IERRO.EQ.0) THEN
2565 ETA0=1.8055470716051069198764D0
2566 EULER=0.577215664901532860606512D0
2567 PRECI=D1MACH(3)*10
2568
2569
2570
2571
2572 A=PNU
2573 ETA02=ETA0*ETA0
2574 A2=A*A
2575 N=0
2576 ACCP=0.D0
2577 ACCQ=0.D0
2578 IF (A.LE.2.D0) THEN
2579 33 A2N=A2**N
2580 ACCP=ACCP+P0(N)*A2N
2581 ACCQ=ACCQ+Q0(N)*A2N
2582 N=N+1
2583 IF (N.LE.9) GOTO 33
2584 SIG0=A*(A2-ETA02)*ACCP/ACCQ
2585 ELSE
2586 IF ((A.GT.2.D0).AND.(A.LE.4.D0)) THEN
2587 44 A2N=A2**N
2588 ACCP=ACCP+P1(N)*A2N
2589 ACCQ=ACCQ+Q1(N)*A2N
2590 N=N+1
2591 IF (N.LE.9) GOTO 44
2592 SIG0=A*ACCP/ACCQ
2593 ELSE
2594 55 A2N=A2**N
2595 ACCP=ACCP+P2(N)/A2N
2596 ACCQ=ACCQ+Q2(N)/A2N
2597 N=N+1
2598 IF (N.LE.6) GOTO 55
2599 SIG0=ATAN(A)*0.5D0+A*(LOG(1.D0+A2)*0.5D0+ACCP/ACCQ)
2600 ENDIF
2601 ENDIF
2602
2603
2604
2605 PIA=PI*A
2606 A2H=A2*0.5D0
2607 ARGU=SIG0-A*LOG(X*0.5D0)
2608 R(0)=COS(ARGU)
2609 R(1)=1.D0/(1.D0+A2)*(R(0)-A*SIN(ARGU))
2610 IF (A.LT.UNDER) THEN
2611 F(0)=-(EULER+LOG(X*0.5D0))
2612 ELSE
2613 F(0)=1.D0/A*SIN(ARGU)
2614 ENDIF
2615 C=1.D0
2616 K=R(0)
2617 KP=A2H*F(0)
2618
2619
2620
2621 X2=0.25D0*X*X
2622 M=1
2623 COCI=1.D0/(M*M+A2)
2624 DELTAK=K*10
2625 DELTKP=KP*10
2626 66 F(M)=(M*F(M-1)+R(M-1))*COCI
2627 C=X2*C/M
2628 DELTAK=R(M)*C
2629 K=K+DELTAK
2630 DELTKP=(M*R(M)+A2H*F(M))*C
2631 KP=KP+DELTKP
2632 M=M+1
2633 COCI=1.D0/(M*M+A2)
2634 R(M)=((2.D0*M-1.D0)*R(M-1)-R(M-2))*COCI
2635 IF (M.LT.500) THEN
2636 IF ((ABS(DELTAK/K).GT.PRECI).OR.
2637 + (ABS(DELTKP/KP).GT.PRECI)) GOTO 66
2638 ENDIF
2639 PIA2=2.D0*PIA
2640 IF (IFAC.EQ.1) THEN
2641 IF (-PIA2.LE.LOG(UNDER)) THEN
2642 DEE=0.D0
2643 ELSE
2644 DEE=EXP(-PIA2)
2645 ENDIF
2646 IF (A.LT.1.D-1) THEN
2647 IF (A.LT.UNDER) THEN
2648 DF1=1.D0
2649 ELSE
2650 L=0
2651 DDS=1.D0
2652 DSMALL=1.D0
2653 47 L=L+1
2654 DDS=-DDS*PIA2/(L+1.D0)
2655 DSMALL=DSMALL+DDS
2656 IF (ABS(DDS/DSMALL).GT.PRECI) GOTO 47
2657 DF1=EXP(PIA*0.5D0)*SQRT(DSMALL)
2658 ENDIF
2659 ELSE
2660 DF1=EXP(PIA*0.5D0)*SQRT((1.D0-DEE)/PIA2)
2661 ENDIF
2662 PSER=K*DF1
2663 PSERD=DF1*KP*2.D0/X
2664 ELSE
2665 IF (X.LT.A) THEN
2666 IF (-PIA2.LE.LOG(UNDER)) THEN
2667 DEE=0.D0
2668 ELSE
2669 DEE=EXP(-PIA2)
2670 ENDIF
2671 IF (A.LT.1.D-1) THEN
2672 IF (A.LT.UNDER) THEN
2673 DF1=1.D0
2674 ELSE
2675 L=0
2676 DDS=1.D0
2677 DSMALL=1.D0
2678 48 L=L+1
2679 DDS=-DDS*PIA2/(L+1.D0)
2680 DSMALL=DSMALL+DDS
2681 IF (ABS(DDS/DSMALL).GT.PRECI) GOTO 48
2682 DF1=SQRT(DSMALL)
2683 ENDIF
2684 ELSE
2685 DF1=SQRT((1.D0-DEE)/PIA2)
2686 ENDIF
2687 ELSE
2688 SINTH=A/X
2689 THET=ASIN(SINTH)
2690 COSTH=COS(THET)
2691 FDOMIN=X*(COSTH+THET*SINTH)
2692 IF (-PIA2.LE.LOG(UNDER)) THEN
2693 DEE=0.D0
2694 ELSE
2695 DEE=EXP(-PIA2)
2696 ENDIF
2697 IF (A.LT.1.D-1) THEN
2698 IF (A.LT.UNDER) THEN
2699 DF1=1.D0
2700 ELSE
2701 L=0
2702 DDS=1.D0
2703 DSMALL=1.D0
2704 49 L=L+1
2705 DDS=-DDS*PIA2/(L+1.D0)
2706 DSMALL=DSMALL+DDS
2707 IF (ABS(DDS/DSMALL).GT.PRECI) GOTO 49
2708 DF1=EXP(PIA*0.5D0-FDOMIN)*SQRT(DSMALL)
2709 ENDIF
2710 ELSE
2711 DF1=EXP(PIA*0.5D0-FDOMIN)*SQRT((1.D0-DEE)/PIA2)
2712 ENDIF
2713 ENDIF
2714 PSER=K*DF1
2715 PSERD=DF1*KP*2.D0/X
2716 ENDIF
2717 ELSE
2718 PSER=0.D0
2719 PSERD=0.D0
2720 ENDIF
2721 RETURN
2722 END
2723
2724 SUBROUTINE EXPLIA(IFAC,X,PNU,PEXP,PEXPP,IERRO)
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767 DOUBLE PRECISION A,A2,COSTH,D1MACH,DELTAK,
2768 + DELTKP,DF,FDOMIN,K,KP,OVER,PEXP,PEXPP,PI,PIA,
2769 + PNU,PRECI,RAX,SINTH,THET,X,XI
2770 INTEGER IERRO,IFAC,IND,M
2771
2772 OVER=D1MACH(2)*1.D-8
2773 PI=ACOS(-1.D0)
2774 IERRO=0
2775 IF (IFAC.EQ.1) THEN
2776 IF (X.GE.PNU) THEN
2777 SINTH=PNU/X
2778 THET=ASIN(SINTH)
2779 COSTH=COS(THET)
2780 FDOMIN=X*(COSTH+THET*SINTH)
2781 IF (FDOMIN.GE.LOG(OVER)) IERRO=1
2782 ELSE
2783 IF ((PI*PNU*0.5D0).GE.LOG(OVER)) IERRO=1
2784 ENDIF
2785 ENDIF
2786 IF (IERRO.EQ.0) THEN
2787 PRECI=D1MACH(3)*10
2788 A=PNU
2789 XI=1.D0/X
2790 A2=A*A
2791 RAX=1.D0
2792 M=1
2793 DELTAK=RAX
2794 K=DELTAK
2795 DELTKP=RAX*(0.5D0*XI-1.D0)
2796 KP=DELTKP
2797 IND=-1
2798 44 RAX=-((M-0.5D0)*(1.D0-0.5D0/M)+A2/M)*0.5D0/X*RAX
2799 DELTAK=RAX*IND
2800 K=K+DELTAK
2801 IF (K.GE.OVER) M=2000
2802 M=M+1
2803 IND=-IND
2804 IF ((ABS(DELTAK/K).GT.PRECI).AND.(M.LT.1000)) GOTO 44
2805 RAX=1.D0
2806 M=1
2807 IND=-1
2808 45 RAX=-((M-0.5D0)*(1.D0-0.5D0/M)+A2/M)*0.5D0/X*RAX
2809 DELTAK=RAX*IND
2810 DELTKP=DELTAK*(XI*(0.5D0+M)-1.D0)
2811 KP=KP+DELTKP
2812 IF (KP.GE.OVER) M=2000
2813 M=M+1
2814 IND=-IND
2815 IF ((ABS(DELTKP/KP).GT.PRECI).AND.(M.LT.1000)) GOTO 45
2816 IF (IFAC.EQ.1) THEN
2817 DF=SQRT(0.5D0/(PI*X))*EXP(X)
2818 K=K*DF
2819 KP=-KP*DF
2820 ELSE
2821 IF (X.LT.A) THEN
2822 PIA=PI*A
2823 DF=SQRT(0.5D0/(PI*X))*EXP(X-0.5D0*PIA)
2824 K=K*DF
2825 KP=-KP*DF
2826 ELSE
2827 SINTH=A/X
2828 THET=ASIN(SINTH)
2829 COSTH=COS(THET)
2830 FDOMIN=X*(COSTH+THET*SINTH)
2831 DF=SQRT(0.5D0/(PI*X))*EXP(X-FDOMIN)
2832 K=K*DF
2833 KP=-KP*DF
2834 ENDIF
2835 ENDIF
2836 PEXP=K
2837 PEXPP=KP
2838 ELSE
2839 PEXP=0.D0
2840 PEXPP=0.D0
2841 ENDIF
2842 RETURN
2843 END
2844
2845 SUBROUTINE AIEXLI(IFAC,X,A,DLAI,DLAID,IERROL)
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948 DOUBLE PRECISION A,A0EX,A13,A2,A23,A2K,AC(0:5,0:20),
2949 + APIHAL,ARG,AS,ASP,B0EX,B0PEX,BC(0:5,0:20),BII,BIR,
2950 + BS,BSO,BSP,BSPO,C0EX,CHI,CHIEX,CHIN(0:26),COSTH,
2951 + COZMAS(0:12),D0EX,D1MACH,DBII,DBIR,DF,DLAI,DLAID
2952 DOUBLE PRECISION DZZ,ETA,ETAJ,ETAK,ETAL,EXPAM,EXPAPI,
2953 + F2,F4,FAC,FACD,FDOMIN,OVER,PHI(0:35),PHIEX,PHIEX2,
2954 + PHIS,PI,PIHALF,PSI,PSI12,PSI2,PSI3,SAS,SBS,SCS,SDS,
2955 + SIG,SINTH,THET,X,Y,Z,Z2,Z21M,ZDS,ZMASF
2956 INTEGER IERRO,IERROL,IFAC,IFACA,IFUN,INDA(0:5),INDB(0:5),
2957 + J,K,L
2958 SAVE PHI,CHIN,AC,BC
2959
2960 DATA PHI/1.D0,0.2D0,.25714285714285714286D-1,
2961 + -.56507936507936507937D-2,-.39367965367965367965D-2,
2962 + -.5209362066504924D-3,.3708541264731741D-3,
2963 + .2123827840293627D-3,.2150629788753145D-4,
2964 + -.2636904062981799D-4,-.1405469826493129D-4,
2965 + -.1149328899029441D-5,.1972641193938624D-5,
2966 + .1014324305593329D-5,.7034331100192200D-7,
2967 + -.1525044777392676D-6,-.7677866256900572D-7,
2968 + -.4669842638693018D-8,.1206673645965329D-7,
2969 + .5990877668092344D-8,.3269102150077715D-9,
2970 + -.97138350244428335095D-9,-.47745934295232233834D-9,
2971 + -.23750318642839155779D-10,.79244598109106655567D-10,
2972 + .38653584230817865528D-10,.17734105846426807873D-11,
2973 + -.65332110030864751956D-11,-.31673512094772575686D-11,
2974 + -.13524195177121030660D-12,.54324103217903338951D-12,
2975 + .26204918647967626464D-12,.10488134973664584898D-13,
2976 + -.45490420121539001435D-13,-.21851238232690420878D-13,
2977 + -.82456080260379042800D-15/
2978 DATA CHIN/.2D0,.1142857142857142857142857D-1,
2979 + -.2438095238095238095238095D-1,-.1003471449185734900020614D-1,
2980 + .8811404468547325690182833D-3,.2318339655809043564145605D-2,
2981 + .7794494413564441575646057D-3,-.1373952504077228744949558D-3,
2982 + -.2162301322540308393022684D-3,-.6585004634375583559042795D-4,
2983 + .1502851367097217578058824D-4,.1991904617871647675455262D-4,
2984 + .5731972706719818525615427D-5,-.1496427612747891044606885D-5,
2985 + -.1821231830428939670133992D-5,-.5054254875930882534538217D-6,
2986 + .1433283859497625931203415D-6,.1657681319078678321113361D-6,
2987 + .4485592642702540575627044D-7,-.1346138242826094098161839D-7,
2988 + -.1504601862773535117708677D-7,-.3995660198654805921651406D-8,
2989 + .1250124931952495738882300D-8,.1363187174221864073749532D-8,
2990 + .3567608459777506132029204D-9,-.1152749290139859167119863D-9,
2991 + -.1233547289799408517691696D-9/
2992 DATA COZMAS/.9428090415820634D0,-.4242640687119285D0,
2993 + .2904188565587606D0,-.2234261009999160D0,
2994 + .1821754153944745D0,-.1539625154198624D0,
2995 + .1333737583085222D0,-.1176617834148007D0,
2996 + .1052687194772381D0,-.9524025714638822D-1,
2997 + .8695738197073783D-1,-.8000034897653656D-1,
2998 + .7407421797273086D-1/
2999 DATA AC(0,0)/1.D0/
3000 DATA AC(1,0)/-.44444444444444444445D-2/
3001 DATA AC(1,1)/-.18441558441558441558D-2/
3002 DATA AC(1,2)/.11213675213675213675D-2/
3003 DATA AC(1,3)/.13457752124418791086D-2/
3004 DATA AC(1,4)/.0003880626562979504D0/
3005 DATA AC(1,5)/-.0001830686723781799D0/
3006 DATA AC(1,6)/-.0001995460887806733D0/
3007 DATA AC(1,7)/-.00005256191234041587D0/
3008 DATA AC(1,8)/.00002460619652459158D0/
3009 DATA AC(1,9)/.00002519246780924541D0/
3010 DATA AC(1,10)/.6333157376533242D-5/
3011 DATA AC(1,11)/-.2957485733830202D-5/
3012 DATA AC(1,12)/-.2925255920564838D-5/
3013 DATA AC(1,13)/-.7159702610502009D-6/
3014 DATA AC(1,14)/.3331510720390949D-6/
3015 DATA AC(1,15)/.3227670475692310D-6/
3016 DATA AC(1,16)/.7767729381664199D-7/
3017 DATA AC(1,17)/-.3600954237921120D-7/
3018 DATA AC(1,18)/-.3441724449034226D-7/
3019 DATA AC(1,19)/-.8188194356398772D-8/
3020 DATA AC(1,20)/.3783148485152038D-8/
3021 DATA AC(2,0)/.69373554135458897365D-3/
3022 DATA AC(2,1)/.46448349036584330703D-3/
3023 DATA AC(2,2)/-.42838130171535112460D-3/
3024 DATA AC(2,3)/-.0007026702868771135D0/
3025 DATA AC(2,4)/-.0002632580046778811D0/
3026 DATA AC(2,5)/.0001663853666288703D0/
3027 DATA AC(2,6)/.0002212087687818584D0/
3028 DATA AC(2,7)/.00007020345615329662D0/
3029 DATA AC(2,8)/-.00004000421782540614D0/
3030 DATA AC(2,9)/-.00004786324966453962D0/
3031 DATA AC(2,10)/-.00001394600741473631D0/
3032 DATA AC(2,11)/.7536186591273727D-5/
3033 DATA AC(2,12)/.8478502161067667D-5/
3034 DATA AC(2,13)/.2345355228453912D-5/
3035 DATA AC(2,14)/-.1225943294710883D-5/
3036 DATA AC(2,15)/-.1325082343401027D-5/
3037 DATA AC(2,16)/-.3539954776569997D-6/
3038 DATA AC(2,17)/.1808291719376674D-6/
3039 DATA AC(2,18)/.1900383515233655D-6/
3040 DATA AC(3,0)/-.35421197145774384076D-3/
3041 DATA AC(3,1)/-.31232252789031883276D-3/
3042 DATA AC(3,2)/.3716442237502298D-3/
3043 DATA AC(3,3)/.0007539269155977733D0/
3044 DATA AC(3,4)/.0003408300059444739D0/
3045 DATA AC(3,5)/-.0002634968172069594D0/
3046 DATA AC(3,6)/-.0004089275726648432D0/
3047 DATA AC(3,7)/-.0001501108759563460D0/
3048 DATA AC(3,8)/.00009964015205538056D0/
3049 DATA AC(3,9)/.0001352492955751283D0/
3050 DATA AC(3,10)/.00004443117087272903D0/
3051 DATA AC(3,11)/-.00002713205071914117D0/
3052 DATA AC(3,12)/-.00003396796969771860D0/
3053 DATA AC(3,13)/-.00001040708865273043D0/
3054 DATA AC(3,14)/.6024639065414414D-5/
3055 DATA AC(3,15)/.7143919607846883D-5/
3056 DATA AC(4,0)/.378194199201773D-3/
3057 DATA AC(4,1)/.000404943905523634D0/
3058 DATA AC(4,2)/-.000579130526946453D0/
3059 DATA AC(4,3)/-.00138017901171011D0/
3060 DATA AC(4,4)/-.000722520056780091D0/
3061 DATA AC(4,5)/.000651265924036825D0/
3062 DATA AC(4,6)/.00114674563328389D0/
3063 DATA AC(4,7)/.000474423189340405D0/
3064 DATA AC(4,8)/-.000356495172735468D0/
3065 DATA AC(4,9)/-.000538157791035111D0/
3066 DATA AC(4,10)/-.000195687390661225D0/
3067 DATA AC(4,11)/.000132563525210293D0/
3068 DATA AC(4,12)/.000181949256267291D0/
3069 DATA AC(5,0)/-.69114139728829416760D-3/
3070 DATA AC(5,1)/-.00085995326611774383285D0/
3071 DATA AC(5,2)/.0014202335568143511489D0/
3072 DATA AC(5,3)/.0038535426995603052443D0/
3073 DATA AC(5,4)/.0022752811642901374595D0/
3074 DATA AC(5,5)/-.0023219572034556988366D0/
3075 DATA AC(5,6)/-.0045478643394434635622D0/
3076 DATA AC(5,7)/-.0020824431758272449919D0/
3077 DATA AC(5,8)/.0017370443573195808719D0/
3078 DATA BC(0,0)/.14285714285714285714D-1/
3079 DATA BC(0,1)/.88888888888888888889D-2/
3080 DATA BC(0,2)/.20482374768089053803D-2/
3081 DATA BC(0,3)/-.57826617826617826618D-3/
3082 DATA BC(0,4)/-.60412089799844901886D-3/
3083 DATA BC(0,5)/-.0001472685745626922D0/
3084 DATA BC(0,6)/.00005324102148009784D0/
3085 DATA BC(0,7)/.00005206561006583416D0/
3086 DATA BC(0,8)/.00001233115050894939D0/
3087 DATA BC(0,9)/-.4905932728531366D-5/
3088 DATA BC(0,10)/-.4632230987136350D-5/
3089 DATA BC(0,11)/-.1077174523455235D-5/
3090 DATA BC(0,12)/.4475963978932822D-6/
3091 DATA BC(0,13)/.4152586188464624D-6/
3092 DATA BC(0,14)/.9555819293589234D-7/
3093 DATA BC(0,15)/-.4060599208403059D-7/
3094 DATA BC(0,16)/-.3731367187988482D-7/
3095 DATA BC(0,17)/-.8532670645553778D-8/
3096 DATA BC(0,18)/.3673017245573624D-8/
3097 DATA BC(0,19)/.3355960460784536D-8/
3098 DATA BC(0,20)/.7643107095110475D-9/
3099 DATA BC(1,0)/-.11848595848595848596D-2/
3100 DATA BC(1,1)/-.13940630797773654917D-2/
3101 DATA BC(1,2)/-.48141005586383737645D-3/
3102 DATA BC(1,3)/.26841705366016142958D-3/
3103 DATA BC(1,4)/.0003419706982709903D0/
3104 DATA BC(1,5)/.0001034548234902078D0/
3105 DATA BC(1,6)/-.00005418191982095504D0/
3106 DATA BC(1,7)/-.00006202184830690167D0/
3107 DATA BC(1,8)/-.00001724885886056087D0/
3108 DATA BC(1,9)/.8744675992887053D-5/
3109 DATA BC(1,10)/.9420684216180929D-5/
3110 DATA BC(1,11)/.2494922112085850D-5/
3111 DATA BC(1,12)/-.1238458608836357D-5/
3112 DATA BC(1,13)/-.1285461713809769D-5/
3113 DATA BC(1,14)/-.3299710862537507D-6/
3114 DATA BC(1,15)/.1613441105788315D-6/
3115 DATA BC(1,16)/.1633623194402374D-6/
3116 DATA BC(1,17)/.4104252949605779D-7/
3117 DATA BC(1,18)/-.1984317042326989D-7/
3118 DATA BC(1,19)/-.1973948142769706D-7/
3119 DATA BC(1,20)/-.4882194808588752D-8/
3120 DATA BC(2,0)/.43829180944898810994D-3/
3121 DATA BC(2,1)/.71104865116708668943D-3/
3122 DATA BC(2,2)/.31858383945387580576D-3/
3123 DATA BC(2,3)/-.0002404809426804458D0/
3124 DATA BC(2,4)/-.0003722966038621536D0/
3125 DATA BC(2,5)/-.0001352752059595618D0/
3126 DATA BC(2,6)/.00008691694372704142D0/
3127 DATA BC(2,7)/.0001158750753591377D0/
3128 DATA BC(2,8)/.00003724965927846447D0/
3129 DATA BC(2,9)/-.00002198334949606935D0/
3130 DATA BC(2,10)/-.00002686449633870452D0/
3131 DATA BC(2,11)/-.8023061612032524D-5/
3132 DATA BC(2,12)/.4494756592180126D-5/
3133 DATA BC(2,13)/.5193504763856015D-5/
3134 DATA BC(2,14)/.1477156191529617D-5/
3135 DATA BC(2,15)/-.7988793826096784D-6/
3136 DATA BC(3,0)/-.37670439477105454219D-3/
3137 DATA BC(3,1)/-.75856271658798642365D-3/
3138 DATA BC(3,2)/-.0004103253968775048D0/
3139 DATA BC(3,3)/.0003791263310429010D0/
3140 DATA BC(3,4)/.0006850981673903450D0/
3141 DATA BC(3,5)/.0002878310571932216D0/
3142 DATA BC(3,6)/-.0002157010636115705D0/
3143 DATA BC(3,7)/-.0003260863991373500D0/
3144 DATA BC(3,8)/-.0001181317008748678D0/
3145 DATA BC(3,9)/.00007887526841582582D0/
3146 DATA BC(3,10)/.0001072081833420685D0/
3147 DATA BC(3,11)/.00003544595251288735D0/
3148 DATA BC(3,12)/-.00002201447920733824D0/
3149 DATA BC(3,13)/-.00002789336359620813D0/
3150 DATA BC(4,0)/.00058453330122076187255D0/
3151 DATA BC(4,1)/.0013854690422372401251D0/
3152 DATA BC(4,2)/.00086830374184946900245D0/
3153 DATA BC(4,3)/-.00093502904801345951693D0/
3154 DATA BC(4,4)/-.0019175486005525492059D0/
3155 DATA BC(4,5)/-.00090795047113308137941D0/
3156 DATA BC(4,6)/.00077050429806392235104D0/
3157 DATA BC(4,7)/.0012953100128255983488D0/
3158 DATA BC(4,8)/.00051933869471899550762D0/
3159 DATA BC(4,9)/-.00038482631948759834653D0/
3160 DATA BC(4,10)/-.00057335393099012476502D0/
3161 DATA BC(5,0)/-.0014301070053470410656D0/
3162 DATA BC(5,1)/-.0038637811942002539408D0/
3163 DATA BC(5,2)/-.0027322816261168328245D0/
3164 DATA BC(5,3)/.0033294980346743452748D0/
3165 DATA BC(5,4)/.0075972237660887795911D0/
3166 DATA BC(5,5)/.0039816655673062060620D0/
3167 DATA BC(5,6)/-.0037510180460986006595D0/
3168 DATA INDA/0,20,18,15,12,8/
3169 DATA INDB/20,20,15,13,10,6/
3170
3171 PI=ACOS(-1.D0)
3172
3173 OVER=D1MACH(2)*1.D-8
3174 IERROL=0
3175 IF (IFAC.EQ.1) THEN
3176 IF (X.GE.A) THEN
3177 SINTH=A/X
3178 THET=ASIN(SINTH)
3179 COSTH=COS(THET)
3180 FDOMIN=X*(COSTH+THET*SINTH)
3181 IF (FDOMIN.GE.LOG(OVER)) IERROL=1
3182 ELSE
3183 IF ((PI*A*0.5D0).GE.LOG(OVER)) IERROL=1
3184 ENDIF
3185 ENDIF
3186 IF (IERROL.EQ.0) THEN
3187 PIHALF=PI*0.5D0
3188 DF=2.D0**(1.D0/3.D0)
3189
3190 Z=X/A
3191 A2=A*A
3192 A13=A**(1.D0/3.D0)
3193 A23=A13*A13
3194 IF (IFAC.EQ.1) THEN
3195 APIHAL=A*PIHALF
3196 EXPAPI=EXP(APIHAL)
3197 FAC=EXPAPI*0.5D0/A13
3198 FACD=EXPAPI/Z/A23
3199 ELSE
3200 IF (X.LT.A) THEN
3201 FAC=0.5D0/A13
3202 FACD=1.D0/Z/A23
3203 ELSE
3204 SINTH=A/X
3205 THET=ASIN(SINTH)
3206 COSTH=COS(THET)
3207 FDOMIN=X*(COSTH+THET*SINTH)
3208 EXPAM=EXP(A*PIHALF-FDOMIN)
3209 FAC=EXPAM*0.5D0/A13
3210 FACD=EXPAM/Z/A23
3211 ENDIF
3212 ENDIF
3213 F4=A13**4
3214 IF (Z.LE.0.9D0) THEN
3215 ZDS=SQRT((1.D0-Z)*(1.D0+Z))
3216 PSI=(1.5D0*(LOG((1.D0+ZDS)/Z)-ZDS))**(2.D0/3.D0)
3217 ELSEIF (Z.GT.1.1D0) THEN
3218 ZDS=SQRT((Z-1.D0)*(1.D0+Z))
3219 PSI=-(1.5D0*(ZDS-ACOS(1.D0/Z)))**(2.D0/3.D0)
3220 ELSE
3221 Y=Z-1.D0
3222 ZMASF=COZMAS(12)
3223 DO 8 K=0,11
3224 J=11-K
3225 ZMASF=COZMAS(J)+Y*ZMASF
3226 8 CONTINUE
3227 ZMASF=ABS(Y)**(1.5D0)*ZMASF
3228 IF (Z.LT.1.D0) THEN
3229 PSI=(1.5D0*ZMASF)**(2.D0/3.D0)
3230 ELSE
3231 PSI=-(1.5D0*ZMASF)**(2.D0/3.D0)
3232 ENDIF
3233 ENDIF
3234 ETA=PSI/DF
3235 ARG=-A23*PSI
3236 PSI2=PSI*PSI
3237 PSI3=PSI2*PSI
3238 IF ((Z.GT.0.8D0).AND.(Z.LT.1.2D0)) THEN
3239 PHIS=0.D0
3240 CHI=0.D0
3241 SAS=0.D0
3242 SBS=0.D0
3243 SDS=0.D0
3244 SCS=1.D0
3245 BS=0.D0
3246 BSPO=0.D0
3247 DO 41 L=0,20
3248 IF (L.EQ.0) THEN
3249 ETAL=1.D0
3250 ELSE
3251 ETAL=ETAL*ETA
3252 ENDIF
3253 CHI=CHI+CHIN(L)*ETAL
3254 41 CONTINUE
3255 CHI=CHI/DF
3256 DO 10 K=0,20
3257 BSO=BS
3258 BSPO=BSP
3259 AS=0.D0
3260 BS=0.D0
3261 ASP=0.D0
3262 BSP=0.D0
3263 IF (K.EQ.0) THEN
3264 ETAK=1.D0
3265 A2K=1.D0
3266 SIG=1.D0
3267 ELSE
3268 ETAK=ETAK*ETA
3269 A2K=A2K*A2
3270 SIG=-1.D0*SIG
3271 ENDIF
3272 PHIS=PHIS+PHI(K)*ETAK
3273 F2=SIG/A2K
3274 IF (K.LE.5) THEN
3275 DO 20 J=0,20
3276 IF (J.EQ.0) THEN
3277 ETAJ=1.D0
3278 ELSE
3279 ETAJ=ETAJ*ETA
3280 ENDIF
3281 IF (J.LE.INDA(K)) THEN
3282 AS=AS+AC(K,J)*ETAJ
3283 ENDIF
3284 IF (J.LE.INDB(K)) THEN
3285 BS=BS+BC(K,J)*ETAJ
3286 ENDIF
3287 IF ((J+1).LE.INDA(K)) THEN
3288 ASP=ASP+(J+1)*AC(K,J+1)*ETAJ
3289 ENDIF
3290 IF ((J+1).LE.INDB(K)) THEN
3291 BSP=BSP+(J+1)*BC(K,J+1)*ETAJ
3292 ENDIF
3293 20 CONTINUE
3294 ASP=1.D0/DF*ASP
3295 BS=BS*DF
3296 SAS=SAS+AS*F2
3297 SBS=SBS+BS*F2/DF
3298 SDS=SDS-(CHI*AS+ASP+PSI*BS)*F2
3299 ENDIF
3300 IF ((K.GT.0).AND.(K.LE.6)) THEN
3301 SCS=SCS+(AS+CHI*BSO+BSPO)*F2
3302 ENDIF
3303 10 CONTINUE
3304 PHIS=DF*PHIS
3305 SBS=DF*SBS
3306 ELSE
3307
3308 Z2=Z*Z
3309 Z21M=1.D0-Z2
3310 PHIEX=(4.D0*PSI/Z21M)**0.25D0
3311 PHIEX2=PHIEX*PHIEX
3312 A0EX=1.D0
3313 B0EX=-5.D0/48.D0/(PSI*PSI)+PHIEX2/48.D0/PSI*
3314 + (5.D0/Z21M-3.D0)
3315 CHIEX=0.25D0/PSI*(1.D0-Z2*PHIEX2**3*0.25D0)
3316 CHI=CHIEX
3317 D0EX=-(7.D0/48.D0/PSI+PHIEX2/48.D0*
3318 + (9.D0-7.D0/Z21M))
3319 IF (PSI.GT.0.D0) THEN
3320 PSI12=SQRT(PSI)
3321 DZZ=SQRT(Z21M)
3322 ELSE
3323 PSI12=SQRT(-PSI)
3324 DZZ=SQRT(ABS(Z21M))
3325 ENDIF
3326 B0PEX=5.D0/24.D0/PSI3+PHIEX2/48.D0*((2.D0*CHI*PSI-1.D0)/
3327 + PSI2*(5.D0/Z21M-3.D0)-10.D0*Z2*PSI12/
3328 + Z21M**2/DZZ/PSI)
3329 C0EX=1.D0
3330 SAS=A0EX
3331 SBS=B0EX
3332 SCS=C0EX
3333 SDS=D0EX
3334 BS=0.D0
3335 BSP=0.D0
3336 A2K=1.D0
3337 SIG=1.D0
3338 DO 30 K=1,6
3339 BSO=BS
3340 BSPO=BSP
3341 AS=0.D0
3342 BS=0.D0
3343 ASP=0.D0
3344 BSP=0.D0
3345 A2K=A2K*A2
3346 SIG=-1.D0*SIG
3347 F2=SIG/A2K
3348 IF (K.LE.5) THEN
3349 DO 40 J=0,20
3350 IF (J.EQ.0) THEN
3351 ETAJ=1.D0
3352 ELSE
3353 ETAJ=ETAJ*ETA
3354 ENDIF
3355 IF (J.LE.INDA(K)) THEN
3356 AS=AS+AC(K,J)*ETAJ
3357 ENDIF
3358 IF (J.LE.INDB(K)) THEN
3359 BS=BS+BC(K,J)*ETAJ
3360 ENDIF
3361 IF ((J+1).LE.INDA(K)) THEN
3362 ASP=ASP+(J+1)*AC(K,J+1)*ETAJ
3363 ENDIF
3364 IF ((J+1).LE.INDB(K)) THEN
3365 BSP=BSP+(J+1)*BC(K,J+1)*ETAJ
3366 ENDIF
3367 40 CONTINUE
3368 BS=DF*BS
3369 ASP=ASP/DF
3370 SAS=SAS+AS*F2
3371 SBS=SBS+BS*F2
3372 SDS=SDS-(CHI*AS+ASP+PSI*BS)*F2
3373 ENDIF
3374 IF (K.GE.2) THEN
3375 SCS=SCS+(AS+CHI*BSO+BSPO)*F2
3376 ELSE
3377 SCS=SCS+(AS+CHI*B0EX+B0PEX)*F2
3378 ENDIF
3379 30 CONTINUE
3380 PHIS=PHIEX
3381 ENDIF
3382
3383 IFUN=1
3384 IFACA=1
3385 CALL BIZ(IFUN,IFACA,ARG,0.D0,BIR,BII,IERRO)
3386 IFUN=2
3387 IFACA=1
3388 CALL BIZ(IFUN,IFACA,ARG,0.D0,DBIR,DBII,IERRO)
3389 DLAI=FAC*PHIS*(BIR*SAS+DBIR*SBS/F4)
3390 DLAID=FACD/PHIS*(DBIR*SCS+BIR*SDS/A23)
3391 ELSE
3392 DLAI=0.D0
3393 DLAID=0.D0
3394 ENDIF
3395 RETURN
3396 END
3397
3398
3399 DOUBLE PRECISION FUNCTION V(U)
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422 DOUBLE PRECISION COSTH,D1MACH,FDOMIN,SINTH,
3423 + THET,U,UNDER
3424 COMMON/PARMON/THET,SINTH,COSTH,FDOMIN
3425
3426 UNDER=D1MACH(1)*1.D+6
3427 IF (ABS(U).LT.UNDER) THEN
3428 V=ASIN(SINTH)
3429 ELSE
3430 V=ASIN(U/SINH(U)*SINTH)
3431 ENDIF
3432 RETURN
3433 END
3434
3435 DOUBLE PRECISION FUNCTION PHIR(U)
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476 DOUBLE PRECISION COSTH,COSVU,D1MACH,FDOMIN,FU1,FU2,
3477 + FU3,FUAC,OVER,PNU,SINHU,SINHUH,SINTH,THET,U,U2,
3478 + U3,U5,U7,UH,UNDER,V,VU,X
3479 COMMON/ARGU/X,PNU
3480 COMMON/PARMON/THET,SINTH,COSTH,FDOMIN
3481
3482 UNDER=D1MACH(1)*1.D+6
3483
3484 OVER=D1MACH(2)*1.D-6
3485 IF (U.LT.200.D0) THEN
3486 IF (ABS(U).LT.0.1D0) THEN
3487 IF (ABS(U).LT.UNDER) THEN
3488 PHIR=0.D0
3489 ELSE
3490 UH=U*0.5D0
3491 SINHUH=SINH(UH)
3492 FU1=2.D0*SINHUH*SINHUH
3493 U2=U*U
3494 U3=U2*U
3495 U5=U3*U2
3496 U7=U5*U2
3497 FUAC=U3/6.D0+U5/120.D0+U7/5040.D0
3498 SINHU=SINH(U)
3499 VU=V(U)
3500 COSVU=COS(VU)
3501 FU3=ASIN(-SINTH/(COSTH*U/SINHU+COSVU)*
3502 + (SINHU+U)*FUAC/(SINHU*SINHU))
3503 FU2=-2.D0*SIN(FU3*0.5D0)*SIN(0.5D0*(VU+THET))
3504 PHIR=X*(FU1*COSVU+FU2+SINTH*FU3)
3505 ENDIF
3506 ELSE
3507 VU=V(U)
3508 COSVU=COS(VU)
3509 PHIR=X*COSH(U)*COSVU+PNU*VU-FDOMIN
3510 ENDIF
3511 ELSE
3512 PHIR=OVER
3513 ENDIF
3514 RETURN
3515 END
3516
3517 DOUBLE PRECISION FUNCTION SIGMA(U)
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544 DOUBLE PRECISION ARGU,COSCHI,COSHM,D1,DMU,DMUFAC,
3545 + PI,SINCHI,SINHM,SINHU,U
3546 COMMON/PAROS1/DMU,COSHM,SINHM,DMUFAC,COSCHI,SINCHI
3547 PI=ACOS(-1.D0)
3548 D1=COSHM*U-DMUFAC
3549 SINHU=SINH(U)
3550 ARGU=D1/SINH(U)
3551 IF (ABS(ARGU).GT.1.D0) THEN
3552 ARGU=1.D0
3553 ENDIF
3554 SIGMA=ASIN(ARGU)
3555 IF (U.LT.DMU) SIGMA=PI-SIGMA
3556 RETURN
3557 END
3558
3559 DOUBLE PRECISION FUNCTION PHIB(U)
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581 DOUBLE PRECISION U,SIGMA,SIGMAU,OVER,D1MACH,
3582 + X,PNU
3583 COMMON/ARGU/X,PNU
3584
3585 OVER=D1MACH(2)*1.D-8
3586 IF (U.LT.200.D0) THEN
3587 SIGMAU=SIGMA(U)
3588 PHIB=X*COSH(U)*COS(SIGMAU)+PNU*SIGMAU
3589 ELSE
3590 PHIB=OVER
3591 ENDIF
3592 RETURN
3593 END
3594