⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cbess0_cpp.txt

📁 BESSEL PROGRAMS IN C/C
💻 TXT
📖 第 1 页 / 共 5 页
字号:
      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 + -