.TITLE .EF COMPUTE NATURAL EXPONENTIAL (**ARG) (SINGLE PREC) /COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. .GLOBL .EF,.AB,.AK,.AH,.AX,.AW,.AM,.AG,.AI,.ER,.AN / CALLING SEQUENCE / JMS* (.EF) SUBR CALL (ARG IN FLOATING ACC) / NEXT INSTRUCTION SUBR RETURN (RESULT IN FLOATING ACC) / .EF CAL 0 /ENTRY-EXIT LAC* .AB /GET SIGN WORD (.AB) DAC EF09 /SAVE SIGN OF ARG AND (377777) /MAKE FAC POSITIVE DAC* .AB JMS* .AK /MULTIPLY REAL (.AK) .DSA EF02 / (ARG * LOG2(E)) JMS* .AH /STORE REAL (.AH) .DSA EF04 / (TEMP) JMS* .AX /FIX (.AX) DAC EF06 /STORE INTEGER AS ANSWER EXP ISZ EF06 /BUMP EXPONENT FOR .5 SCALING JMS* .AW /FLOAT INTEGER (.AW) JMS* .AM /REVERSE SUBTRACT REAL (.AM) .DSA EF04 / (TEMP-ACC) FRACTION ONLY (F) JMS* .AH /STORE REAL (.AH) .DSA EF04 / (F) INTO TEMP LAW -6 /SET ITERATION COUNT FOR 7 TERMS DAC EF11 /STORE COUNTER LAC EF21 /GET ADDR OF C7 DAC EF14 /STORE INTO POINTER JMS* .AG /LOAD REAL (.AG) .DSA EF20 / (C7 AS TERM) EF12 JMS* .AK /MULTIPLY REAL (.AK) .DSA EF04 / ((F) * TERM) EF13 ISZ EF14 /BUMP POINTER TO NEXT C ISZ EF14 JMS* .AI /ADD REAL .DSA EF14+400000 / (C + (F + TERM) AS TERM ISZ EF11 /CNTR = CNTR + 1 JMP EF12 /CYCLE JMS* .AH /DONE-STORE REAL (.AH) .DSA EF04 / (RESULT TO TEMP) JMS* .AK /MULTIPLY REAL (.AK) .DSA EF04 / (RESULT * RESULT = RESULT**2) JMS* .AK /MULTIPLY REAL .DSA EF06 /(EXPONENT * FINAL RESULT) LAC EF09 /IF ARG WAS NEGATIVE, SMA /TAKE RECIPROCAL OF JMP* .EF /ANSWER BEFORE EXIT JMS* .AN .DSA EF21-2 JMP* .EF EF09 .DSA 0 EF04 CAL 0 /TEMP (1) CAL 0 / (2) EF06 CAL 0 /ANS EXP 200000 /EXP STORAGE (2) EF11 CAL 0 /CNTR EF14 CAL 0 /PTR EF02 .DSA 355001 /LOG2(E) (1) (+1.442695041E0) .DSA 270524 / (2) EF20 760756 /C7 (1) ( 0.241E-5) 241566 / (2) 512762 /C6 (1) ( 0.4167E-4) 256615 / (2) 233766 /C5 (1) ( 0.60113E-3) 235452 / (2) 374771 /C4 (1) ( 0.693801E-2) 343260 / (2) 703774 /C3 (1) ( 0.06005663) 365773 / (2) 140777 /C2 (1) ( 0.34657359) 261344 / (2) 1 /C1 (1) ( 1.0) 200000 / (2) EF21 .DSA EF20 /ADDR OF C7 .END