software: Added more and more
[pdp8.git] / sw / f4 / FRTSRC / datan.ra
CommitLineData
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 +
22DATNXR, SETX XRDATN
23 SETB BPDATN
24BPDATN, F 0.0
25XRDATN, F 0.0
26DATFP1, F 1.0
27 F 0.0
28DATLOW, -15
29 2000
30 0000
31 0000
32 0000
33 0000
34/
35 ORG 10*3+BPDATN
36 FNOP
37 JA DATNXR
38 0
39DATRTN, JA .
40/
41LAMBDA, 0004
42 3057
43 7537
44 4017
45 0276
46 4536
47DATB0, 0005
48 3221
49 3522
50 3121
51 3352
52 5066
53DATA1, 0007
54 5372
55 4104
56 3437
57 1766
58 6167
59DATB1, 0003
60 3135
61 1757
62 0565
63 4141
64 4270
65DATA2, 0001
66 5473
67 7524
68 1112
69 4701
70 2723
71DATB2, 0002
72 2065
73 4070
74 1015
75 2710
76 3176
77DATA3, 7775
78 5374
79 4326
80 3317
81 1675
82 3124
83DATB3, 0001
84 2410
85 5255
86 0370
87 2076
88 6374
89PIS2, 0001
90 3110
91 3755
92 2421
93 0264
94 3013
95ATN1S2, 7777
96 3553
97 0634
98 0530
99 3443
100 6406
101DATP5, 7777
102 3777
103 7777
104 7777
105 7777
106 7776
107X, F 0.0
108 F 0.0
109C0, F 0.0
110 F 0.0
111DT1, F 0.0
112 F 0.0
113DATFP2, F 2.0
114 F 0.0
115Z, 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
148DATA, 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
155DATB, 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
169DATC, 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
198DATD, JXN DATRTN,0 /WAS X<0?
199 FNEG /Y
200 JA DATRTN
201DATGO, FLDA X
202 JA DATD
203\f