bessi.pas

来自「Delphi Pascal 数据挖掘领域算法包 数值算法大全」· PAS 代码 · 共 36 行

PAS
36
字号
FUNCTION bessi(n: integer; x: real): real;
CONST
   iacc=40;
   bigno=1.0e10;
   bigni=1.0e-10;
VAR
   bi,bim,bip,tox,ans: real;
   j,m: integer;
BEGIN
   IF  (n < 2) THEN BEGIN
      writeln('pause in routine BESSI');
      writeln('index n is less than 2'); readln
   END;
   IF (x=0.0) THEN bessi := 0.0
   ELSE BEGIN
      ans := 0.0;
      tox := 2.0/abs(x);
      bip := 0.0;
      bi := 1.0;
      m := 2*(n+trunc(sqrt(iacc*n)));
      FOR j := m DOWNTO 1 DO BEGIN
         bim := bip+j*tox*bi;
         bip := bi;
         bi := bim;
         IF (abs(bi) > bigno) THEN BEGIN
            ans := ans*bigni;
            bi := bi*bigni;
            bip := bip*bigni
         END;
         IF (j=n) THEN ans := bip
      END;
      IF (x<0.0) AND ((n MOD 2)=1) THEN ans := -ans;
      bessi := ans*bessi0(x)/bi
   END
END;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?