       .TITLE .DF    COMPUTE NATURAL EXPONENTIAL (E**ARG) (DOUBLE PREC)
/COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
       .GLOBL .DF,.AS,.AP,.AX,.AW,.AU,.AO,.AB,.AQ,.ER,.AV
/             CALLING SEQUENCE
/      JMS*   (.DF)           SUBR CALL (ARG IN FLOATING ACC)
/      NEXT   INSTRUCTION     SUBR RETURN (RESULT IN FLOATING ACC)
/
.DF    CAL    0              /ENTRY-EXIT
       LAC*   .AB            /GET SIGN WORD (.AB)
       DAC    EXPF09         /SAVE SIGN OF ARG
       AND    (377777)       /MAKE FAC POSITIVE
       DAC*   .AB
       JMS*   .AS            /MULTIPLY DOUBLE (.AS)
       .DSA   EXPF02         / (ARG*LOG2(E))
       JMS*   .AP            /STORE DOUBLE (.AP)
       .DSA   EXPF04         / (TEMP)
       JMS*   .AX            /FIX (.AX)
       DAC    EXPF06         /STORE INTEGER AS ANSWER EXPONENT
       ISZ    EXPF06         / BUMP EXPONENT FOR .5 SCALING
       JMS*   .AW            /FLOAT INTEGER (.AW)
       JMS*   .AU            /REVERSE SUBTRACT DOUBLE  (.AU)
       .DSA   EXPF04         / (TEMP-ACC) FRACTION ONLY (F)
       JMS*   .AP            /STORE DOUBLE (.AP)
       .DSA   EXPF04         /(F INTO TEMP)
       LAW    -10            / SET ITERATION COUNT FOR 9 PASSES
       DAC    EXPF11         /STORE CNTR
       LAC    EXPF21         /GET ADDR OF C9
       DAC    EXPF14         / INTO PTR
       JMS*   .AO            /LOAD DOUBLE (.AO)
       .DSA   EXPF20         / (C9) AS TERM
EXPF12 JMS*   .AS            /MULTIPLY DOUBLE (.AS)
       .DSA   EXPF04         / (F * TERM)
EXPF13 ISZ    EXPF14         /PTR = PTR +3
       ISZ    EXPF14
       ISZ    EXPF14
       JMS*   .AQ            /ADD DOUBLE (.AQ)
       .DSA   EXPF14+400000  / C(PTR) AS NEW TERM
       ISZ    EXPF11         /CNTR = CNTR +1
       JMP    EXPF12         /CYCLE
       JMS*   .AP            /DONE-STORE DOUBLE (.AP)
       .DSA   EXPF04         / (RESULT TO TEMP)
       JMS*   .AS            /MULTIPLY DOUBLE (.AS)
       .DSA   EXPF04         / (RESULT * RESULT =(RESULT)**2)
       JMS*   .AS            / MULTIPLY DOUBLE
       .DSA   EXPF06         / (EXPONENT * FINAL RESULT)
       LAC    EXPF09         /IF ARG WAS NEGATIVE, TAKE
       SMA                   /RECIPROCAL OF ANSWER BEFORE EXIT
       JMP*   .DF
       JMS*   .AV
       .DSA   EXPF21-3
       JMP*   .DF
EXPF09 .DSA   0
EXPF02  .DSA 000001		/LOG2(E) (1) (1.442695041D0)
        .DSA 270524		/ (2)
        .DSA 354514		/ (3)
EXPF04 CAL    0              /TEMP  (1)
       CAL    0              /      (2)
       CAL    0              /      (3)
EXPF06 CAL    0              /ANS EXP
              200000         / EXPONENT STORAGE (2)
              0              /EXPONENT STORAGE (3)
EXPF11 CAL    0              /CNTR
EXPF14 CAL    0              /PTR
EXPF20 777745; 261767; 414110 /0.5180D-8
       777752; 200334; 225756 /0.119610D-6
       777756; 241410; 444530 /0.2406787D-5
       777762; 256607; 213216 /0.41667033D-4
       777766; 235452; 556272	/0.601133075D-3
       777771; 343260; 433536	/0.6938013677D-2
       777774; 365773; 677740	/0.6005662674D-1
       777777; 261344; 137700	/0.3465735903D0
       000001; 200000; 000000 /1.0D0
EXPF21 .DSA   EXPF20         /ADDR OF C9
       .END
