multiarray 0.22.0 → 0.23.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/Rakefile +1 -1
  2. data/lib/multiarray.rb +53 -16
  3. data/lib/multiarray/bool.rb +1 -1
  4. data/lib/multiarray/complex.rb +76 -68
  5. data/lib/multiarray/components.rb +11 -10
  6. data/lib/multiarray/composite.rb +1 -1
  7. data/lib/multiarray/diagonal.rb +11 -12
  8. data/lib/multiarray/element.rb +3 -3
  9. data/lib/multiarray/elementwise.rb +14 -14
  10. data/lib/multiarray/field.rb +380 -0
  11. data/lib/multiarray/float.rb +10 -10
  12. data/lib/multiarray/gcccache.rb +1 -1
  13. data/lib/multiarray/gcccontext.rb +35 -54
  14. data/lib/multiarray/gccfunction.rb +12 -19
  15. data/lib/multiarray/gcctype.rb +1 -1
  16. data/lib/multiarray/gccvalue.rb +63 -43
  17. data/lib/multiarray/histogram.rb +17 -19
  18. data/lib/multiarray/index.rb +7 -8
  19. data/lib/multiarray/inject.rb +11 -12
  20. data/lib/multiarray/int.rb +12 -11
  21. data/lib/multiarray/integral.rb +11 -12
  22. data/lib/multiarray/lambda.rb +23 -18
  23. data/lib/multiarray/list.rb +1 -1
  24. data/lib/multiarray/lookup.rb +18 -13
  25. data/lib/multiarray/lut.rb +13 -16
  26. data/lib/multiarray/malloc.rb +1 -1
  27. data/lib/multiarray/mask.rb +11 -8
  28. data/lib/multiarray/methods.rb +10 -10
  29. data/lib/multiarray/multiarray.rb +15 -44
  30. data/lib/multiarray/node.rb +64 -138
  31. data/lib/multiarray/object.rb +2 -6
  32. data/lib/multiarray/operations.rb +116 -134
  33. data/lib/multiarray/pointer.rb +7 -19
  34. data/lib/multiarray/random.rb +11 -8
  35. data/lib/multiarray/rgb.rb +53 -53
  36. data/lib/multiarray/sequence.rb +11 -496
  37. data/lib/multiarray/shortcuts.rb +4 -4
  38. data/lib/multiarray/store.rb +14 -11
  39. data/lib/multiarray/unmask.rb +10 -7
  40. data/lib/multiarray/variable.rb +11 -3
  41. data/test/tc_bool.rb +0 -8
  42. data/test/tc_compile.rb +72 -0
  43. data/test/tc_float.rb +0 -8
  44. data/test/tc_int.rb +0 -8
  45. data/test/tc_lazy.rb +22 -3
  46. data/test/tc_multiarray.rb +100 -126
  47. data/test/tc_object.rb +0 -16
  48. data/test/tc_rgb.rb +0 -16
  49. data/test/tc_sequence.rb +151 -165
  50. data/test/ts_multiarray.rb +2 -0
  51. metadata +7 -4
data/test/tc_object.rb CHANGED
@@ -53,22 +53,6 @@ class TC_Object < Test::Unit::TestCase
53
53
  assert_equal 1, O.indgen( 1, 2 )
54
54
  end
55
55
 
56
- def test_object_typecode
57
- assert_equal O, O.typecode
58
- end
59
-
60
- def test_object_dimension
61
- assert_equal 0, O.dimension
62
- end
63
-
64
- def test_object_shape
65
- assert_equal [], O.shape
66
- end
67
-
68
- def test_object_size
69
- assert_equal 1, O.size
70
- end
71
-
72
56
  def test_inspect
73
57
  assert_equal 'OBJECT(42)', O( 42 ).inspect
74
58
  end
data/test/tc_rgb.rb CHANGED
@@ -88,22 +88,6 @@ class TC_RGB < Test::Unit::TestCase
88
88
  assert_equal RGB( 1, 2, 3 ), INTRGB.indgen( RGB( 1, 2, 3 ), 1 )
89
89
  end
90
90
 
91
- def test_rgb_typecode
92
- assert_equal BYTERGB, BYTERGB.typecode
93
- end
94
-
95
- def test_rgb_dimension
96
- assert_equal 0, SFLOATRGB.dimension
97
- end
98
-
99
- def test_rgb_shape
100
- assert_equal [], SFLOATRGB.shape
101
- end
102
-
103
- def test_rgb_size
104
- assert_equal 1, SINTRGB.size
105
- end
106
-
107
91
  def test_inspect
108
92
  assert_equal 'RGB(1,2,3)', RGB( 1, 2, 3 ).inspect
109
93
  end
data/test/tc_sequence.rb CHANGED
@@ -55,47 +55,41 @@ class TC_Sequence < Test::Unit::TestCase
55
55
  end
56
56
 
57
57
  def test_sequence_inspect
58
- assert_equal 'Sequence(OBJECT,3)', S( O, 3 ).inspect
58
+ assert_equal 'Sequence(OBJECT)', S(O).inspect
59
59
  end
60
60
 
61
61
  def test_sequence_to_s
62
- assert_equal 'Sequence(OBJECT,3)', S( O, 3 ).to_s
63
- end
64
-
65
- def test_sequence_default
66
- assert_equal [ nil ] * 3, S( O, 3 ).default.to_a
67
- assert_equal [ 0 ] * 3, S( I, 3 ).default.to_a
68
- assert_equal [ C( 0, 0, 0 ) ] * 3, S( C, 3 ).default.to_a
62
+ assert_equal 'Sequence(OBJECT)', S(O).to_s
69
63
  end
70
64
 
71
65
  def test_sequence_indgen
72
- assert_equal S( I, 3 )[ 0, 1, 2 ], S( I, 3 ).indgen
73
- assert_equal S( I, 3 )[ 1, 2, 3 ], S( I, 3 ).indgen( 1 )
74
- assert_equal S( I, 3 )[ 0, 2, 4 ], S( I, 3 ).indgen( 0, 2 )
75
- assert_equal S( I, 3 )[ 1, 3, 5 ], S( I, 3 ).indgen( 1, 2 )
76
- assert_equal S( C, 2 )[ C( 1, 2, 3 ), C( 3, 5, 7 ) ],
77
- S( C, 2 ).indgen( C( 1, 2, 3 ), C( 2, 3, 4 ) )
66
+ assert_equal S(I)[0, 1, 2], S(I).indgen(3)
67
+ assert_equal S(I)[1, 2, 3], S(I).indgen(3, 1)
68
+ assert_equal S(I)[0, 2, 4], S(I).indgen(3, 0, 2)
69
+ assert_equal S(I)[1, 3, 5], S(I).indgen(3, 1, 2)
70
+ assert_equal S(C)[C( 1, 2, 3 ), C( 3, 5, 7 )],
71
+ S(C).indgen(2, C(1, 2, 3), C(2, 3, 4))
78
72
  end
79
73
 
80
74
  def test_sequence_random
81
- r = S( O, 100 ).random( 10 ).range
75
+ r = S(O).random(100, 10).range
82
76
  assert r.begin >= 0
83
77
  assert r.end < 10
84
- r = S( I, 100 ).random( 10 ).range
78
+ r = S(I).random(100, 10).range
85
79
  assert r.begin >= 0
86
80
  assert r.end < 10
87
- r = S( F, 100 ).random( 10.0 ).range
81
+ r = S(F).random(100, 10.0).range
88
82
  assert r.begin >= 0
89
83
  assert r.end < 10
90
84
  end
91
85
 
92
86
  def test_sequence_at
93
- assert_equal "Sequence(INT,3):\n[ 1, 2, 3 ]",
94
- S( I, 3 )[ 1, 2, 3 ].inspect
95
- assert_equal "Sequence(OBJECT,3):\n[ 1, 2, 3 ]",
96
- S( O, 3 )[ 1, 2, 3 ].inspect
97
- assert_equal "Sequence(INTRGB,2):\n[ RGB(1,2,3), RGB(4,5,6) ]",
98
- S( C, 2 )[ C( 1, 2, 3 ), C( 4, 5, 6 ) ].inspect
87
+ assert_equal "Sequence(INT):\n[ 1, 2, 3 ]",
88
+ S(I)[ 1, 2, 3 ].inspect
89
+ assert_equal "Sequence(OBJECT):\n[ 1, 2, 3 ]",
90
+ S(O)[ 1, 2, 3 ].inspect
91
+ assert_equal "Sequence(INTRGB):\n[ RGB(1,2,3), RGB(4,5,6) ]",
92
+ S(C)[ C( 1, 2, 3 ), C( 4, 5, 6 ) ].inspect
99
93
  end
100
94
 
101
95
  def test_sequence_match
@@ -108,29 +102,20 @@ class TC_Sequence < Test::Unit::TestCase
108
102
  end
109
103
 
110
104
  def test_sequence_typecode
111
- assert_equal O, S( O, 3 ).typecode
112
- assert_equal B, S( B, 3 ).typecode
113
- assert_equal I, S( I, 3 ).typecode
114
- assert_equal C, S( C, 3 ).typecode
115
- assert_equal X, S( X, 3 ).typecode
105
+ assert_equal O, S(O).typecode
106
+ assert_equal B, S(B).typecode
107
+ assert_equal I, S(I).typecode
108
+ assert_equal C, S(C).typecode
109
+ assert_equal X, S(X).typecode
116
110
  end
117
111
 
118
112
  def test_sequence_dimension
119
- assert_equal 1, S( O, 3 ).dimension
120
- end
121
-
122
- def test_sequence_shape
123
- assert_equal [ 3 ], S( O, 3 ).shape
124
- end
125
-
126
- def test_sequence_size
127
- assert_equal 3, S( O, 3 ).size
128
- assert_equal 3, S( C, 3 ).size
113
+ assert_equal 1, S(O).dimension
129
114
  end
130
115
 
131
116
  def test_inspect
132
- assert_equal "Sequence(OBJECT,0):\n[]", S[].inspect
133
- assert_equal "Sequence(OBJECT,3):\n[ :a, 2, 3 ]", S[ :a, 2, 3 ].inspect
117
+ assert_equal "Sequence(OBJECT):\n[]", S[].inspect
118
+ assert_equal "Sequence(OBJECT):\n[ :a, 2, 3 ]", S[ :a, 2, 3 ].inspect
134
119
  end
135
120
 
136
121
  def test_dup
@@ -141,8 +126,8 @@ class TC_Sequence < Test::Unit::TestCase
141
126
  end
142
127
 
143
128
  def test_typecode
144
- assert_equal O, S.object( 3 ).typecode
145
- assert_equal I, S.int( 3 ).typecode
129
+ assert_equal O, S.object(3).typecode
130
+ assert_equal I, S.int(3).typecode
146
131
  end
147
132
 
148
133
  def test_dimension
@@ -168,8 +153,8 @@ class TC_Sequence < Test::Unit::TestCase
168
153
  end
169
154
 
170
155
  def test_at_assign
171
- [ S( O, 3 ), S( I, 3 ) ].each do |t|
172
- s = t.new
156
+ [ S(O), S(I) ].each do |t|
157
+ s = t.new 3
173
158
  for i in 0 ... 3
174
159
  assert_equal i + 1, s[ i ] = i + 1
175
160
  end
@@ -185,8 +170,8 @@ class TC_Sequence < Test::Unit::TestCase
185
170
  end
186
171
 
187
172
  def test_slice
188
- [ S( O, 4 ), S( I, 4 ) ].each do |t|
189
- s = t.indgen( 1 )[]
173
+ [ S(O), S(I) ].each do |t|
174
+ s = t.indgen(4, 1)[]
190
175
  assert_equal [ 2, 3 ], s[ 1 .. 2 ].to_a
191
176
  assert_equal [ 2, 3 ], s[ 1 ... 3 ].to_a
192
177
  s[ 1 .. 2 ] = 0
@@ -214,7 +199,7 @@ class TC_Sequence < Test::Unit::TestCase
214
199
  end
215
200
 
216
201
  def test_view
217
- [ S( O, 4 ), S( I, 4 ) ].each do |t|
202
+ [ S(O), S(I) ].each do |t|
218
203
  s = t[ 1, 2, 3, 4 ]
219
204
  v = s[ 1 .. 2 ]
220
205
  v[] = 0
@@ -233,7 +218,7 @@ class TC_Sequence < Test::Unit::TestCase
233
218
  end
234
219
 
235
220
  def test_r_g_b
236
- [ S( O, 3 ), S( C, 3 ) ].each do |t|
221
+ [ S(O), S(C) ].each do |t|
237
222
  assert_equal [ 1, 4, 5 ], t[ C( 1, 2, 3 ), 4, 5 ].r.to_a
238
223
  assert_equal [ 2, 4, 5 ], t[ C( 1, 2, 3 ), 4, 5 ].g.to_a
239
224
  assert_equal [ 3, 4, 5 ], t[ C( 1, 2, 3 ), 4, 5 ].b.to_a
@@ -244,7 +229,7 @@ class TC_Sequence < Test::Unit::TestCase
244
229
  s = t[ 0, 0, 0 ]
245
230
  assert_equal 1, s.r = 1
246
231
  assert_equal S[ 1, 2, 3 ], s.g = S[ 1, 2, 3 ]
247
- assert_equal S( O, 3 )[ 4, 5, 6 ], s.b = S( O, 3 )[ 4, 5, 6 ]
232
+ assert_equal S(O)[ 4, 5, 6 ], s.b = S(O)[ 4, 5, 6 ]
248
233
  assert_equal t[ C( 1, 1, 4 ), C( 1, 2, 5 ), C( 1, 3, 6 ) ], s
249
234
  assert_raise( RuntimeError ) { s.r = S[ 1, 2 ] }
250
235
  assert_raise( RuntimeError ) { s.g = S[ 1, 2 ] }
@@ -257,7 +242,7 @@ class TC_Sequence < Test::Unit::TestCase
257
242
  end
258
243
 
259
244
  def test_real_imag
260
- [ S( O, 2 ), S( X, 2 ) ].each do |t|
245
+ [ S(O), S(X) ].each do |t|
261
246
  assert_equal [ 1, 3 ], t[ X( 1, 2 ), 3 ].real.to_a
262
247
  assert_equal [ 2, 0 ], t[ X( 1, 2 ), 3 ].imag.to_a
263
248
  assert_equal [ 1, 3 ], t[ X( 1, 2 ), 3 ].collect { |x| x.real }.to_a
@@ -289,7 +274,7 @@ class TC_Sequence < Test::Unit::TestCase
289
274
  assert_equal C( 7, 8, 9 ), S[ 1, 2, 3 ].inject( C( 1, 2, 3 ) ) { |a,b| a + b }
290
275
  assert_equal C( 4, 6, 9 ), S[ C( 1, 2, 3 ), C( 2, 3, 5 ) ].
291
276
  inject( 1 ) { |a,b| a + b }
292
- assert_equal X( -5, 10 ), S( X, 2 )[ X( 1, 2 ), X( 3, 4 ) ].inject { |a,b| a * b }
277
+ assert_equal X( -5, 10 ), S(X)[ X( 1, 2 ), X( 3, 4 ) ].inject { |a,b| a * b }
293
278
  assert_raise( RuntimeError ) { S[].inject { |a,b| a + b } }
294
279
  assert_equal 0, S[].inject( 0 ) { |a,b| a + b }
295
280
  end
@@ -307,7 +292,7 @@ class TC_Sequence < Test::Unit::TestCase
307
292
  end
308
293
 
309
294
  def test_sum
310
- [ S( O, 3 ), S( I, 3 ) ].each do |t|
295
+ [ S(O), S(I) ].each do |t|
311
296
  assert_equal 6, t[ 1, 2, 3 ].sum
312
297
  assert_equal 6, sum { |i| t[ 1, 2, 3 ][ i ] }
313
298
  assert_equal [ 1, 2, 3 ], sum { || t[ 1, 2, 3 ] }.to_a
@@ -321,17 +306,17 @@ class TC_Sequence < Test::Unit::TestCase
321
306
  end
322
307
 
323
308
  def test_min
324
- [ O, I ].each do |t|
325
- assert_equal 2, S( t, 3 )[ 4, 2, 3 ].min
309
+ [O, I].each do |t|
310
+ assert_equal 2, S(t)[4, 2, 3].min
326
311
  end
327
- assert_equal C( 1, 2, 1 ), S[ C( 1, 2, 3 ), C( 3, 2, 1 ) ].min
312
+ assert_equal C(1, 2, 1), S[C(1, 2, 3), C(3, 2, 1)].min
328
313
  end
329
314
 
330
315
  def test_max
331
- [ O, I ].each do |t|
332
- assert_equal 4, S( t, 3 )[ 4, 2, 3 ].max
316
+ [O, I].each do |t|
317
+ assert_equal 4, S(t)[4, 2, 3].max
333
318
  end
334
- assert_equal C( 3, 2, 3 ), S[ C( 1, 2, 3 ), C( 3, 2, 1 ) ].max
319
+ assert_equal C(3, 2, 3), S[C(1, 2, 3), C(3, 2, 1)].max
335
320
  end
336
321
 
337
322
  def test_between
@@ -349,26 +334,26 @@ class TC_Sequence < Test::Unit::TestCase
349
334
  end
350
335
 
351
336
  def test_sum
352
- [ S( O, 3 ), S( I, 3 ) ].each do |t|
337
+ [ S(O), S(I) ].each do |t|
353
338
  assert_equal 9, t[ 4, 2, 3 ].sum
354
339
  end
355
340
  assert_equal C( 4, 4, 4 ), S[ C( 1, 2, 3 ), C( 3, 2, 1 ) ].sum
356
341
  end
357
342
 
358
343
  def test_convolve
359
- [ O, I ].each do |t|
360
- assert_equal S( t, 5 )[ 2, 3, 0, 0, 0 ],
361
- S( t, 5 )[ 1, 0, 0, 0, 0 ].convolve( S( t, 3 )[ 1, 2, 3 ] )
362
- assert_equal S( t, 5 )[ 1, 2, 3, 0, 0 ],
363
- S( t, 5 )[ 0, 1, 0, 0, 0 ].convolve( S( t, 3 )[ 1, 2, 3 ] )
364
- assert_equal S( t, 5 )[ 0, 1, 2, 3, 0 ],
365
- S( t, 5 )[ 0, 0, 1, 0, 0 ].convolve( S( t, 3 )[ 1, 2, 3 ] )
366
- assert_equal S( t, 5 )[ 0, 0, 1, 2, 3 ],
367
- S( t, 5 )[ 0, 0, 0, 1, 0 ].convolve( S( t, 3 )[ 1, 2, 3 ] )
368
- assert_equal S( t, 5 )[ 0, 0, 0, 1, 2 ],
369
- S( t, 5 )[ 0, 0, 0, 0, 1 ].convolve( S( t, 3 )[ 1, 2, 3 ] )
370
- assert_equal S( t, 4 )[ 1, 2, 3, 0 ],
371
- S( t, 4 )[ 0, 1, 0, 0 ].convolve( S( t, 3 )[ 1, 2, 3 ] )
344
+ [O, I].each do |t|
345
+ assert_equal S(t)[2, 3, 0, 0, 0],
346
+ S(t)[1, 0, 0, 0, 0].convolve( S(t)[ 1, 2, 3 ] )
347
+ assert_equal S(t)[1, 2, 3, 0, 0],
348
+ S(t)[0, 1, 0, 0, 0].convolve( S(t)[ 1, 2, 3 ] )
349
+ assert_equal S(t)[0, 1, 2, 3, 0],
350
+ S(t)[0, 0, 1, 0, 0].convolve( S(t)[ 1, 2, 3 ] )
351
+ assert_equal S(t)[0, 0, 1, 2, 3],
352
+ S(t)[0, 0, 0, 1, 0].convolve( S(t)[ 1, 2, 3 ] )
353
+ assert_equal S(t)[0, 0, 0, 1, 2],
354
+ S(t)[0, 0, 0, 0, 1].convolve( S(t)[ 1, 2, 3 ] )
355
+ assert_equal S(t)[1, 2, 3, 0],
356
+ S(t)[0, 1, 0, 0].convolve( S(t)[ 1, 2, 3 ] )
372
357
  end
373
358
  assert_equal S[ C( 1, 0, 0 ), C( 2, 1, 0 ), C( 3, 2, 1 ), C( 0, 3, 2 ),
374
359
  C( 0, 0, 3 ) ],
@@ -377,19 +362,19 @@ class TC_Sequence < Test::Unit::TestCase
377
362
  end
378
363
 
379
364
  def test_erode
380
- [ O, I ].each do |t|
381
- assert_equal [ 1, 1, 1, 2, 2, 2 ], S( t, 6 )[ 1, 1, 2, 3, 2, 2 ].erode.to_a
365
+ [O, I].each do |t|
366
+ assert_equal [1, 1, 1, 2, 2, 2], S(t)[1, 1, 2, 3, 2, 2].erode.to_a
382
367
  end
383
- assert_equal S[ false, false, true, false, false ],
384
- S[ false, true, true, true, false ].erode
368
+ assert_equal S[false, false, true, false, false],
369
+ S[false, true, true, true, false].erode
385
370
  end
386
371
 
387
372
  def test_dilate
388
- [ O, I ].each do |t|
389
- assert_equal [ 1, 2, 3, 3, 3, 2 ], S( t, 6 )[ 1, 1, 2, 3, 2, 2 ].dilate.to_a
373
+ [O, I].each do |t|
374
+ assert_equal [1, 2, 3, 3, 3, 2], S(t)[1, 1, 2, 3, 2, 2].dilate.to_a
390
375
  end
391
- assert_equal S[ false, true, true, true, false ],
392
- S[ false, false, true, false, false ].dilate
376
+ assert_equal S[false, true, true, true, false],
377
+ S[false, false, true, false, false].dilate
393
378
  end
394
379
 
395
380
  def test_sobel
@@ -397,76 +382,75 @@ class TC_Sequence < Test::Unit::TestCase
397
382
  end
398
383
 
399
384
  def test_histogram
400
- [ O, I ].each do |t|
401
- assert_equal [ 0, 1, 2, 1, 1 ],
402
- S( t, 5 )[ 1, 2, 2, 3, 4 ].histogram( 5, :weight => 1 ).to_a
403
- assert_equal S( t, 5 )[ 0, 1, 2, 3, 0 ],
404
- S( t, 3 )[ 1, 3, 2 ].histogram( 5, :weight => S( t, 3 )[ 1, 3, 2 ] )
405
- assert_equal [ 0, 1, 1, 0 ],
406
- S( t, 2 )[ 1.0, 2.0 ].histogram( 4, :weight => 1 ).to_a
385
+ [O, I].each do |t|
386
+ assert_equal [0, 1, 2, 1, 1],
387
+ S(t)[1, 2, 2, 3, 4].histogram(5, :weight => 1).to_a
388
+ assert_equal S(t)[0, 1, 2, 3, 0],
389
+ S(t)[1, 3, 2 ].histogram(5, :weight => S(t)[1, 3, 2] )
390
+ assert_equal [0, 1, 1, 0],
391
+ S(t)[1.0, 2.0].histogram(4, :weight => 1).to_a
407
392
  end
408
- assert_raise( RuntimeError ) { S[ -1, 0, 1 ].histogram 3 }
409
- assert_raise( RuntimeError ) { S[ 1, 2, 3 ].histogram 3 }
410
- assert_raise( RuntimeError ) { S[ 0, 0, 0 ].histogram 3, 2 }
411
- assert_raise( RuntimeError ) { S[ 0, 1 ].histogram 3, :weight => S[ 0 ] }
393
+ assert_raise(RuntimeError) { S[-1, 0, 1].histogram 3 }
394
+ assert_raise(RuntimeError) { S[1, 2, 3].histogram 3 }
395
+ assert_raise(RuntimeError) { S[0, 0, 0].histogram 3, 2 }
396
+ assert_raise(RuntimeError) { S[0, 1].histogram 3, :weight => S[0] }
412
397
  end
413
398
 
414
399
  def test_lut
415
- [ O, I ].each do |t|
416
- assert_equal S( t, 4 )[ 3, 1, 2, 1 ],
417
- S( t, 4 )[ 0, 2, 1, 2 ].lut( S( t, 3 )[ 3, 2, 1 ] )
418
- assert_equal S( t, 2 )[ 2, 1 ],
419
- S( t, 2 )[ 1.0, 2.0 ].lut( S( t, 3 )[ 3, 2, 1 ] )
400
+ [O, I].each do |t|
401
+ assert_equal S(t)[3, 1, 2, 1],
402
+ S(t)[0, 2, 1, 2].lut(S(t)[3, 2, 1])
403
+ assert_equal S(t)[2, 1],
404
+ S(t)[1.0, 2.0].lut(S(t)[3, 2, 1])
420
405
  end
421
- assert_raise( RuntimeError ) { S[ -1, 0 ].lut S[ 0, 1 ] }
422
- assert_raise( RuntimeError ) { S[ 1, 2 ].lut S[ 0, 1 ] }
406
+ assert_raise( RuntimeError ) { S[-1, 0].lut S[0, 1] }
407
+ assert_raise( RuntimeError ) { S[1, 2].lut S[0, 1] }
423
408
  end
424
409
 
425
410
  def test_warp
426
411
  [ O, I ].each do |t1|
427
412
  [ O, I ].each do |t2|
428
- assert_equal S( t1, 3 )[ 1, 2, t1.default ],
429
- S( t1, 2 )[ 1, 2 ].warp( S( t2, 3 )[ 0, 1, 2 ] )
413
+ assert_equal S(t1)[1, 2, t1.default], S(t1)[1, 2].warp(S(t2)[0, 1, 2])
430
414
  end
431
415
  end
432
416
  end
433
417
 
434
418
  def test_flip
435
419
  [ O, I ].each do |t|
436
- assert_equal S( t, 3 )[ 3, 2, 1 ], S( t, 3 )[ 1, 2, 3 ].flip( 0 )
420
+ assert_equal S(t)[3, 2, 1], S(t)[1, 2, 3].flip( 0 )
437
421
  end
438
422
  end
439
423
 
440
424
  def test_shift
441
425
  [ O, I ].each do |t|
442
- assert_equal S( t, 3 )[ 1, 2, 3 ], S( t, 3 )[ 1, 2, 3 ].shift( 0 )
443
- assert_equal S( t, 3 )[ 3, 1, 2 ], S( t, 3 )[ 1, 2, 3 ].shift( 1 )
444
- assert_equal S( t, 3 )[ 2, 3, 1 ], S( t, 3 )[ 1, 2, 3 ].shift( 2 )
426
+ assert_equal S(t)[1, 2, 3], S(t)[1, 2, 3].shift(0)
427
+ assert_equal S(t)[3, 1, 2], S(t)[1, 2, 3].shift(1)
428
+ assert_equal S(t)[2, 3, 1], S(t)[1, 2, 3].shift(2)
445
429
  end
446
430
  end
447
431
 
448
432
  def test_downsample
449
433
  [ O, I ].each do |t|
450
- assert_equal S( t, 2 )[ 2, 4 ],
451
- S( t, 4 )[ 1, 2, 3, 4 ].downsample( 2 )
452
- assert_equal S( t, 2 )[ 1, 3 ],
453
- S( t, 4 )[ 1, 2, 3, 4 ].downsample( 2, :offset => [ 0 ] )
434
+ assert_equal S(t)[2, 4],
435
+ S(t)[1, 2, 3, 4].downsample(2)
436
+ assert_equal S(t)[1, 3],
437
+ S(t)[1, 2, 3, 4].downsample(2, :offset => [0])
454
438
  end
455
439
  end
456
440
 
457
441
  def test_zero
458
- [ S( O, 3 ), S( I, 3 ) ].each do |t|
459
- assert_equal [ false, true, false ], t[ -1, 0, 1 ].zero?.to_a
442
+ [S(O), S(I)].each do |t|
443
+ assert_equal [false, true, false], t[-1, 0, 1].zero?.to_a
460
444
  end
461
- assert_equal S[ false, false, false, true ],
462
- S[ C( 1, 0, 0 ), C( 0, 1, 0 ), C( 0, 0, 1 ), C( 0, 0, 0 ) ].zero?
463
- assert_equal S[ true, false, false ],
464
- S[ X( 0, 0 ), X( 1, 0 ), X( 0, 1 ) ].zero?
445
+ assert_equal S[false, false, false, true],
446
+ S[C(1, 0, 0 ), C(0, 1, 0), C(0, 0, 1), C(0, 0, 0)].zero?
447
+ assert_equal S[true, false, false],
448
+ S[X(0, 0), X(1, 0), X(0, 1)].zero?
465
449
  end
466
450
 
467
451
  def test_nonzero
468
- assert_equal S[ true, false, true ], S( I, 3 )[ -1, 0, 1 ].nonzero?
469
- assert_equal S[ -1, nil, 1 ], S( O, 3 )[ -1, 0, 1 ].nonzero?
452
+ assert_equal S[ true, false, true ], S(I)[ -1, 0, 1 ].nonzero?
453
+ assert_equal S[ -1, nil, 1 ], S(O)[ -1, 0, 1 ].nonzero?
470
454
  assert_equal S[ true, true, true, false ],
471
455
  S[ C( 1, 0, 0 ), C( 0, 1, 0 ), C( 0, 0, 1 ), C( 0, 0, 0 ) ].nonzero?
472
456
  assert_equal S[ false, true, true ],
@@ -474,8 +458,8 @@ class TC_Sequence < Test::Unit::TestCase
474
458
  end
475
459
 
476
460
  def test_not
477
- assert_equal [ true, false ], S( O, 2 )[ false, true ].not.to_a
478
- assert_equal [ true, false ], S( B, 2 )[ false, true ].not.to_a
461
+ assert_equal [ true, false ], S(O)[ false, true ].not.to_a
462
+ assert_equal [ true, false ], S(B)[ false, true ].not.to_a
479
463
  assert_equal [ true, false, false ], S[ 0, 1, 2 ].not.to_a
480
464
  end
481
465
 
@@ -498,48 +482,48 @@ class TC_Sequence < Test::Unit::TestCase
498
482
  end
499
483
 
500
484
  def test_bitwise_not
501
- [ S( O, 4 ), S( I, 4 ) ].each do |t|
485
+ [ S(O), S(I) ].each do |t|
502
486
  assert_equal [ 0, -1, -2, -3 ], ( ~t[ -1, 0, 1, 2 ] ).to_a
503
487
  end
504
488
  assert_equal [ C( -2, -3, -4 ), C( -5, -6, -7 ) ],
505
- ( ~S( C, 2 )[ C( 1, 2, 3 ), C( 4, 5, 6 ) ] ).to_a
489
+ ( ~S(C)[ C( 1, 2, 3 ), C( 4, 5, 6 ) ] ).to_a
506
490
  end
507
491
 
508
492
  def test_bitwise_and
509
- [ S( O, 3 ), S( I, 3 ) ].each do |t|
493
+ [ S(O), S(I) ].each do |t|
510
494
  assert_equal [ 0, 1, 0 ], ( t[ 0, 1, 2 ] & 1 ).to_a
511
495
  assert_equal [ 0, 1, 0 ], ( 1 & t[ 0, 1, 2 ] ).to_a
512
496
  assert_equal [ 0, 1, 2 ], ( t[ 0, 1, 3 ] & t[ 4, 3, 2 ] ).to_a
513
497
  end
514
- assert_equal [ C( 0, 2, 2 ) ], ( S( C, 1 )[ C( 1, 2, 3 ) ] & 2 ).to_a
515
- assert_equal [ C( 1, 0, 1 ) ], ( 1 & S( C, 1 )[ C( 1, 2, 3 ) ] ).to_a
516
- assert_equal [ C( 1, 2, 1 ) ], ( S( C, 1 )[ C( 1, 2, 3 ) ] & C( 3, 2, 1 ) ).to_a
498
+ assert_equal [ C( 0, 2, 2 ) ], ( S(C)[ C( 1, 2, 3 ) ] & 2 ).to_a
499
+ assert_equal [ C( 1, 0, 1 ) ], ( 1 & S(C)[ C( 1, 2, 3 ) ] ).to_a
500
+ assert_equal [ C( 1, 2, 1 ) ], ( S(C)[ C( 1, 2, 3 ) ] & C( 3, 2, 1 ) ).to_a
517
501
  end
518
502
 
519
503
  def test_bitwise_or
520
- [ S( O, 3 ), S( I, 3 ) ].each do |t|
504
+ [ S(O), S(I) ].each do |t|
521
505
  assert_equal [ 1, 1, 3 ], ( t[ 0, 1, 2 ] | 1 ).to_a
522
506
  assert_equal [ 1, 1, 3 ], ( 1 | t[ 0, 1, 2 ] ).to_a
523
507
  assert_equal [ 4, 3, 3 ], ( t[ 0, 1, 2 ] | t[ 4, 3, 1 ] ).to_a
524
508
  end
525
- assert_equal [ C( 3, 2, 3 ) ], ( S( C, 1 )[ C( 1, 2, 3 ) ] | 2 ).to_a
526
- assert_equal [ C( 1, 3, 3 ) ], ( 1 | S( C, 1 )[ C( 1, 2, 3 ) ] ).to_a
527
- assert_equal [ C( 3, 2, 3 ) ], ( S( C, 1 )[ C( 1, 2, 3 ) ] | C( 3, 2, 1 ) ).to_a
509
+ assert_equal [ C( 3, 2, 3 ) ], ( S(C)[ C( 1, 2, 3 ) ] | 2 ).to_a
510
+ assert_equal [ C( 1, 3, 3 ) ], ( 1 | S(C)[ C( 1, 2, 3 ) ] ).to_a
511
+ assert_equal [ C( 3, 2, 3 ) ], ( S(C)[ C( 1, 2, 3 ) ] | C( 3, 2, 1 ) ).to_a
528
512
  end
529
513
 
530
514
  def test_bitwise_xor
531
- [ S( O, 3 ), S( I, 3 ) ].each do |t|
515
+ [ S(O), S(I) ].each do |t|
532
516
  assert_equal [ 1, 0, 3 ], ( t[ 0, 1, 2 ] ^ 1 ).to_a
533
517
  assert_equal [ 1, 0, 3 ], ( 1 ^ t[ 0, 1, 2 ] ).to_a
534
518
  assert_equal [ 4, 2, 3 ], ( t[ 0, 1, 2 ] ^ t[ 4, 3, 1 ] ).to_a
535
519
  end
536
- assert_equal [ C( 3, 0, 1 ) ], ( S( C, 1 )[ C( 1, 2, 3 ) ] ^ 2 ).to_a
537
- assert_equal [ C( 0, 3, 2 ) ], ( 1 ^ S( C, 1 )[ C( 1, 2, 3 ) ] ).to_a
538
- assert_equal [ C( 2, 0, 2 ) ], ( S( C, 1 )[ C( 1, 2, 3 ) ] ^ C( 3, 2, 1 ) ).to_a
520
+ assert_equal [ C( 3, 0, 1 ) ], ( S(C)[ C( 1, 2, 3 ) ] ^ 2 ).to_a
521
+ assert_equal [ C( 0, 3, 2 ) ], ( 1 ^ S(C)[ C( 1, 2, 3 ) ] ).to_a
522
+ assert_equal [ C( 2, 0, 2 ) ], ( S(C)[ C( 1, 2, 3 ) ] ^ C( 3, 2, 1 ) ).to_a
539
523
  end
540
524
 
541
525
  def test_shl
542
- [ S( O, 3 ), S( I, 3 ) ].each do |t|
526
+ [ S(O), S(I) ].each do |t|
543
527
  assert_equal [ 2, 4, 6 ], ( t[ 1, 2, 3 ] << 1 ).to_a
544
528
  assert_equal [ 6, 12, 24 ], ( 3 << t[ 1, 2, 3 ] ).to_a
545
529
  assert_equal [ 8, 8, 6 ], ( t[ 1, 2, 3 ] << t[ 3, 2, 1 ] ).to_a
@@ -547,7 +531,7 @@ class TC_Sequence < Test::Unit::TestCase
547
531
  end
548
532
 
549
533
  def test_shr
550
- [ S( O, 3 ), S( I, 3 ) ].each do |t|
534
+ [ S(O), S(I) ].each do |t|
551
535
  assert_equal [ 1, 2, 3 ], ( t[ 2, 4, 6 ] >> 1 ).to_a
552
536
  assert_equal [ 12, 6, 3 ], ( 24 >> t[ 1, 2, 3 ] ).to_a
553
537
  assert_equal [ 2, 1, 3 ], ( t[ 16, 4, 6 ] >> t[ 3, 2, 1 ] ).to_a
@@ -555,11 +539,11 @@ class TC_Sequence < Test::Unit::TestCase
555
539
  end
556
540
 
557
541
  def test_negate
558
- [ S( O, 3 ), S( I, 3 ) ].each do |t|
542
+ [ S(O), S(I) ].each do |t|
559
543
  assert_equal t[ -1, 2, -3 ], -t[ 1, -2, 3 ]
560
544
  end
561
- assert_equal S( C, 2 )[ C( -1, -2, -3 ), C( -2, -1, 0 ) ],
562
- -S( C, 2 )[ C( 1, 2, 3 ), C( 2, 1, 0 ) ]
545
+ assert_equal S(C)[ C( -1, -2, -3 ), C( -2, -1, 0 ) ],
546
+ -S(C)[ C( 1, 2, 3 ), C( 2, 1, 0 ) ]
563
547
  end
564
548
 
565
549
  def test_plus
@@ -588,8 +572,8 @@ class TC_Sequence < Test::Unit::TestCase
588
572
  end
589
573
 
590
574
  def test_conj
591
- assert_equal S( O, 2 )[ 1.5, 2.5 ], S( O, 2 )[ 1.5, 2.5 ].conj
592
- assert_equal S( F, 2 )[ 1.5, 2.5 ], S( F, 2 )[ 1.5, 2.5 ].conj
575
+ assert_equal S(O)[ 1.5, 2.5 ], S(O)[ 1.5, 2.5 ].conj
576
+ assert_equal S(F)[ 1.5, 2.5 ], S(F)[ 1.5, 2.5 ].conj
593
577
  assert_equal S[ X( 1.5, -2.5 ) ], S[ X( 1.5, 2.5 ) ].conj
594
578
  end
595
579
 
@@ -629,9 +613,9 @@ class TC_Sequence < Test::Unit::TestCase
629
613
  def test_pow
630
614
  assert_equal [ 1, 4, 9 ], ( S[ 1, 2, 3 ] ** 2 ).to_a
631
615
  assert_equal [ C( 2, 4, 8 ) ], ( 2 ** S[ C( 1, 2, 3 ) ] ).to_a
632
- assert_in_delta 0.0, ( ( S( X, 1 )[ X( 1, 2 ) ] ** 2 )[ 0 ] - X( -3, 4 ) ).abs,
616
+ assert_in_delta 0.0, ( ( S(X)[ X( 1, 2 ) ] ** 2 )[ 0 ] - X( -3, 4 ) ).abs,
633
617
  1.0e-5
634
- assert_in_delta 0.0, ( Math::E ** S( X, 1 )[ X( 0, Math::PI ) ][ 0 ] + 1 ).abs,
618
+ assert_in_delta 0.0, ( Math::E ** S(X)[ X( 0, Math::PI ) ][ 0 ] + 1 ).abs,
635
619
  1.0e-5
636
620
  end
637
621
 
@@ -703,6 +687,8 @@ class TC_Sequence < Test::Unit::TestCase
703
687
  assert_equal [ 2, 2, 3 ], 2.major( S[ 1, 2, 3 ] ).to_a
704
688
  assert_equal [ 3, 2, 3 ], S[ 1, 2, 3 ].major( S[ 3, 2, 1 ] ).to_a
705
689
  assert_equal [ C( 2, 2, 3 ) ], S[ C( 1, 2, 3 ) ].major( 2 ).to_a
690
+ assert_equal [C(1, 2, 3), C(2, 2, 3), C(3, 3, 3)], S[1, 2, 3].major(C(1, 2, 3)).to_a
691
+ assert_equal [C(1, 2, 3), C(2, 2, 3), C(3, 3, 3)], C(1, 2, 3).major(S[1, 2, 3]).to_a
706
692
  end
707
693
 
708
694
  def test_minor
@@ -710,10 +696,12 @@ class TC_Sequence < Test::Unit::TestCase
710
696
  assert_equal [ 1, 2, 2 ], 2.minor( S[ 1, 2, 3 ] ).to_a
711
697
  assert_equal [ 1, 2, 1 ], S[ 1, 2, 3 ].minor( S[ 3, 2, 1 ] ).to_a
712
698
  assert_equal [ C( 1, 2, 2 ) ], S[ C( 1, 2, 3 ) ].minor( 2 ).to_a
699
+ assert_equal [C(1, 1, 1), C(1, 2, 2), C(1, 2, 3)], S[1, 2, 3].minor(C(1, 2, 3)).to_a
700
+ assert_equal [C(1, 1, 1), C(1, 2, 2), C(1, 2, 3)], C(1, 2, 3).minor(S[1, 2, 3]).to_a
713
701
  end
714
702
 
715
703
  def test_sqrt
716
- assert_equal S( O, 3 )[ 1, 2, 3 ], Math.sqrt( S( O, 3 )[ 1, 4, 9 ] )
704
+ assert_equal S(O)[ 1, 2, 3 ], Math.sqrt( S(O)[ 1, 4, 9 ] )
717
705
  assert_equal S[ 1.0, 2.0, 3.0 ], Math.sqrt( S[ 1.0, 4.0, 9.0 ] )
718
706
  [ Math.sqrt( X( 1, 2 ) ), Math.sqrt( X( 2, -1 ) ) ].
719
707
  zip( Math.sqrt( S[ X( 1, 2 ), X( 2, -1 ) ] ).to_a ).each do |x,y|
@@ -915,7 +903,7 @@ class TC_Sequence < Test::Unit::TestCase
915
903
  end
916
904
 
917
905
  def test_fill
918
- [ S( O, 3 ), S( I, 3 ) ].each do |t|
906
+ [ S(O), S(I) ].each do |t|
919
907
  s = t[ 1, 2, 3 ]
920
908
  assert_equal t[ 1, 1, 1 ], s.fill!( 1 )
921
909
  assert_equal t[ 1, 1, 1 ], s
@@ -923,22 +911,22 @@ class TC_Sequence < Test::Unit::TestCase
923
911
  end
924
912
 
925
913
  def test_to_type
926
- assert_equal S( O, 3 )[ 1, 2, 3 ], S( I, 3 )[ 1, 2, 3 ].to_object
927
- assert_equal S( I, 3 )[ 1, 2, 3 ], S( O, 3 )[ 1, 2, 3 ].to_int
928
- assert_equal S( C, 3 )[ 1, 2, 3 ], S( I, 3 )[ 1, 2, 3 ].to_intrgb
914
+ assert_equal S(O)[ 1, 2, 3 ], S(I)[ 1, 2, 3 ].to_object
915
+ assert_equal S(I)[ 1, 2, 3 ], S(O)[ 1, 2, 3 ].to_int
916
+ assert_equal S(C)[ 1, 2, 3 ], S(I)[ 1, 2, 3 ].to_intrgb
929
917
  end
930
918
 
931
919
  def test_reshape
932
920
  [ O, I ].each do |t|
933
- assert_equal S( t, 3 )[ 1, 2, 3 ], S( t, 3 )[ 1, 2, 3 ].reshape( 3 )
934
- assert_raise( RuntimeError ) { S( t, 3 )[ 1, 2, 3 ].reshape 2 }
935
- assert_raise( RuntimeError ) { S( t, 3 )[ 1, 2, 3 ].reshape 4 }
921
+ assert_equal S(t)[ 1, 2, 3 ], S(t)[ 1, 2, 3 ].reshape(3)
922
+ assert_raise( RuntimeError ) { S(t)[ 1, 2, 3 ].reshape 2 }
923
+ assert_raise( RuntimeError ) { S(t)[ 1, 2, 3 ].reshape 4 }
936
924
  end
937
925
  end
938
926
 
939
927
  def test_integral
940
- assert_equal S( O, 3 )[ 1, 3, 6 ], S( O, 3 )[ 1, 2, 3 ].integral
941
- assert_equal S( I, 3 )[ 1, 3, 6 ], S( I, 3 )[ 1, 2, 3 ].integral
928
+ assert_equal S(O)[ 1, 3, 6 ], S(O)[ 1, 2, 3 ].integral
929
+ assert_equal S(I)[ 1, 3, 6 ], S(I)[ 1, 2, 3 ].integral
942
930
  end
943
931
 
944
932
  def test_components
@@ -947,24 +935,22 @@ class TC_Sequence < Test::Unit::TestCase
947
935
  end
948
936
 
949
937
  def test_mask
950
- assert_equal S( O, 2 )[ 2, 5 ], S( O, 3 )[ 2, 3, 5 ].
951
- mask( S[ true, false, true ] )
952
- assert_equal S( I, 2 )[ 2, 5 ], S( I, 3 )[ 2, 3, 5 ].
953
- mask( S[ true, false, true ] )
954
- assert_raise( RuntimeError ) { S[ 1, 2 ].mask S[ true ] }
938
+ assert_equal S(O)[2, 5], S(O)[2, 3, 5].mask( S[true, false, true])
939
+ assert_equal S(I)[2, 5], S(I)[2, 3, 5].mask( S[true, false, true])
940
+ assert_raise( RuntimeError ) { S[1, 2].mask S[ true ] }
955
941
  end
956
942
 
957
943
  def test_unmask
958
- [ O, I ].each do |t|
959
- assert_equal S( t, 3 )[ 2, 3, 5 ],
960
- S( t, 2 )[ 2, 5 ].unmask( S[ true, false, true ], :default => 3 )
961
- assert_equal S( t, 3 )[ 2, 3, 5 ],
962
- S( t, 2 )[ 2, 5 ].unmask( S[ true, false, true ],
963
- :default => S[ 2, 3, 4 ] )
964
- assert_raise( RuntimeError ) do
965
- S( t, 1 )[ 1 ].unmask S[ true ], :default => S[ 1, 2 ]
944
+ [O, I].each do |t|
945
+ assert_equal S(t)[2, 3, 5],
946
+ S(t)[2, 5].unmask( S[true, false, true], :default => 3)
947
+ assert_equal S(t)[2, 3, 5],
948
+ S(t)[2, 5].unmask( S[true, false, true],
949
+ :default => S[2, 3, 4] )
950
+ assert_raise(RuntimeError) do
951
+ S(t)[1].unmask S[true], :default => S[1, 2]
966
952
  end
967
- assert_raise( RuntimeError ) { S( t, 1 )[ 1 ].unmask S[ true, true ] }
953
+ assert_raise(RuntimeError) { S(t)[1].unmask S[true, true] }
968
954
  end
969
955
  end
970
956