S&SMC #9 HP41cx - Printable Version +- HP Forums (https://archived.hpcalc.org/museumforum) +-- Forum: HP Museum Forums (https://archived.hpcalc.org/museumforum/forum-1.html) +--- Forum: Old HP Forum Archives (https://archived.hpcalc.org/museumforum/forum-2.html) +--- Thread: S&SMC #9 HP41cx (/thread-75222.html) S&SMC #9 HP41cx - Jonathan Watmough - 06-19-2005 Hi Valentin, I am a lurker as far as your challenges, but I have greatly enjoyed reading them. I recently bought a HP41cx, so I thought I'd have a 'go' at trying to get #9 running on a HP41. This is the first program I've written on a calculator since about 1986 when I owned a Casio FX4000p. I'll feel kinda stupid if this is wrong, especially since I 'cheated' and looked at your original solution briefly, but I can't seem to find the original posts about this challenge. Sadly my school calculus is very rusty, so I played with EMU48 and plotted a few polynomials before I had any idea at all what was going on. The program ran for about an hour and 20 minutes before getting the following answers : A=1 B=-5 C=8 D=-7 I skipped the part about finding an exact root ;-) Any suggestions, optimisations, rewrites etc are very welcome. Best Wishes Jonathan I used the following registers and labels : Registers: 01 A hardcoded to start at 1 02 B -M to M 03 C ditto 04 D ditto 05 x1 3.1 06 x2 3.2 07 f(x1) 08 f(x2) 09 M 9 Labels: LBL SM start of program LBL 01 main loop LBL 02 compute f(x1) LBL 03 compute f(x2) LBL 04 success! The program: 01 LBL SM set up variables 02 1 03 STO 01 04 RCL 09 05 CHS 06 STO 02 07 STO 03 08 STO 04 09 3.1 10 STO 05 11 3.2 12 STO 06 13 LBL 01 main loop 14 XEQ 02 calc f(x1) 15 XEQ 03 calc f(x2) 16 RCL 07 17 RCL 08 18 / divide them and look for -ve 19 0 20 X<>Y 21 X<=Y? -ve? 22 GTO 04 success !! x1 and x2 straddle the root 23 RCL 04 24 1 25 + 26 STO 04 D=D+1 27 RCL 09 28 X<>Y 29 X<=Y? <=M ? 30 GTO 01 loop 31 X<>Y 32 CHS 33 STO 04 else D=-M 34 1 35 RCL 03 36 + 37 STO 03 C=C+1 38 RCL 09 39 X<>Y 40 X<=Y? C<=M? 41 GTO 01 loop 42 X<>Y 43 CHS 44 STO 03 else C=-M 45 1 46 RCL 02 47 + 48 STO 02 B=B+1 49 RCL 09 50 X<>Y 51 X<=Y? B<=M? 52 GTO 01 loop 53 X<>Y 54 CHS 55 STO 02 B=-M 56 1 57 RCL 01 58 + 59 STO 01 A=A+1 60 GTO 01 loop -- should be a check here 61 "FAILED" 62 AVIEW 63 LBL 04 we come here if we find a root in [x1,x2] 64 "FOUND IT" 65 AVIEW 66 RTN 67 END 68 LBL 02 Calculate f(x1) 69 RCL 05 70 3 71 Y^X 72 RCL 01 73 * 74 RCL 05 75 X^2 76 RCL 02 77 * 78 + 79 RCL 05 80 RCL 03 81 * 82 + 83 RCL 04 84 + 85 STO 07 86 RTN 87 LBL 03 Calculate f(x2) 88 RCL 06 89 3 90 Y^X 91 RCL 06 92 X^2 93 RCL 02 94 * 95 + 96 RCL 06 97 RCL 03 98 * 99 + 100 RCL 04 101 + 102 STO 08 103 RTN 104 END Re: S&SMC #9 HP41cx - Valentin Albillo - 06-20-2005 Hi, Jonathan: Thanks for your interest in my challenges. I also don't keep copies of the threads, so I'm not sure what the exact number was, but certainly your program has nothing to do with S&SMC#9, which is quite recent and asked for a 10-digit number fitting some divisibility criteria. Your solution surely has to do with a much ancient S&SMC, but don't know exactly which, so I can't comment on the solutions posted at the time though I suppose that your program finds it correctly, whatever it was it had to find :-) Thanks again for your interest, and keep posting your HP-41CX solutions to past, present, and future challenges. And by the way, congratulations on your recent acquisition. Best regards from V.