/COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD MASS. /ATAN.V09 /8K FORTRAN LIBRARY ENTRY ATAN ATAN, BLOCK 2 TAD ATAN DCA L4 TAD ATAN# DCA L4# INC ATAN# INC ATAN# CALL 1,IFAD L4, ARG 0 CLL TAD ACH SNA JMP EXIT SPA TAD (4000 DCA ACH /TAKE ABSVAL OF ARGUMENT RAR DCA SIGN /AND REMEMBER SIGN TAD ACH TAD (-2014 SPA CLA JMP LSTN45 /IF ARG>1, JMS INVRS /INVERT ARG - SUBTRACT RESULT FROM PI/2 CLA CMA LSTN45, DCA L4# /L4# IS THE "PI/2-RESULT" SWITCH TAD ACH TAD (-1774 /THIS IS AN APPROXIMATE TEST TO SEE SPA CLA /IF THE NEW ARG IS <2-SQRT(3) JMP LSTN15 /IF IT IS, CALL 1,FAD /PERFORM A "DIFFERENCE OF TANGENTS" ARG SQRT3 /TRANSFORMATION TO SUBTRACT PI/6 TAD (20 JMS INVRS /FROM THE RESULT. THE ARG IS TRANSFORMED CALL 0,CHS /INTO SQRT(3)-4/(ARG+SQRT(3)) CALL 1,FAD SQT3, ARG SQRT3 CLA CMA LSTN15, DCA INVRS /USE INVRS AS A SWITCH TO INDICATE THIS CALL 1,STO /TRANSFORMATION OCCURRED ARG T TAD (-4 DCA L4 TAD SQT3# DCA L3# ATLOOP, INC L3# /NOW PERFORM A STANDARD TAYLOR SERIES INC L3# /EXPANSION (WITH TRUNCATED COEFFICIENTS) INC L3# CALL 1,FAD /CONVERGENCE WILL BE GOOD SINCE WE L3, ARG SQRT3 /HAVE MADE THE ARGUMENT BE <.3 JMS FMPT JMS FMPT ISZ L4 JMP ATLOOP JMS FMPT CALL 1,FAD ARG T /FINISH UP THE SERIES ISZ INVRS JMP NOPI6 CALL 1,FAD /ADD PI/6 IF NECESSARY ARG PIOVR6 NOPI6, ISZ L4# JMP NOPI2 CALL 0,CHS /SUBTRACT FROM PI/2 IF NECESSARY CALL 1,FAD ARG PIOVR2 NOPI2, TAD SIGN TAD ACH /SET SIGN OF RESULT = SIGN OF ARGUMENT DCA ACH EXIT, RETRN ATAN INVRS, 0 /INVERSION SUBROUTINE TAD (2014 /ENTERED WITH AC=0 OR 20 DCA L4 /AC=0 MEANS 1/FAC, AC=20 MEANS 4/FAC CALL 1,STO ARG T TAD L4 DCA ACH /ACM AND ACL WERE CLEARED BY STORE CALL 1,FDV ARG T JMP I INVRS FMPT, 0 /SUBROUTINE TO MULTIPLY BY T CALL 1,FMP /SAVES A FEW MEASLY LOCATIONS ARG T JMP I FMPT SIGN, 0 /CELL FOR HOLDING SIGN OF ARG T, BLOCK 3 /FLOATING TEMPORARY PAGE PIOVR6, 2004;1405;2216 /PI/6 PIOVR2, 2016;2207;7325 SQRT3, 2016;7331;7272 /SQRT(3) /THE NEXT 4 NUMBERS MUST IMMEDIATELY FOLLOW SQRT3 1756;0462;4562 /APPROXIMATELY 1/9 5764;4221;3403 /APPROXIMATELY -1/7 1766;3141;6672 /APPROXIMATELY 1/5 5775;2525;2337 /APPROXIMATELY -1/3 END