File indexing completed on 2025-08-05 08:15:12
0001
0002 SUBROUTINE AIZ(IFUN,IFAC,X0,Y0,GAIR,GAII,IERRO)
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 DOUBLE PRECISION X0,Y0,GAIR,GAII,X,W,XD,WD
0065 DOUBLE PRECISION OVER,UNDER,DL1,DL2,COVER,D1MACH
0066 DOUBLE PRECISION PI,PIHAL,PIH3,PISR,A,ALF,THET,R,TH15,S1,C1,
0067 * R32,FACTO,TH025,S3,C3,F23,PI23,SQRT3,XA,YA,F23R,DF1,DF2,
0068 * S11,C11,DEX,DRE,DIMA,GAR,GAI,C,S,U,V,V0,AR,AI,AR1,AI1,
0069 * RO,COE1,COE2,REX,DFR,DFI,AR11,AI11,PHASE
0070 INTEGER IFUN,IFAC,IERRO,IEXPF,IEXPF2,N
0071 DIMENSION X(25),W(25)
0072 DIMENSION XD(25),WD(25)
0073 COMMON/PARAM1/PI,PIHAL
0074 COMMON/PARAM2/PIH3,PISR,A,ALF
0075 COMMON/PARAM3/THET,R,TH15,S1,C1,R32
0076 COMMON/PARAM4/FACTO,TH025,S3,C3
0077 SAVE X,W
0078 SAVE XD,WD
0079 DATA X,W/.283891417994567679D-1,.170985378860034935D0,
0080 *.435871678341770460D0,.823518257913030858D0,1.33452543254227372D0,
0081 *1.96968293206435071D0,2.72998134002859938D0,3.61662161916100897D0,
0082 *4.63102611052654146D0,5.77485171830547694D0,7.05000568630218682D0,
0083 *8.45866437513237792D0,10.0032955242749393D0,11.6866845947722423D0,
0084 *13.5119659344693551D0,15.4826596959377140D0,17.6027156808069112D0,
0085 *19.8765656022785451D0,22.3091856773962780D0,24.9061720212974207D0,
0086 *27.6738320739497190D0,30.6192963295084111D0,33.7506560850239946D0,
0087 *37.0771349708391198D0,40.6093049694341322D0,.143720408803313866D0,
0088 *.230407559241880881D0,.242253045521327626D0,.203636639103440807D0,
0089 *.143760630622921410D0,.869128834706078120D-1,.4541750018329
0090 * 15883D-1,.206118031206069497D-1,.814278821268606972D-2,.280266
0091 *075663377634D-2,.840337441621719716D-3,.219303732907765020D-3,
0092 *.497401659009257760D-4,.978508095920717661D-5,.166542824603725
0093 *563D-5,.244502736801316287D-6,.308537034236207072D-7,.3332960
0094 *72940112245D-8,.306781892316295828D-9,.239331309885375719D-10,
0095 *.157294707710054952D-11,.864936011664392267D-13,.394819815
0096 *638647111D-14,.148271173082850884D-15,.453390377327054458D-17/
0097 DATA XD,WD/.435079659953445D-1,.205779160144678D0,
0098 *.489916161318751D0,.896390483211727D0,1.42582496737580D0,
0099 *2.07903190767599D0,2.85702335104978D0,3.76102058198275D0,
0100 *4.79246521225895D0,5.95303247470003D0,7.24464710774066D0,
0101 *8.66950223642504D0,10.2300817341775D0,11.9291866622602D0,
0102 *13.7699665302828D0,15.7559563095946D0,17.8911203751898D0,
0103 *20.1799048700978D0,22.6273004064466D0,25.2389175786164D0,
0104 *28.0210785229929D0,30.9809287996116D0,34.1265753192057D0,
0105 *37.4672580871163D0,41.0135664833476D0,.576354557898966D-1,
0106 *.139560003272262D0,.187792315011311D0,.187446935256946D0,
0107 *.150716717316301D0,.101069904453380D0,.575274105486025D-1,
0108 *.280625783448681D-1,.117972164134041D-1,.428701743297432D-2,
0109 *.134857915232883D-2,.367337337105948D-3,.865882267841931D-4,
0110 *.176391622890609D-4,.309929190938078D-5,.468479653648208D-6,
0111 *.607273267228907D-7,.672514812555074D-8,.633469931761606D-9,
0112 *.504938861248542D-10,.338602527895834D-11,.189738532450555D-12,
0113 *.881618802142698D-14,.336676636121976D-15,.104594827170761D-16/
0114
0115 PI=3.1415926535897932385D0
0116 PIHAL=1.5707963267948966192D0
0117 PIH3=4.71238898038469D0
0118 F23=.6666666666666666D0
0119 PI23=2.09439510239320D0
0120 PISR=1.77245385090552D0
0121 SQRT3=1.7320508075688772935D0
0122
0123 YA=Y0
0124 XA=X0
0125 IERRO=0
0126 IEXPF=0
0127 IEXPF2=0
0128 IF (YA.LT.0.D0) YA=-YA
0129 R=SQRT(XA*XA+YA*YA)
0130 R32=R*SQRT(R)
0131 THET=PHASE(XA,YA)
0132 COVER=2.D0/3.D0*R32*ABS(COS(1.5D0*THET))
0133
0134 OVER=D1MACH(2)*1.D-3
0135
0136 UNDER=D1MACH(1)*1.D+3
0137 DL1=LOG(OVER)
0138 DL2=-LOG(UNDER)
0139 IF (DL1.GT.DL2) OVER=1/UNDER
0140 IF (IFAC.EQ.1) THEN
0141 IF (COVER.GE.LOG(OVER)) THEN
0142
0143
0144 IERRO=1
0145 GAIR=0
0146 GAII=0
0147 ENDIF
0148 IF (COVER.GE.(LOG(OVER)*0.2)) IEXPF2=1
0149 ELSE
0150 IF (COVER.GE.(LOG(OVER)*0.2)) IEXPF=1
0151 ENDIF
0152 IF (IERRO.EQ.0) THEN
0153 IF (IFUN.EQ.1) THEN
0154
0155
0156
0157
0158 IF ((YA.LT.3.D0).AND.(XA.LT.1.3D0).AND.(XA.GT.-2.5D0)) THEN
0159
0160 CALL SERAI(XA,YA,GAR,GAI)
0161 IF (IFAC.EQ.2) THEN
0162 THET=PHASE(XA,YA)
0163 TH15=1.5D0*THET
0164 S1=SIN(TH15)
0165 C1=COS(TH15)
0166 F23R=F23*R32
0167 DF1=F23R*C1
0168 DF2=F23R*S1
0169 S11=SIN(DF2)
0170 C11=COS(DF2)
0171 DEX=EXP(DF1)
0172 DRE=DEX*C11
0173 DIMA=DEX*S11
0174 GAIR=DRE*GAR-DIMA*GAI
0175 GAII=DRE*GAI+DIMA*GAR
0176 ELSE
0177 GAIR=GAR
0178 GAII=GAI
0179 IF (Y0.EQ.0.) GAII=0.D0
0180 ENDIF
0181 ELSE
0182 IF (R.GT.15.D0) THEN
0183
0184 THET=PHASE(XA,YA)
0185 FACTO=0.5D0/PISR*R**(-0.25D0)
0186 IF (THET.GT.PI23) THEN
0187
0188
0189 N=1
0190 C=-0.5D0
0191 S=N*0.5*SQRT3
0192 U=XA*C-YA*S
0193 V=XA*S+YA*C
0194 V0=V
0195 IF (V.LT.0.D0) V=-V
0196 THET=PHASE(U,V)
0197 TH15=1.5D0*THET
0198 S1=SIN(TH15)
0199 C1=COS(TH15)
0200 TH025=THET*0.25D0
0201 S3=SIN(TH025)
0202 C3=COS(TH025)
0203 CALL EXPAI(AR1,AI1)
0204 IF (V0.LT.0.D0) AI1=-AI1
0205 AR=-(C*AR1-S*AI1)
0206 AI=-(S*AR1+C*AI1)
0207 IF (IEXPF.EQ.0) THEN
0208 IF (IEXPF2.EQ.0) THEN
0209
0210 N=-1
0211 C=-0.5D0
0212 S=N*0.5*SQRT3
0213 U=XA*C-YA*S
0214 V=XA*S+YA*C
0215 V0=V
0216 IF (V.LT.0.D0) V=-V
0217 THET=PHASE(U,V)
0218 TH15=1.5D0*THET
0219 S1=SIN(TH15)
0220 C1=COS(TH15)
0221 TH025=THET*0.25D0
0222 S3=SIN(TH025)
0223 C3=COS(TH025)
0224 CALL EXPAI(AR1,AI1)
0225 IF (V0.LT.0.D0) AI1=-AI1
0226 THET=PHASE(XA,YA)
0227 TH15=1.5D0*THET
0228 S1=SIN(TH15)
0229 C1=COS(TH15)
0230 RO=1.333333333333333D0*R32
0231 COE1=RO*C1
0232 COE2=RO*S1
0233 REX=EXP(COE1)
0234 DFR=REX*COS(COE2)
0235 DFI=REX*SIN(COE2)
0236 AR11=DFR*AR1-DFI*AI1
0237 AI11=DFR*AI1+DFI*AR1
0238 GAIR=AR-(C*AR11-S*AI11)
0239 GAII=AI-(S*AR11+C*AI11)
0240 ELSE
0241 THET=PHASE(XA,YA)
0242 TH15=1.5D0*THET
0243 S1=SIN(TH15)
0244 C1=COS(TH15)
0245 GAIR=AR
0246 GAII=AI
0247 ENDIF
0248 ELSE
0249 GAIR=AR
0250 GAII=AI
0251 ENDIF
0252 ELSE
0253
0254 THET=PHASE(XA,YA)
0255 TH15=1.5D0*THET
0256 S1=SIN(TH15)
0257 C1=COS(TH15)
0258 TH025=THET*0.25D0
0259 S3=SIN(TH025)
0260 C3=COS(TH025)
0261 CALL EXPAI(GAIR,GAII)
0262 ENDIF
0263 ELSE
0264
0265 A=0.1666666666666666D0
0266 ALF=-A
0267 FACTO=0.280514117723058D0*R**(-0.25D0)
0268 THET=PHASE(XA,YA)
0269 IF (THET.LE.PIHAL) THEN
0270 TH15=1.5D0*THET
0271 S1=SIN(TH15)
0272 C1=COS(TH15)
0273 TH025=THET*0.25D0
0274 S3=SIN(TH025)
0275 C3=COS(TH025)
0276 CALL AIRY1(X,W,GAIR,GAII)
0277 ENDIF
0278 IF ((THET.GT.PIHAL).AND.(THET.LE.PI23)) THEN
0279 TH15=1.5D0*THET
0280 S1=SIN(TH15)
0281 C1=COS(TH15)
0282 TH025=THET*0.25D0
0283 S3=SIN(TH025)
0284 C3=COS(TH025)
0285 CALL AIRY2(X,W,GAIR,GAII)
0286 ENDIF
0287 IF (THET.GT.PI23) THEN
0288 N=1
0289 C=-0.5D0
0290 S=N*0.5*SQRT3
0291 U=XA*C-YA*S
0292 V=XA*S+YA*C
0293 V0=V
0294 IF (V.LT.0.D0) V=-V
0295 THET=PHASE(U,V)
0296 IF (THET.LE.PIHAL) THEN
0297 TH15=1.5D0*THET
0298 S1=SIN(TH15)
0299 C1=COS(TH15)
0300 TH025=THET*0.25D0
0301 S3=SIN(TH025)
0302 C3=COS(TH025)
0303 CALL AIRY1(X,W,AR1,AI1)
0304 ENDIF
0305 IF ((THET.GT.PIHAL).AND.(THET.LE.PI23)) THEN
0306 TH15=1.5D0*THET
0307 S1=SIN(TH15)
0308 C1=COS(TH15)
0309 TH025=THET*0.25D0
0310 S3=SIN(TH025)
0311 C3=COS(TH025)
0312 CALL AIRY2(X,W,AR1,AI1)
0313 ENDIF
0314 IF (V0.LT.0.D0) AI1=-AI1
0315 AR=-(C*AR1-S*AI1)
0316 AI=-(S*AR1+C*AI1)
0317 N=-1
0318 C=-0.5D0
0319 S=N*0.5*SQRT3
0320 U=XA*C-YA*S
0321 V=XA*S+YA*C
0322 V0=V
0323 IF (V.LT.0.D0) V=-V
0324 THET=PHASE(U,V)
0325 IF (THET.LE.PIHAL) THEN
0326 TH15=1.5D0*THET
0327 S1=SIN(TH15)
0328 C1=COS(TH15)
0329 TH025=THET*0.25D0
0330 S3=SIN(TH025)
0331 C3=COS(TH025)
0332 CALL AIRY1(X,W,AR1,AI1)
0333 ENDIF
0334 IF ((THET.GT.PIHAL).AND.(THET.LE.PI23)) THEN
0335 TH15=1.5D0*THET
0336 S1=SIN(TH15)
0337 C1=COS(TH15)
0338 TH025=THET*0.25D0
0339 S3=SIN(TH025)
0340 C3=COS(TH025)
0341 CALL AIRY2(X,W,AR1,AI1)
0342 ENDIF
0343 IF (V0.LT.0.D0) AI1=-AI1
0344 THET=PHASE(XA,YA)
0345 TH15=1.5D0*THET
0346 S1=SIN(TH15)
0347 C1=COS(TH15)
0348 RO=1.333333333333333D0*R32
0349 COE1=RO*C1
0350 COE2=RO*S1
0351 REX=EXP(COE1)
0352 DFR=REX*COS(COE2)
0353 DFI=REX*SIN(COE2)
0354 AR11=DFR*AR1-DFI*AI1
0355 AI11=DFR*AI1+DFI*AR1
0356 GAIR=AR-(C*AR11-S*AI11)
0357 GAII=AI-(S*AR11+C*AI11)
0358 ENDIF
0359 ENDIF
0360 IF (IFAC.EQ.1) THEN
0361
0362
0363
0364 F23R=F23*R32
0365 DF1=F23R*C1
0366 DF2=F23R*S1
0367 S11=SIN(DF2)
0368 C11=COS(DF2)
0369 DEX=EXP(-DF1)
0370 DRE=DEX*C11
0371 DIMA=-DEX*S11
0372 GAR=DRE*GAIR-DIMA*GAII
0373 GAI=DRE*GAII+DIMA*GAIR
0374 GAIR=GAR
0375 GAII=GAI
0376 IF (Y0.EQ.0.) GAII=0.D0
0377 ENDIF
0378 ENDIF
0379 ELSE
0380
0381 ALF=0.1666666666666666D0
0382 FACTO=-0.270898621247918D0*R**0.25D0
0383
0384 IF ((YA.LT.3.D0).AND.(XA.LT.1.3D0).AND.(XA.GT.-2.5D0)) THEN
0385
0386 CALL SERAID(XA,YA,GAR,GAI)
0387 IF (IFAC.EQ.2) THEN
0388 THET=PHASE(XA,YA)
0389 TH15=1.5D0*THET
0390 S1=SIN(TH15)
0391 C1=COS(TH15)
0392 F23R=F23*R32
0393 DF1=F23R*C1
0394 DF2=F23R*S1
0395 S11=SIN(DF2)
0396 C11=COS(DF2)
0397 DEX=EXP(DF1)
0398 DRE=DEX*C11
0399 DIMA=DEX*S11
0400 GAIR=DRE*GAR-DIMA*GAI
0401 GAII=DRE*GAI+DIMA*GAR
0402 ELSE
0403 GAIR=GAR
0404 GAII=GAI
0405 IF (Y0.EQ.0.) GAII=0.D0
0406 ENDIF
0407 ELSE
0408 IF (R.GT.15.D0) THEN
0409
0410 THET=PHASE(XA,YA)
0411 FACTO=0.5D0/PISR*R**0.25D0
0412 IF (THET.GT.PI23) THEN
0413
0414
0415 N=1
0416 C=-0.5D0
0417 S=N*0.5*SQRT3
0418 U=XA*C-YA*S
0419 V=XA*S+YA*C
0420 V0=V
0421 IF (V.LT.0.D0) V=-V
0422 THET=PHASE(U,V)
0423 TH15=1.5D0*THET
0424 S1=SIN(TH15)
0425 C1=COS(TH15)
0426 TH025=THET*0.25D0
0427 S3=SIN(TH025)
0428 C3=COS(TH025)
0429 CALL EXPAID(AR1,AI1)
0430 IF (V0.LT.0.D0) AI1=-AI1
0431 AR=-(C*AR1+S*AI1)
0432 AI=-(-S*AR1+C*AI1)
0433 IF (IEXPF.EQ.0) THEN
0434 IF (IEXPF2.EQ.0) THEN
0435
0436 N=-1
0437 C=-0.5D0
0438 S=N*0.5*SQRT3
0439 U=XA*C-YA*S
0440 V=XA*S+YA*C
0441 V0=V
0442 IF (V.LT.0.D0) V=-V
0443 THET=PHASE(U,V)
0444 TH15=1.5D0*THET
0445 S1=SIN(TH15)
0446 C1=COS(TH15)
0447 TH025=THET*0.25D0
0448 S3=SIN(TH025)
0449 C3=COS(TH025)
0450 CALL EXPAID(AR1,AI1)
0451 IF (V0.LT.0.D0) AI1=-AI1
0452 THET=PHASE(XA,YA)
0453 TH15=1.5D0*THET
0454 S1=SIN(TH15)
0455 C1=COS(TH15)
0456 RO=1.333333333333333D0*R32
0457 COE1=RO*C1
0458 COE2=RO*S1
0459 REX=EXP(COE1)
0460 DFR=REX*COS(COE2)
0461 DFI=REX*SIN(COE2)
0462 AR11=DFR*AR1-DFI*AI1
0463 AI11=DFR*AI1+DFI*AR1
0464 GAIR=AR-(C*AR11+S*AI11)
0465 GAII=AI-(-S*AR11+C*AI11)
0466 ELSE
0467 THET=PHASE(XA,YA)
0468 TH15=1.5D0*THET
0469 S1=SIN(TH15)
0470 C1=COS(TH15)
0471 GAIR=AR
0472 GAII=AI
0473 ENDIF
0474 ELSE
0475 GAIR=AR
0476 GAII=AI
0477 ENDIF
0478 ELSE
0479 TH15=1.5D0*THET
0480 S1=SIN(TH15)
0481 C1=COS(TH15)
0482 TH025=THET*0.25D0
0483 S3=SIN(TH025)
0484 C3=COS(TH025)
0485 CALL EXPAID(GAIR,GAII)
0486 ENDIF
0487 ELSE
0488
0489 THET=PHASE(XA,YA)
0490 IF (THET.LE.PIHAL) THEN
0491 TH15=1.5D0*THET
0492 S1=SIN(TH15)
0493 C1=COS(TH15)
0494 TH025=THET*0.25D0
0495 S3=SIN(TH025)
0496 C3=COS(TH025)
0497 CALL AIRY1D(XD,WD,GAIR,GAII)
0498 ENDIF
0499 IF ((THET.GT.PIHAL).AND.(THET.LE.PI23)) THEN
0500 TH15=1.5D0*THET
0501 S1=SIN(TH15)
0502 C1=COS(TH15)
0503 TH025=THET*0.25D0
0504 S3=SIN(TH025)
0505 C3=COS(TH025)
0506 CALL AIRY2D(XD,WD,GAIR,GAII)
0507 ENDIF
0508 IF (THET.GT.PI23) THEN
0509 N=1
0510 C=-0.5D0
0511 S=N*0.5*SQRT3
0512 U=XA*C-YA*S
0513 V=XA*S+YA*C
0514 V0=V
0515 IF (V.LT.0.D0) V=-V
0516 THET=PHASE(U,V)
0517 IF (THET.LE.PIHAL) THEN
0518 TH15=1.5D0*THET
0519 S1=SIN(TH15)
0520 C1=COS(TH15)
0521 TH025=THET*0.25D0
0522 S3=SIN(TH025)
0523 C3=COS(TH025)
0524 CALL AIRY1D(XD,WD,AR1,AI1)
0525 ENDIF
0526 IF ((THET.GT.PIHAL).AND.(THET.LE.PI23)) THEN
0527 TH15=1.5D0*THET
0528 S1=SIN(TH15)
0529 C1=COS(TH15)
0530 TH025=THET*0.25D0
0531 S3=SIN(TH025)
0532 C3=COS(TH025)
0533 CALL AIRY2D(XD,WD,AR1,AI1)
0534 ENDIF
0535 IF (V0.LT.0.D0) AI1=-AI1
0536 AR=-(C*AR1+S*AI1)
0537 AI=-(-S*AR1+C*AI1)
0538 N=-1
0539 C=-0.5D0
0540 S=N*0.5*SQRT3
0541 U=XA*C-YA*S
0542 V=XA*S+YA*C
0543 V0=V
0544 IF (V.LT.0.D0) V=-V
0545 THET=PHASE(U,V)
0546 IF (THET.LE.PIHAL) THEN
0547 TH15=1.5D0*THET
0548 S1=SIN(TH15)
0549 C1=COS(TH15)
0550 TH025=THET*0.25D0
0551 S3=SIN(TH025)
0552 C3=COS(TH025)
0553 CALL AIRY1D(XD,WD,AR1,AI1)
0554 ENDIF
0555 IF ((THET.GT.PIHAL).AND.(THET.LE.PI23)) THEN
0556 TH15=1.5D0*THET
0557 S1=SIN(TH15)
0558 C1=COS(TH15)
0559 TH025=THET*0.25D0
0560 S3=SIN(TH025)
0561 C3=COS(TH025)
0562 CALL AIRY2D(XD,WD,AR1,AI1)
0563 ENDIF
0564 IF (V0.LT.0.D0) AI1=-AI1
0565 THET=PHASE(XA,YA)
0566 TH15=1.5D0*THET
0567 S1=SIN(TH15)
0568 C1=COS(TH15)
0569 RO=1.333333333333333D0*R32
0570 COE1=RO*C1
0571 COE2=RO*S1
0572 REX=EXP(COE1)
0573 DFR=REX*COS(COE2)
0574 DFI=REX*SIN(COE2)
0575 AR11=DFR*AR1-DFI*AI1
0576 AI11=DFR*AI1+DFI*AR1
0577 GAIR=AR-(C*AR11+S*AI11)
0578 GAII=AI-(-S*AR11+C*AI11)
0579 ENDIF
0580 ENDIF
0581 IF (IFAC.EQ.1) THEN
0582
0583
0584
0585 F23R=F23*R32
0586 DF1=F23R*C1
0587 DF2=F23R*S1
0588 S11=SIN(DF2)
0589 C11=COS(DF2)
0590 DEX=EXP(-DF1)
0591 DRE=DEX*C11
0592 DIMA=-DEX*S11
0593 GAR=DRE*GAIR-DIMA*GAII
0594 GAI=DRE*GAII+DIMA*GAIR
0595 GAIR=GAR
0596 GAII=GAI
0597 IF (Y0.EQ.0) GAII=0.D0
0598 ENDIF
0599 ENDIF
0600 ENDIF
0601 ENDIF
0602 IF (Y0.LT.0.D0) GAII=-GAII
0603 RETURN
0604 END
0605 SUBROUTINE AIRY1(X,W,GAIR,GAII)
0606
0607
0608
0609
0610
0611
0612
0613
0614
0615
0616 DOUBLE PRECISION X,W,GAIR,GAII
0617 DOUBLE PRECISION PIH3,PISR,A,ALF,THET,R,TH15,S1,C1,
0618 * R32,FACTO,TH025,S3,C3,SUMAR,SUMAI,DF1,DF1C1,PHI,PHI6,
0619 * S2,C2,DMODU,DMODU2,FUNR,FUNI,FAC1,FAC2,PHASE
0620 INTEGER I
0621 DIMENSION X(25),W(25)
0622 COMMON/PARAM2/PIH3,PISR,A,ALF
0623 COMMON/PARAM3/THET,R,TH15,S1,C1,R32
0624 COMMON/PARAM4/FACTO,TH025,S3,C3
0625 SUMAR=0.D0
0626 SUMAI=0.D0
0627 DO 1 I=1,25
0628 DF1=1.5D0*X(I)/R32
0629 DF1C1=DF1*C1
0630 PHI=PHASE(2.D0+DF1C1,DF1*S1)
0631 PHI6=PHI/6.D0
0632 S2=SIN(PHI6)
0633 C2=COS(PHI6)
0634 DMODU=SQRT(4.D0+DF1*DF1+4.D0*DF1C1)
0635 DMODU2=DMODU**ALF
0636 FUNR=DMODU2*C2
0637 FUNI=DMODU2*S2
0638 SUMAR=SUMAR+W(I)*FUNR
0639 SUMAI=SUMAI+W(I)*FUNI
0640 1 CONTINUE
0641 FAC1=FACTO*C3
0642 FAC2=FACTO*S3
0643 GAIR=FAC1*SUMAR+FAC2*SUMAI
0644 GAII=FAC1*SUMAI-FAC2*SUMAR
0645 RETURN
0646 END
0647 SUBROUTINE AIRY2(X,W,GAIR,GAII)
0648
0649
0650
0651
0652
0653
0654
0655
0656
0657
0658 DOUBLE PRECISION X,W,GAIR,GAII
0659 DOUBLE PRECISION PIH3,PISR,A,ALF,THET,R,TH15,S1,C1,
0660 * R32,FACTO,TH025,S3,C3,SUMAR,SUMAI,DF1,DF1C1,PHI,PHI6,
0661 * S2,C2,DMODU,DMODU2,FUNR,FUNI,FAC1,FAC2,PHASE
0662 DOUBLE PRECISION SQR2,SQR2I,TAU,TGTAU,B,ANG,CTAU,CFAC,CT,ST,
0663 * SUMR,SUMI,TTAU,BETA
0664 INTEGER I
0665 DIMENSION X(25),W(25)
0666 COMMON/PARAM2/PIH3,PISR,A,ALF
0667 COMMON/PARAM3/THET,R,TH15,S1,C1,R32
0668 COMMON/PARAM4/FACTO,TH025,S3,C3
0669 SQR2=1.41421356237310D0
0670 SQR2I=0.707106781186548D0
0671 TAU=TH15-PIH3*0.5D0
0672 TGTAU=DTAN(TAU)
0673 B=5.D0*A
0674 ANG=TAU*B
0675 CTAU=COS(TAU)
0676 CFAC=CTAU**(-B)
0677 CT=COS(ANG)
0678 ST=SIN(ANG)
0679 SUMR=0.D0
0680 SUMI=0.D0
0681 DO 2 I=1,25
0682 DF1=3.D0*X(I)/(CTAU*R32)
0683 DF1C1=DF1*SQR2I*0.5D0
0684 PHI=PHASE(2.D0-DF1C1,DF1C1)
0685 PHI6=PHI/6.D0
0686 TTAU=X(I)*TGTAU
0687 BETA=PHI6-TTAU
0688 S2=SIN(BETA)
0689 C2=COS(BETA)
0690 DMODU=SQRT(4.D0+DF1*DF1*0.25D0-SQR2*DF1)
0691 DMODU2=DMODU**ALF
0692 FUNR=DMODU2*C2
0693 FUNI=DMODU2*S2
0694 SUMR=SUMR+W(I)*FUNR
0695 SUMI=SUMI+W(I)*FUNI
0696 2 CONTINUE
0697 SUMAR=CFAC*(CT*SUMR-ST*SUMI)
0698 SUMAI=CFAC*(CT*SUMI+ST*SUMR)
0699 FAC1=FACTO*C3
0700 FAC2=FACTO*S3
0701 GAIR=FAC1*SUMAR+FAC2*SUMAI
0702 GAII=FAC1*SUMAI-FAC2*SUMAR
0703 RETURN
0704 END
0705 SUBROUTINE AIRY1D(X,W,GAIR,GAII)
0706
0707
0708
0709
0710
0711
0712
0713
0714
0715
0716 DOUBLE PRECISION X,W,GAIR,GAII
0717 DOUBLE PRECISION PIH3,PISR,A,ALF,THET,R,TH15,S1,C1,
0718 * R32,FACTO,TH025,S3,C3,SUMAR,SUMAI,DF1,DF1C1,PHI,PHI6,
0719 * S2,C2,DMODU,DMODU2,FUNR,FUNI,FAC1,FAC2,PHASE
0720 INTEGER I
0721 DIMENSION X(25),W(25)
0722 COMMON/PARAM2/PIH3,PISR,A,ALF
0723 COMMON/PARAM3/THET,R,TH15,S1,C1,R32
0724 COMMON/PARAM4/FACTO,TH025,S3,C3
0725 SUMAR=0.D0
0726 SUMAI=0.D0
0727 DO 3 I=1,25
0728 DF1=1.5D0*X(I)/R32
0729 DF1C1=DF1*C1
0730 PHI=PHASE(2.D0+DF1C1,DF1*S1)
0731 PHI6=-PHI*ALF
0732 S2=SIN(PHI6)
0733 C2=COS(PHI6)
0734 DMODU=SQRT(4.D0+DF1*DF1+4.D0*DF1C1)
0735 DMODU2=DMODU**ALF
0736 FUNR=DMODU2*C2
0737 FUNI=DMODU2*S2
0738 SUMAR=SUMAR+W(I)*FUNR
0739 SUMAI=SUMAI+W(I)*FUNI
0740 3 CONTINUE
0741 FAC1=FACTO*C3
0742 FAC2=FACTO*S3
0743 GAIR=FAC1*SUMAR-FAC2*SUMAI
0744 GAII=FAC1*SUMAI+FAC2*SUMAR
0745 RETURN
0746 END
0747 SUBROUTINE AIRY2D(X,W,GAIR,GAII)
0748
0749
0750
0751
0752
0753
0754
0755
0756
0757
0758 DOUBLE PRECISION X,W,GAIR,GAII
0759 DOUBLE PRECISION PIH3,PISR,A,ALF,THET,R,TH15,S1,C1,
0760 * R32,FACTO,TH025,S3,C3,SUMAR,SUMAI,DF1,DF1C1,PHI,PHI6,
0761 * S2,C2,DMODU,DMODU2,FUNR,FUNI,FAC1,FAC2,PHASE
0762 DOUBLE PRECISION SQR2,SQR2I,TAU,TGTAU,B,ANG,CTAU,CFAC,CT,ST,
0763 * SUMR,SUMI,TTAU,BETA
0764 INTEGER I
0765 DIMENSION X(25),W(25)
0766 COMMON/PARAM2/PIH3,PISR,A,ALF
0767 COMMON/PARAM3/THET,R,TH15,S1,C1,R32
0768 COMMON/PARAM4/FACTO,TH025,S3,C3
0769 SQR2=1.41421356237310D0
0770 SQR2I=0.707106781186548D0
0771 TAU=TH15-PIH3*0.5D0
0772 TGTAU=DTAN(TAU)
0773 B=7.D0*ALF
0774 ANG=TAU*B
0775 CTAU=COS(TAU)
0776 CFAC=CTAU**(-B)
0777 CT=COS(ANG)
0778 ST=SIN(ANG)
0779 SUMR=0.D0
0780 SUMI=0.D0
0781 DO 4 I=1,25
0782 DF1=3.D0*X(I)/(CTAU*R32)
0783 DF1C1=DF1*SQR2I*0.5D0
0784 PHI=PHASE(2.D0-DF1C1,DF1C1)
0785 PHI6=-PHI/6.D0
0786 TTAU=X(I)*TGTAU
0787 BETA=PHI6-TTAU
0788 S2=SIN(BETA)
0789 C2=COS(BETA)
0790 DMODU=SQRT(4.D0+DF1*DF1*0.25D0-SQR2*DF1)
0791 DMODU2=DMODU**ALF
0792 FUNR=DMODU2*C2
0793 FUNI=DMODU2*S2
0794 SUMR=SUMR+W(I)*FUNR
0795 SUMI=SUMI+W(I)*FUNI
0796 4 CONTINUE
0797 SUMAR=CFAC*(CT*SUMR-ST*SUMI)
0798 SUMAI=CFAC*(CT*SUMI+ST*SUMR)
0799 FAC1=FACTO*C3
0800 FAC2=FACTO*S3
0801 GAIR=FAC1*SUMAR-FAC2*SUMAI
0802 GAII=FAC1*SUMAI+FAC2*SUMAR
0803 RETURN
0804 END
0805 DOUBLE PRECISION FUNCTION PHASE(X,Y)
0806 DOUBLE PRECISION PI,PIHAL,X,Y,AY,P
0807
0808
0809
0810 COMMON/PARAM1/PI,PIHAL
0811 IF ((X.EQ.0).AND.(Y.EQ.0)) THEN
0812 P=0.D0
0813 ELSE
0814 AY=ABS(Y)
0815 IF (X.GE.AY) THEN
0816 P=ATAN(AY/X)
0817 ELSEIF ((X+AY).GE.0.D0) THEN
0818 P=PIHAL-ATAN(X/AY)
0819 ELSE
0820 P=PI+ATAN(AY/X)
0821 ENDIF
0822 IF (Y.LT.0.D0) P=-P
0823 ENDIF
0824 PHASE=P
0825 END
0826 SUBROUTINE FGP(X,Y,EPS,FR,FI,GR,GI)
0827
0828
0829
0830
0831
0832
0833
0834
0835
0836
0837
0838
0839
0840 DOUBLE PRECISION X,Y,EPS,FR,FI,GR,GI
0841 INTEGER A,B,K3
0842 DOUBLE PRECISION X2,Y2,U,V,P,Q,CR,CI,DR,DI
0843 X2=X*X
0844 Y2=Y*Y
0845 K3=0
0846 U=X*(X2-3*Y2)
0847 V=Y*(3*X2-Y2)
0848 CR=0.5D0
0849 CI=0.D0
0850 DR=1.D0
0851 DI=0.D0
0852 FR=0.5D0
0853 FI=0.D0
0854 GR=1.D0
0855 GI=0.D0
0856 70 A=(K3+5)*(K3+3)
0857 B=(K3+1)*(K3+3)
0858 P=(U*CR-V*CI)/A
0859 Q=(V*CR+U*CI)/A
0860 CR=P
0861 CI=Q
0862 P=(U*DR-V*DI)/B
0863 Q=(V*DR+U*DI)/B
0864 DR=P
0865 DI=Q
0866 FR=FR+CR
0867 FI=FI+CI
0868 GR=GR+DR
0869 GI=GI+DI
0870 K3=K3+3
0871 IF ((ABS(CR)+ABS(DR)+ABS(CI)+ABS(DI)).GE.EPS) GOTO 70
0872 U=X2-Y2
0873 V=2.D0*X*Y
0874 P=U*FR-V*FI
0875 Q=U*FI+V*FR
0876 FR=P
0877 FI=Q
0878 RETURN
0879 END
0880 SUBROUTINE FG(X,Y,EPS,FR,FI,GR,GI)
0881
0882
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894
0895 INTEGER A,B,K3
0896 DOUBLE PRECISION X2,Y2,U,V,P,Q,CR,CI,DR,DI
0897 DOUBLE PRECISION X,Y,EPS,FR,FI,GR,GI
0898 X2=X*X
0899 Y2=Y*Y
0900 K3=0
0901 U=X*(X2-3.D0*Y2)
0902 V=Y*(3.D0*X2-Y2)
0903 CR=1.D0
0904 CI=0.D0
0905 DR=1.D0
0906 DI=0.D0
0907 FR=1.D0
0908 FI=0.D0
0909 GR=1.D0
0910 GI=0.D0
0911 71 A=(K3+2)*(K3+3)
0912 B=(K3+4)*(K3+3)
0913 P=(U*CR-V*CI)/A
0914 Q=(V*CR+U*CI)/A
0915 CR=P
0916 CI=Q
0917 P=(U*DR-V*DI)/B
0918 Q=(V*DR+U*DI)/B
0919 DR=P
0920 DI=Q
0921 FR=FR+CR
0922 FI=FI+CI
0923 GR=GR+DR
0924 GI=GI+DI
0925 K3=K3+3
0926 IF ((ABS(CR)+ABS(DR)+ABS(CI)+ABS(DI)).GE.EPS) GOTO 71
0927 P=X*GR-Y*GI
0928 Q=X*GI+Y*GR
0929 GR=P
0930 GI=Q
0931 RETURN
0932 END
0933 SUBROUTINE SERAI(X,Y,AIR,AII)
0934
0935
0936
0937
0938
0939
0940
0941
0942
0943
0944 DOUBLE PRECISION X,Y,EPS,AIR,AII
0945 DOUBLE PRECISION FZR,FZI,GZR,GZI,CONS1,CONS2
0946 DOUBLE PRECISION D1MACH
0947 EPS=D1MACH(3)
0948 IF (EPS.LT.1.D-15) EPS=1.D-15
0949 CONS1=0.355028053887817239260D0
0950 CONS2=0.258819403792806798405D0
0951 CALL FG(X,Y,EPS,FZR,FZI,GZR,GZI)
0952 AIR=CONS1*FZR-CONS2*GZR
0953 AII=CONS1*FZI-CONS2*GZI
0954 RETURN
0955 END
0956 SUBROUTINE SERAID(X,Y,AIR,AII)
0957
0958
0959
0960
0961
0962
0963
0964
0965
0966
0967 DOUBLE PRECISION X,Y,EPS,AIR,AII
0968 DOUBLE PRECISION FZR,FZI,GZR,GZI,CONS1,CONS2
0969 DOUBLE PRECISION D1MACH
0970 EPS=D1MACH(3)
0971 IF (EPS.LT.1.D-15) EPS=1.D-15
0972 CONS1=0.355028053887817239260D0
0973 CONS2=0.258819403792806798405D0
0974 CALL FGP(X,Y,EPS,FZR,FZI,GZR,GZI)
0975 AIR=CONS1*FZR-CONS2*GZR
0976 AII=CONS1*FZI-CONS2*GZI
0977 RETURN
0978 END
0979 SUBROUTINE EXPAI(GAIR,GAII)
0980
0981
0982
0983
0984
0985
0986
0987 DOUBLE PRECISION EPS,GAIR,GAII
0988 DOUBLE PRECISION THET,R,TH15,S1,
0989 * C1,R32,FACTO,TH025,S3,C3
0990 DOUBLE PRECISION DF1,PSIIR,PSIII,CK,DFRR,DFII,SUMAR,SUMAI,
0991 * DFR,DFI,DELTAR,DELTAI,FAC1,FAC2
0992 DOUBLE PRECISION CO,DF
0993 DOUBLE PRECISION D1MACH
0994 INTEGER K
0995 DIMENSION CO(20)
0996 COMMON/PARAM3/THET,R,TH15,S1,C1,R32
0997 COMMON/PARAM4/FACTO,TH025,S3,C3
0998 SAVE CO
0999 DATA CO/-6.944444444444445D-2,3.713348765432099D-2,
1000 * -3.799305912780064D-2,5.764919041266972D-2,-0.116099064025515D0,
1001 * 0.291591399230751D0,-0.877666969510017D0,3.07945303017317D0,
1002 * -12.3415733323452D0,55.6227853659171D0,-278.465080777603D0,
1003 * 1533.16943201280D0,-9207.20659972641D0,59892.5135658791D0,
1004 * -419524.875116551D0,3148257.41786683D0,-25198919.8716024D0,
1005 * 214288036.963680D0,-1929375549.18249D0,18335766937.8906D0/
1006 EPS=D1MACH(3)
1007 IF (EPS.LT.1.D-15) EPS=1.D-15
1008 DF1=1.5D0/R32
1009 PSIIR=C1
1010 PSIII=-S1
1011 K=0
1012 CK=1.D0
1013 DF=1.D0
1014 DFRR=1.D0
1015 DFII=0.D0
1016 SUMAR=1.D0
1017 SUMAI=0.D0
1018 80 DF=DF*DF1
1019 CK=CO(K+1)*DF
1020 DFR=DFRR
1021 DFI=DFII
1022 DFRR=DFR*PSIIR-DFI*PSIII
1023 DFII=DFR*PSIII+DFI*PSIIR
1024 DELTAR=DFRR*CK
1025 DELTAI=DFII*CK
1026 SUMAR=SUMAR+DELTAR
1027 SUMAI=SUMAI+DELTAI
1028 K=K+1
1029 IF (SUMAR.NE.0) THEN
1030 IF (ABS(DELTAR/SUMAR).GT.EPS) GOTO 80
1031 ENDIF
1032 IF (SUMAI.NE.0) THEN
1033 IF (ABS(DELTAI/SUMAI).GT.EPS) GOTO 80
1034 ENDIF
1035 FAC1=FACTO*C3
1036 FAC2=FACTO*S3
1037 GAIR=FAC1*SUMAR+FAC2*SUMAI
1038 GAII=FAC1*SUMAI-FAC2*SUMAR
1039 RETURN
1040 END
1041 SUBROUTINE EXPAID(GAIR,GAII)
1042
1043
1044
1045
1046
1047
1048
1049 DOUBLE PRECISION EPS,GAIR,GAII
1050 DOUBLE PRECISION THET,R,TH15,S1,
1051 * C1,R32,FACTO,TH025,S3,C3
1052 DOUBLE PRECISION DF1,PSIIR,PSIII,VK,DFRR,DFII,SUMAR,SUMAI,
1053 * DFR,DFI,DELTAR,DELTAI,FAC1,FAC2
1054 DOUBLE PRECISION CO,DF
1055 DOUBLE PRECISION D1MACH
1056 INTEGER K
1057 DIMENSION CO(20)
1058 COMMON/PARAM3/THET,R,TH15,S1,C1,R32
1059 COMMON/PARAM4/FACTO,TH025,S3,C3
1060 SAVE CO
1061 DATA CO/9.722222222222222D-2,-4.388503086419753D-2,
1062 * 4.246283078989484D-2,-6.266216349203230D-2,
1063 * 0.124105896027275D0,-0.308253764901079D0,
1064 * 0.920479992412945D0,-3.21049358464862D0,
1065 * 12.8072930807356D0,-57.5083035139143D0,
1066 * 287.033237109221D0,-1576.35730333710D0,
1067 * 9446.35482309593D0,-61335.7066638521D0,
1068 * 428952.400400069D0,-3214536.52140086D0,
1069 * 25697908.3839113D0,-218293420.832160D0,
1070 * 1963523788.99103D0,-18643931088.1072D0/
1071 EPS=D1MACH(3)
1072 IF (EPS.LT.1.D-15) EPS=1.D-15
1073 DF1=1.5D0/R32
1074 PSIIR=C1
1075 PSIII=-S1
1076 K=0
1077 DF=1.D0
1078 DFRR=1.D0
1079 DFII=0.D0
1080 SUMAR=1.D0
1081 SUMAI=0.D0
1082 81 DF=DF*DF1
1083 VK=CO(K+1)*DF
1084 DFR=DFRR
1085 DFI=DFII
1086 DFRR=DFR*PSIIR-DFI*PSIII
1087 DFII=DFR*PSIII+DFI*PSIIR
1088 DELTAR=DFRR*VK
1089 DELTAI=DFII*VK
1090 SUMAR=SUMAR+DELTAR
1091 SUMAI=SUMAI+DELTAI
1092 K=K+1
1093 IF (SUMAR.NE.0) THEN
1094 IF (ABS(DELTAR/SUMAR).GT.EPS) GOTO 81
1095 ENDIF
1096 IF (SUMAI.NE.0) THEN
1097 IF (ABS(DELTAI/SUMAI).GT.EPS) GOTO 81
1098 ENDIF
1099 FAC1=FACTO*C3
1100 FAC2=FACTO*S3
1101 GAIR=-(FAC1*SUMAR-FAC2*SUMAI)
1102 GAII=-(FAC1*SUMAI+FAC2*SUMAR)
1103 RETURN
1104 END
1105
1106 SUBROUTINE BIZ(IFUN,IFAC,X0,Y0,GBIR,GBII,IERRO)
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164 DOUBLE PRECISION X0,Y0,GBIR,GBII
1165 DOUBLE PRECISION OVER,UNDER,DL1,DL2,COVER,D1MACH
1166 DOUBLE PRECISION PI,PI3,PI23,SQRT3,C,S,C1,S1,U,V,X,Y,AR,AI,
1167 * APR,API,BR,BI,BPR,BPI,BBR,BBI,BBPR,BBPI,PHASE
1168 DOUBLE PRECISION THET,R,R32,THET32,A1,B1,DF1,EXPO,EXPOI,
1169 * ETAR,ETAI,ETAGR,ETAGI,PIHAL
1170 INTEGER IFUN,IFAC,IEXPF,IERR,IERRO
1171 COMMON/PARAM1/PI,PIHAL
1172 SQRT3=1.7320508075688772935D0
1173 PI=3.1415926535897932385D0
1174 PIHAL=1.5707963267948966192D0
1175 PI3=PI/3.D0
1176 PI23=2.D0*PI3
1177 X=X0
1178 C=0.5D0*SQRT3
1179 S=0.5D0
1180 IERRO=0
1181 IEXPF=0
1182 IF (Y0.LT.0.D0) THEN
1183 Y=-Y0
1184 ELSE
1185 Y=Y0
1186 ENDIF
1187 R=SQRT(X*X+Y*Y)
1188 R32=R*SQRT(R)
1189 THET=PHASE(X,Y)
1190 COVER=2.D0/3.D0*R32*ABS(COS(1.5D0*THET))
1191
1192 OVER=D1MACH(2)*1.D-3
1193
1194 UNDER=D1MACH(1)*1.D+3
1195 DL1=LOG(OVER)
1196 DL2=-LOG(UNDER)
1197 IF (DL1.GT.DL2) OVER=1/UNDER
1198 IF (IFAC.EQ.1) THEN
1199 IF (COVER.GE.LOG(OVER)) THEN
1200
1201
1202 IERRO=1
1203 GBIR=0
1204 GBII=0
1205 ENDIF
1206 ELSE
1207 IF (COVER.GE.(LOG(OVER)*0.2)) IEXPF=1
1208 ENDIF
1209 IF (IERRO.EQ.0) THEN
1210 IF (IFAC.EQ.1) THEN
1211 IF (Y.EQ.0.D0) THEN
1212
1213
1214
1215 C1=-0.5D0
1216 S1=-0.5D0*SQRT3
1217 U=X*C1-Y*S1
1218 V=X*S1+Y*C1
1219 CALL AIZ(IFUN,IFAC,U,V,AR,AI,IERR)
1220 IF (IFUN.EQ.1) THEN
1221 BR=SQRT3*AR+AI
1222 BI=0.D0
1223 ELSE
1224 U=AR*C1-AI*S1
1225 V=AR*S1+AI*C1
1226 APR=U
1227 API=V
1228 BPR=SQRT3*APR+API
1229 BPI=0.D0
1230 ENDIF
1231 ELSE
1232 IF ((X.LT.0.D0).AND.(Y.LT.-X*SQRT3)) THEN
1233
1234
1235
1236
1237 C1=-0.5D0
1238 S1=0.5D0*SQRT3
1239 U=X*C1-Y*S1
1240 V=X*S1+Y*C1
1241 CALL AIZ(IFUN,IFAC,U,V,AR,AI,IERR)
1242 IF (IFUN.EQ.1) THEN
1243 BR=C*AR-S*AI
1244 BI=C*AI+S*AR
1245 ELSE
1246 U=AR*C1-AI*S1
1247 V=AR*S1+AI*C1
1248 APR=U
1249 API=V
1250 BPR=C*APR-S*API
1251 BPI=C*API+S*APR
1252 ENDIF
1253
1254
1255
1256 C1=-0.5D0
1257 S1=-0.5D0*SQRT3
1258 U=X*C1-Y*S1
1259 V=X*S1+Y*C1
1260 CALL AIZ(IFUN,IFAC,U,V,AR,AI,IERR)
1261 IF (IFUN.EQ.1) THEN
1262 S=-S
1263 BR=BR+C*AR-S*AI
1264 BI=BI+C*AI+S*AR
1265 ELSE
1266 U=AR*C1-AI*S1
1267 V=AR*S1+AI*C1
1268 APR=U
1269 API=V
1270 S=-S
1271 BPR=BPR+C*APR-S*API
1272 BPI=BPI+C*API+S*APR
1273 ENDIF
1274 ELSE
1275
1276
1277
1278 C1=-0.5D0
1279 S1=-0.5D0*SQRT3
1280 U=X*C1-Y*S1
1281 V=X*S1+Y*C1
1282 CALL AIZ(IFUN,IFAC,U,V,AR,AI,IERR)
1283 IF (IFUN.EQ.1) THEN
1284 BR=SQRT3*AR+AI
1285 BI=-AR+SQRT3*AI
1286 ELSE
1287 U=AR*C1-AI*S1
1288 V=AR*S1+AI*C1
1289 APR=U
1290 API=V
1291 BPR=SQRT3*APR+API
1292 BPI=-APR+SQRT3*API
1293 ENDIF
1294 CALL AIZ(IFUN,IFAC,X,Y,AR,AI,IERR)
1295 IF (IFUN.EQ.1) THEN
1296 BR=BR-AI
1297 BI=BI+AR
1298 ELSE
1299 BPR=BPR-AI
1300 BPI=BPI+AR
1301 ENDIF
1302 ENDIF
1303 ENDIF
1304 ELSE
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314 THET=PHASE(X,Y)
1315 IF (THET.LE.PI3) THEN
1316 C1=-0.5D0
1317 S1=-0.5D0*SQRT3
1318 U=X*C1-Y*S1
1319 V=X*S1+Y*C1
1320 CALL AIZ(IFUN,IFAC,U,V,AR,AI,IERR)
1321 IF (IFUN.EQ.1) THEN
1322 BR=SQRT3*AR+AI
1323 BI=-AR+SQRT3*AI
1324 ELSE
1325 U=AR*C1-AI*S1
1326 V=AR*S1+AI*C1
1327 APR=U
1328 API=V
1329 BPR=SQRT3*APR+API
1330 BPI=-APR+SQRT3*API
1331 ENDIF
1332 IF (IEXPF.EQ.0) THEN
1333 R=SQRT(X*X+Y*Y)
1334 R32=R*SQRT(R)
1335 THET32=THET*1.5D0
1336 A1=COS(THET32)
1337 B1=SIN(THET32)
1338 DF1=4.D0/3.D0*R32
1339 EXPO=EXP(DF1*A1)
1340 EXPOI=1.D0/EXPO
1341 ETAR=EXPO*COS(DF1*B1)
1342 ETAI=EXPO*SIN(DF1*B1)
1343 ETAGR=EXPOI*COS(-DF1*B1)
1344 ETAGI=EXPOI*SIN(-DF1*B1)
1345 CALL AIZ(IFUN,IFAC,X,Y,AR,AI,IERR)
1346 IF (IFUN.EQ.1) THEN
1347 BR=BR-AR*ETAGI-ETAGR*AI
1348 BI=BI+AR*ETAGR-ETAGI*AI
1349 ELSE
1350 BPR=BPR-AR*ETAGI-ETAGR*AI
1351 BPI=BPI+AR*ETAGR-ETAGI*AI
1352 ENDIF
1353 ENDIF
1354 ENDIF
1355 IF ((THET.GT.PI3).AND.(THET.LE.PI23)) THEN
1356 IF (IEXPF.EQ.0) THEN
1357 R=SQRT(X*X+Y*Y)
1358 R32=R*SQRT(R)
1359 THET32=THET*1.5D0
1360 A1=COS(THET32)
1361 B1=SIN(THET32)
1362 DF1=4.D0/3.D0*R32
1363 EXPO=EXP(DF1*A1)
1364 EXPOI=1.D0/EXPO
1365 ETAR=EXPO*COS(DF1*B1)
1366 ETAI=EXPO*SIN(DF1*B1)
1367 ETAGR=EXPOI*COS(-DF1*B1)
1368 ETAGI=EXPOI*SIN(-DF1*B1)
1369 C1=-0.5D0
1370 S1=-0.5D0*SQRT3
1371 U=X*C1-Y*S1
1372 V=X*S1+Y*C1
1373 CALL AIZ(IFUN,IFAC,U,V,AR,AI,IERR)
1374 IF (IFUN.EQ.1) THEN
1375 BBR=SQRT3*AR+AI
1376 BBI=-AR+SQRT3*AI
1377 BR=BBR*ETAR-BBI*ETAI
1378 BI=BBI*ETAR+BBR*ETAI
1379 ELSE
1380 U=AR*C1-AI*S1
1381 V=AR*S1+AI*C1
1382 APR=U
1383 API=V
1384 BBPR=SQRT3*APR+API
1385 BBPI=-APR+SQRT3*API
1386 BPR=BBPR*ETAR-BBPI*ETAI
1387 BPI=BBPI*ETAR+BBPR*ETAI
1388 ENDIF
1389 ELSE
1390 IF (IFUN.EQ.1) THEN
1391 BR=0.D0
1392 BI=0.D0
1393 ELSE
1394 BPR=0.D0
1395 BPI=0.D0
1396 ENDIF
1397 ENDIF
1398 CALL AIZ(IFUN,IFAC,X,Y,AR,AI,IERR)
1399 IF (IFUN.EQ.1) THEN
1400 BR=BR-AI
1401 BI=BI+AR
1402 ELSE
1403 BPR=BPR-AI
1404 BPI=BPI+AR
1405 ENDIF
1406 ENDIF
1407 IF (THET.GT.PI23) THEN
1408 C1=-0.5D0
1409 S1=0.5D0*SQRT3
1410 U=X*C1-Y*S1
1411 V=X*S1+Y*C1
1412 CALL AIZ(IFUN,IFAC,U,V,AR,AI,IERR)
1413 IF (IFUN.EQ.1) THEN
1414 BR=C*AR-S*AI
1415 BI=C*AI+S*AR
1416 ELSE
1417 U=AR*C1-AI*S1
1418 V=AR*S1+AI*C1
1419 APR=U
1420 API=V
1421 BPR=C*APR-S*API
1422 BPI=C*API+S*APR
1423 ENDIF
1424 IF (IEXPF.EQ.0) THEN
1425
1426
1427
1428 R=SQRT(X*X+Y*Y)
1429 R32=R*SQRT(R)
1430 THET32=THET*1.5D0
1431 A1=COS(THET32)
1432 B1=SIN(THET32)
1433 DF1=4.D0/3.D0*R32
1434 EXPO=EXP(DF1*A1)
1435 EXPOI=1.D0/EXPO
1436 ETAR=EXPO*COS(DF1*B1)
1437 ETAI=EXPO*SIN(DF1*B1)
1438 ETAGR=EXPOI*COS(-DF1*B1)
1439 ETAGI=EXPOI*SIN(-DF1*B1)
1440 C1=-0.5D0
1441 S1=-0.5D0*SQRT3
1442 U=X*C1-Y*S1
1443 V=X*S1+Y*C1
1444 CALL AIZ(IFUN,IFAC,U,V,AR,AI,IERR)
1445 IF (IFUN.EQ.1) THEN
1446 S=-S
1447 BBR=C*AR-S*AI
1448 BBI=C*AI+S*AR
1449 BR=BR+ETAR*BBR-ETAI*BBI
1450 BI=BI+BBI*ETAR+ETAI*BBR
1451 ELSE
1452 U=AR*C1-AI*S1
1453 V=AR*S1+AI*C1
1454 APR=U
1455 API=V
1456 S=-S
1457 BBPR=C*APR-S*API
1458 BBPI=C*API+S*APR
1459 BPR=BPR+ETAR*BBPR-ETAI*BBPI
1460 BPI=BPI+BBPI*ETAR+ETAI*BBPR
1461 ENDIF
1462 ENDIF
1463 ENDIF
1464 ENDIF
1465 IF (Y0.LT.0) THEN
1466 BI=-BI
1467 BPI=-BPI
1468 ENDIF
1469 IF (IFUN.EQ.1) THEN
1470 GBIR=BR
1471 GBII=BI
1472 ELSE
1473 GBIR=BPR
1474 GBII=BPI
1475 ENDIF
1476 ENDIF
1477 RETURN
1478 END
1479
1480
1481
1482
1483
1484