Source file
test/torture.go
1
2
3
4
5
6
7
8
9 package main
10
11
12 func concat(s *[16]byte) uint64 {
13 r := (((((((((((((((uint64(s[0])<<4|
14 uint64(s[1]))<<4|
15 uint64(s[2]))<<4|
16 uint64(s[3]))<<4|
17 uint64(s[4]))<<4|
18 uint64(s[5]))<<4|
19 uint64(s[6]))<<4|
20 uint64(s[7]))<<4|
21 uint64(s[8]))<<4|
22 uint64(s[9]))<<4|
23 uint64(s[10]))<<4|
24 uint64(s[11]))<<4|
25 uint64(s[12]))<<4|
26 uint64(s[13]))<<4|
27 uint64(s[14]))<<4 |
28 uint64(s[15]))
29 return r
30 }
31
32
33
34 func determinant(m [4][4]float64) float64 {
35 return m[0][0]*m[1][1]*m[2][2]*m[3][3] -
36 m[0][0]*m[1][1]*m[2][3]*m[3][2] -
37 m[0][0]*m[1][2]*m[2][1]*m[3][3] +
38 m[0][0]*m[1][2]*m[2][3]*m[3][1] +
39 m[0][0]*m[1][3]*m[2][1]*m[3][2] -
40 m[0][0]*m[1][3]*m[2][2]*m[3][1] -
41 m[0][1]*m[1][0]*m[2][2]*m[3][3] +
42 m[0][1]*m[1][0]*m[2][3]*m[3][2] +
43 m[0][1]*m[1][2]*m[2][0]*m[3][3] -
44 m[0][1]*m[1][2]*m[2][3]*m[3][0] -
45 m[0][1]*m[1][3]*m[2][0]*m[3][2] +
46 m[0][1]*m[1][3]*m[2][2]*m[3][0] +
47 m[0][2]*m[1][0]*m[2][1]*m[3][3] -
48 m[0][2]*m[1][0]*m[2][3]*m[3][1] -
49 m[0][2]*m[1][1]*m[2][0]*m[3][3] +
50 m[0][2]*m[1][1]*m[2][3]*m[3][0] +
51 m[0][2]*m[1][3]*m[2][0]*m[3][1] -
52 m[0][2]*m[1][3]*m[2][1]*m[3][0] -
53 m[0][3]*m[1][0]*m[2][1]*m[3][2] +
54 m[0][3]*m[1][0]*m[2][2]*m[3][1] +
55 m[0][3]*m[1][1]*m[2][0]*m[3][2] -
56 m[0][3]*m[1][1]*m[2][2]*m[3][0] -
57 m[0][3]*m[1][2]*m[2][0]*m[3][1] +
58 m[0][3]*m[1][2]*m[2][1]*m[3][0]
59 }
60
61
62
63 func determinantInt(m [4][4]int) int {
64 return m[0][0]*m[1][1]*m[2][2]*m[3][3] -
65 m[0][0]*m[1][1]*m[2][3]*m[3][2] -
66 m[0][0]*m[1][2]*m[2][1]*m[3][3] +
67 m[0][0]*m[1][2]*m[2][3]*m[3][1] +
68 m[0][0]*m[1][3]*m[2][1]*m[3][2] -
69 m[0][0]*m[1][3]*m[2][2]*m[3][1] -
70 m[0][1]*m[1][0]*m[2][2]*m[3][3] +
71 m[0][1]*m[1][0]*m[2][3]*m[3][2] +
72 m[0][1]*m[1][2]*m[2][0]*m[3][3] -
73 m[0][1]*m[1][2]*m[2][3]*m[3][0] -
74 m[0][1]*m[1][3]*m[2][0]*m[3][2] +
75 m[0][1]*m[1][3]*m[2][2]*m[3][0] +
76 m[0][2]*m[1][0]*m[2][1]*m[3][3] -
77 m[0][2]*m[1][0]*m[2][3]*m[3][1] -
78 m[0][2]*m[1][1]*m[2][0]*m[3][3] +
79 m[0][2]*m[1][1]*m[2][3]*m[3][0] +
80 m[0][2]*m[1][3]*m[2][0]*m[3][1] -
81 m[0][2]*m[1][3]*m[2][1]*m[3][0] -
82 m[0][3]*m[1][0]*m[2][1]*m[3][2] +
83 m[0][3]*m[1][0]*m[2][2]*m[3][1] +
84 m[0][3]*m[1][1]*m[2][0]*m[3][2] -
85 m[0][3]*m[1][1]*m[2][2]*m[3][0] -
86 m[0][3]*m[1][2]*m[2][0]*m[3][1] +
87 m[0][3]*m[1][2]*m[2][1]*m[3][0]
88 }
89
90
91
92 func determinantByte(m [4][4]byte) byte {
93 return m[0][0]*m[1][1]*m[2][2]*m[3][3] -
94 m[0][0]*m[1][1]*m[2][3]*m[3][2] -
95 m[0][0]*m[1][2]*m[2][1]*m[3][3] +
96 m[0][0]*m[1][2]*m[2][3]*m[3][1] +
97 m[0][0]*m[1][3]*m[2][1]*m[3][2] -
98 m[0][0]*m[1][3]*m[2][2]*m[3][1] -
99 m[0][1]*m[1][0]*m[2][2]*m[3][3] +
100 m[0][1]*m[1][0]*m[2][3]*m[3][2] +
101 m[0][1]*m[1][2]*m[2][0]*m[3][3] -
102 m[0][1]*m[1][2]*m[2][3]*m[3][0] -
103 m[0][1]*m[1][3]*m[2][0]*m[3][2] +
104 m[0][1]*m[1][3]*m[2][2]*m[3][0] +
105 m[0][2]*m[1][0]*m[2][1]*m[3][3] -
106 m[0][2]*m[1][0]*m[2][3]*m[3][1] -
107 m[0][2]*m[1][1]*m[2][0]*m[3][3] +
108 m[0][2]*m[1][1]*m[2][3]*m[3][0] +
109 m[0][2]*m[1][3]*m[2][0]*m[3][1] -
110 m[0][2]*m[1][3]*m[2][1]*m[3][0] -
111 m[0][3]*m[1][0]*m[2][1]*m[3][2] +
112 m[0][3]*m[1][0]*m[2][2]*m[3][1] +
113 m[0][3]*m[1][1]*m[2][0]*m[3][2] -
114 m[0][3]*m[1][1]*m[2][2]*m[3][0] -
115 m[0][3]*m[1][2]*m[2][0]*m[3][1] +
116 m[0][3]*m[1][2]*m[2][1]*m[3][0]
117 }
118
119 type A []A
120
121
122 func IndexChain1(s A) A {
123 return s[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]
124 }
125
126
127 func IndexChain2(s A, i int) A {
128 return s[i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i]
129 }
130
131
132 func IndexChain3(s []int) int {
133 return s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[s[0]]]]]]]]]]]]]]]]]]]]]
134 }
135
136
137 func righttree(a, b, c, d uint8) uint8 {
138 return a * (b * (c * (d *
139 (a * (b * (c * (d *
140 (a * (b * (c * (d *
141 (a * (b * (c * (d *
142 (a * (b * (c * (d *
143 a * (b * (c * d)))))))))))))))))))))
144
145 }
146
147
148 func lefttree(a, b, c, d uint8) uint8 {
149 return ((((((((((((((((((a * b) * c) * d *
150 a) * b) * c) * d *
151 a) * b) * c) * d *
152 a) * b) * c) * d *
153 a) * b) * c) * d *
154 a) * b) * c) * d)
155 }
156
157 type T struct {
158 Next I
159 }
160
161 type I interface{}
162
163
164 func ChainT(t *T) *T {
165 return t.
166 Next.(*T).
167 Next.(*T).
168 Next.(*T).
169 Next.(*T).
170 Next.(*T).
171 Next.(*T).
172 Next.(*T).
173 Next.(*T).
174 Next.(*T).
175 Next.(*T).
176 Next.(*T).
177 Next.(*T).
178 Next.(*T).
179 Next.(*T).
180 Next.(*T).
181 Next.(*T).
182 Next.(*T).
183 Next.(*T).
184 Next.(*T).
185 Next.(*T)
186 }
187
188 type U struct {
189 Children []J
190 }
191
192 func (u *U) Child(n int) J { return u.Children[n] }
193
194 type J interface {
195 Child(n int) J
196 }
197
198 func ChainUAssert(u *U) *U {
199 return u.Child(0).(*U).
200 Child(0).(*U).
201 Child(0).(*U).
202 Child(0).(*U).
203 Child(0).(*U).
204 Child(0).(*U).
205 Child(0).(*U).
206 Child(0).(*U).
207 Child(0).(*U).
208 Child(0).(*U).
209 Child(0).(*U).
210 Child(0).(*U).
211 Child(0).(*U).
212 Child(0).(*U).
213 Child(0).(*U).
214 Child(0).(*U).
215 Child(0).(*U).
216 Child(0).(*U).
217 Child(0).(*U).
218 Child(0).(*U).
219 Child(0).(*U).
220 Child(0).(*U)
221 }
222
223 func ChainUNoAssert(u *U) *U {
224 return u.Child(0).
225 Child(0).
226 Child(0).
227 Child(0).
228 Child(0).
229 Child(0).
230 Child(0).
231 Child(0).
232 Child(0).
233 Child(0).
234 Child(0).
235 Child(0).
236 Child(0).
237 Child(0).
238 Child(0).
239 Child(0).
240 Child(0).
241 Child(0).
242 Child(0).
243 Child(0).
244 Child(0).
245 Child(0).(*U)
246 }
247
248
249 func ChainAssertIndex(u *U) J {
250 return u.
251 Children[0].(*U).
252 Children[0].(*U).
253 Children[0].(*U).
254 Children[0].(*U).
255 Children[0].(*U).
256 Children[0].(*U).
257 Children[0].(*U).
258 Children[0].(*U).
259 Children[0].(*U).
260 Children[0].(*U).
261 Children[0].(*U).
262 Children[0].(*U).
263 Children[0].(*U).
264 Children[0]
265 }
266
267 type UArr struct {
268 Children [2]J
269 }
270
271 func (u *UArr) Child(n int) J { return u.Children[n] }
272
273 func ChainAssertArrayIndex(u *UArr) J {
274 return u.
275 Children[0].(*UArr).
276 Children[0].(*UArr).
277 Children[0].(*UArr).
278 Children[0].(*UArr).
279 Children[0].(*UArr).
280 Children[0].(*UArr).
281 Children[0].(*UArr).
282 Children[0].(*UArr).
283 Children[0].(*UArr).
284 Children[0].(*UArr).
285 Children[0].(*UArr).
286 Children[0].(*UArr).
287 Children[0].(*UArr).
288 Children[0]
289 }
290
291 type UArrPtr struct {
292 Children *[2]J
293 }
294
295 func (u *UArrPtr) Child(n int) J { return u.Children[n] }
296
297 func ChainAssertArrayptrIndex(u *UArrPtr) J {
298 return u.
299 Children[0].(*UArrPtr).
300 Children[0].(*UArrPtr).
301 Children[0].(*UArrPtr).
302 Children[0].(*UArrPtr).
303 Children[0].(*UArrPtr).
304 Children[0].(*UArrPtr).
305 Children[0].(*UArrPtr).
306 Children[0].(*UArrPtr).
307 Children[0].(*UArrPtr).
308 Children[0].(*UArrPtr).
309 Children[0].(*UArrPtr).
310 Children[0].(*UArrPtr).
311 Children[0].(*UArrPtr).
312 Children[0]
313 }
314
315
316
317 func ChainDiv(a, b int) int {
318 return a / b / a / b / a / b / a / b /
319 a / b / a / b / a / b / a / b /
320 a / b / a / b / a / b / a / b
321 }
322
323 func ChainDivRight(a, b int) int {
324 return a / (b / (a / (b /
325 (a / (b / (a / (b /
326 (a / (b / (a / (b /
327 (a / (b / (a / (b /
328 (a / (b / (a / b))))))))))))))))))
329 }
330
331 func ChainDivConst(a int) int {
332 return a / 17 / 17 / 17 /
333 17 / 17 / 17 / 17 /
334 17 / 17 / 17 / 17
335 }
336
337 func ChainMulBytes(a, b, c byte) byte {
338 return a*(a*(a*(a*(a*(a*(a*(a*(a*b+c)+c)+c)+c)+c)+c)+c)+c) + c
339 }
340
341 func ChainCap() {
342 select {
343 case <-make(chan int, cap(make(chan int, cap(make(chan int, cap(make(chan int, cap(make(chan int))))))))):
344 default:
345 }
346 }
347
View as plain text