236 ARITHMETIC 4.2.3 01 DFDIV STJ EXITDF Double-precision (Tomcat web server)
236 ARITHMETIC 4.2.3 01 DFDIV STJ EXITDF Double-precision division: 02 JOV OFLO Ensure overflow is off. 03 STA TEMP 04 SLAX 2 Remove exponent. 05 STA ARG VT72 06 STX ARGX Vl 07 LDA ACC (EXPD) 178 SUB TEMP (EXPD) 39 STA EXPO !ZXPO+elL-eev. 10 ENT2 QQ+i r12 t QQ + 1. II LDA ACC 12 LDX ACCX 13 SLAX 2 Remove exponent. 14 SRAX 1 (Cf. Algorithm 4.2.1M) 15 DIV ARG If overflow, it is detected below. 16 STA ACC %?I 17 SLAX 5 Use remainder in further division. 18 DIV ARG 19 STA ACCX fw1 20 LDA ARGX (I : 4) 21 ENTX 0 22 DIV ARG(ABS) rA + [Jb4vl/wmJj/b5. 23 JOV DVZROD Did division cause overflow? 24 MUL ACC(ABS) rAX t Iw,wl/bv,(, approximately. 25 sRAx4 Multiply by b, and save 26 SLC 5 the leading byte in rX. 27 SUB ACCX CABS) Subtract Iwi I. 28 DECA I Force minus sign. 29 SUB WMI 30 JOV *+2 If no overflow, carry one more 31 INCX 1 to upper half. 32 SLC 5 (Now rA 5 0) 33 ADD ACC(ABS) rA +-lwml -IrAl. 34 STA ACC CABS) (Now rA 2 0) 35 LDA ACC wm with correct sign 36 JMP DNORM Normalize and exit. 37 DVZROD HLT 30 Unnormalized or zero divisor 38 IH EQU l(i:i) 39 WMI CON IB-1, BYTE-l (1: I) Word size minus one 1 Here is a table of the approximate average computation times for these double-precision subroutines, compared to the single-precision subroutines that appear in Section 4.2.1: Single precision Double precision Addition 45.5u 84~ Subtraction 49.524 88u Multiplication 48~ 109u Division 52u 126.5~