Commit | Line | Data |
---|---|---|
7af5ad59 PH |
1 | / |
2 | / | |
3 | / SUBROUTINE DATAN(X) | |
4 | / | |
5 | / VERSION 5A 4-26-77 (MH) | |
6 | / | |
7 | /X,THE ARGUMENT, IS REDUCED TO | |
8 | /0<X<1/2 | |
9 | /BY THE IDENTITIES: | |
10 | /ATAN(-X)=-ATAN(X) | |
11 | /IF X>1.0 THEN ATAN(X)=PI/2 - ATAN(1/X) | |
12 | /IF .5<X<1.0 THEN ATAN(X)=ATAN(1/2)+ATAN(2*X-(1/(X+2))) | |
13 | /ATAN(X)=X FOR X<2^(-15) | |
14 | / | |
15 | / | |
16 | / | |
17 | SECT DATAN | |
18 | JA #DATAN | |
19 | DPCHK | |
20 | / | |
21 | TEXT +DATAN + | |
22 | DATNXR, SETX XRDATN | |
23 | SETB BPDATN | |
24 | BPDATN, F 0.0 | |
25 | XRDATN, F 0.0 | |
26 | DATFP1, F 1.0 | |
27 | F 0.0 | |
28 | DATLOW, -15 | |
29 | 2000 | |
30 | 0000 | |
31 | 0000 | |
32 | 0000 | |
33 | 0000 | |
34 | / | |
35 | ORG 10*3+BPDATN | |
36 | FNOP | |
37 | JA DATNXR | |
38 | 0 | |
39 | DATRTN, JA . | |
40 | / | |
41 | LAMBDA, 0004 | |
42 | 3057 | |
43 | 7537 | |
44 | 4017 | |
45 | 0276 | |
46 | 4536 | |
47 | DATB0, 0005 | |
48 | 3221 | |
49 | 3522 | |
50 | 3121 | |
51 | 3352 | |
52 | 5066 | |
53 | DATA1, 0007 | |
54 | 5372 | |
55 | 4104 | |
56 | 3437 | |
57 | 1766 | |
58 | 6167 | |
59 | DATB1, 0003 | |
60 | 3135 | |
61 | 1757 | |
62 | 0565 | |
63 | 4141 | |
64 | 4270 | |
65 | DATA2, 0001 | |
66 | 5473 | |
67 | 7524 | |
68 | 1112 | |
69 | 4701 | |
70 | 2723 | |
71 | DATB2, 0002 | |
72 | 2065 | |
73 | 4070 | |
74 | 1015 | |
75 | 2710 | |
76 | 3176 | |
77 | DATA3, 7775 | |
78 | 5374 | |
79 | 4326 | |
80 | 3317 | |
81 | 1675 | |
82 | 3124 | |
83 | DATB3, 0001 | |
84 | 2410 | |
85 | 5255 | |
86 | 0370 | |
87 | 2076 | |
88 | 6374 | |
89 | PIS2, 0001 | |
90 | 3110 | |
91 | 3755 | |
92 | 2421 | |
93 | 0264 | |
94 | 3013 | |
95 | ATN1S2, 7777 | |
96 | 3553 | |
97 | 0634 | |
98 | 0530 | |
99 | 3443 | |
100 | 6406 | |
101 | DATP5, 7777 | |
102 | 3777 | |
103 | 7777 | |
104 | 7777 | |
105 | 7777 | |
106 | 7776 | |
107 | X, F 0.0 | |
108 | F 0.0 | |
109 | C0, F 0.0 | |
110 | F 0.0 | |
111 | DT1, F 0.0 | |
112 | F 0.0 | |
113 | DATFP2, F 2.0 | |
114 | F 0.0 | |
115 | Z, F 0.0 | |
116 | F 0.0 | |
117 | / | |
118 | /PICK UP RETURN AND ARGUMENT | |
119 | BASE 0 | |
120 | #DATAN, STARTD | |
121 | FLDA 10*3 | |
122 | FSTA DATRTN | |
123 | FLDA 0 | |
124 | SETX XRDATN | |
125 | SETB BPDATN | |
126 | BASE BPDATN | |
127 | LDX 1,1 | |
128 | FSTA BPDATN | |
129 | FLDA% BPDATN,1 | |
130 | FSTA BPDATN | |
131 | STARTE | |
132 | FLDA% BPDATN /GET X | |
133 | LDX -1,0 /SIGN | |
134 | JGE .+5 | |
135 | LDX 0,0 /SAVE SIGN | |
136 | FNEG | |
137 | FSTA X /SAVE ARG | |
138 | / | |
139 | /CHECK ARGAINST LOWER LIMIT | |
140 | FLDA X | |
141 | FSUB DATLOW /TOO SMALL? | |
142 | JLE DATGO /YES ATAN(X)=X | |
143 | LDX -1,1 | |
144 | FCLA | |
145 | FSTA C0 | |
146 | / | |
147 | /REDUCE X TO RANGE 0<X<.5 | |
148 | DATA, FLDA X | |
149 | FSUB DATFP1 | |
150 | JLE DATB />1? | |
151 | FLDA DATFP1 /YES | |
152 | FDIV X /X=1/X | |
153 | LDX 0,1 /SET FLAG | |
154 | FSTA X | |
155 | DATB, FLDA X | |
156 | FSUB DATP5 />= .5 | |
157 | JLT DATC | |
158 | FLDA X /X=(2X-1)/(X+2) | |
159 | FADD DATFP2 | |
160 | FSTA DT1 /TEMP | |
161 | FLDA X | |
162 | FMUL DATFP2 | |
163 | FSUB DATFP1 | |
164 | FDIV DT1 | |
165 | FSTA X | |
166 | FLDA ATN1S2 /C0=ATAN(1/2) | |
167 | FSTA C0 | |
168 | /COMPUTE ATAN USING ALGORITHM | |
169 | DATC, FLDA X | |
170 | FMUL X | |
171 | FSTA Z /Z=X*X | |
172 | FLDA Z | |
173 | FADD DATB3 /Z+B3 | |
174 | FSTA DT1 | |
175 | FLDA DATA3 | |
176 | FDIV DT1 /A3/(Z+B3) | |
177 | FADD DATB2 | |
178 | FADD Z /ADD Z+B2 | |
179 | FSTA DT1 /TEMP | |
180 | FLDA DATA2 /A2/TEMP | |
181 | FDIV DT1 | |
182 | FADD DATB1 | |
183 | FADD Z /ADD Z +B1 | |
184 | FSTA DT1 /TEMP | |
185 | FLDA DATA1 /A1/TEMP | |
186 | FDIV DT1 | |
187 | FADD DATB0 /ADD Z+B0 | |
188 | FADD Z | |
189 | FSTA DT1 | |
190 | FLDA LAMBDA /LAMBDA*X | |
191 | FMUL X | |
192 | FDIV DT1 /DIV BY THE REST | |
193 | FADD C0 | |
194 | FSTA X | |
195 | JXN DATD,1 /WAS X>1 ORIGINALLY? | |
196 | FLDA PIS2 /Y ATAN(X)=PI/2-ATAN(X) | |
197 | FSUB X | |
198 | DATD, JXN DATRTN,0 /WAS X<0? | |
199 | FNEG /Y | |
200 | JA DATRTN | |
201 | DATGO, FLDA X | |
202 | JA DATD | |
203 | \f |