/ / / A T A N / - - - - / /SUBROUTINE ATAN(X) / / VERSION 5A 4-27-77 PT / SECT ATAN JA #ATAN TEXT +ATAN + ATANXR, SETX XRATAN SETB BPATAN BPATAN, F 0.0 XRATAN, F 0.0 ATAN1, F 0.0 ATAN22, F 0.0 ATAN3, F 0.0 ATAN4, F 0.0 F1ATAN, F 1. ORG 10*3+BPATAN FNOP JA ATANXR 0 ATNRTN, JA . / ATANC1, -15 /LOWER LIMIT TEST. 2000 0000 / ATANC2, 0 /UPPER LIMIT TEST. 3777 7000 / ATANC3, -1 2111 4121 / ATANC4, 1 3355 4754 / ATANC5, 0 2060 2511 / ATANC6, -3 3023 1227 / ATANC7, -2 5566 7220 / ATANC8, -2 3146 0740 / ATANC9, -1 5252 5262 / ATANCH, 1 3110 3755 / ATANCJ, F -4. BASE 0 #ATAN, STARTD FLDA 10*3 FSTA ATNRTN FLDA 0 SETX XRATAN SETB BPATAN BASE BPATAN LDX 1,1 FSTA BPATAN FLDA% BPATAN,1 /ADDR OF X FSTA BPATAN STARTF FLDA% BPATAN /GET X LDX -1,0 /REMEMBER SIGN JGE .+5 LDX 0,0 /SAVE THE SIGN. FNEG /NEGATE THE FAC [ABS] FSTA ATAN1 /AND STORE AWAY. FSTA ATAN22 FSUB ATANC1 /TEST TO SEE IF TOO SMALL. JLE ATANBG /IT IS. ATAN(X)=X FSUB ATANC2 /TEST TO SEE IF TOO BIG. JLE ATANLW /IT ISNT. FLDA F1ATAN /TO BIG. INVERT IT. FDIV ATAN1 FSTA ATAN1 / ATANLW, FCLA /CLEAR OUT TEMP. FSTA ATAN3 FLDA ATAN1 /RECALL NUMBER. FSUB ATANC3 /START THE KNOCKING OFF PROCESS. JLT ATANNT /WRONG SECTOR. FLDA ATANC4 /BOP UP ORIGINAL. FADDM ATAN1 FLDA ATANCJ /GET MAGIC NUMBER. FDIV ATAN1 FADD ATANC4 FSTA ATAN1 FLDA ATANC5 FSTA ATAN3 / ATANNT, FLDA ATAN1 /RECALL AND SQUARE IT. FMUL ATAN1 FSTA ATAN4 /YET ANOTHER TEMP. FLDA ATANC6 FMUL ATAN4 FADD ATANC7 FMUL ATAN4 FADD ATANC8 FMUL ATAN4 FADD ATANC9 FMUL ATAN4 FADD F1ATAN FMUL ATAN1 FADD ATAN3 FSTA ATAN1 FLDA ATAN22 FSUB F1ATAN JLE ATANBG FLDA ATANCH FSUB ATAN1 JA .+3 / ATANBG, FLDA ATAN1 JXN ATNRTN,0 FNEG JA ATNRTN