IMS103@PSUVM.BITNET (10/14/89)
I recently typed in all my important HP-28S programs just in case
I messed up replacing the batteries. Here is a set of programs
that will enable you to add, subtract, multiply, and divide using
fractions.
The first menu row should show { ADD SUB MUL DIV F-R SIMP }
FMAT, IMP, and SIM are "support files" for the other programs
and you will not need to see them.
Beware of negative numbers, some calculations will work but
others will go on calculating forever.
B
A --- = { A B C }
C
Examples...
17 5 DIV = { 3 2 5 }
{ 1 2 } 4 MUL = 2
{ 1 2 3 } { 4 5 6 } ADD = { 6 1 2 }
{ 5 1 2 } { 3 4 } SUB = { 4 3 4 }
{ 5 20 40 } SIMP = { 5 1 2 }
{ 87 4 } SIMP { 21 3 4 }
{ 1 3 4 } F->R 1.75
{ ADD }
<<
IMP LIST-> DROP 3 ROLL IMP LIST-> DROP -> c d a b
<<
0 a d * b c + b d * 3 ->LIST SIMP
>>
>>
{ SUB }
<<
IMP LIST-> DROP 3 ROLL IMP LIST-> DROP -> c d a b
<<
0 a d * b c - b d * 3 ->LIST SIMP
>>
>>
{ MUL }
<<
FMAT SWAP FMAT LIST-> DROP 4 ROLL LIST-> DROP -> a b c d e f
<<
0 a c * b + d f * e + * f c * 3 ->LIST SIMP
>>
>>
{ DIV }
<<
FMAT SWAP FMAT LIST-> DROP 4 ROLL LIST-> DROP -> a b c d e f
<<
0 a c * b + f * f d * e + c * 3 ->LIST SIMP
>>
>>
{ SIMP }
<<
FMAT LIST-> DROP -> a b c
<<
IF b c >= THEN
a b c / IP + b b c / IP c * - c
ELSE
a b c
END
3 ->LIST SIM DUP LIST-> DROP DROP +
IF NOT THEN
DROP 0
ELSE
DUP 1 GET
IF NOT THEN
LIST-> 1 - ->LIST SWAP DROP
END
DUP 2 GET
IF NOT THEN
LIST-> DROP DROP DROP
END
END
>>
>>
{ F->R }
<<
FMAT LIST-> DROP / +
>>
{ IMP }
<<
FMAT LIST-> DROP -> a b c
<<
a c * b + c 2 ->LIST
>>
>>
{ FMAT }
<<
DUP TYPE
IF NOT THEN
{ } + 0 + 1 +
ELSE
DUP SIZE
IF 3 < THEN
0 SWAP +
END
END
>>
{ SIM }
<<
LIST-> DROP 2 0 0 -> a b c d e f
<<
DO
c 'f' STO
DO
b d MOD c d MOD +
IF NOT THEN
b d / 'b' STO c d / 'c' STO c 'd' STO 1 'e' STO
END
d 1 + 'd' STO d 2 *
UNTIL c > END
a b c 3 ->LIST
IF e 0 > THEN
SIM
END
UNTIL c e >= END
>>
>>