| 1 | /ARCTANGENT ROUTINE OS8 FORTRAN II LIBRARY |
| 2 | / |
| 3 | / |
| 4 | / |
| 5 | / |
| 6 | / |
| 7 | / |
| 8 | / |
| 9 | / |
| 10 | / |
| 11 | /COPYRIGHT (C) 1974,1977 BY DIGITAL EQUIPMENT CORPORATION |
| 12 | / |
| 13 | / |
| 14 | / |
| 15 | / |
| 16 | / |
| 17 | / |
| 18 | / |
| 19 | / |
| 20 | / |
| 21 | / |
| 22 | /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE |
| 23 | /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT |
| 24 | /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY |
| 25 | /FOR ANY ERRORS THAT MAY APPEAR IN THIS MANUAL. |
| 26 | / |
| 27 | /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER |
| 28 | /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED |
| 29 | /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH |
| 30 | /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. |
| 31 | / |
| 32 | /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE |
| 33 | /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY |
| 34 | /DIGITAL. |
| 35 | / |
| 36 | / |
| 37 | / |
| 38 | / |
| 39 | / |
| 40 | / |
| 41 | / |
| 42 | / |
| 43 | / |
| 44 | / |
| 45 | \f/ VERSION 11A |
| 46 | / VERSION NUMBER IS AVAILABLE AT ENTRY POINTS |
| 47 | ENTRY ATAN |
| 48 | |
| 49 | ATAN, BLOCK 1 |
| 50 | 11 |
| 51 | TAD ATAN |
| 52 | DCA L4 |
| 53 | TAD ATAN# |
| 54 | DCA L4# |
| 55 | INC ATAN# |
| 56 | INC ATAN# |
| 57 | CALL 1,IFAD |
| 58 | L4, ARG 0 |
| 59 | CLL |
| 60 | TAD ACH |
| 61 | SNA |
| 62 | JMP EXIT |
| 63 | SPA |
| 64 | TAD (4000 |
| 65 | DCA ACH /TAKE ABSVAL OF ARGUMENT |
| 66 | RAR |
| 67 | DCA SIGN /AND REMEMBER SIGN |
| 68 | TAD ACH |
| 69 | TAD (-2014 |
| 70 | SPA CLA |
| 71 | JMP LSTN45 /IF ARG>1, |
| 72 | JMS INVRS /INVERT ARG - SUBTRACT RESULT FROM PI/2 |
| 73 | CLA CMA |
| 74 | LSTN45, DCA L4# /L4# IS THE "PI/2-RESULT" SWITCH |
| 75 | TAD ACH |
| 76 | TAD (-1774 /THIS IS AN APPROXIMATE TEST TO SEE |
| 77 | SPA CLA /IF THE NEW ARG IS <2-SQRT(3) |
| 78 | JMP LSTN15 /IF IT IS, |
| 79 | CALL 1,FAD /PERFORM A "DIFFERENCE OF TANGENTS" |
| 80 | ARG SQRT3 /TRANSFORMATION TO SUBTRACT PI/6 |
| 81 | TAD (20 |
| 82 | JMS INVRS /FROM THE RESULT. THE ARG IS TRANSFORMED |
| 83 | CALL 0,CHS /INTO SQRT(3)-4/(ARG+SQRT(3)) |
| 84 | CALL 1,FAD |
| 85 | SQT3, ARG SQRT3 |
| 86 | CLA CMA |
| 87 | LSTN15, DCA INVRS /USE INVRS AS A SWITCH TO INDICATE THIS |
| 88 | CALL 1,STO /TRANSFORMATION OCCURRED |
| 89 | ARG T |
| 90 | TAD (-4 |
| 91 | DCA L4 |
| 92 | TAD SQT3# |
| 93 | DCA L3# |
| 94 | ATLOOP, INC L3# /NOW PERFORM A STANDARD TAYLOR SERIES |
| 95 | INC L3# /EXPANSION (WITH TRUNCATED COEFFICIENTS) |
| 96 | INC L3# |
| 97 | CALL 1,FAD /CONVERGENCE WILL BE GOOD SINCE WE |
| 98 | L3, ARG SQRT3 /HAVE MADE THE ARGUMENT BE <.3 |
| 99 | JMS FMPT |
| 100 | JMS FMPT |
| 101 | ISZ L4 |
| 102 | JMP ATLOOP |
| 103 | JMS FMPT |
| 104 | CALL 1,FAD |
| 105 | ARG T /FINISH UP THE SERIES |
| 106 | ISZ INVRS |
| 107 | JMP NOPI6 |
| 108 | CALL 1,FAD /ADD PI/6 IF NECESSARY |
| 109 | ARG PIOVR6 |
| 110 | NOPI6, ISZ L4# |
| 111 | JMP NOPI2 |
| 112 | CALL 0,CHS /SUBTRACT FROM PI/2 IF NECESSARY |
| 113 | CALL 1,FAD |
| 114 | ARG PIOVR2 |
| 115 | NOPI2, TAD SIGN |
| 116 | TAD ACH /SET SIGN OF RESULT = SIGN OF ARGUMENT |
| 117 | DCA ACH |
| 118 | EXIT, RETRN ATAN |
| 119 | |
| 120 | INVRS, 0 /INVERSION SUBROUTINE |
| 121 | TAD (2014 /ENTERED WITH AC=0 OR 20 |
| 122 | DCA L4 /AC=0 MEANS 1/FAC, AC=20 MEANS 4/FAC |
| 123 | CALL 1,STO |
| 124 | ARG T |
| 125 | TAD L4 |
| 126 | DCA ACH /ACM AND ACL WERE CLEARED BY STORE |
| 127 | CALL 1,FDV |
| 128 | ARG T |
| 129 | JMP I INVRS |
| 130 | |
| 131 | FMPT, 0 /SUBROUTINE TO MULTIPLY BY T |
| 132 | CALL 1,FMP /SAVES A FEW MEASLY LOCATIONS |
| 133 | ARG T |
| 134 | JMP I FMPT |
| 135 | |
| 136 | SIGN, 0 /CELL FOR HOLDING SIGN OF ARG |
| 137 | T, BLOCK 3 /FLOATING TEMPORARY |
| 138 | |
| 139 | PAGE |
| 140 | |
| 141 | PIOVR6, 2004;1405;2216 /PI/6 |
| 142 | PIOVR2, 2016;2207;7325 |
| 143 | SQRT3, 2016;7331;7272 /SQRT(3) |
| 144 | /THE NEXT 4 NUMBERS MUST IMMEDIATELY FOLLOW SQRT3 |
| 145 | 1756;0462;4562 /APPROXIMATELY 1/9 |
| 146 | 5764;4221;3403 /APPROXIMATELY -1/7 |
| 147 | 1766;3141;6672 /APPROXIMATELY 1/5 |
| 148 | 5775;2525;2337 /APPROXIMATELY -1/3 |
| 149 | |
| 150 | END |
| 151 | \f |