[comp.sys.handhelds] Bessel J, Y, I, and K for 48SX

NU123952@VM1.NoDak.EDU (Mark A. Ordal) (05/16/91)

There's been some interest in Bessel Functions I (x) and K (x) so I've
                                                n         n

tacked them onto my earlier routines for J (x) and Y (x).
                                          n         n


The listing of the directory is given below.  In a separate posting
I'm providing a commented listing.  Note that the commented listing
WILL NOT DOWNLOAD to a 32k 48SX.  (Maybe not at all as far as that
goes.)  There seems to be some upper limit to how many comments are
allowed in a single 48SX download.

               Dr. Mark A. Ordal
               Physics Department
               North Dakota State University
               Fargo, ND 58105
               NU123952@NDSUVM1


%%HP: T(3)A(D)F(.);
DIR
  Jnx
    \<< \-> n x
      \<<
        CASE n 0
SAME
          THEN x
ASJ0
          END n 1
SAME
          THEN x
ASJ1
          END n x
NRJN
        END
      \>>
    \>>
  Ynx
    \<< \-> n x
      \<<
        CASE n 0
SAME
          THEN x
ASY0
          END n 1
SAME
          THEN x
ASY1
          END n x
NRYN
        END
      \>>
    \>>
  Inx
    \<< \-> n x
      \<<
        CASE n 0
SAME
          THEN x
ASI0
          END n 1
SAME
          THEN x
ASI1
          END n x
NRIN
        END
      \>>
    \>>
  Knx
    \<< \-> n x
      \<<
        CASE n 0
SAME
          THEN x
ASK0
          END n 1
SAME
          THEN x
ASK1
          END n x
NRKN
        END
      \>>
    \>>
  NRJN
    \<< 10000000000
.0000000001 0 0 0 0
\-> n x u d t m s sj
      \<< 2 x / 't'
STO
        IF x n >
        THEN x ASJ0
x ASJ1 1 n 1 -
          FOR j j t
* OVER * 3 PICK -
ROT DROP
          NEXT SWAP
DROP
        ELSE 40 n *
\v/ IP n + 2 / IP 2 *
'm' STO 0 1 m
          DO t *
OVER * 3 PICK - ROT
DROP
            IF DUP
ABS u >
            THEN d
* SWAP d * SWAP d
DUP 'sj' STO* 's'
STO*
            END
            IF m n
SAME
            THEN
OVER 'sj' STO
            END 'm'
DECR t * OVER * 3
PICK - ROT DROP
            IF DUP
ABS u >
            THEN d
* SWAP d * SWAP d
DUP 'sj' STO* 's'
STO*
            END
            IF m n
SAME
            THEN
OVER 'sj' STO
            END DUP
's' STO+ 'm' DECR
          UNTIL m 1
<
          END DROP
SWAP DROP NEG s 2 *
+ sj SWAP /
        END
      \>>
    \>>
  NRYN
    \<< 0 \-> n x t
      \<< 2 x / 't'
STO x ASY0 x ASY1 1
n 1 -
        FOR j j t *
OVER * 3 PICK - ROT
DROP
        NEXT SWAP
DROP
      \>>
    \>>
  NRIN
    \<< 10000000000
.0000000001 0 0 \-> n
x u d t si
      \<< 2 x / 't'
STO 0 1 40 n * \v/ IP
n + 2 * 1
        FOR j j t *
OVER * 3 PICK + ROT
DROP
          IF DUP
ABS u >
          THEN d *
SWAP d * SWAP d
'si' STO*
          END
          IF j n
SAME
          THEN OVER
'si' STO
          END -1
        STEP SWAP
DROP si SWAP / x
ASI0 *
      \>>
    \>>
  NRKN
    \<< 10000000000
.0000000001 0 0 \-> n
x u d t sk
      \<< 2 x / 't'
STO x ASK0 x ASK1 1
n 1 -
        FOR j j t *
OVER * 3 PICK + ROT
DROP
        NEXT SWAP
DROP
      \>>
    \>>
  ASJ1
    \<< 0 RCLF \-> x a
ff
      \<<
        IF x 3 <
        THEN .5
-.56249985
.21093573
-.03954289
.00443319
-.00031761
.00001109 x 3 / SQ
6 JYIK x *
        ELSE x JY1
RAD COS * x \v/ /
        END ff STOF
      \>>
    \>>
  ASY1
    \<< 0 RCLF \-> x a
ff
      \<<
        IF x 3 <
        THEN
-.6366198 .2212091
2.1682709
-1.3164827 .3123951
-.0400976 .0027873
x 3 / SQ 6 JYIK x
ASJ1 x .5 * LN * x
* 2 * \pi \->NUM / + x
/
        ELSE x JY1
RAD SIN * x \v/ /
        END ff STOF
      \>>
    \>>
  ASI1
    \<< 0 \-> x a
      \<<
        IF x ABS
3.75 <
        THEN .5
.87890594 .51498869
.15084934 .02658733
.00301532 .00032411
x 3.75 / SQ 6 JYIK
x *
        ELSE
.39894228
-.03988024
-.00362018
.00163801
-.01031555
.02282967
-.02895312
.01787654
-.00420059 3.75 x
ABS / 8 JYIK x ABS
DUP EXP SWAP \v/ / *
        END
      \>>
    \>>
  ASK1
    \<< 0 \-> x a
      \<<
        IF x ABS 2
<
        THEN 1
.15443144
-.67278579
-.18156897
-.01919402
-.00110404
-.00004686 x 2 / SQ
6 JYIK x / x ASI1 x
2 / LN * +
        ELSE
1.25331414
.23498619 -.0365562
.01504268
-.00780353
.00325614
-.00068245 2 x / 6
JYIK x DUP NEG EXP
SWAP \v/ / *
        END
      \>>
    \>>
  ASJ0
    \<< 0 RCLF \-> x a
ff
      \<<
        IF x 3 <
        THEN 1
-2.2499997
1.2656208 -.3163866
.0444479 -.0039444
.00021 x 3 / SQ 6
JYIK
        ELSE x JY0
RAD COS * x \v/ /
        END ff STOF
      \>>
    \>>
  ASY0
    \<< 0 RCLF \-> x a
ff
      \<<
        IF x 3 <
        THEN
.36746691 .60559366
-.74350384
.25300117
-.04261214
.00427916
-.00024846 x 3 / SQ
6 JYIK x ASJ0 x .5
* LN * 2 * \pi \->NUM /
+
        ELSE x JY0
RAD SIN * x \v/ /
        END ff STOF
      \>>
    \>>
  ASI0
    \<< 0 \-> x a
      \<<
        IF x ABS
3.75 <
        THEN 1
3.5156229 3.0899424
1.2067492 .2659732
.0360768 .0045813 x
3.75 / SQ 6 JYIK
        ELSE
.39894228 .01328592
.00225319
-.00157565
.00916281
-.02057706
.02635537
-.01647633
.00392377 3.75 x
ABS / 8 JYIK x ABS
DUP EXP SWAP \v/ / *
        END
      \>>
    \>>
  ASK0
    \<< 0 \-> x a
      \<<
        IF x ABS 2
<
        THEN
-.57721566 .4227842
.23069756 .0348859
.00262698 .0001075
.0000074 x 2 / SQ 6
JYIK x ASI0 x 2 /
LN NEG * +
        ELSE
1.25331414
-.07832358
.02189568
-.01062446
.00587872 -.0025154
.00053208 2 x / 6
JYIK x DUP NEG EXP
SWAP \v/ / *
        END
      \>>
    \>>
  JYIK
    \<< \-> t j
      \<< 1 j
        START t * +
        NEXT
      \>>
    \>>
  JY1
    \<< 0 \-> x a
      \<< 3 x / 'a'
STO .79788456
.00000156 .01659667
.00017105
-.00249511
.00113653
-.00020033 a 6 JYIK
-2.35619449
.12499612 .0000565
-.00637879
.00074348 .00079824
-.00029166 a 6 JYIK
x +
      \>>
    \>>
  JY0
    \<< 0 \-> x a
      \<< 3 x / 'a'
STO .79788456
-.00000077
-.0055274
-.00009512
.00137237
-.00072805
.00014476 a 6 JYIK
-.78539816
-.04166397
-.00003954
.00262573
-.00054125
-.00029333
.00013558 a 6 JYIK
x +
      \>>
    \>>
END