Commit | Line | Data |
---|---|---|
7af5ad59 PH |
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 |