tagged release 0.6.4
[parrot.git] / languages / APL / t / dyadic.t
blobb5520044f15f56ca8c615dbff8a272adb243bee5
1 #!perl
3 # Copyright (C) 2006-2007, The Perl Foundation.
4 # $Id$
6 use strict;
7 use warnings;
8 use lib qw(APL . lib ../lib ../../lib ../../../lib);
9 use t::APL tests => 100;
11 diag "need more tests to test int <op> int, float <op> float, etc.";
13 run_apl_is();
15 __DATA__
17 === plus scalar (int/int)
18 --- APL: 2+2
19 --- out: 4
21 === plus scalar (int/float)
22 --- APL: 2+3.14
23 --- out: 5.14
25 === plus vector, float
26 --- APL: 1 2 3 4+3.14
27 --- out: 4.14 5.14 6.14 7.14
29 === plus float, vector
30 --- APL: 3.14+1 2 3 4
31 --- out: 4.14 5.14 6.14 7.14
33 === plus vector
34 --- APL: 1 2 3 4+1.1 2.2 3.3 4.4
35 --- out: 2.1 4.2 6.3 8.4
37 === plus domain
38 --- APL: 1+'TEA'
39 --- out: DOMAIN ERROR
41 === minus scalar (int/int)
42 --- APL: 2−3
43 --- out: ⁻1
45 === minus scalar
46 --- APL: 2−3.14
47 --- out: ⁻1.14
49 === minus vector, float
50 --- APL: 1 2 3 4−3.14
51 --- out: ⁻2.14 ⁻1.14 ⁻0.14 0.86
53 === minus float, vector
54 --- APL: 3.14−1 2 3 4
55 --- out: 2.14 1.14 0.14 ⁻0.86
57 === minus vector
58 --- APL: 1 2 3 4−1.1 2.2 3.3 4.4
59 --- out: ⁻0.1 ⁻0.2 ⁻0.3 ⁻0.4
61 === minus domain
62 --- APL: 2−'TEA'
63 --- out: DOMAIN ERROR
65 === times scalar (int/int)
66 --- APL: 2×2
67 --- out: 4
69 === times scalar
70 --- APL: 2×3.14
71 --- out: 6.28
73 === times vector, float
74 --- APL: 1 2 3 4×3.14
75 --- out: 3.14 6.28 9.42 12.56
77 === times float, vector
78 --- APL: 3.14×1 2 3 4
79 --- out: 3.14 6.28 9.42 12.56
81 === times vector
82 --- APL: 1 2 3 4×1.1 2.2 3.3 4.4
83 --- out: 1.1 4.4 9.9 17.6
85 === times domain
86 --- APL: 2×'TEA'
87 --- out: DOMAIN ERROR
89 === divide scalar
90 --- APL: 2.1÷64
91 --- out: 0.0328125
93 === divide vector, float
94 --- APL: 1.1 2.2 3.3 4.4÷64
95 --- out: 0.0171875 0.034375 0.0515625 0.06875
97 === divide float, vector
98 --- APL: 24÷1 2 3 4 6
99 --- out: 24 12 8 6 4
101 === divide vector
102 --- APL: 1.1 2.2 3.3 4.4÷1 2 3 4
103 --- out: 1.1 1.1 1.1 1.1
105 === divide domain
106 --- APL: 2÷'TEA'
107 --- out: DOMAIN ERROR
109 === maximum scalar
110 --- APL: 2.1⌈2
111 --- out: 2.1
113 === maximum vector, float
114 --- APL: 1.1 2.2 3.3 4.4⌈3.1
115 --- out: 3.1 3.1 3.3 4.4
117 === maximum float, vector
118 --- APL: 3.1⌈1.1 2.2 3.3 4.4
119 --- out: 3.1 3.1 3.3 4.4
121 === maximum vector
122 --- APL: 1.1 2.2 3.3 4.4⌈1.5 2 3.5 4
123 --- out: 1.5 2.2 3.5 4.4
125 === maximum domain
126 --- APL: 2⌈'TEA'
127 --- out: DOMAIN ERROR
129 === minimum scalar
130 --- APL: 2.1⌊2
131 --- out: 2
133 === minimum vector, float
134 --- APL: 1.1 2.2 3.3 4.4⌊3.1
135 --- out: 1.1 2.2 3.1 3.1
137 === minimum float, vector
138 --- APL: 3.1⌊1.1 2.2 3.3 4.4
139 --- out: 1.1 2.2 3.1 3.1
141 === minimum vector
142 --- APL: 1.1 2.2 3.3 4.4⌊1.5 2 3.5 4
143 --- out: 1.1 2 3.3 4
145 === minimum domain
146 --- APL: 2⌊'TEA'
147 --- out: DOMAIN ERROR
149 === power scalar
150 --- APL: 2*3
151 --- out: 8
153 === power vector, float
154 --- APL: 1.1 2.2 3.3 4.4*2
155 --- out: 1.21 4.84 10.89 19.36
157 === power float, vector
158 --- APL: 2*0 1 2 3 4 5
159 --- out: 1 2 4 8 16 32
161 === power vector
162 --- APL: 1.1 2.2 3.3 4.4*1 2 1 2
163 --- out: 1.1 4.84 3.3 19.36
165 === power domain (character)
166 --- APL: 2*'TEA'
167 --- out: DOMAIN ERROR
169 === power domain (negative sqrt)
170 --- APL: ⁻9*.5
171 --- out: DOMAIN ERROR
173 === logarithm scalar
174 --- APL: 1000⍟10
175 --- out: 3
177 === residue 1
178 --- APL: 0|0
179 --- out: 0
181 === residue 2
182 --- APL: 0|2.2
183 --- out: 2.2
185 === residue 3
186 --- APL: 3|10
187 --- out: 1
189 === residue 4
190 --- APL: ⁻3|10
191 --- out: 1
193 === residue 4
194 --- APL: ⁻3|⁻10
195 --- out: 2
197 === residue N
198 --- APL: 0|⁻9
199 --- out: DOMAIN ERROR
201 === binomial coefficient 1
202 --- APL: 2!5
203 --- out: 10
205 === binomial coefficient 2
206 --- APL: 3!5
207 --- out: 10
209 === circular 0
210 --- APL: 0○.75
211 --- out: 0.661438
213 === circular 1
214 --- APL: 1○.75
215 --- out: 0.681639
217 === circular 2
218 --- APL: 2○.75
219 --- out: 0.731689
221 === circular 3
222 --- APL: 3○.75
223 --- out: 0.931596
225 === circular 4
226 --- APL: 4○.75
227 --- out: 1.25
229 === circular 5
230 --- APL: 5○.75
231 --- out: 0.822317
233 === circular 6
234 --- APL: 6○.75
235 --- out: 1.29468
237 === circular 7
238 --- APL: 7○.75
239 --- out: 0.635149
241 === circular ⁻1
242 --- APL: ⁻1○.75
243 --- out: 0.848062
245 === circular ⁻2
246 --- APL: ⁻2○.75
247 --- out: 0.722734
249 === circular ⁻3
250 --- APL: ⁻3○.75
251 --- out: 0.643501
253 === circular ⁻4
254 --- APL: ⁻4○.75
255 --- out: 0.661438
257 === circular ⁻5
258 --- APL: ⁻5○.75
259 --- out: 0.693147
261 === circular ⁻6
262 --- APL: ⁻6○3
263 --- out: 1.76275
265 === circular ⁻7
266 --- APL: ⁻7○.75
267 --- out: 0.972955
269 === and 0
270 --- APL: 0∧0
271 --- out: 0
273 === and 1
274 --- APL: 0∧1
275 --- out: 0
277 === and 2
278 --- APL: 1∧0
279 --- out: 0
281 === and 3
282 --- APL: 1∧1
283 --- out: 1
285 === or 0
286 --- APL: 0∨0
287 --- out: 0
289 === or 1
290 --- APL: 0∨1
291 --- out: 1
293 === or 2
294 --- APL: 1∨0
295 --- out: 1
297 === or 3
298 --- APL: 1∨1
299 --- out: 1
301 === nand 0
302 --- APL: 0⍲0
303 --- out: 1
305 === nand 1
306 --- APL: 0⍲1
307 --- out: 1
309 === nand 2
310 --- APL: 1⍲0
311 --- out: 1
313 === nand 3
314 --- APL: 1⍲1
315 --- out: 0
317 === nor 0
318 --- APL: 0⍱0
319 --- out: 1
321 === nor 1
322 --- APL: 0⍱1
323 --- out: 0
325 === nor 2
326 --- APL: 1⍱0
327 --- out: 0
329 === nor 3
330 --- APL: 1⍱1
331 --- out: 0
333 === less 0
334 --- APL: 1<2
335 --- out: 1
337 === less 1
338 --- APL: 2<1
339 --- out: 0
341 === less 2
342 --- APL: 1<1
343 --- out: 0
345 === not greater 0
346 --- APL: 1≤2
347 --- out: 1
349 === not greater 1
350 --- APL: 2≤1
351 --- out: 0
353 === not greater 2
354 --- APL: 1≤1
355 --- out: 1
357 === equal 0
358 --- APL: 1=2
359 --- out: 0
361 === equal 1
362 --- APL: 2=1
363 --- out: 0
365 === equal 2
366 --- APL: 1=1
367 --- out: 1
369 === not less than 0
370 --- APL: 1≥2
371 --- out: 0
373 === not less than 1
374 --- APL: 2≥1
375 --- out: 1
377 === not less than 2
378 --- APL: 1≥1
379 --- out: 1
381 === greater 0
382 --- APL: 1>2
383 --- out: 0
385 === greater 1
386 --- APL: 2>1
387 --- out: 1
389 === greater 2
390 --- APL: 1>1
391 --- out: 0
393 === not equal 0
394 --- APL: 1≠2
395 --- out: 1
397 === not equal 1
398 --- APL: 2≠1
399 --- out: 1
401 === not equal 2
402 --- APL: 1≠1
403 --- out: 0
405 === deal
406 --- excuse: need tests
407 --- todo
409 === quad output, midstream.
410 --- APL: 2+⎕←3+4
411 --- out
415 === quad output, variable
416 --- todo
417 --- APL
418 ⎕← A ← 2+2
420 --- out