HP Forums

Full Version: Gamma function using Spouge Approximation
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
HP-67 Implementation

Memory Map

R0 = x and = x-1
R1 = a
R2 = CHS
R3 = Sum
R4 = Integer part of I, x+a
R5 = sqrt(2*pi)
RI = I

Listiing

Code:
1 LBL A
2 1
3 -
4 STO 0
5 1
6 2
7 .
8 5
9 STO 1 # a = 12.5
10 1
11 STO 3 # Sum = 1
12 CHS
13 STO 2 # CHS = -1
14 2
15 PI
16 *
17 SQRT
18 STO 5 # sqrt(2*pi)
19 12
20 CHS
21 STI # set up loop control variable
22 LBL 0 # start the loop
23 RCL 2
24 RCL 5
25 /
26 RCI
27 ABS
28 STO 4
29 1
30 -
31 N!
32 /
33 RCL 1
34 RCL 4
35 -
36 RCL 4
37 0
38 .
39 5
40 -
41 Y^X
42 *
43 RCL 1
44 RCL 4
45 -
46 EXP
47 * # calculate C
48 RCL 4
49 RCL 0
50 +
51 /
52 STO+ 3 # Sum = Sum + C/(X+I)
53 RCL 2
54 CHS
55 STO 2 # CHS = -CHS
56 ISZ # end of loop
57 GTO 0
58 RCL 0
59 RCL 1
60 +
61 STO 4
62 RCL 0
63 0.5
64 +
65 Y^X
66 RCL 4
67 EXP
68 /
69 RCL 5
70 *
71 RCL 3
72 *
73 R/S
74 GTO A
Hi Namir,
thanks for sharing this program. I pasted it into my RPN-97 emulator on the iPad and it works just fine, but only if step 68 is changed to a division.
Thanks for your correction Willy. I corrected step 68 as you suggested.

Also thanks for fantastic HP-67/97 emulators for the iPad!

Namir
(06-13-2014 12:35 PM)Namir Wrote: [ -> ]Thanks for your correction Willy. I corrected step 68 as you suggested.

Also thanks for fantastic HP-67/97 emulators for the iPad!

Namir

Thank you for the kudos. BTW, your sometimes "unorthodox" listings caused me quite a bit of headache while implementing the new source code translation capability of the emulators. But finally things are coming together.

So
Code:

25 2
26 4
27 0
28 CHS
29 GSB 2
30 252
31 GSB 2
32 120
translates into:
Code:

001:  02         2  
002:  04         4  
003:  00         0  
004:  42         CHS  
005:  31 22 02   GSB 2
006:  02         2  
007:  05         5  
008:  02         2  
009:  31 22 02   GSB 2
010:  01         1  
011:  02         2  
012:  00         0
and
Code:

62 RCL 0
63 0.5
into:
Code:

001:  34 00      RCL 0  
002:  00         0  
003:  83         .  
004:  05         5

In fact, you may even enter
Code:

a
B
i
I
and get:
Code:

001:  32 22 11   GSB a
002:  31 22 12   GSB B
003:  34 24      RCL (i)  
004:  35 34      RC I
Thanks Namir, for this program. I ran several samples and got a high degree of accuracy for the Gamma function.

Regards,
Bob
So far I am finding this program yields correct results for any positive number up to 55. For negative numbers (non-integer) I have gotten correct results on all the ones I have tried so far.

I have also modified the program somewhat to work on my HP-38C as well as the iOS emulator for HP-25 (GO-25 SciRPN) which has a capacity of 99 program steps. The latter was more of a challenge as the HP-25 has no factorial or ISZ functions so those have to be re-created using additional program steps.

Regards,
Bob
Reference URL's