(35S) Fibonacci Fun for the HP35s and the number phi - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Software Libraries (/forum-10.html) +--- Forum: General Software Library (/forum-13.html) +--- Thread: (35S) Fibonacci Fun for the HP35s and the number phi (/thread-2897.html) |
(35S) Fibonacci Fun for the HP35s and the number phi - MarkHaysHarris777 - 01-22-2015 08:07 AM Greetings, While playing with my new FX115es Plus from Casio I ran into the infamous Fibonacci sequence, once again, Fn = Fn-1 + Fn-2 using the classic 1 1 startup: 1 1 2 3 5 8 13 21 34 ... The authors of the fx115 user guide were demonstrating the [Ans] + [PreAns] [=] iterative key sequence and were pleased that with the correct startup [1] [=], [+] [1] followed by repeating [Ans] + [PreAns] iteratively would generate the Fibonacci numbers line at a time 'till ad infinitum or 'till boredom; which ever came first prior to overflow. That's the back-story; the fx115 in not programable and although the [PreAns] feature is relatively useful, the example was not terribly enlightening. The little small exercise did give me pause to think about my new HP35s programable with classic four level stack, LASTx, RPN; ... and the iterative steps that would be necessary to conduct the same relatively painless example on the 35s--- bumping the Fibonacci sequence of numbers up the stack and out the TOP. The rules? Glad you asked: only stack manipulations allowed (no exchanges except for [x<>y]), only [+] operation, no direct nor indirect memory registers, and no loss of Fibonacci numbers until they leave the T level of the stack-- out the TOP. Also, we are assuming the classic startup of 1 1, NOT 0 1. Stop reading here and play with your HP a bit to see what you think the minimum steps are that produce the results manually, and then continue reading (you can use any classic HP to do this step). Welcome back. The setup is: Code:
Code:
So what? What if we automate the silly thing so that we can have the machine stop on whatever nth Fibonacci number we want (from a parmameter) and then allow us to step through the rest with [R/S] or watch it run 'slowly' with an embedded [PSE]? Here is the program key sequence: Code:
The machine will stop with 4 in x, waiting for the operator to accept the default, or change it to a higher integer. The largest integer which may be entered (without overflow) is 59. Clear the 4, and place 59 in the x stack position, then press [R/S]. Four and a half seconds later the stack will contain the last four Fibs from the nth and x will hold 956,722,026,041. Run the program again, this time leaving the default of 4. The stack will hold t 1 z 1 y 2 x 3 Now, press [R/S] and watch the Fibonacci numbers bump up the stack ad infinitum or boredom... whichever comes first prior to overflow. Do THAT on your FX115es Plus, I double dare you. PS It is well known that the ratio of any two consecutive Fibonacci numbers produces a more and more accurate convergence on the number phi: (SQ(5)+1)/2. This happens accurately (more or less) for the HP35s at about the 29th iteration of the above program. Stop the sequence at the 29th iteration and then press [x<>y] [/] and you should see: 1.61803398875 ~phi more or less! PSS The program may be interrupted with [R/S] but remember that since the main program never hits a RTN the program counter is stuck in the F program. Inadvertently hitting [R/S] again will restart the program (which you may not want). To avoid this, when you're done playing, either delete F or press [GTO] [.] [.] to set the program counter to the TOP. [/php] Cheers marcus RE: Fibonacci Fun for the HP35s and the number phi - Massimo Gnerucci - 01-22-2015 09:07 AM Just a question: Why the poor Fibonacci sequence should be infamous? RE: Fibonacci Fun for the HP35s and the number phi - MarkHaysHarris777 - 01-22-2015 09:39 AM (01-22-2015 09:07 AM)Massimo Gnerucci Wrote: Just a question: Why the poor Fibonacci sequence should be infamous? In two words, perceived infamy. Because (as in the case of the FX115es example) the series is demonstrated with an almost trivial cast as a simple iterative summation without meaning; begging the 'perceived' infamous question, "So what?" The Fibonacci sequence is wrapped up in phi and phi, well, phi is wrapped up in virtually everything from corn rows to flower petals, from sea shells to rabbit expansion, from Greek architecture to renaissance painting. I am fascinated with phi, and with the Fibonacci sequence (as you might have guessed); yet, I often get sort of a trivial (meh) response to the passion--- that's why infamous. Good to meet you Massimo. Good night (at least here its night, and good). RE: Fibonacci Fun for the HP35s and the number phi - Didier Lachieze - 01-22-2015 10:56 AM Keeping your program structure but optimizing it for the 35s feature set, you can do: Code: F001 LBL F
RE: Fibonacci Fun for the HP35s and the number phi - MarkHaysHarris777 - 01-22-2015 11:13 AM (01-22-2015 10:56 AM)Didier Lachieze Wrote: Keeping your program structure but optimizing it for the 35s feature set, you can Very nice! Thanks for your comments; nice to meet you Didier! I'll play with it tomorrow... going to bed now! RE: Fibonacci Fun for the HP35s and the number phi - MarkHaysHarris777 - 01-23-2015 07:08 AM (01-22-2015 10:56 AM)Didier Lachieze Wrote: [*]Step F010 is to duplicate register X : REGX is accessed by [YellowShift][Mem][RDN] then select X with the left Arrow and [ENTER] Well, I finally did get to play with this late today... what an education! I am surprised at this undocumented REGX command. I finally realized that RDN means rolldown! [R|] duh. As it turns out, on the HP35s, the REGX REGY REGZ REGT commands can be accessed from *any* menu followed by a rolldown [R|]. This is huge under some circumstances, because it reduces the amount of storage required on many of my subroutines. As is usually the case, there is a trade-off. I am not yet sure if its the inclusion of an equation EQN (REGX+REGY) in the loop, or the hidden stack commands themselves, but the new Fibonacci routine (although taking less storage steps) has a significantly longer runtime. The original stored program runs in just over 4 seconds (59th Fib #) while the new stored program with equation embedded runs in just under 7 seconds... a +75% increase in runtime! That surprised me until I thought about it a bit... there is apparently a significant overhead in the calling mechanism to run an equation rather than using the native stack rolling manipulation; although, with the positive trade-off of having a simplified stored program with less steps in storage; 76 vs 84 bytes (17 vs 25 steps) as in this case study. Anyway, thanks again for the fun, and the education. Every day I learn something new about HP35s, and every day I love it more than the day before! Cheers RE: Fibonacci Fun for the HP35s and the number phi - Didier Lachieze - 01-23-2015 07:34 AM (01-23-2015 07:08 AM)MarkHaysHarris777 Wrote: I am surprised at this undocumented REGX command. See "Accessing Stack Register Contents" in the 35s User's Guide Appendix B (B-7), it describes how to access the stack registers in EQN mode but doesn't describe that you can do it out of EQN mode. (01-23-2015 07:08 AM)MarkHaysHarris777 Wrote: I finally realized that RDN means rolldown! [R|] duh. As it turns out, on the HP35s, the REGX REGY REGZ REGT commands can be accessed from *any* menu followed by a rolldown [R|]. This is huge under some circumstances, because it reduces the amount of storage required on many of my subroutines. I like to use the Mem menu as it makes sense for accessing registers. (01-23-2015 07:08 AM)MarkHaysHarris777 Wrote: As is usually the case, there is a trade-off. I am not yet sure if its the inclusion of an equation EQN (REGX+REGY) in the loop, or the hidden stack commands themselves, but the new Fibonacci routine (although taking less storage steps) has a significantly longer runtime. The original stored program runs in just over 4 seconds (59th Fib #) while the new stored program with equation embedded runs in just under 7 seconds... a +75% increase in runtime! This is the trade-off for using equations. For step F010 you can enter it in two different ways: starting with a menu (such as Mem) and then pressing Roll down, or starting with EQN and then pressing Roll down as documented in the user's guide. You will end-up in both cases with "F010 REGX" but if you entered starting with EQN, the EQN indicator will be on and if you look at the program you'll see that entering REGX as an EQN adds 4 bytes (7 bytes for EQN vs. 3 bytes for direct entry from Mem). RE: Fibonacci Fun for the HP35s and the number phi - Thomas Klemm - 01-24-2015 01:51 AM (01-22-2015 08:07 AM)MarkHaysHarris777 Wrote: Stop reading here and play with your HP a bit to see what you think the minimum steps are that produce the results manually, and then continue reading (you can use any classic HP to do this step). This is what I came up with: Code: + I assume this works on most classic HP calculators. Cheers Thomas RE: Fibonacci Fun for the HP35s and the number phi - MarkHaysHarris777 - 01-24-2015 09:53 AM (01-24-2015 01:51 AM)Thomas Klemm Wrote: This is what I came up with: It does work to produce the Fibonacci sequence, but it does not meet my programming challenge because the numbers do not lift up the stack and out the TOP! In other words at each iteration you will only have Fib numbers in X and y; z and t will contain zero. Without the REGX and REGY (hidden) instructions it takes at least five steps to generate the sequence in such a way that the numbers lift up the stack (bump up the stack and out the top) so that at any iteration past 4 the x,y,z,t stack regs will contain the last four Fib numbers in descending order as you move up the stack. So, at iteration 5 the stack will look like this: t 1 z 2 y 3 x 5 Your algorithm will leave the stack looking like this after 5 iterations: t 0 z 0 y 3 x 5 So just the equation REGX+REGY does the trick. Didier is correct to point out that the hidden REGx instructions are documented 'loosely' in Appendix B-7. And even so, the instructions are not very intuitive in their use, and secondarily they are painfully slow. Without the REGx instructions the minimum steps to bump the Fib numbers up the stack are five(5) LASTx X<>Y + LASTx X<>Y If not the intermediate results simply collapse back into the X and Y and the Z and T never get the replicated values. Cheers PS ... smile and wave boys, just smile and wave. RE: Fibonacci Fun for the HP35s and the number phi - Paul Dale - 01-24-2015 10:03 AM The 34S can do this in well under five steps: Code: RCL L You need to set the first value in L, but only the first (i.e. you don't need to begin with two values). Of course having a Fibonacci function helps a bit - Pauli RE: Fibonacci Fun for the HP35s and the number phi - Thomas Klemm - 01-24-2015 12:19 PM (01-24-2015 10:03 AM)Paul Dale Wrote: The 34S can do this in well under five steps: Only two steps for the HP-42S: Code: 01 RCL ST Y Which works as well using the WP-34S. Or one byte shorter: Code: 01 ENTER Cheers Thomas RE: Fibonacci Fun for the HP35s and the number phi - Thomas Klemm - 01-24-2015 12:58 PM (01-24-2015 09:53 AM)MarkHaysHarris777 Wrote: It does work to produce the Fibonacci sequence, but it does not meet my programming challenge because the numbers do not lift up the stack and out the TOP! Oh, my bad that I missed that part. I was just wondering why you would do that calculation in an overly complicated way. Now it's clear. Best regards Thomas RE: Fibonacci Fun for the HP35s and the number phi - Paul Dale - 01-24-2015 10:41 PM (01-24-2015 12:19 PM)Thomas Klemm Wrote: Only two steps for the HP-42S: Yeah, I thought of this solution lying in bed last night but couldn't be bothered getting up to post it. The 34S doesn't save a byte in the second instance. - Pauli RE: Fibonacci Fun for the HP35s and the number phi - MarkHaysHarris777 - 01-25-2015 07:03 AM (01-24-2015 10:03 AM)Paul Dale Wrote: The 34S can do this in well under five steps: Yes, thanks Pauli, I'm so looking forward to having one to play with soon! Everything is either ordered or accounted for, and the cable box is under construction. The 30b's are waiting expectantly and the pogo connector is coming along nicely. I got some great pogo pins from Sparkfun (they got them shipped to me in 24 hours no extra charge) through the mails. Thanks for all you do, buddy. I am genuinely so impressed with this project/ I think one of the best, if not the best, to come along in 15 years. Thanks again! RE: (35S) Fibonacci Fun for the HP35s and the number phi - Gamo - 07-21-2018 01:58 AM This is my favorite Fibonacci Sequence routine. ENTER ENTER Rv // Roll Down Rv // Roll Down + To run simply fill the stack with 1 [ENTER] 1 then keep continue with [R/S] Gamo RE: (35S) Fibonacci Fun for the HP35s and the number phi - Thomas Klemm - 07-22-2018 01:37 AM (07-21-2018 01:58 AM)Gamo Wrote: This is my favorite Fibonacci Sequence routine. I'm afraid you neither meet MarkHaysHarris777's requirement: (01-24-2015 09:53 AM)MarkHaysHarris777 Wrote:(01-24-2015 01:51 AM)Thomas Klemm Wrote: This is what I came up with: But then I guess he doesn't care anymore. Cheers Thomas |