Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!tut.cis.ohio-state.edu!ucbvax!EN.ECN.PURDUE.EDU!wscott From: wscott@EN.ECN.PURDUE.EDU (Wayne H Scott) Newsgroups: comp.sys.handhelds Subject: new Bessel function Message-ID: <9002210514.AA03132@en.ecn.purdue.edu> Date: 21 Feb 90 05:14:53 GMT Sender: daemon@ucbvax.BERKELEY.EDU Lines: 57 This is a new version of the bessel function program. It is faster by using stack functions and it fixes one bug in the previous posting. This is a function I wrote to aid in my study of FM signal modulation. It computes the bessel function. It expects n and x to be on the stack and it returns the result of the bessel function. Note it is recursive so it should be named J or change the one reference to this name within the program. J << -> n x << << IF n 0 < THEN n NEG x J n 2 MOD 2 * 1 - * NEG ELSE IF x 0 == THEN n 0 == ELSE 17.1032 .2639 n * + .6487 x ABS * + .0018 n * x ABS * - .6457 n x ABS MAX * + .5 + FLOOR 2 / CEIL 2 * 1.e-50 0 -> m tiny bn << tiny 2 * 0 0 tiny m 1 - 0 FOR k ROT DROP 2 k 1 + * OVER * x / 3 PICK - IF k n == THEN DUP 'bn' STO END if k 0 == THEN DUP 5 ROLL + 4 ROLLD ELSE IF k 2 MOD 0 == THEN DUP 2 * 5 ROLL + 4 ROLLD END END -1 STEP 3 DROPN bn SWAP / >> END END >> >> Ported from MatLab librarys. _______________________________________________________________________________ Wayne Scott | INTERNET: wscott@en.ecn.purdue.edu Electrical Engineering | BITNET: wscott%ea.ecn.purdue.edu@purccvm Purdue University | UUCP: {purdue, pur-ee}!en.ecn.purdue.edu!wscott