Stack preservation in the HP35S « Next Oldest | Next Newest »

 ▼ Valentin Albillo Unregistered Posts: 1,755 Threads: 112 Joined: Jan 2005 07-25-2007, 01:05 PM Hi all: In a different thread (Gerson W. Barbosa's "alternative cos(x) and tan(x) [HP-33S]"), Les Wright posted: "[...] Unfortunately the routines don't keep the entire stack in its original state, but this is a nice touch. One problem about RPN programs is they make a mess of the stack sometimes, unlike the internal routines." The HP35S' ability to mix RPN and algebraic equations in a single program in RPN mode can be used to perform what you want, i.e., program a complicated function that behaves as built-in ones, i.e., the argument is taken from ST X, ST X is replaced by the function's value, and the original argument is stored in LAST X. For instance, suppose that you want to program a two-term version of Stirling's approximation to the factorial function X!, namely: ``` f(X) = (X/e)^X*Sqrt(2*Pi*X)*(1+1/(12*X)+1/(288*X^2)) ``` and you want it to behave as a built-in function as far as stack behaviour is concerned. You can achieve that in the HP35S without using any auxiliary registers or variables with this simple trick, key in this little proof-of-concept program in your HP35S: ``` A001 LBL A ABS Roll Down (LASTx/e)^LASTx*SQRT(2*Pi*LASTx)*(1+INV(12*LASTx)+INV(288*LASTx^2)) A005 RTN ``` where I've used "/" to denote the division key and "*" to denote the multiplication key, as well as "Pi" to denote the Pi key. To run it, just key in you argument in ST X, and XEQ A [ENTER]: the result will be returned to ST X, the previous contents of ST X will be stored in LASTx, and the rest of the stack will be unaffected. For instance, in FIX 4, press: ``` 4 [ENTER] 3 [ENTER] 2 [ENTER] 5 [XEQ] A [ENTER] -> 120.0025 [ROLLDOWN] -> 2.0000 [ROLLDOWN] -> 3.0000 [ROLLDOWN] -> 4.0000 [LASTx] -> 5.0000 ``` Perhaps this is a little slower than pure RPN, but quite convenient indeed. Of course the same trick will work with any f(X) you care to define as long as it can be defined as an equation. I'll hope you'll like this little neat technique but if not, just stick to pure RPN and you'll be no worse than before :-) Best regards from V. ▼ Les Wright Unregistered Posts: 1,368 Threads: 212 Joined: Dec 2006 07-25-2007, 02:25 PM Another option would be to write a little subroutine that stuffs the Y, Z, and T register values into unused data registers and returns the values to the stack when you want to. The temp registers would need to be lettered registers I think, since if you try to access indirect registers putting the value of the index in X register before storing it in I or J will bump off the contents of the T register. Just a thought. Les Edited: 25 July 2007, 2:25 p.m. ▼ Gene Wright Unregistered Posts: 1,545 Threads: 168 Joined: Jul 2005 07-25-2007, 03:27 PM Yes, that option would work, but then anyone wanting to use the routine would have to make sure the temporary registers you used to store the stack were not being used by their own programs. Valentin's idea, and the similar ideas found in the 35s learning modules and datafile issue, make no such requirement. No other registers are affected and the stack is preserved. Howard Owen Unregistered Posts: 1,830 Threads: 113 Joined: Aug 2005 07-25-2007, 06:17 PM That is PDK! (Pretty Darned Kewl.) And not at all obvious. For example, LASTx doesn't show up on the RDN menu in equation mode, since there is a dedicated key. Thanks for that tip, Valentin! It is now part of my repertoire! Regards,Howard

 Possibly Related Threads… Thread Author Replies Views Last Post HP35s Program Four Slings Lift Calculation Jean-Marc Biram (Australia) 2 2,174 12-16-2013, 07:21 PM Last Post: Jean-Marc Biram (Australia) HP35s Calculator Max Rope Tension Program Jean-Marc Biram (Australia) 10 4,307 12-12-2013, 12:03 AM Last Post: Jean-Marc Biram (Australia) HP 50g - select characters on the stack, copy/paste Sean Freeman 7 2,645 11-20-2013, 07:11 AM Last Post: Sean Freeman Prime: Placing more than 1 item on the RPN stack in a single program? John Colvin 4 2,213 11-19-2013, 08:59 AM Last Post: Miguel Toro emu48 - copy stack doesn't work (as expected) Thomas Radtke 2 1,940 11-11-2013, 02:19 PM Last Post: Thomas Radtke HP Prime Stack operations from within a program John Colvin 1 1,345 11-08-2013, 09:45 PM Last Post: Helge Gabert Prime: Anyway to refresh stack? kris223 5 2,087 10-16-2013, 05:09 PM Last Post: kris223 hp prime - sending program results to the stack giancarlo 6 2,052 10-15-2013, 02:00 AM Last Post: Giancarlo HP Prime - RPN stack access from programs? Mike Mander (Canada) 10 3,331 09-30-2013, 11:20 AM Last Post: steindid WP-34S: Stack after divide by 0 Marcel Samek 4 1,373 08-24-2013, 11:57 PM Last Post: Paul Dale

Forum Jump: