software: Added more and more
[pdp8.git] / sw / f4 / FRTSRC / expdi.ra
CommitLineData
7af5ad59
PH
1 SECT #EXPDI
2/ B**E
3/ WHERE E IS INTEGER
4/ AND B IS DOUBLE PRECISION
5/
6/ VERSION 5A 4-26-77 MH
7/
8 DPCHK
9 BASE 0
10EXPDI, JA .
11 FSTA SIGN /SAVE SIGN OF EXPONENT
12 JGE POSINT /ITS POSITIVE
13 FNEG
14POSINT, FSTA EXP
15 XTA 1 /SAVE XR 1
16 FSTA XR1
17 LDX -27,1 /BIT COUNT
18 STARTE
19 FLDA ONE /START WITH ONE
20 FSTA PROD
21 STARTF
22 FLDA EXP
23LOOP, JEQ YES /DONE IF ITS ZERO
24 FDIV TWO /DIVIDE BY TWO
25 ALN 0 /INTEGERIZE
26 FNORM
27 FSTA TEMP /SAVE AT
28 FMUL TWO /IS EXPONENT ODD ?
29 FSUB EXP
30 STARTE
31 JLT ODD /YES, JUMP
32 FLDA 0 /SQUARE BASE
33SQUARE, FMULM 0
34 STARTF
35 FLDA TEMP /EXPONENT OVER 2
36 FSTA EXP
37 JXN LOOP,1+ /LOOP IF MORE BITS
38YES, FLDA XR1 /DONE, RESTORE XR 1
39 ATX 1
40 FLDA SIGN /CHECK SIGN OF EXPONENT
41 JLT INVERT /IT WS NEGATIVE, INVERT RESULT
42 STARTE
43 FLDA PROD /RETURN ANSWER
44 JA EXPDI
45INVERT, STARTE
46 FLDA ONE /RETURN WITH 1/PROD
47 FDIV PROD
48 JA EXPDI
49ODD, FLDA 0
50 FMULM PROD
51 JA SQUARE /GO SQUARE THE BASE
52ONE, F 1.0
53 F 0.0
54TWO, F 2.0
55PROD, F 0.0
56 F 0.0
57SIGN, F 0.0
58TEMP, F 0.0
59XR1, F 0.0
60EXP, F 0.0
61 F 0.0
62 END
63\f