software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / TRIG.SB
CommitLineData
7af5ad59
PH
1/TRIGONOMETRY ROUTINES OS8 FORTRAN II LIBRARY
2/
3/
4/
5/
6/
7/
8/
9/
10/
11/COPYRIGHT (C) 1974,1977 BY DIGITAL EQUIPMENT CORPORATION
12/
13/
14/
15/
16/
17/
18/
19/
20/
21/
22/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25/FOR ANY ERRORS THAT MAY APPEAR IN THIS MANUAL.
26/
27/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
31/
32/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
34/DIGITAL.
35/ VERSION 5 HAS PATCH FOR IMPROVED ACCURACY AT LARGE ARGS
36/ INSERTED NOP INSTRUCTIONS AT PATCH1 AND PATCH2/C. STOLZ
37/
38/
39/
40/
41/
42/
43/
44/
45/
46/
47\f/ VERSION 6A
48/ VERSION NUMBER IS AVAILABLE AT ENTRY POINTS
49 ENTRY SIN
50 ENTRY COS
51 ENTRY TAN
52
53QUAD, 0 /CONTAINS ONE LESS THAN THE QUADRANT OF THE ARGUMENT
54Y, BLOCK 3 /TEMPORARY STORAGE FOR ARG
55 CPAGE 22
56COEF, 5476 /-2.39E-8 CONSTANTS FOR SIN
57 3246
58 2500 /2.7526E-6
59 1565
60 6134
61 5170 /-1.98409E-4
62 5646
63 4006
64 0026 /8.3333315E-3
65 1724
66 2104
67 2065 /-1.6666667E-1
68 5765
69 2525
70 2525 /1.0
71 2014
72 0000
73 0000
74 CPAGE 3
75HALFPI, 2016 /1.5707963
76 2207
77 7324
78 CPAGE 3
79QTRPI, 2006 /7.8539815E-1
80 2207
81 7324
82 CPAGE 25
83TOEF, 1724 /9.5168091E-3
84 6766
85 1440 /2.9005250E-3
86 1705
87 7413
88 2741 /2.4565090E-2
89 1736
90 2236
91 2720 /5.3374060E-2
92 1746
93 6517
94 3023 /1.3339240E-1
95 1764
96 2114
97 0042 /3.3333140E-1
98 1775
99 2525
100 1517 /1.0
101 2014
102 0000
103 0000
104TAN, BLOCK 1
105 6
106 DCA QUAD /SET QUADRANT OFFSET SWITCH
107 TAD I TAN /PICK-UP CDF
108 DCA TARG
109 INC TAN# /POINT TO NEXT WORD
110 TAD I TAN /PICK-UP ADDRESS
111 DCA TARG#
112 INC TAN# /POINT TO RETURN
113 CALL 1,FAD /GET ARG IN FP-ACC
114TARG, ARG 0
115BAC, TAD ACH /LOOK AT HIGH ORDER WORD
116 SPA CLA /IF NEGATIVE
117 JMP OVT /GO OM
118 CALL 1,FSB /OTHERWISE SUBTRACT
119 ARG QTRPI /PI/2
120 ISZ QUAD /AND INCREMENT QUADRANT COUNTER
121PATCH1, NOP /ALLOW FOR SKIP
122 JMP BAC /UNTIL ARG IS NEGATIVE
123OVT, CALL 1,FAD /ADD PI/2 TO ARG UNTIL IT IS IN
124 ARG QTRPI /THE FIRST QUADRANT
125 CLA CMA
126 TAD QUAD /BUT KEEP TRACK OF WHICH QUADRANT IT WAS IN
127 DCA QUAD
128 TAD ACH /GET HI ORDER WORD
129 SPA CLA
130 JMP OVT /IF NEGATIVE REPEAT
131 TAD QUAD /FIND OUT WHAT QUAD IT WAS IN
132 RTR
133 SMA CLA
134 JMP OM
135 CALL 0,CHS /SUBTRACT FROM PI/2 IF QUAD 2 OR 4
136 CALL 1,FAD
137 ARG QTRPI
138OM, TAD (7 /USE A 7 TERM SERIES
139 CPAGE 3
140 JMS POL
141 TOEF /ADRESS OF COEFICIENTS FOR THE SERIES
142 CLA CMA
143 TAD QUAD
144 RTR
145 SZL CLA
146 JMP OM3
147 CALL 1,STO
148 ARG Y
149 TAD (2014
150 DCA ACH
151 CALL 1,FDV
152 ARG Y
153OM3, RETRN TAN
154/ INTERNAL SUBROUTINE POL
155/
156/ COMPUTES N TERMS OF POLYNOMIAL
157/ N IN AC ... X IN FLOATING AC
158/ COEFFICIENTS START IN LOCATION WHOSE ADDRESS FOLLOWS JMS TO POL
159/
160POL2, BLOCK 1
161POL, BLOCK 1
162 CIA
163 DCA POL2
164 CALL 1,STO /STORE ADJUSTED ARGUMENT
165 ARG Y /IN A TEMPORARY
166 CALL 1,FAD
167 ARG Y /RESTORE FP AC
168 CALL 1,FMP
169 ARG Y /SQUARE IT
170 CALL 1,STO
171 ARG X
172 TAD I POL
173 INC POL
174ARG2, DCA ARG1#
175 CALL 1,FAD
176ARG1, ARG COEF / ADDRESS STORED HERE
177 ISZ POL2
178 JMP POL1
179 CALL 1,FMP /MULTIPLY AGAIN TO COMPLETE SERIES
180 ARG Y
181 TAD QUAD
182 RTR
183 SNL CLA /FIND OUT WHICH QUADRANT
184 JMP POLEX
185 CALL 0,CHS /IF IN QUADRANT 3 OR 4 SET NEGATIVE
186POLEX, JMP I POL
187POL1, CALL 1,FMP
188 ARG X
189 TAD ARG1#
190 TAD (3
191 JMP ARG2
192/
193X, BLOCK 3 /TEMPORARY FOR POL
194/
195/
196/ 8K FORTRAN TRIGNOMETRY ROUTINES
197/
198/
199COS, BLOCK 1
200 6
201 TAD COS
202 DCA SIN
203 TAD COS#
204 DCA SIN# /IT NOW APPEARS THAT SIN WAS CALLED
205 CLA IAC /WITH QUADRANT OFFSET BY ONE
206 JMP COSE
207SIN, BLOCK 1
208 6
209COSE, DCA QUAD /SET QUADRANT OFFSET SWITCH
210 TAD I SIN /PICK-UP CDF
211 DCA SARG
212 INC SIN# /POINT TO NEXT WORD
213 TAD I SIN /PICK-UP ADDRESS
214 DCA SARG#
215 INC SIN# /POINT TO RETURN
216 CALL 1,FAD /GET ARG IN FP-ACC
217SARG, ARG 0
218BACK, TAD ACH /LOOK AT HIGH ORDER WORD
219 SPA CLA /IF NEGATIVE
220 JMP OVR /GO ON
221 CALL 1,FSB /OTHERWISE SUBTRACT
222 ARG HALFPI /PI/2
223 ISZ QUAD /AND INCREMENT QUADRANT COUNTER
224PATCH2, NOP /ALLOW FOR SKIP
225 JMP BACK /UNTIL ARG IS NEGATIVE
226OVR, CALL 1,FAD /ADD PI/2 TO ARG UNTIL IT IS IN
227 ARG HALFPI /THE FIRST QUADRANT
228 CLA CMA
229 TAD QUAD /BUT KEEP TRACK OF WHICH QUADRANT IT WAS IN
230 DCA QUAD
231 TAD ACH /GET HI ORDER WORD
232 SPA CLA
233 JMP OVR /IF NEGATIVE REPEAT
234 TAD QUAD /FIND OUT WHAT QUAD IT WAS IN
235 RTR
236 SMA CLA
237 JMP ON
238 CALL 0,CHS /SUBTRACT FROM PI/2 IF QUAD 2 OR 4
239 CALL 1,FAD
240 ARG HALFPI
241ON, TAD (6 /USE A 6 TERM SERIES
242 CPAGE 3
243 JMS POL
244 COEF /ADRESS OF COEFICIENTS FOR THE SERIES
245 RETRN SIN
246 END
247\f