📄 cbess0_cpp.txt
字号:
C[39]= 1.92547001232531532e+05; C[40]=-2.03400177280415534e+05;
C[41]= 1.22200464983017460e+05; C[42]=-4.11926549688975513e+04;
C[43]= 7.10951430248936372e+03; C[44]=-4.93915304773088012e+02;
C[45]= 6.07404200127348304e+00; C[46]=-2.42919187900551333e+05;
C[47]= 1.31176361466297720e+06; C[48]=-2.99801591853810675e+06;
C[49]= 3.76327129765640400e+06; C[50]=-2.81356322658653411e+06;
C[51]= 1.26836527332162478e+06; C[52]=-3.31645172484563578e+05;
C[53]= 4.52187689813627263e+04; C[54]=-2.49983048181120962e+03;
C[55]= 2.43805296995560639e+01; C[56]= 3.28446985307203782e+06;
C[57]=-1.97068191184322269e+07; C[58]= 5.09526024926646422e+07;
C[59]=-7.41051482115326577e+07; C[60]= 6.63445122747290267e+07;
C[61]=-3.75671766607633513e+07; C[62]= 1.32887671664218183e+07;
C[63]=-2.78561812808645469e+06; C[64]= 3.08186404612662398e+05;
C[65]=-1.38860897537170405e+04; C[66]= 1.10017140269246738e+02;
C[67]=-4.93292536645099620e+07; C[68]= 3.25573074185765749e+08;
C[69]=-9.39462359681578403e+08; C[70]= 1.55359689957058006e+09;
C[71]=-1.62108055210833708e+09; C[72]= 1.10684281682301447e+09;
C[73]=-4.95889784275030309e+08; C[74]= 1.42062907797533095e+08;
C[75]=-2.44740627257387285e+07; C[76]= 2.24376817792244943e+06;
C[77]=-8.40054336030240853e+04; C[78]= 5.51335896122020586e+02;
C[79]= 8.14789096118312115e+08; C[80]=-5.86648149205184723e+09;
C[81]= 1.86882075092958249e+10; C[82]=-3.46320433881587779e+10;
C[83]= 4.12801855797539740e+10; C[84]=-3.30265997498007231e+10;
C[85]= 1.79542137311556001e+10; C[86]=-6.56329379261928433e+09;
C[87]= 1.55927986487925751e+09; C[88]=-2.25105661889415278e+08;
C[89]= 1.73951075539781645e+07; C[90]=-5.49842327572288687e+05;
C[91]= 3.03809051092238427e+03; C[92]=-1.46792612476956167e+10;
C[93]= 1.14498237732025810e+11; C[94]=-3.99096175224466498e+11;
C[95]= 8.19218669548577329e+11; C[96]=-1.09837515608122331e+12;
C[97]= 1.00815810686538209e+12; C[98]= -6.45364869245376503e+11;
C[99]= 2.87900649906150589e+11; C[100]=-8.78670721780232657e+10;
C[101]= 1.76347306068349694e+10; C[102]=-2.16716498322379509e+09;
C[103]= 1.43157876718888981e+08; C[104]=-3.87183344257261262e+06;
C[105]= 1.82577554742931747e+04; C[106]= 2.86464035717679043e+11;
C[107]=-2.40629790002850396e+12; C[108]= 9.10934118523989896e+12;
C[109]=-2.05168994109344374e+13; C[110]= 3.05651255199353206e+13;
C[111]=-3.16670885847851584e+13; C[112]= 2.33483640445818409e+13;
C[113]=-1.23204913055982872e+13; C[114]= 4.61272578084913197e+12;
C[115]=-1.19655288019618160e+12; C[116]= 2.05914503232410016e+11;
C[117]=-2.18229277575292237e+10; C[118]= 1.24700929351271032e+09;
C[119]=-2.91883881222208134e+07; C[120]= 1.18838426256783253e+05;
if (INIT != 0) goto e40;
/*----------------------------------------------------------------------
! INITIALIZE ALL VARIABLES
!---------------------------------------------------------------------*/
RFN = 1.0/FNU;
TR = ZRR*RFN;
TI = ZRI*RFN;
SR = CONER + (TR*TR-TI*TI);
SI = CONEI + (TR*TI+TI*TR);
ZSQRT(SR, SI, &SRR, &SRI);
STR = CONER + SRR;
STI = CONEI + SRI;
ZDIV(STR, STI, TR, TI, &ZNR, &ZNI);
ZLOG(ZNR, ZNI, &STR, &STI, &IDUM);
*ZETA1R = FNU*STR;
*ZETA1I = FNU*STI;
*ZETA2R = FNU*SRR;
*ZETA2I = FNU*SRI;
ZDIV(CONER, CONEI, SRR, SRI, &TR, &TI);
SRR = TR*RFN;
SRI = TI*RFN;
ZSQRT(SRR, SRI, &CWRKR[16], &CWRKI[16]);
*PHIR = CWRKR[16]*CON[IKFLG];
*PHII = CWRKI[16]*CON[IKFLG];
if (IPMTR != 0) {
vmfree(vmblock);
return;
}
ZDIV(CONER, CONEI, SR, SI, &T2R, &T2I);
CWRKR[1] = CONER;
CWRKI[1] = CONEI;
CRFNR = CONER;
CRFNI = CONEI;
AC = 1.0;
L = 1;
for (K=2; K<=15; K++) {
SR = ZEROR;
SI = ZEROI;
for (J=1; J<=K; J++) {
L = L + 1;
STR = SR*T2R - SI*T2I + C[L];
SI = SR*T2I + SI*T2R;
SR = STR;
}
STR = CRFNR*SRR - CRFNI*SRI;
CRFNI = CRFNR*SRI + CRFNI*SRR;
CRFNR = STR;
CWRKR[K] = CRFNR*SR - CRFNI*SI;
CWRKI[K] = CRFNR*SI + CRFNI*SR;
AC = AC*RFN;
TEST = ABS(CWRKR[K]) + ABS(CWRKI[K]);
if (AC < TOL && TEST < TOL) goto e30;
}
K = 15;
e30: INIT = K;
e40: if (IKFLG == 2) goto e60;
/*----------------------------------------------------------------------
! COMPUTE SUM FOR THE I FUNCTION
!---------------------------------------------------------------------*/
SR = ZEROR;
SI = ZEROI;
for (I=1; I<=INIT; I++) {
SR = SR + CWRKR[I];
SI = SI + CWRKI[I];
}
*SUMR = SR;
*SUMI = SI;
*PHIR = CWRKR[16]*CON[1];
*PHII = CWRKI[16]*CON[1];
vmfree(vmblock);
return;
/*----------------------------------------------------------------------
! COMPUTE SUM FOR THE K FUNCTION
!---------------------------------------------------------------------*/
e60: SR = ZEROR;
SI = ZEROI;
TR = CONER;
for (I=1; I<=INIT; I++) {
SR = SR + TR*CWRKR[I];
SI = SI + TR*CWRKI[I];
TR = -TR;
}
*SUMR = SR;
*SUMI = SI;
*PHIR = CWRKR[16]*CON[2];
*PHII = CWRKI[16]*CON[2];
vmfree(vmblock);
} //ZUNIK()
void ZUNHJ(REAL ZR, REAL ZI, REAL FNU, int IPMTR, REAL TOL, REAL *PHIR, REAL *PHII,
REAL *ARGR, REAL *ARGI, REAL *ZETA1R, REAL *ZETA1I, REAL *ZETA2R, REAL *ZETA2I,
REAL *ASUMR, REAL *ASUMI, REAL *BSUMR, REAL *BSUMI) {
/***BEGIN PROLOGUE ZUNHJ
!***REFER TO ZBESI,ZBESK
!
! REFERENCES
! HANDBOOK OF MATHEMATICAL FUNCTIONS BY M. ABRAMOWITZ AND I.A.
! STEGUN, AMS55, NATIONAL BUREAU OF STANDARDS, 1965, CHAPTER 9.
!
! ASYMPTOTICS AND SPECIAL FUNCTIONS BY F.W.J. OLVER, ACADEMIC
! PRESS, N.Y., 1974, PAGE 420
!
! ABSTRACT
! ZUNHJ COMPUTES PARAMETERS FOR BESSEL FUNCTIONS C(FNU,Z) =
! J(FNU,Z), Y(FNU,Z) OR H(I,FNU,Z) I=1,2 FOR LARGE ORDERS FNU
! BY MEANS OF THE UNIFORM ASYMPTOTIC EXPANSION
!
! C(FNU,Z)=C1*PHI*( ASUM*AIRY(ARG) + C2*BSUM*DAIRY(ARG) )
!
! FOR PROPER CHOICES OF C1, C2, AIRY AND DAIRY WHERE AIRY IS
! AN AIRY FUNCTION AND DAIRY IS ITS DERIVATIVE.
!
! (2/3)*FNU*ZETA^1.5 = ZETA1-ZETA2,
!
! ZETA1=0.5*FNU*CLOG((1+W)/(1-W)), ZETA2=FNU*W FOR SCALING
! PURPOSES IN AIRY FUNCTIONS FROM CAIRY OR CBIRY.
!
! MCONJ=SIGN OF AIMAG(Z), BUT IS AMBIGUOUS WHEN Z IS REAL AND
! MUST BE SPECIFIED. IPMTR=0 RETURNS ALL PARAMETERS. IPMTR=1
! COMPUTES ALL EXCEPT ASUM AND BSUM.
!
!***ROUTINES CALLED ZABS,ZDIV,ZLOG,ZSQRT
!***END PROLOGUE ZUNHJ
! COMPLEX ARG,ASUM,BSUM,CFNU,CONE,CR,CZERO,DR,P,PHI,PRZTH,PTFN,
! RFN13,RTZTA,RZTH,SUMA,SUMB,TFN,T2,UP,W,W2,Z,ZA,ZB,ZC,ZETA,ZETA1,
! ZETA2,ZTH */
//Labels: e20, e50,e60, e80,e90,e110,e120,e130,e140,e180,e200,e220
REAL ANG, ATOL, AW2, AZTH, BTOL, CONEI, CONER, EX1, EX2, FN13, FN23, GXPI, HPI,
PP, PRZTHI, PRZTHR, PTFNI, PTFNR, RAW, RAW2, RAZTH, RFNU, RFNU2, RFN13,
RTZTI, RTZTR, RZTHI, RZTHR, STI, STR, SUMAI, SUMAR, SUMBI, SUMBR, TEST,
TFNI, TFNR, THPI, TZAI, TZAR, T2I, T2R, WI, WR, W2I, W2R, ZAI, ZAR, ZBI,
ZBR, ZCI, ZCR, ZEROI, ZEROR, ZETAI, ZETAR, ZTHI, ZTHR;
int IAS, IBS, IS, J, JR, JU, K, KMAX, KP1, KS, L, LR, LRP1, L1, L2, M, IDUM;
REAL *AR, *BR, *UPR, *UXPI, *CRR, *CRI, *DRR, *DRI; //size 0..16
REAL *C; //size 0..105
REAL *ALFA; //size 0..180
REAL *BETA; //size 0..210
REAL *GAMA, *AP, *PR, *XPI; //size 0..30
void *vmblock = NULL;
//Initialize dynamic tables
vmblock = vminit();
C = (REAL *) vmalloc(vmblock, VEKTOR, 106, 0); //index 0 not used
ALFA = (REAL *) vmalloc(vmblock, VEKTOR, 181, 0);
BETA = (REAL *) vmalloc(vmblock, VEKTOR, 211, 0);
GAMA = (REAL *) vmalloc(vmblock, VEKTOR, 31, 0);
AP = (REAL *) vmalloc(vmblock, VEKTOR, 31, 0);
PR = (REAL *) vmalloc(vmblock, VEKTOR, 31, 0);
XPI = (REAL *) vmalloc(vmblock, VEKTOR, 31, 0);
AR = (REAL *) vmalloc(vmblock, VEKTOR, 17, 0);
BR = (REAL *) vmalloc(vmblock, VEKTOR, 17, 0);
UPR = (REAL *) vmalloc(vmblock, VEKTOR, 17, 0);
UXPI = (REAL *) vmalloc(vmblock, VEKTOR, 17, 0);
CRR = (REAL *) vmalloc(vmblock, VEKTOR, 17, 0);
CRI = (REAL *) vmalloc(vmblock, VEKTOR, 17, 0);
DRR = (REAL *) vmalloc(vmblock, VEKTOR, 17, 0);
DRI = (REAL *) vmalloc(vmblock, VEKTOR, 17, 0);
if (! vmcomplete(vmblock)) {
LogError ("No Memory", 0, __FILE__, __LINE__);
return;
}
AR[0]= 0.0;
AR[1]= 1.00000000000000000e+00; AR[2]= 1.04166666666666667e-01;
AR[3]= 8.35503472222222222e-02; AR[4]= 1.28226574556327160e-01;
AR[5]= 2.91849026464140464e-01; AR[6]= 8.81627267443757652e-01;
AR[7]= 3.32140828186276754e+00; AR[8]= 1.49957629868625547e+01;
AR[9]= 7.89230130115865181e+01; AR[10]=4.74451538868264323e+02;
AR[11]=3.20749009089066193e+03; AR[12]=2.40865496408740049e+04;
AR[13]=1.98923119169509794e+05; AR[14]=1.79190200777534383e+06;
AR[15]=0.0; AR[16]=0.0;
BR[0]= 0.0;
BR[1]= 1.00000000000000000e+00; BR[2]= -1.45833333333333333e-01;
BR[3]= -9.87413194444444444e-02; BR[4]= -1.43312053915895062e-01;
BR[5]= -3.17227202678413548e-01; BR[6]= -9.42429147957120249e-01;
BR[7]= -3.51120304082635426e+00; BR[8]= -1.57272636203680451e+01;
BR[9]= -8.22814390971859444e+01; BR[10]=-4.92355370523670524e+02;
BR[11]=-3.31621856854797251e+03; BR[12]=-2.48276742452085896e+04;
BR[13]=-2.04526587315129788e+05; BR[14]=-1.83844491706820990e+06;
BR[15]=0.0; BR[16]=0.0;
C[0] = 0.0;
C[1]= 1.00000000000000000e+00; C[2]= -2.08333333333333333e-01;
C[3]= 1.25000000000000000e-01; C[4]= 3.34201388888888889e-01;
C[5]= -4.01041666666666667e-01; C[6]= 7.03125000000000000e-02;
C[7]= -1.02581259645061728e+00; C[8]= 1.84646267361111111e+00;
C[9]= -8.91210937500000000e-01; C[10]= 7.32421875000000000e-02;
C[11]= 4.66958442342624743e+00; C[12]=-1.12070026162229938e+01;
C[13]= 8.78912353515625000e+00; C[14]=-2.36408691406250000e+00;
C[15]= 1.12152099609375000e-01; C[16]=-2.82120725582002449e+01;
C[17]= 8.46362176746007346e+01; C[18]=-9.18182415432400174e+01;
C[19]= 4.25349987453884549e+01; C[20]=-7.36879435947963170e+00;
C[21]= 2.27108001708984375e-01; C[22]= 2.12570130039217123e+02;
C[23]=-7.65252468141181642e+02; C[24]= 1.05999045252799988e+03;
C[25]=-6.99579627376132541e+02; C[26]= 2.18190511744211590e+02;
C[27]=-2.64914304869515555e+01; C[28]= 5.72501420974731445e-01;
C[29]=-1.91945766231840700e+03; C[30]= 8.06172218173730938e+03;
C[31]=-1.35865500064341374e+04; C[32]= 1.16553933368645332e+04;
C[33]=-5.30564697861340311e+03; C[34]= 1.20090291321635246e+03;
C[35]=-1.08090919788394656e+02; C[36]= 1.72772750258445740e+00;
C[37]= 2.02042913309661486e+04; C[38]=-9.69805983886375135e+04;
C[39]= 1.92547001232531532e+05; C[40]=-2.03400177280415534e+05;
C[41]= 1.22200464983017460e+05; C[42]=-4.11926549688975513e+04;
C[43]= 7.10951430248936372e+03; C[44]=-4.93915304773088012e+02;
C[45]= 6.07404200127348304e+00; C[46]=-2.42919187900551333e+05;
C[47]= 1.31176361466297720e+06; C[48]=-2.99801591853810675e+06;
C[49]= 3.76327129765640e+0006; C[50]=-2.81356322658653e+0006;
C[51]= 1.26836527332162e+0006; C[52]=-3.31645172484564e+0005;
C[53]= 4.52187689813627e+0004; C[54]=-2.49983048181121e+0003;
C[55]= 2.43805296995561e+0001; C[56]= 3.28446985307204e+0006;
C[57]=-1.97068191184322e+0007; C[58]= 5.09526024926646e+0007;
C[59]=-7.41051482115327e+0007; C[60]= 6.63445122747290e+0007;
C[61]=-3.75671766607634e+0007; C[62]= 1.32887671664218e+0007;
C[63]=-2.78561812808645e+0006; C[64]= 3.08186404612662e+0005;
C[65]=-1.38860897537170e+0004; C[66]= 1.10017140269247e+0002;
C[67]=-4.93292536645100e+0007; C[68]= 3.25573074185766e+0008;
C[69]=-9.39462359681578e+0008; C[70]= 1.55359689957058e+0009;
C[71]=-1.62108055210834e+0009; C[72]= 1.10684281682301e+0009;
C[73]=-4.95889784275030e+0008; C[74]= 1.42062907797533e+0008;
C[75]=-2.44740627257387e+0007; C[76]= 2.24376817792245e+0006;
C[77]=-8.40054336030241e+0004; C[78]= 5.51335896122021e+0002;
C[79]= 8.14789096118312e+0008; C[80]=-5.86648149205185e+0009;
C[81]= 1.86882075092958e+0010; C[82]=-3.46320433881588e+0010;
C[83]= 4.12801855797540e+0010; C[84]=-3.30265997498007e+0010;
C[85]= 1.79542137311556e+0010; C[86]=-6.56329379261928e+0009;
C[87]= 1.55927986487926e+0009; C[88]=-2.25105661889415e+0008;
C[89]= 1.73951075539782e+0007; C[90]=-5.49842327572289e+0005;
C[91]= 3.03809051092238e+0003; C[92]=-1.46792612476956e+0010;
C[93]= 1.14498237732026e+0011; C[94]=-3.99096175224466e+0011;
C[95]= 8.19218669548577e+0011; C[96]=-1.09837515608122e+0012;
C[97]= 1.00815810686538e+0012; C[98]=-6.45364869245376e+0011;
C[99]= 2.87900649906151e+0011; C[100]=-8.78670721780233e+0010;
C[101]= 1.76347306068350e+0010; C[102]=-2.16716498322379e+0009;
C[103]= 1.43157876718889e+0008; C[104]=-3.87183344257261e+0006;
C[105]= 1.82577554742932e+0004;
ALFA[0]= 0.0;
ALFA[1]=-4.44444444444444e-0003; ALFA[2]=-9.22077922077922e-0004;
ALFA[3]=-8.84892884892885e-0005; ALFA[4]= 1.65927687832450e-0004;
ALFA[5]= 2.46691372741793e-0004; ALFA[6]= 2.65995589346255e-0004;
ALFA[7]= 2.61824297061501e-0004; ALFA[8]= 2.48730437344656e-0004;
ALFA[9]= 2.32721040083232e-0004; ALFA[10]= 2.16362485712365e-0004;
ALFA[11]= 2.00738858762752e-0004; ALFA[12]= 1.86267636637545e-0004;
ALFA[13]= 1.73060775917876e-0004; ALFA[14]= 1.61091705929016e-0004;
ALFA[15]= 1.50274774160908e-0004; ALFA[16]= 1.40503497391270e-0004;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -