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