home *** CD-ROM | disk | FTP | other *** search
/ Dos/V Magazine 2002 July 1 / VMAG130101.iso / ONLINE / monthly / calc / CLPCA511.LZH / ClipCalc / EXTFUNC / j.cef < prev    next >
Encoding:
Text File  |  2002-08-18  |  781 b   |  35 lines

  1. #!/usr/local/bin/clip
  2. #æµ1ÄφâxâbâZâïè╓Éö Bessel function
  3. #\!- <n> <x>
  4. :params n x
  5.  
  6. n = int n                                    # né═É«Éö
  7.  
  8. :define EPS 1e\-10                            # ïûùeæèæ╬îδì╖
  9.  
  10. :define x_2 (x / 2)
  11.  
  12. if x < 0
  13.     if n & 1; return [-]!j n [-]x
  14.     else;     return    !j n [-]x
  15.     endif
  16. endif
  17. if n < 0
  18.     if n & 1; return [-]!j [-]n x
  19.     else;     return    !j [-]n x
  20.     endif
  21. endif
  22. if x == 0; return n == 0; endif
  23. @a = @s = 0; @b = 1
  24. @k = int n; if @k < x; @k = int x; endif
  25. do; @k++; until (@b *= x_2 / @k) > EPS
  26. if @k & 1; @k++; endif                        # è∩Éöé╚éτï⌠Éöé╔é╖éΘ
  27. while @k > 0
  28.     @s += @b
  29.     @a = 2 * @k * @b / x - @a; @k--            # a=J(k)(x),ké═è∩Éö
  30.     if n == @k; @r = @a; endif
  31.     @b = 2 * @k * @a / x - @b; @k--            # b=J(k)(x),ké═ï⌠Éö
  32.     if n == @k; @r = @b; endif
  33. endwhile
  34. return @r / (2 * @s + @b)
  35.