multiarray 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/test/tc_object.rb CHANGED
@@ -77,6 +77,12 @@ class TC_Object < Test::Unit::TestCase
77
77
  assert_equal O( 42 ), Marshal.load( Marshal.dump( O( 42 ) ) )
78
78
  end
79
79
 
80
+ def test_dup
81
+ o = O( 'abc' )
82
+ o.dup[] += 'de'
83
+ assert_equal 'abc', o[]
84
+ end
85
+
80
86
  def test_typecode
81
87
  assert_equal O, O.new.typecode
82
88
  end
@@ -123,4 +129,9 @@ class TC_Object < Test::Unit::TestCase
123
129
  assert_equal O( 3 + 5 ), O( 3 ) + O( 5 )
124
130
  end
125
131
 
132
+ def test_cond
133
+ assert_equal O( 1 ), O( false ).conditional( O( 2 ), O( 1 ) )
134
+ assert_equal O( 2 ), O( true ).conditional( O( 2 ), O( 1 ) )
135
+ end
136
+
126
137
  end
data/test/tc_rgb.rb CHANGED
@@ -144,6 +144,17 @@ class TC_RGB < Test::Unit::TestCase
144
144
  assert_not_equal RGB( 3, 3, 3 ), 4
145
145
  end
146
146
 
147
+ def test_r_g_b
148
+ c = RGB 1, 2, 3
149
+ assert_equal 1, c.r
150
+ assert_equal 2, c.g
151
+ assert_equal 3, c.b
152
+ assert_equal 4, c.r = 4
153
+ assert_equal 5, c.g = 5
154
+ assert_equal 6, c.b = 6
155
+ assert_equal RGB( 4, 5, 6 ), c
156
+ end
157
+
147
158
  def test_inject
148
159
  assert_equal RGB( 1, 2, 3 ), INTRGB( RGB( 1, 2, 3 ) ).
149
160
  inject { |a,b| a + b }[]
@@ -151,6 +162,10 @@ class TC_RGB < Test::Unit::TestCase
151
162
  inject( RGB( 2, 3, 4 ) ) { |a,b| a + b }[]
152
163
  end
153
164
 
165
+ def test_decompose
166
+ assert_equal [ 1, 2, 3 ], RGB( 1, 2, 3 ).decompose.to_a
167
+ end
168
+
154
169
  def test_not
155
170
  assert !RGB( 0, 0, 0 ).not
156
171
  assert !RGB( 1, 2, 3 ).not
data/test/tc_sequence.rb CHANGED
@@ -28,6 +28,7 @@ class TC_Sequence < Test::Unit::TestCase
28
28
  I = Hornetseye::INT
29
29
  S = Hornetseye::Sequence
30
30
  C = Hornetseye::INTRGB
31
+ X = Hornetseye::DCOMPLEX
31
32
 
32
33
  def S( *args )
33
34
  Hornetseye::Sequence *args
@@ -36,6 +37,10 @@ class TC_Sequence < Test::Unit::TestCase
36
37
  def C( *args )
37
38
  Hornetseye::RGB *args
38
39
  end
40
+
41
+ def X( *args )
42
+ Complex *args
43
+ end
39
44
 
40
45
  def sum( *args, &action )
41
46
  Hornetseye::sum *args, &action
@@ -62,12 +67,12 @@ class TC_Sequence < Test::Unit::TestCase
62
67
  end
63
68
 
64
69
  def test_sequence_indgen
65
- assert_equal [ 0, 1, 2 ], S( I, 3 ).indgen.to_a
66
- assert_equal [ 1, 2, 3 ], S( I, 3 ).indgen( 1 ).to_a
67
- assert_equal [ 0, 2, 4 ], S( I, 3 ).indgen( 0, 2 ).to_a
68
- assert_equal [ 1, 3, 5 ], S( I, 3 ).indgen( 1, 2 ).to_a
69
- assert_equal [ C( 1, 2, 3 ), C( 3, 5, 7 ) ],
70
- S( C, 2 ).indgen( C( 1, 2, 3 ), C( 2, 3, 4 ) ).to_a
70
+ assert_equal S( I, 3 )[ 0, 1, 2 ], S( I, 3 ).indgen
71
+ assert_equal S( I, 3 )[ 1, 2, 3 ], S( I, 3 ).indgen( 1 )
72
+ assert_equal S( I, 3 )[ 0, 2, 4 ], S( I, 3 ).indgen( 0, 2 )
73
+ assert_equal S( I, 3 )[ 1, 3, 5 ], S( I, 3 ).indgen( 1, 2 )
74
+ assert_equal S( C, 2 )[ C( 1, 2, 3 ), C( 3, 5, 7 ) ],
75
+ S( C, 2 ).indgen( C( 1, 2, 3 ), C( 2, 3, 4 ) )
71
76
  end
72
77
 
73
78
  def test_sequence_at
@@ -85,6 +90,7 @@ class TC_Sequence < Test::Unit::TestCase
85
90
  assert_equal B, S[ false, true ].typecode
86
91
  assert_equal I, S[ -2 ** 31, 2 ** 31 - 1 ].typecode
87
92
  assert_equal C, S[ C( -2 ** 31, 2 ** 31 - 1, 0 ) ].typecode
93
+ assert_equal X, S[ X( 1.5, 2.5 ) ].typecode
88
94
  end
89
95
 
90
96
  def test_sequence_typecode
@@ -92,6 +98,7 @@ class TC_Sequence < Test::Unit::TestCase
92
98
  assert_equal B, S( B, 3 ).typecode
93
99
  assert_equal I, S( I, 3 ).typecode
94
100
  assert_equal C, S( C, 3 ).typecode
101
+ assert_equal X, S( X, 3 ).typecode
95
102
  end
96
103
 
97
104
  def test_sequence_dimension
@@ -112,6 +119,13 @@ class TC_Sequence < Test::Unit::TestCase
112
119
  assert_equal "Sequence(OBJECT,3):\n[ :a, 2, 3 ]", S[ :a, 2, 3 ].inspect
113
120
  end
114
121
 
122
+ def test_dup
123
+ s = S[ 1, 2, 3 ]
124
+ v = s.dup
125
+ v[ 1 ] = 0
126
+ assert_equal S[ 1, 2, 3 ], s
127
+ end
128
+
115
129
  def test_typecode
116
130
  assert_equal O, S.new( O, 3 ).typecode
117
131
  assert_equal I, S.new( I, 3 ).typecode
@@ -139,6 +153,11 @@ class TC_Sequence < Test::Unit::TestCase
139
153
  for i in 0 ... 3
140
154
  assert_equal i + 1, s[ i ]
141
155
  end
156
+ assert_raise( RuntimeError ) { s[ -1 ] }
157
+ assert_raise( RuntimeError ) { s[ 3 ] }
158
+ assert_raise( RuntimeError ) { s[ -1 ] = 0 }
159
+ assert_raise( RuntimeError ) { s[ 3 ] = 0 }
160
+ assert_raise( RuntimeError ) { s[ 0 ] = s }
142
161
  end
143
162
  end
144
163
 
@@ -155,17 +174,81 @@ class TC_Sequence < Test::Unit::TestCase
155
174
  assert_equal [ 1, 6, 7, 4 ], s.to_a
156
175
  s[ 1 ... 3 ] = S[ 8, 9 ]
157
176
  assert_equal [ 1, 8, 9, 4 ], s.to_a
177
+ assert_nothing_raised { s[ 0 .. 3 ] }
178
+ assert_nothing_raised { s[ 0 ... 4 ] }
179
+ assert_raise( RuntimeError ) { s[ -1 .. 1 ] }
180
+ assert_raise( RuntimeError ) { s[ 2 .. 4 ] }
181
+ assert_raise( RuntimeError ) { s[ -1 ... 1 ] }
182
+ assert_raise( RuntimeError ) { s[ 2 ... 5 ] }
183
+ assert_nothing_raised { s[ 0 .. 3 ] = 0 }
184
+ assert_nothing_raised { s[ 0 ... 4 ] = 0 }
185
+ assert_raise( RuntimeError ) { s[ -1 .. 1 ] = 0 }
186
+ assert_raise( RuntimeError ) { s[ 2 .. 4 ] = 0 }
187
+ assert_raise( RuntimeError ) { s[ -1 ... 1 ] = 0 }
188
+ assert_raise( RuntimeError ) { s[ 2 ... 5 ] = 0 }
189
+ assert_raise( RuntimeError ) { s[ 1 .. 3 ] = s[ 1 .. 2 ] }
190
+ end
191
+ end
192
+
193
+ def test_view
194
+ [ S( O, 4 ), S( I, 4 ) ].each do |t|
195
+ s = t[ 1, 2, 3, 4 ]
196
+ v = s[ 1 .. 2 ]
197
+ v[] = 0
198
+ assert_equal [ 1, 0, 0, 4 ], s.to_a
158
199
  end
159
200
  end
160
201
 
161
202
  def test_equal
162
203
  assert_equal S[ 2, 3, 5 ], S[ 2, 3, 5 ]
163
204
  assert_not_equal S[ 2, 3, 5 ], S[ 2, 3, 7 ]
164
- #assert_not_equal S[ 2, 3, 5 ], S[ 2, 3 ] # !!!
165
- #assert_not_equal S[ 2, 3, 5 ], S[ 2, 3, 5, 7 ]
205
+ assert_equal S[ X( 1, 2 ), 3 ], S[ X( 1, 2 ), X( 3, 0 ) ]
206
+ assert_not_equal S[ X( 1, 2 ), 3 ], S[ X( 1, 3 ), 3 ]
207
+ assert_not_equal S[ 2, 3, 5 ], S[ 2, 3 ]
208
+ assert_not_equal S[ 2, 3, 5 ], S[ 2, 3, 5, 7 ]
166
209
  assert_not_equal S[ 2, 2, 2 ], 2
167
210
  end
168
211
 
212
+ def test_r_g_b
213
+ [ S( O, 3 ), S( C, 3 ) ].each do |t|
214
+ assert_equal [ 1, 4, 5 ], t[ C( 1, 2, 3 ), 4, 5 ].r.to_a
215
+ assert_equal [ 2, 4, 5 ], t[ C( 1, 2, 3 ), 4, 5 ].g.to_a
216
+ assert_equal [ 3, 4, 5 ], t[ C( 1, 2, 3 ), 4, 5 ].b.to_a
217
+ s = t[ 0, 0, 0 ]
218
+ assert_equal 1, s.r = 1
219
+ assert_equal S[ 1, 2, 3 ], s.g = S[ 1, 2, 3 ]
220
+ assert_equal S( O, 3 )[ 4, 5, 6 ], s.b = S( O, 3 )[ 4, 5, 6 ]
221
+ assert_equal t[ C( 1, 1, 4 ), C( 1, 2, 5 ), C( 1, 3, 6 ) ], s
222
+ assert_raise( RuntimeError ) { s.r = S[ 1, 2 ] }
223
+ assert_raise( RuntimeError ) { s.g = S[ 1, 2 ] }
224
+ assert_raise( RuntimeError ) { s.b = S[ 1, 2, 3, 4 ] }
225
+ end
226
+ assert_equal S[ 1, 2 ], S[ 1, 2 ].r
227
+ assert_equal S[ 1, 2 ], S[ 1, 2 ].g
228
+ assert_equal S[ 1, 2 ], S[ 1, 2 ].b
229
+ assert_raise( RuntimeError ) { S[ 1, 2 ].r = 1 }
230
+ end
231
+
232
+ def test_real_imag
233
+ [ S( O, 2 ), S( X, 2 ) ].each do |t|
234
+ assert_equal [ 1, 3 ], t[ X( 1, 2 ), 3 ].real.to_a
235
+ assert_equal [ 2, 0 ], t[ X( 1, 2 ), 3 ].imag.to_a
236
+ s = t[ 0, 0 ]
237
+ assert_equal 1, s.real = 1
238
+ assert_equal S[ 2, 3 ], s.imag = S[ 2, 3 ]
239
+ assert_equal t[ X( 1, 2 ), X( 1, 3 ) ], s
240
+ assert_raise( RuntimeError ) { s.real = S[ 1 ] }
241
+ assert_raise( RuntimeError ) { s.imag = S[ 1, 2, 3 ] }
242
+ end
243
+ assert_equal S[ 1, 2 ], S[ 1, 2 ].real
244
+ assert_equal S[ 0, 0 ], S[ 1, 2 ].imag
245
+ s = S[ 1, 2 ]
246
+ assert_equal S[ 3, 4 ], s.real = S[ 3, 4 ]
247
+ assert_equal S[ 3, 4 ], s
248
+ assert_raise( RuntimeError ) { S[ 1, 2 ].real = S[ 1, 2, 3 ] }
249
+ assert_raise( RuntimeError ) { S[ 1, 2 ].imag = S[ 0, 0 ] }
250
+ end
251
+
169
252
  def test_inject
170
253
  assert_equal 6, S[ 1, 2, 3 ].inject { |a,b| a + b }
171
254
  assert_equal 10, S[ 1, 2, 3 ].inject( 4 ) { |a,b| a + b }
@@ -174,6 +257,14 @@ class TC_Sequence < Test::Unit::TestCase
174
257
  assert_equal C( 3, 5, 8 ), S[ C( 1, 2, 3 ), C( 2, 3, 5 ) ].inject { |a,b| a + b }
175
258
  assert_equal C( 5, 6, 8 ), S[ C( 1, 2, 3 ), C( 2, 3, 5 ) ].
176
259
  inject( C( 2, 1, 0 ) ) { |a,b| a + b }
260
+ assert_equal C( 7, 8, 9 ), S[ 1, 2, 3 ].inject( C( 1, 2, 3 ) ) { |a,b| a + b }
261
+ assert_equal C( 4, 6, 9 ), S[ C( 1, 2, 3 ), C( 2, 3, 5 ) ].
262
+ inject( 1 ) { |a,b| a + b }
263
+ assert_equal X( -5, 10 ), S( X, 2 )[ X( 1, 2 ), X( 3, 4 ) ].inject { |a,b| a * b }
264
+ end
265
+
266
+ def test_collect
267
+ assert_equal S[ 2, 3 ], S[ 1, 2 ].collect { |x| x + 1 }
177
268
  end
178
269
 
179
270
  def test_sum
@@ -182,6 +273,7 @@ class TC_Sequence < Test::Unit::TestCase
182
273
  assert_equal [ 1, 2, 3 ], sum { || t[ 1, 2, 3 ] }.to_a
183
274
  end
184
275
  assert_equal C( 3, 5, 8 ), sum { |i| S[ C( 1, 2, 3 ), C( 2, 3, 5 ) ][i] }
276
+ assert_equal X( 4, 6 ), sum { |i| S[ X( 1, 2 ), X( 3, 4 ) ][i] }
185
277
  end
186
278
 
187
279
  def test_min
@@ -212,6 +304,7 @@ class TC_Sequence < Test::Unit::TestCase
212
304
  S( t, 5 )[ 0, 0, 0, 0, 1 ].convolve( S( t, 3 )[ 1, 2, 3 ] )
213
305
  assert_equal S( t, 4 )[ 1, 2, 3, 0 ],
214
306
  S( t, 4 )[ 0, 1, 0, 0 ].convolve( S( t, 3 )[ 1, 2, 3 ] )
307
+ assert_raise( RuntimeError ) { S[ 1, 2, 3 ].convolve 1 }
215
308
  end
216
309
  assert_equal S[ C( 1, 0, 0 ), C( 2, 1, 0 ), C( 3, 2, 1 ), C( 0, 3, 2 ),
217
310
  C( 0, 0, 3 ) ],
@@ -225,6 +318,8 @@ class TC_Sequence < Test::Unit::TestCase
225
318
  end
226
319
  assert_equal S[ false, false, false, true ],
227
320
  S[ C( 1, 0, 0 ), C( 0, 1, 0 ), C( 0, 0, 1 ), C( 0, 0, 0 ) ].zero?
321
+ assert_equal S[ true, false, false ],
322
+ S[ X( 0, 0 ), X( 1, 0 ), X( 0, 1 ) ].zero?
228
323
  end
229
324
 
230
325
  def test_nonzero
@@ -232,6 +327,8 @@ class TC_Sequence < Test::Unit::TestCase
232
327
  assert_equal S[ -1, nil, 1 ], S( O, 3 )[ -1, 0, 1 ].nonzero?
233
328
  assert_equal S[ true, true, true, false ],
234
329
  S[ C( 1, 0, 0 ), C( 0, 1, 0 ), C( 0, 0, 1 ), C( 0, 0, 0 ) ].nonzero?
330
+ assert_equal S[ false, true, true ],
331
+ S[ X( 0, 0 ), X( 1, 0 ), X( 0, 1 ) ].nonzero?
235
332
  end
236
333
 
237
334
  def test_not
@@ -333,11 +430,114 @@ class TC_Sequence < Test::Unit::TestCase
333
430
  assert_equal S[ C( 2, 3, 4 ), C( 5, 6, 7 ) ], S[ C( 1, 2, 3 ), C( 4, 5, 6 ) ] + 1
334
431
  assert_equal S[ C( 2, 3, 4 ), C( 5, 6, 7 ) ], 1 + S[ C( 1, 2, 3 ), C( 4, 5, 6 ) ]
335
432
  assert_equal S[ C( 2, 3, 4 ), C( 3, 4, 5 ) ], S[ 1, 2 ] + C( 1, 2, 3 )
433
+ assert_equal S[ X( 4, 6 ) ], S[ X( 1, 2 ) ] + S[ X( 3, 4 ) ]
434
+ assert_raise( RuntimeError ) { S[ 1, 2, 3 ] + S[ 1, 2 ] }
435
+ assert_raise( RuntimeError ) { S[ 1, 2 ] + S[ 1, 2, 3 ] }
336
436
  end
337
437
 
338
- def test_sqrt
339
- assert_equal S( O, 3 )[ 1, 2, 3 ], Math.sqrt( S( O, 3 )[ 1, 4, 9 ] )
340
- assert_equal S[ 1.0, 2.0, 3.0 ], Math.sqrt( S[ 1.0, 4.0, 9.0 ] )
438
+ def test_minus
439
+ assert_equal S[ 1, 2, 4 ], S[ 2, 3, 5 ] - 1
440
+ assert_equal S[ 1, 2, 4 ], 5 - S[ 4, 3, 1 ]
441
+ assert_equal S[ 1, 2, 3 ], S[ 2, 3, 5 ] - S[ 1, 1, 2 ]
442
+ assert_equal S[ C( 1, 2, 3 ), C( 4, 5, 6 ) ], S[ C( 2, 3, 4 ), C( 5, 6, 7 ) ] - 1
443
+ assert_equal S[ C( 6, 5, 4 ), C( 3, 2, 1 ) ], 7 - S[ C( 1, 2, 3 ), C( 4, 5, 6 ) ]
444
+ assert_equal S[ C( 3, 2, 1 ), C( 4, 3, 2 ) ], S[ 4, 5 ] - C( 1, 2, 3 )
445
+ assert_equal S[ X( -1.0, 2.0 ) ], -S[ X( 1.0, -2.0 ) ]
446
+ end
447
+
448
+ def test_conj
449
+ assert_equal S[ 1.5, 2.5 ], S[ 1.5, 2.5 ].conj
450
+ assert_equal S[ X( 1.5, -2.5 ) ], S[ X( 1.5, 2.5 ) ].conj
451
+ end
452
+
453
+ def test_abs
454
+ assert_equal [ 1, 0, 1 ], S[ -1, 0, 1 ].abs.to_a
455
+ assert_equal [ 5 ], S[ X( 3, 4 ) ].abs.to_a
456
+ end
457
+
458
+ def test_arg
459
+ assert_equal S[ 0.0, Math::PI ], S[ 1, -1 ].arg
460
+ assert_equal S[ 0.0, Math::PI / 2, Math::PI, -Math::PI / 2 ],
461
+ S[ X( 1, 0 ), X( 0, 1 ), X( -1, 0 ), X( 0, -1 ) ].arg
462
+ end
463
+
464
+ def test_mul
465
+ assert_equal S[ 6, 12, 20 ], S[ 2, 3, 4 ] * S[ 3, 4, 5 ]
466
+ assert_equal S[ C( -2, 0, 4 ) ], S[ C( 2, 3, 4 ) ] * S[ C( -1, 0, 1 ) ]
467
+ assert_equal S[ X( -11, 2 ) ], S[ X( -1, 2 ) ] * S[ X( 3, 4 ) ]
468
+ end
469
+
470
+ def test_div
471
+ assert_equal S[ 2, 3, 4 ], S[ 6, 12, 20 ] / S[ 3, 4, 5 ]
472
+ assert_equal S[ X( -1, 2 ) ], S[ X( -11, 2 ) ] / S[ X( 3, 4 ) ]
473
+ end
474
+
475
+ def test_mod
476
+ assert_equal S[ 2, 0, 1 ], S[ 2, 3, 4 ] % 3
477
+ end
478
+
479
+ def test_pow
480
+ assert_equal [ 1, 4, 9 ], ( S[ 1, 2, 3 ] ** 2 ).to_a
481
+ assert_in_delta 0.0, ( ( S( X, 1 )[ X( 1, 2 ) ] ** 2 )[ 0 ] - X( -3, 4 ) ).abs,
482
+ 1.0e-5
483
+ assert_in_delta 0.0, ( Math::E ** S( X, 1 )[ X( 0, Math::PI ) ][ 0 ] + 1 ).abs,
484
+ 1.0e-5
485
+ end
486
+
487
+ def test_eq
488
+ assert_equal S[ false, true, false ], S[ 1, 2, 3 ].eq( 2 )
489
+ assert_equal S[ false, true ],
490
+ S[ C( 1, 2, 1 ), C( 2, 1, 0 ) ].eq( S[ C( 1, 2, 3 ), C( 2, 1, 0 ) ] )
491
+ assert_equal S[ false, true, false ],
492
+ X( 1, 2 ).eq( S[ X( 1, 1 ), X( 1, 2 ), X( 2, 2 ) ] )
493
+ end
494
+
495
+ def test_ne
496
+ assert_equal S[ true, false, true ], S[ 1, 2, 3 ].ne( 2 )
497
+ end
498
+
499
+ def test_lt
500
+ assert_equal S[ true, false, false ], S[ 1, 2, 3 ] < 2
501
+ end
502
+
503
+ def test_le
504
+ assert_equal S[ true, true, false ], S[ 1, 2, 3 ] <= 2
505
+ end
506
+
507
+ def test_gt
508
+ assert_equal S[ false, false, true ], S[ 1, 2, 3 ] > 2
509
+ end
510
+
511
+ def test_ge
512
+ assert_equal S[ false, true, true ], S[ 1, 2, 3 ] >= 2
513
+ end
514
+
515
+ def test_floor
516
+ assert_equal S[ 0.0, 0.0, 1.0 ], S[ 0.3, 0.7, 1.3 ].floor
517
+ end
518
+
519
+ def test_ceil
520
+ assert_equal S[ 1.0, 1.0, 2.0 ], S[ 0.3, 0.7, 1.3 ].ceil
521
+ end
522
+
523
+ def test_round
524
+ assert_equal S[ 0.0, 1.0, 1.0 ], S[ 0.3, 0.7, 1.3 ].round
525
+ end
526
+
527
+ def test_cond
528
+ assert_equal S[ 1, 2 ], S[ false, true ].conditional( 2, 1 )
529
+ assert_equal S[ -1, 2 ], S[ false, true ].conditional( S[ 1, 2 ], -1 )
530
+ assert_equal S[ -1, 1 ], S[ false, true ].conditional( 1, S[ -1, -2 ] )
531
+ assert_equal S[ -1, 2 ], S[ false, true ].conditional( S[ 1, 2 ], S[ -1, -2 ] )
532
+ assert_raise( RuntimeError ) { S[ false, true ].conditional( S[ 1, 2 ], S[ 1 ] ) }
533
+ assert_raise( RuntimeError ) { S[ false, true ].conditional( S[ 1 ], S[ 1, 2 ] ) }
534
+ assert_raise( RuntimeError ) { S[ false ].conditional( S[ 1, 2 ], S[ 1, 2 ] ) }
535
+ end
536
+
537
+ def test_cmp
538
+ assert_equal S[ -1, 0, 1 ], S[ 1, 2, 3 ] <=> 2
539
+ assert_equal S[ 1, 0, -1 ], 2 <=> S[ 1, 2, 3 ]
540
+ assert_equal S[ -1, 0, 1 ], S[ 1, 3, 5 ] <=> S[ 2, 3, 4 ]
341
541
  end
342
542
 
343
543
  def test_major
@@ -354,8 +554,21 @@ class TC_Sequence < Test::Unit::TestCase
354
554
  assert_equal [ C( 1, 2, 2 ) ], S[ C( 1, 2, 3 ) ].minor( 2 ).to_a
355
555
  end
356
556
 
557
+ def test_sqrt
558
+ assert_equal S( O, 3 )[ 1, 2, 3 ], Math.sqrt( S( O, 3 )[ 1, 4, 9 ] )
559
+ assert_equal S[ 1.0, 2.0, 3.0 ], Math.sqrt( S[ 1.0, 4.0, 9.0 ] )
560
+ end
561
+
357
562
  def test_hypot
358
563
  assert_equal S[ 5.0, 5.0 ], Math.hypot( S[ 3, 4 ], S[ 4, 3 ] )
564
+ assert_raise( RuntimeError ) { Math.hypot( S[ 3 ], S[ 4, 3 ] ) }
565
+ assert_raise( RuntimeError ) { Math.hypot( S[ 3, 4 ], S[ 4 ] ) }
566
+ end
567
+
568
+ def test_to_type
569
+ assert_equal S( O, 3 )[ 1, 2, 3 ], S( I, 3 )[ 1, 2, 3 ].to_type( O )
570
+ assert_equal S( I, 3 )[ 1, 2, 3 ], S( O, 3 )[ 1, 2, 3 ].to_type( I )
571
+ assert_equal S( C, 3 )[ 1, 2, 3 ], S( I, 3 )[ 1, 2, 3 ].to_type( C )
359
572
  end
360
573
 
361
574
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multiarray
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 15
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 5
8
- - 1
9
- version: 0.5.1
9
+ - 2
10
+ version: 0.5.2
10
11
  platform: ruby
11
12
  authors:
12
13
  - Jan Wedekind
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-08-15 00:00:00 +01:00
18
+ date: 2010-09-12 00:00:00 +01:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
@@ -25,10 +26,11 @@ dependencies:
25
26
  requirements:
26
27
  - - ~>
27
28
  - !ruby/object:Gem::Version
29
+ hash: 13
28
30
  segments:
29
31
  - 1
30
- - 0
31
- version: "1.0"
32
+ - 1
33
+ version: "1.1"
32
34
  type: :runtime
33
35
  version_requirements: *id001
34
36
  - !ruby/object:Gem::Dependency
@@ -39,6 +41,7 @@ dependencies:
39
41
  requirements:
40
42
  - - ">="
41
43
  - !ruby/object:Gem::Version
44
+ hash: 3
42
45
  segments:
43
46
  - 0
44
47
  version: "0"
@@ -65,28 +68,27 @@ files:
65
68
  - lib/multiarray/bool.rb
66
69
  - lib/multiarray/element.rb
67
70
  - lib/multiarray/gcccache.rb
68
- - lib/multiarray/binarymethod.rb
69
71
  - lib/multiarray/int.rb
70
72
  - lib/multiarray/gccfunction.rb
71
73
  - lib/multiarray/float.rb
72
74
  - lib/multiarray/diagonal.rb
73
75
  - lib/multiarray/inject.rb
74
76
  - lib/multiarray/list.rb
75
- - lib/multiarray/binaryop.rb
76
77
  - lib/multiarray/pointer.rb
77
78
  - lib/multiarray/lambda.rb
78
79
  - lib/multiarray/sequence.rb
79
80
  - lib/multiarray/methods.rb
80
- - lib/multiarray/unarymethod.rb
81
81
  - lib/multiarray/multiarray.rb
82
82
  - lib/multiarray/node.rb
83
- - lib/multiarray/unaryop.rb
84
83
  - lib/multiarray/malloc.rb
85
84
  - lib/multiarray/index.rb
86
85
  - lib/multiarray/rgb.rb
87
86
  - lib/multiarray/gcccontext.rb
87
+ - lib/multiarray/composite.rb
88
+ - lib/multiarray/elementwise.rb
88
89
  - lib/multiarray/lookup.rb
89
90
  - lib/multiarray/gccvalue.rb
91
+ - lib/multiarray/complex.rb
90
92
  - lib/multiarray.rb
91
93
  - test/ts_multiarray.rb
92
94
  - test/tc_float.rb
@@ -111,6 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
111
113
  requirements:
112
114
  - - ">="
113
115
  - !ruby/object:Gem::Version
116
+ hash: 3
114
117
  segments:
115
118
  - 0
116
119
  version: "0"
@@ -119,6 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
122
  requirements:
120
123
  - - ">="
121
124
  - !ruby/object:Gem::Version
125
+ hash: 3
122
126
  segments:
123
127
  - 0
124
128
  version: "0"