(15C) Fibonacci Numbers
03-23-2017, 03:22 AM (This post was last modified: 03-23-2017 01:09 PM by Eddie W. Shore.)
Post: #1
 Eddie W. Shore Senior Member Posts: 1,039 Joined: Dec 2013
(15C) Fibonacci Numbers
This program calculates the nth Fibonacci number. Store n in memory register 0 before running the program.

Formula: ( (1 + √5)^n – (1 - √5)^n ) / (2^n * √5)

Caution: Due to internal calculator calculation, you may not get an integer answer. You might have to round the answer manually. From Joe Horn, with thanks and appreciation for letting me post his comment:

"Hi, Eddie! I just keyed up your HP-15C program for Fibonacci numbers, and noticed that it gets wrong answers due to round-off errors much of the time. For example, with an input of 5, it should output 5, but it outputs 4.9999999998. Even rounding to the nearest integer doesn't fix the problem for inputs of 40 through 49. The only way to get the right answers for all inputs is with a loop (the usual method)." - Joe Horn

I would recommend running this program when n< 40.

Code:

Step    Key    Code
001    LBL D    42, 21, 14
002    1    1
003    ENTER    36
004    5    5
005    √     11
006    +    40
007    RCL 0    45, 0
008    Y^X    14
009    1    1
010    ENTER    36
011    5    5
012    √     11
013    -    30
014    RCL 0    45, 0
015    Y^X    14
016    -    30
017    2    2
018    RCL 0    45, 0
019    Y^X    14
020    ÷    10
021    5    5
022    √     11
023    ÷     10
024    RTN    43, 32

Example: R0 = n = 16, Output: 987
03-23-2017, 01:32 PM
Post: #2
 Eddie W. Shore Senior Member Posts: 1,039 Joined: Dec 2013
RE: (15C) Fibonacci Numbers (bug with 15C LE?)
Loop Method – Joe Horn

Joe Horn provided a more accurate program which uses loops. It is slower, however should speed should not be a problem if a HP 15C Limited Edition or emulator is used. Full credit and thanks goes to Joe Horn for providing this program.

Code:

Step    Key    Code
001    LBL A    42, 21, 11
002    STO 0    44, 0
003    1    1
004    ENTER    36
005    0    0
006    LBL 1    42, 21, 1
007    +    40
008    LST X    43, 36
009    X<>Y    34
010    DSE 0    42, 5, 0
011    GTO 1    22, 1
012    RTN    43, 32

A nice part is that you don’t have to pre-store n in memory 0. This method is accurate for n ≤ 49.

Comparing Results
Here are some results of some selected n:

Code:

n    Approximation    Loop Method
6    8    8
15    610    610
16    987    987
22    17710.9999    17711
29    514228.9979    514229
36    14930351.92    14930352
40    102334154.4    102334155
44    701408728.7    701408733
49    7778741992    7778742049

Bug?

I manually calculated the approximation formula on my HP 15C LE (Limited Edition) and HP Prime for n = 44 and n = 49.

n = 44
HP15C LE: 701408728.7
HP Prime: 701408733.002

n = 49
HP 15C LE: 7778741992
HP Prime: 7778742049.02

I think we may have found a bug on the HP 15C LE.
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)