.TITLE .EE COMPUTE LOG BASE 2 FOR REAL ARGUMENT /COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD,MASS. .GLOBL .EE,.AA,.AB,.AW,.AH,.AI,.AJ,.AL,.EC,.ER / CALLING SEQUENCE / JMS* (.EE) SUBR CALL (ARG IN FLOATING ACC) / NEXT INSTRUCTION SUBR RETURN (RESULT IN FLOATING ACC) / .EE CAL 0 /ENTRY-EXIT LAC* .AB /GET SIGN WORD SNA!SPA /IF .LE. ZERO JMP EE01 / ERROR LAW -1 /SET EXP = -1 TAD* .AA DAC EE02 /STORE FOR INTEGER DETERMINATION LAC EE03 /SET ARG EXP = 1 DAC* .AA / (1 .LE. ARG .LT. 2 ) = F JMS* .AI /ADD REAL .DSA EE04 / (F + SQRT(2) JMS* .AH /STORE REAL .DSA EE05 / (F + SQRT(2) TO TEMP) JMS* .AJ /SUBTRACT REAL .DSA EE06 / (F + SQRT(2) -(2 * SQRT(2))= F - SQRT(2) JMS* .AL /DIVIDE REAL .DSA EE05 / (F - SQRT(2) / F + SQRT(2)) JMS* .EC /POLYNOMIAL EVALUATE ABOVE .DSA EE07 /ADDR OF CALLING SEQUENCE JMS* .AH /STORE REAL .DSA EE05 / (PARTIAL RESULT TO TEMP) LAC EE02 /GET INTEGER STL /SET INTEGER = INTEGER + 0.5 (2*INTEGER +1 RAL / (INTEGER * 2) JMS* .AW /FLOAT INTEGER LAW -1 /SET EXP = EXP -1 (2 * INTEGER +1 / 2) TAD* .AA DAC* .AA JMS* .AI /ADD REAL .DSA EE05 / (PARTIAL RESULT + INTEGER + 0.5) JMP* .EE /EXIT EE01 JMS* .ER /ERROR ROUTINE CAL 13 EE02 CAL 0 /INTEGER STORAGE EE03 1 /CONSTANT 1 EE05 CAL 0 /TEMP STORAGE (1) CAL 0 / (2) EE06 715002 / 2 * SQRT(2) (1) (2.284271) 265011 / (2) EE07 777776 /NO OF COEFF (3) 251000 /C3 (1) ( 0.59897865) 231255 / (2) 702000 /C2 (1) ( 0.96147063) 366105 / (2) 401002 /C1 (1) ( 2.8853913) 270524 / (2) EE04 715001 /SQRT(2) (1) (1.41421356) 265011 / (2) .END