SECT #EXPII / B**E / WHERE E IS INTEGER / AND B IS REAL OR INTEGER / / VERSION 5A 4/26/77 MH / BASE 0 JA . FSTA SIGN /SAVE SIGN OF EXPONENT JGE POSINT /ITS POSITIVE FNEG POSINT, FSTA 3 /PUT IT INTO 3 XTA 1 /SAVE XR 1 FSTA XR1 LDX -27,1 /BIT COUNT FLDA ONE /START WITH ONE FSTA PROD FLDA 3 /GET EXPONENT LOOP, JEQ YES /DONE IF ITS ZERO FDIV TWO /DIVIDE BY TWO ALN 0 /INTEGERIZE FNORM FSTA TEMP /SAVE AT FMUL TWO /IS EXPONENT ODD ? FSUB 3 JLT ODD /YES, JUMP FLDA 0 /SQUARE BASE SQUARE, FMULM 0 FLDA TEMP /EXPONENT OVER 2 FSTA 3 JXN LOOP,1+ /LOOP IF MORE BITS YES, FLDA XR1 /DONE, RESTORE XR 1 ATX 1 FLDA SIGN /CHECK SIGN OF EXPONENT JLT INVERT /IT WS NEGATIVE, INVERT RESULT FLDA PROD /RETURN ANSWER JA #EXPII INVERT, FLDA ONE /RETURN 1/PROD FDIV PROD JA #EXPII ODD, FLDA 0 /MULT PROD BY BASE FMULM PROD JA SQUARE /GO SQUARE THE BASE ONE, F 1.0 TWO, F 2.0 PROD, F 0.0 SIGN, F 0.0 TEMP, F 0.0 XR1, F 0.0 END