.TITLE .DC POLYNOMIAL EVALUATOR (C1X+C3X3+C5X5+....CNXN) /COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. .GLOBL .DC,.AP,.AS,.AO,.AQ / CALLING SEQUENCE (DOUBLE PRECISION) / JMS* (.DC) SUBR CALL (FLOAT ACC HAS X) / CAL ADDR ADDR OF PARAMETERS / NEXT INSTRUCTION SUBR RETURN / PARAMETERS /ADDR -N+1 TWO@S COMP +1 OF NUMBER OF COEFFICIENTS / C(N) (1) LAST COEFFICIENT (IN DOUBLE FORMAT) / (2) / (3) / C(N-1) (1) NEXT TO LAST / (2) / (3) / . / . / C1 (1) FIRST COEFFICIENT / (2) / (3) / .DC CAL 0 /ENTRY-EXIT LAC* .DC /GET PARAM ADDR DAC POLY01 /STORE AS POINTER LAC* POLY01 /PICK UP N DAC POLY02 /STORE AS -N- ISZ POLY01 /BUMP POINTER FOR C(N) ISZ .DC /BUMP EXIT ADDR JMS* .AP /STORE DOUBLE (.AP) .DSA POLY04 / (ARG) JMS* .AS /MULTIPLY DOUBLE (.AS) .DSA POLY04 / (A9GXA9G=A9G2) JMS* .AP /STORE DOUBLE (.AP) .DSA POLY06 / (ARG2) JMS* .AO /LOAD DOUBLE (.AO) .DSA POLY01+400000 / (C(N)) POLY09 JMS* .AS /MULTIPLY DOUBLE (.AS) .DSA POLY06 / (ARG2*C(N)) ISZ POLY01 /POINTER=POINTER+3 ISZ POLY01 ISZ POLY01 JMS* .AQ /ADD DOUBLE (.AQ) .DSA POLY01+400000 /(C(N-1)+(A9G2XC(N))) ISZ POLY02 /N=N+1 JMP POLY09 /MORE TERMS-CYCLE AGAIN JMS* .AS /DONE-MULTIPLY DOUBLE (.AS) .DSA POLY04 / (ARGXARG2) JMP* .DC /EXIT POLY01 CAL 0 /POINTER POLY02 CAL 0 /N POLY04 CAL 0 /ARG (1) CAL 0 / (2) CAL 0 / (3) POLY06 CAL 0 /ARG2 (1) CAL 0 / (2) CAL 0 / (3) .END