A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / dectapes / dectape2 / expii.ra
1 SECT #EXPII
2 / B**E
3 / WHERE E IS INTEGER
4 / AND B IS REAL OR INTEGER
5 /
6 / VERSION 5A 4/26/77 MH
7 /
8 BASE 0
9 JA .
10 FSTA SIGN /SAVE SIGN OF EXPONENT
11 JGE POSINT /ITS POSITIVE
12 FNEG
13 POSINT, FSTA 3 /PUT IT INTO 3
14 XTA 1 /SAVE XR 1
15 FSTA XR1
16 LDX -27,1 /BIT COUNT
17 FLDA ONE /START WITH ONE
18 FSTA PROD
19 FLDA 3 /GET EXPONENT
20 LOOP, JEQ YES /DONE IF ITS ZERO
21 FDIV TWO /DIVIDE BY TWO
22 ALN 0 /INTEGERIZE
23 FNORM
24 FSTA TEMP /SAVE AT
25 FMUL TWO /IS EXPONENT ODD ?
26 FSUB 3
27 JLT ODD /YES, JUMP
28 FLDA 0 /SQUARE BASE
29 SQUARE, FMULM 0
30 FLDA TEMP /EXPONENT OVER 2
31 FSTA 3
32 JXN LOOP,1+ /LOOP IF MORE BITS
33 YES, FLDA XR1 /DONE, RESTORE XR 1
34 ATX 1
35 FLDA SIGN /CHECK SIGN OF EXPONENT
36 JLT INVERT /IT WS NEGATIVE, INVERT RESULT
37 FLDA PROD /RETURN ANSWER
38 JA #EXPII
39 INVERT, FLDA ONE /RETURN 1/PROD
40 FDIV PROD
41 JA #EXPII
42 ODD, FLDA 0 /MULT PROD BY BASE
43 FMULM PROD
44 JA SQUARE /GO SQUARE THE BASE
45 ONE, F 1.0
46 TWO, F 2.0
47 PROD, F 0.0
48 SIGN, F 0.0
49 TEMP, F 0.0
50 XR1, F 0.0
51 END
52 \f