/ ATAN -- ARCTANGENT / FOR 23 BIT F. P. FORMAT / WRITTEN BY / PHILLIP SIEMENS / LAWRENCE LIVERMORE LABS / AUGUST 26, 1975 / / THE FOLLOWING IDENTITIES ARE USED: / FOR ABS(X)>1, ATAN(X)=PI/2 - ATAN(1/X) / FOR ABS(X)<.001, ATAN(X)=X / / A 6 TERM POLYNOMIAL IS USED TO APPROXIMATE THE ATAN / THERE ARE APPROXIMATELY 120 OCTAL LOCATIONS AVAILABLE / IN THIS SUBROUTINE. ENTRY ATAN OPDEF TADI 1400 OPDEF DCAI 3400 OPDEF JMPI 5400 ABSYM OPH 25 ABSYM OPL 26 ABSYM OPX 27 LAP ATAN, 6140 /VERSION # 0004 /EDIT # TAD ATAN /GET CALLING FIELD DCA ATAN1 ATAN1, HLT /SET TO CALLING FIELD TADI ATAN# /GET CDF TO ARG DCA ATAN2 CLA CMA INC ATAN# TADI ATAN# /GET ADDRESS OF ARG DCA 10 /SET UP POINTER TO ARG INC ATAN# TAD (17 DCA 11 /POINTER TO FAC CLA CLL CMA RTL /GET -3 DCA ATAN1 /COUNTER FOR 3 WORDS ATAN2, HLT TADI 10 /GET ARG WORD 6211 DCAI 11 /PUT IN FAC ISZ ATAN1 JMP ATAN2 TADI (22 /GET EXPONENT SPA SNA /IS IT MINUS OR ZERO JMP SIZOK /YES TAD (-1 SZA CLA /EXP > 1 JMP BIGGER /YES TADI (20 /GET HI PART AND (1777 SZA CLA / > 1? JMP BIGGER /YES TADI (20 /GET SIGN SPA CLA CMA /MINUS DCA ATAN1 /REMEMBER THE SIGN TAD PI2 /PUT PI/4 INTO FAC DCAI (20 TAD PI2# DCAI (21 DCAI (22 ISZ ATAN1 /MINUS? JMP EXITO /NO CALL 0, CHS EXITO, CLA CLL CML RTL /2 TAD ATAN DCA ATAN3 ATAN3, HLT JMPI ATAN# PI2, 3110 /PI/2 3755 0001 BIGGER, CLA CMA DCA ATAN1 /INDICATE X > 1 TADI (20 /MOVE X TO OP DCA OPH TADI (21 DCA OPL TADI (22 DCA OPX CLA CLL CML RTR /2000 DCAI (20 /SET FAC = 1 DCAI (21 IAC DCAI (22 CALL 1, FDV /GET FAC = 1/X ARG OPH SIZOK, CLL CLA TAD ACL /GET EXPONENT SNA /IS IT ZERO? JMP SEVAL /YES TAD (10 SZL CLA /IS X SO SMALL, THAT ATAN(X)=X? JMP SEVAL /NO SIZEA, ISZ ATAN1 /WAS X > 1 JMP EXITO /NO CALL 0, CHS CALL 1, FAD ARG PI2 JMP EXITO PAGE SEVAL, TADI (20 /SAVE X DCA X TADI (21 DCA X# TADI (22 DCA EX CALL 1, FMP /MAKE X*X ARG X TAD ACH /SAVE X SQUARED DCA XX TAD ACM DCA XX# TAD ACL DCA EXX DCA ACH DCA ACM DCA ACL TAD (-6 DCA ACNT TAD ACOF ARG2, DCA ARG1# CALL 1, FAD ARG1, ARG COF CALL 1, FMP ARG XX TAD (3 TAD ARG1# ISZ ACNT JMP ARG2 CALL 1, FAD ARG ONE CALL 1, FMP ARG X JMP SIZEA AS^T= 1.iono{oow~_/w~}~~{o}}5{~~?:WoU{|d}~gz& 9AADTC NDT C A OAR F,GAC 2AAD1R #GA LC 1LDF,A A1R A,G R FCG OLC 1LAF, M A P R XGT X A (DT 3 A GAD 1RI # S NAZ TCM APJ57 7776 5252 /-.333263742 7472 7777 ONE, 3777 / .999999 7767 0000 X, 0 0 EX, 0 XX, 0 0 EXX, 0 END