software: Added more and more
[pdp8.git] / sw / f4 / FRTSRC / atan.ra
1 /
2 /
3 / A T A N
4 / - - - -
5 /
6 /SUBROUTINE ATAN(X)
7 /
8 / VERSION 5A 4-27-77 PT
9 /
10 SECT ATAN
11 JA #ATAN
12 TEXT +ATAN +
13 ATANXR, SETX XRATAN
14 SETB BPATAN
15 BPATAN, F 0.0
16 XRATAN, F 0.0
17 ATAN1, F 0.0
18 ATAN22, F 0.0
19 ATAN3, F 0.0
20 ATAN4, F 0.0
21 F1ATAN, F 1.
22 ORG 10*3+BPATAN
23 FNOP
24 JA ATANXR
25 0
26 ATNRTN, JA .
27 /
28 ATANC1, -15 /LOWER LIMIT TEST.
29 2000
30 0000
31 /
32 ATANC2, 0 /UPPER LIMIT TEST.
33 3777
34 7000
35 /
36 ATANC3, -1
37 2111
38 4121
39 /
40 ATANC4, 1
41 3355
42 4754
43 /
44 ATANC5, 0
45 2060
46 2511
47 /
48 ATANC6, -3
49 3023
50 1227
51 /
52 ATANC7, -2
53 5566
54 7220
55 /
56 ATANC8, -2
57 3146
58 0740
59 /
60 ATANC9, -1
61 5252
62 5262
63 /
64 ATANCH, 1
65 3110
66 3755
67 /
68 ATANCJ, F -4.
69 BASE 0
70 #ATAN, STARTD
71 FLDA 10*3
72 FSTA ATNRTN
73 FLDA 0
74 SETX XRATAN
75 SETB BPATAN
76 BASE BPATAN
77 LDX 1,1
78 FSTA BPATAN
79 FLDA% BPATAN,1 /ADDR OF X
80 FSTA BPATAN
81 STARTF
82 FLDA% BPATAN /GET X
83 LDX -1,0 /REMEMBER SIGN
84 JGE .+5
85 LDX 0,0 /SAVE THE SIGN.
86 FNEG /NEGATE THE FAC [ABS]
87 FSTA ATAN1 /AND STORE AWAY.
88 FSTA ATAN22
89 FSUB ATANC1 /TEST TO SEE IF TOO SMALL.
90 JLE ATANBG /IT IS. ATAN(X)=X
91 FSUB ATANC2 /TEST TO SEE IF TOO BIG.
92 JLE ATANLW /IT ISNT.
93 FLDA F1ATAN /TO BIG. INVERT IT.
94 FDIV ATAN1
95 FSTA ATAN1
96 /
97 ATANLW, FCLA /CLEAR OUT TEMP.
98 FSTA ATAN3
99 FLDA ATAN1 /RECALL NUMBER.
100 FSUB ATANC3 /START THE KNOCKING OFF PROCESS.
101 JLT ATANNT /WRONG SECTOR.
102 FLDA ATANC4 /BOP UP ORIGINAL.
103 FADDM ATAN1
104 FLDA ATANCJ /GET MAGIC NUMBER.
105 FDIV ATAN1
106 FADD ATANC4
107 FSTA ATAN1
108 FLDA ATANC5
109 FSTA ATAN3
110 /
111 ATANNT, FLDA ATAN1 /RECALL AND SQUARE IT.
112 FMUL ATAN1
113 FSTA ATAN4 /YET ANOTHER TEMP.
114 FLDA ATANC6
115 FMUL ATAN4
116 FADD ATANC7
117 FMUL ATAN4
118 FADD ATANC8
119 FMUL ATAN4
120 FADD ATANC9
121 FMUL ATAN4
122 FADD F1ATAN
123 FMUL ATAN1
124 FADD ATAN3
125 FSTA ATAN1
126 FLDA ATAN22
127 FSUB F1ATAN
128 JLE ATANBG
129 FLDA ATANCH
130 FSUB ATAN1
131 JA .+3
132 /
133 ATANBG, FLDA ATAN1
134 JXN ATNRTN,0
135 FNEG
136 JA ATNRTN
137 \f