File: ATAN.LS of Disk: V50/Source/Source-Listing-RALF-1
(Source file text)
RALF V50A 8-APR-92 PAGE 1 /R=ATAN(R) SINGLE PREC. ARC-TANGENT / / / VERSION 50A 20-MAY-80 WVDM / / SECT ATAN 00000 1030 JA #ATAN 00001 0077 00002 0124 TEXT +ATAN + 00003 0116 00004 4040 00005 1100 ATANXR, SETX XRATAN 00006 0014 00007 1110 SETB BPATAN 00010 0011 00011 0000 BPATAN, F 0.0 00012 0000 00013 0000 00014 0000 XRATAN, F 0.0 00015 0000 00016 0000 00017 0000 ATAN1, F 0.0 00020 0000 00021 0000 00022 0000 ATAN2, F 0.0 00023 0000 00024 0000 00025 0000 ATAN3, F 0.0 00026 0000 00027 0000 00030 0001 P2ATAN, F 1.5707963 /= PI/2 00031 3110 00032 3755 00033 0001 F1ATAN, F 1. 00034 2000 00035 0000 00036 0003 M4ATAN, F -4. 00037 6000 00040 0000 ORG 10*3+BPATAN 00041 0040 FNOP 00042 1030 JA ATANXR 00043 0005 00044 0000 0 00045 1030 ATNRTN, JA . 00046 0045 / 00047 7763 ATANC1, -15 /LOWER LIMIT TEST. 00050 2000 2000 00051 0000 0000 / 00052 7777 ATANC3, -1 /.26794916 = 2.-SQRT(3) = TAN(PI/12) 00053 2111 2111 00054 4121 4121 / RALF V50A 8-APR-92 PAGE 1-1 00055 0001 ATANC4, 1 /1.7320509 = SQRT(3) 00056 3355 3355 00057 4754 4754 / 00060 0000 ATANC5, 0 /.52359879 = PI/6 = ATAN(1/SQRT(3)) 00061 2060 2060 00062 2511 2511 / 00063 7775 ATANC6, -3 /TCHEBYCHEFF-COEFFS 1/9 00064 3023 3023 00065 1227 1227 / 00066 7776 ATANC7, -2 /-1/7 APPROX 00067 5566 5566 00070 7220 7220 / 00071 7776 ATANC8, -2 /1/5 APPROX 00072 3146 3146 00073 0740 0740 / 00074 7777 ATANC9, -1 /-1/3 APPROX 00075 5252 5252 00076 5262 5262 / BASE 0 00077 0006 #ATAN, STARTD 00100 0210 FLDA 10*3 00101 6400 FSTA ATNRTN 00102 0045 00103 0200 FLDA 0 00104 1100 SETX XRATAN 00105 0014 00106 1110 SETB BPATAN 00107 0011 BASE BPATAN 00110 0101 LDX 1,1 00111 0001 00112 6200 FSTA BPATAN 00113 0610 FLDA% BPATAN,1 /ADDR OF X 00114 6200 FSTA BPATAN 00115 0005 STARTF 00116 0600 FLDA% BPATAN /GET X 00117 0100 LDX -1,0 /REMEMBER SIGN 00120 7777 00121 1010 JGE ATNPOS 00122 0126 00123 0100 LDX 0,0 /SAVE THE SIGN. 00124 0000 00125 0003 FNEG /NEGATE THE FAC [ABS] 00126 6202 ATNPOS, FSTA ATAN1 /AND STORE AWAY. 00127 2206 FSUB F1ATAN /TEST TO SEE IF TOO BIG. 00130 1020 JLE ATNNRM /IT ISNT. 00131 0137 00132 0101 LDX 0,1 /XR 1 WAS 1. REMEMBER PI/2-PI/4 00133 0000 00134 0206 FLDA F1ATAN /TO BIG. INVERT IT. RALF V50A 8-APR-92 PAGE 1-2 00135 3202 FDIV ATAN1 00136 6202 FSTA ATAN1 00137 0202 ATNNRM, FLDA ATAN1 00140 2212 FSUB ATANC1 /TEST TO SEE IF TOO SMALL. 00141 1020 JLE ATNSML /IT IS. ATAN(X)=X 00142 0212 / 00143 0002 FCLA /CLEAR OUT TEMP. 00144 6203 FSTA ATAN2 00145 0202 FLDA ATAN1 /RECALL NUMBER. 00146 2213 FSUB ATANC3 /IS X.GT.TAN(PI/12) ? 00147 1050 JLT ATANNT /NO, CALCULATE IN 0-PI/12 SECTOR 00150 0162 00151 0214 FLDA ATANC4 /YES, REDUCE PI/12-PI/4 SECTOR 00152 1202 FADD ATAN1 /TO CALCULATE IN 0-PI/12 00153 6202 FSTA ATAN1 /X:=SQRT(3)+X 00154 0207 FLDA M4ATAN /X:=[-4./(SQRT(3)+X)]+SQRT(3) 00155 3202 FDIV ATAN1 /GENERAL RELATION IS: 00156 1214 FADD ATANC4 /ATAN(X)=ATAN[(X+A)/(1-XA)]-ATAN(A) 00157 6202 FSTA ATAN1 /HERE A=-1/SQRT(3) 00160 0215 FLDA ATANC5 /NOW SET TEMP TO POST-FACTOR 00161 6203 FSTA ATAN2 /OF PI/6 = ATAN(1/SQRT(3)) / 00162 0202 ATANNT, FLDA ATAN1 /RECALL AND SQUARE IT. 00163 4202 FMUL ATAN1 00164 6204 FSTA ATAN3 /YET ANOTHER TEMP. 00165 0216 FLDA ATANC6 00166 4204 FMUL ATAN3 00167 1217 FADD ATANC7 00170 4204 FMUL ATAN3 00171 1220 FADD ATANC8 00172 4204 FMUL ATAN3 00173 1221 FADD ATANC9 00174 4204 FMUL ATAN3 00175 1206 FADD F1ATAN /THIS CALCULATED: 00176 4202 FMUL ATAN1 /ATAN(X)=X-X^3/3+X^5/5-X^7/7+X^9/9. 00177 1203 FADD ATAN2 /ADD POST-OFFSET IF ANY 00200 6202 FSTA ATAN1 00201 2010 ATNTQU, JXN ATNTNG,1 /WAS IT 0-PI/4 RANGE ? 00202 0205 00203 0205 FLDA P2ATAN /NO, ATAN(X)=PI/2-ATAN(X) 00204 2202 FSUB ATAN1 00205 2000 ATNTNG, JXN ATNRTN,0 /WAS X NEG ? 00206 0045 00207 0003 FNEG /YES, ATAN(-X)=-ATAN(X) 00210 1030 JA ATNRTN /RETURN WITH VALUE 00211 0045 / 00212 0202 ATNSML, FLDA ATAN1 /FOR X.LT.1E-5, ATAN(X)=X 00213 1030 JA ATNTQU 00214 0201 RALF V50A 8-APR-92 PAGE 2 RALF V50A 8-APR-92 PAGE 2-1 NO ERRORS 26 SYMBOLS, NO ABS REFS # C 00000 #ATAN 00077 #MAIN S 00000 ATAN S 00215 ATANC1 00047 ATANC3 00052 ATANC4 00055 ATANC5 00060 ATANC6 00063 ATANC7 00066 ATANC8 00071 ATANC9 00074 ATANNT 00162 ATANXR 00005 ATAN1 00017 ATAN2 00022 ATAN3 00025 ATNNRM 00137 ATNPOS 00126 ATNRTN 00045 ATNSML 00212 ATNTNG 00205 ATNTQU 00201 BPATAN 00011 F1ATAN 00033 M4ATAN 00036 P2ATAN 00030 XRATAN 00014