Multiply Function [x]
08-03-2018, 06:45 PM
Post: #9
 Thomas Klemm Senior Member Posts: 1,447 Joined: Dec 2013
RE: Multiply Function [x]
(08-03-2018 02:40 PM)Dieter Wrote:  There was a series of HP Journal articles that described how calculators do their calculations. I remember something about log, exponential and trig functions, and maybe there also was something about multiplication and division.

This is the relevant MCODE of the HP-41 for the multiplication:
Code:
***************************************************** *   NUT MATH ROM 1                                  * * HP41C MAINFRAME MICROCODE ADDRESSES @14000-15777  * ***************************************************** ****************************************************** *      COMMON MATH ENTRIES                         *** *          IF NUMBER IS 2-10,                      *** *             THEN FORM IS:                        *** *                A HAS 10-DIGIT FORM               *** *                C HAS 10-DIGIT FORM               *** *          IF NUMBER IS 1-10,                      *** *             THEN FORM IS:                        *** *                A HAS SIGN AND EXP                *** *                B HAS 13-DIGIT MANTISSA           *** *                C HAS 10-DIGIT FORM               *** *          IF NUMBER IS 2-13,                      *** *             THEN FORM IS:                        *** *                A AND B AS IN 1-10                *** *                M HAS SIGN AND EXP                *** *                C HAS 13-DIGIT MANTISSA           *** *                                                  *** *       ON EXIT, C HAS 10-DIGIT FORM               *** *                A AND B HAVE 13-DIGIT FORM        *** *                                                  *** ****************************************************** 136  115 MP2-10   56 B=0    W 137  116         172 AB EX  M 138  117 MP1-10  730 MC EX 139  120         630 C=M 140  121         106 C=0    X 141  122 MP2-13   76 B=0    S 142  123         136 C=0    S 143  124         730 MC EX 144  125        1006 C=A+C  X 145  126        1136 C=A-C  S 146  127          23 GONC   MPY110 ( 131) 147  130        1236 C=-C   S 148  131 MPY110   16 A=0    W 149  132         730 MC EX 150  133        1334 PT=    13 151  134 MPY120 1734 INC PT 152  135        1616 A SR   W 153  136          23 GOTO   MPY140 ( 140) 154  137 MPY130  456 A=A+B  W 155  140 MPY140 1142 C=C-1  PT 156  141        1763 GONC   MPY130 ( 137) 157  142        1524 ? PT=  12 158  143        1713 GONC   MPY120 ( 134) 159  144         630 C=M 160  145 MPY150  256 AC EX  W           ***ROUND, SHIFT AND NORMALIZE

Code:
144  125        1006 C=A+C  X

The algorithm uses the same digit by digit method we use when we manually calculate the product of two numbers.

The accumulator A keeps track of the sum.
The mantissa of one number is kept in B and continuously added to A while the mantissa of the other number in C is decremented digit by digit:
Code:
154  137 MPY130  456 A=A+B  W 155  140 MPY140 1142 C=C-1  PT 156  141        1763 GONC   MPY130 ( 137)

Once a digit of C is done the pointer PT is incremented and the accumulator A is shifted:
Code:
151  134 MPY120 1734 INC PT 152  135        1616 A SR   W

Easiest of course is to follow the program step by step in the debugger of an emulator.

Cheers
Thomas

PS: The algorithm is similar to the binary multiplication of my previous post. However base 10 instead of base 2 is used.
 « Next Oldest | Next Newest »

 Messages In This Thread Multiply Function [x] - Gamo - 08-03-2018, 09:27 AM RE: Multiply Function [x] - Massimo Gnerucci - 08-03-2018, 11:31 AM RE: Multiply Function [x] - Pekis - 08-03-2018, 01:04 PM RE: Multiply Function [x] - rprosperi - 08-03-2018, 01:13 PM RE: Multiply Function [x] - wynen - 08-03-2018, 01:07 PM RE: Multiply Function [x] - Dave Britten - 08-03-2018, 02:10 PM RE: Multiply Function [x] - Dieter - 08-03-2018, 02:40 PM RE: Multiply Function [x] - Thomas Klemm - 08-03-2018, 05:33 PM RE: Multiply Function [x] - Thomas Klemm - 08-03-2018 06:45 PM RE: Multiply Function [x] - Leviset - 08-03-2018, 10:54 PM RE: Multiply Function [x] - ijabbott - 08-03-2018, 11:05 PM RE: Multiply Function [x] - Gamo - 08-04-2018, 01:41 AM RE: Multiply Function [x] - Gamo - 08-04-2018, 04:23 AM RE: Multiply Function [x] - Namir - 08-04-2018, 08:26 AM RE: Multiply Function [x] - Thomas Puettmann - 08-04-2018, 09:03 AM RE: Multiply Function [x] - brickviking - 08-05-2018, 03:12 AM RE: Multiply Function [x] - Gamo - 08-05-2018, 03:33 AM RE: Multiply Function [x] - Thomas Klemm - 08-05-2018, 04:07 PM

User(s) browsing this thread: 3 Guest(s)