       .TITLE .DE    COMPUTE LOG BASE 2 FOR DOUBLE ARGUMENT
/COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
       .GLOBL .DE,.AA,.AB,.AQ,.AP,.AR,.AT,.DC,.AW,.ER
/             CALLING SEQUENCE
/      JMS*   (.DE)           SUBR CALL (ARG IN FLOATING ACC)
/      NEXT   INSTRUCTION    SUBR RETURN (RESULT IN FLOATING ACC)
/
.DE    CAL    0              /ENTRY-EXIT
       LAC*   .AB            /GET SIGN WORD
       SNA!SPA               /IF .LE. ZERO
       JMP    DE01           / ERROR
       LAW    -1             /GET EXP - 1
       TAD*   .AA
       DAC    DE02           /STORE FOR INTEGER DETERMINATION
       LAC    DE06           /(1)
       DAC*   .AA            /SET ARG EXP = 1 (1 .LE. F .LT. 2)
       DAC    DE04           /SET EXP OF SQRT(2) TO 1
       JMS*   .AQ            /ADD DOUBLE
       .DSA   DE04           / (F + SQRT(2)
       ISZ    DE04           /BUMP EXP FOR 2 + SQRT(2)
       JMS*   .AP            /STORE DOUBLE
       .DSA   DE05           / (F+SQRT(2))
       JMS*   .AR            /SUBTRACT DOUBLE
       .DSA   DE04           / (F+SQRT(2)-2*SQRT(2)=F-SQRT(2))
       JMS*   .AT            /DIVIDE DOUBLE
       .DSA   DE05           / (F-SQRT(2) / F+SQRT(2))
       JMS*   .DC            /POLYNOMIAL EVALUATE ABOVE
       .DSA   DE07           /ADDR OF CALLING SEQUENCE
       JMS*   .AP            /STORE DOUBLE
       .DSA   DE05           / (RESULT TO TEMP)
       LAC    DE02           /GET INTEGER
       STL                   /ADD 0.5
       RAL                   / (INTEGER * 2)
       JMS*   .AW            /FLOAT
       LAW    -1             /EXP = EXP -1 (INTEGER/2)
       TAD*   .AA
       DAC*   .AA
       JMS*   .AQ            /ADD DOUBLE
       .DSA   DE05           / (RESULT+(INTEGER + 0.5)
       JMP*   .DE            /EXIT
DE01   JMS*   .ER            /ERROR ROUTINE
       CAL    14             /ERROR NO.
DE02   CAL    0              /INTEGER STORAGE
DE06          1           /CONSTANT 1                                LA
DE05   CAL    0              /TEMP STORAGE (1)
       CAL    0              /             (2)
       CAL    0              /             (3)
DE07          777775         /NO OF COEFF (4)
       777777; 336256; 455134	/0.4342597513D0
       000000; 223466; 040146	/0.5765843421D0
       000000; 366161; 114432	/0.9618007623D0
       000002; 270524; 354400	/2.885390073D0
DE04          1              / (X * SQRT(2)) (1) / (X = 1 OR 2
              265011         /               (2) / AND SET BY
              714640         /               (3) / PROGRAM)
       .END
