# HP Forums

Full Version: (35s 42s/DM42 50G) Quadratic formula
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Probably someone has done it before, but...
Inspired by a HP41C program I found for the quadratic formula that uses only the 4 level stack, no INPUTs, no extra registers, I thought maybe I could do something similar with the HP35s, despite that it doesn't have the register arithmetic with the stack registers. The program uses the equivalent formula -(b/2a)±SQRT((b/2a)^2-(c/a)). The fact there is only 2 terms makes it easier. I don't think it could be done with the (-b±SQRT(b^2-4ac))/2a formula. We press a ENTER b ENTER c XEQ Q and the 2 solutions, real or complex returned in X and Y registers. No INPUTs, no extra registers, just the stack, in just 29 steps.
Code:
```Q001        LBL Q Q002        EQN REGZ Q003        / Q004        RDN Q005        X<>Y Q006        / Q007        2 Q008        / Q009        +/- Q010        ENTER Q011        X^2 Q012        RUP Q013        - Q014        X>=0? Q015        GTO Q021 Q016        +/- Q017        SQRT Q018        i Q019        * Q020        GTO Q022 Q021        SQRT Q022        ENTER Q023        ENTER Q024        EQN REGT Q025        + Q026        RDN Q027        - Q028        RUP Q029        RTN```
I tried this examples from HP 25 Application Program Manual:

ax2 + bx + c = 0

Examples
1 . X2 + X - 6 = 0
2. 3 X2 + 2x -1 = 0
3. 2X2 - 3x + 5 = 0

Solution
1. D = 6.25
Xl = -3.00
X2 = 2.00
2. D = 0.44
Xl = -1.00
X2 = 0.33
3. D = -1.94
Xl , X2 = 0.75 ± 1.39 i

For the first case with your program: x1= -3, x2= 3; the rest INVALID DATA
The program looks nice, but some corrections have to be made. Pedro
I tried the examples you mentioned and I get the correct answers. Did you key the program correctly?
(05-25-2020 03:52 PM)mchris Wrote: [ -> ]I tried the examples you mentioned and I get the correct answers. Did you key the program correctly?
Yes I did. Only one doubt, in steps 04 and 26, RDN code I got it by pressing blue shift (right arrow) and key coordinate 1,4 (first colum, forth row) -> E, wich shows in blue RND intaed of RDN. Maybe I am confused. Please confirm. Another option is to send an emulator file. Pedro
(05-25-2020 03:52 PM)mchris Wrote: [ -> ]I tried the examples you mentioned and I get the correct answers. Did you key the program correctly?

Same for me, it works fine.
(05-25-2020 04:19 PM)PedroLeiva Wrote: [ -> ]
(05-25-2020 03:52 PM)mchris Wrote: [ -> ]I tried the examples you mentioned and I get the correct answers. Did you key the program correctly?
Yes I did. Only one doubt, in steps 04 and 26, RDN code I got it by pressing blue shift (right arrow) and key coordinate 1,4 (first colum, forth row) -> E, wich shows in blue RND intaed of RDN. Maybe I am confused. Please confirm. Pedro

RDN stands for Register Down: R↓
RUP stands for Register Up: R↑
(05-25-2020 04:25 PM)pinkman Wrote: [ -> ]
(05-25-2020 04:19 PM)PedroLeiva Wrote: [ -> ]Yes I did. Only one doubt, in steps 04 and 26, RDN code I got it by pressing blue shift (right arrow) and key coordinate 1,4 (first colum, forth row) -> E, wich shows in blue RND intaed of RDN. Maybe I am confused. Please confirm. Pedro

RDN stands for Register Down: R↓
RUP stands for Register Up: R↑
Great, TYVM. It Works perfect now. Pedro
The same logic can be ported to 42s/DM42 and 50g.
42s/DM42
Code:
```01▸LBL "QE" 02 RCL ST Z 03 +/- 04 STO÷ ST Z 05 ÷ 06 X<>Y 07 2 08 ÷ 09 STO ST Z 10 STO ST T 11 X↑2 12 + 13 SQRT 14 STO- ST Z 15 + 16 END```
50g
Code:
`« 3 PICK / 3 ROLLD SWAP / 2 / NEG DUP SQ ROT – √ DUP2 + EVAL 3 ROLLD – EVAL »`
This is "cheating" but the 50g can do it in two steps:

<< →V3 PROOT >>

BYTES: 18 #75EEh
(05-04-2023 09:02 PM)mchris Wrote: [ -> ]50g
Code:
`« 3 PICK / 3 ROLLD SWAP / 2 / NEG DUP SQ ROT – √ DUP2 + EVAL 3 ROLLD – EVAL »`

On the HP 49 and HP 50, 3 PICK can be replaced by PICK3, and 3 ROLLD can be replaced by UNROT. Each of those changes saves 2.5 bytes and a small amount of time.

Also, on the 28 and 48, ROT ROT is faster than 3 ROLLD. This only matters inside a loop but it may be useful to know.
Thanks, I'm beginner RPL user.
Reference URL's
• HP Forums: https://www.hpmuseum.org/forum/index.php
• :