multiarray 0.23.1 → 0.23.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/Rakefile +1 -1
- data/lib/multiarray/complex.rb +1 -1
- data/lib/multiarray/components.rb +3 -3
- data/lib/multiarray/elementwise.rb +5 -5
- data/lib/multiarray/gcctype.rb +4 -4
- data/lib/multiarray/histogram.rb +4 -4
- data/lib/multiarray/lut.rb +4 -4
- data/lib/multiarray/mask.rb +3 -3
- data/lib/multiarray/methods.rb +4 -4
- data/lib/multiarray/node.rb +2 -2
- data/lib/multiarray/operations.rb +39 -24
- data/lib/multiarray/rgb.rb +1 -1
- data/lib/multiarray/unmask.rb +3 -3
- data/test/tc_multiarray.rb +2 -0
- data/test/tc_sequence.rb +3 -1
- metadata +4 -19
data/Rakefile
CHANGED
data/lib/multiarray/complex.rb
CHANGED
|
@@ -933,7 +933,7 @@ module Hornetseye
|
|
|
933
933
|
if values.all? { |value| value.is_a? InternalComplex or value.is_a? Complex or
|
|
934
934
|
value.is_a? Float or value.is_a? Integer }
|
|
935
935
|
if values.any? { |value| value.is_a? InternalComplex or value.is_a? Complex }
|
|
936
|
-
elements = values.inject(
|
|
936
|
+
elements = values.inject([]) do |arr,value|
|
|
937
937
|
if value.is_a? InternalComplex or value.is_a? Complex
|
|
938
938
|
arr + [ value.real, value.imag ]
|
|
939
939
|
else
|
|
@@ -215,9 +215,9 @@ module Hornetseye
|
|
|
215
215
|
def strip
|
|
216
216
|
stripped = [ @dest, @source, @default, @zero, @labels, @rank, @n ].
|
|
217
217
|
collect { |value| value.strip }
|
|
218
|
-
return stripped.inject(
|
|
219
|
-
stripped.inject(
|
|
220
|
-
self.class.new(
|
|
218
|
+
return stripped.inject([]) { |vars,elem| vars + elem[0] },
|
|
219
|
+
stripped.inject([]) { |values,elem| values + elem[1] },
|
|
220
|
+
self.class.new(*stripped.collect { |elem| elem[2] })
|
|
221
221
|
end
|
|
222
222
|
|
|
223
223
|
# Get variables contained in this term
|
|
@@ -130,7 +130,7 @@ module Hornetseye
|
|
|
130
130
|
#
|
|
131
131
|
# @private
|
|
132
132
|
def variables
|
|
133
|
-
@values.inject(
|
|
133
|
+
@values.inject(Set[]) { |vars,value| vars + value.variables }
|
|
134
134
|
end
|
|
135
135
|
|
|
136
136
|
# Strip of all values
|
|
@@ -144,9 +144,9 @@ module Hornetseye
|
|
|
144
144
|
# @private
|
|
145
145
|
def strip
|
|
146
146
|
stripped = @values.collect { |value| value.strip }
|
|
147
|
-
return stripped.inject(
|
|
148
|
-
stripped.inject(
|
|
149
|
-
self.class.new(
|
|
147
|
+
return stripped.inject([]) { |vars,elem| vars + elem[0] },
|
|
148
|
+
stripped.inject([]) { |values,elem| values + elem[1] },
|
|
149
|
+
self.class.new(*stripped.collect { |elem| elem[2] })
|
|
150
150
|
end
|
|
151
151
|
|
|
152
152
|
# Skip elements of an array
|
|
@@ -227,7 +227,7 @@ module Hornetseye
|
|
|
227
227
|
# @see ElementWise_.conversion
|
|
228
228
|
#
|
|
229
229
|
# @private
|
|
230
|
-
def ElementWise( operation, key, conversion =
|
|
230
|
+
def ElementWise( operation, key, conversion = proc { |t| t.send :identity } )
|
|
231
231
|
retval = Class.new ElementWise_
|
|
232
232
|
retval.operation = operation
|
|
233
233
|
retval.key = key
|
data/lib/multiarray/gcctype.rb
CHANGED
|
@@ -93,14 +93,14 @@ module Hornetseye
|
|
|
93
93
|
def r2c
|
|
94
94
|
case @typecode
|
|
95
95
|
when BOOL
|
|
96
|
-
[
|
|
96
|
+
[ proc { |expr| "( #{expr} ) != Qfalse" } ]
|
|
97
97
|
when BYTE, UBYTE, SINT, USINT, INT, UINT
|
|
98
|
-
[
|
|
98
|
+
[ proc { |expr| "NUM2INT( #{expr} )" } ]
|
|
99
99
|
when SFLOAT, DFLOAT
|
|
100
|
-
[
|
|
100
|
+
[ proc { |expr| "NUM2DBL( #{expr} )" } ]
|
|
101
101
|
else
|
|
102
102
|
if @typecode < Pointer_
|
|
103
|
-
[
|
|
103
|
+
[ proc { |expr| "(#{identifier})mallocToPtr( #{expr} )" } ]
|
|
104
104
|
elsif @typecode < Composite
|
|
105
105
|
GCCType.new( @typecode.element_type ).r2c * @typecode.num_elements
|
|
106
106
|
else
|
data/lib/multiarray/histogram.rb
CHANGED
|
@@ -120,7 +120,7 @@ module Hornetseye
|
|
|
120
120
|
#
|
|
121
121
|
# @private
|
|
122
122
|
def variables
|
|
123
|
-
@sources.inject(
|
|
123
|
+
@sources.inject(@dest.variables + @weight.variables) { |a,b| a + b.variables }
|
|
124
124
|
end
|
|
125
125
|
|
|
126
126
|
# Strip of all values
|
|
@@ -134,9 +134,9 @@ module Hornetseye
|
|
|
134
134
|
# @private
|
|
135
135
|
def strip
|
|
136
136
|
stripped = ( [ @dest, @weight ] + @sources ).collect { |source| source.strip }
|
|
137
|
-
return stripped.inject(
|
|
138
|
-
stripped.inject(
|
|
139
|
-
self.class.new( *stripped.collect { |elem| elem[
|
|
137
|
+
return stripped.inject([]) { |vars,elem| vars + elem[0] },
|
|
138
|
+
stripped.inject([]) { |values,elem| values + elem[1] },
|
|
139
|
+
self.class.new( *stripped.collect { |elem| elem[2] } )
|
|
140
140
|
end
|
|
141
141
|
|
|
142
142
|
# Check whether this term is compilable
|
data/lib/multiarray/lut.rb
CHANGED
|
@@ -101,7 +101,7 @@ module Hornetseye
|
|
|
101
101
|
#
|
|
102
102
|
# @private
|
|
103
103
|
def variables
|
|
104
|
-
@sources.inject(
|
|
104
|
+
@sources.inject(@table.variables) { |a,b| a + b.variables }
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
# Strip of all values
|
|
@@ -115,9 +115,9 @@ module Hornetseye
|
|
|
115
115
|
# @private
|
|
116
116
|
def strip
|
|
117
117
|
stripped = ( @sources + [ @table ] ).collect { |source| source.strip }
|
|
118
|
-
return stripped.inject(
|
|
119
|
-
stripped.inject(
|
|
120
|
-
self.class.new( *stripped.collect { |elem| elem[
|
|
118
|
+
return stripped.inject([]) { |vars,elem| vars + elem[0] },
|
|
119
|
+
stripped.inject([]) { |values,elem| values + elem[1] },
|
|
120
|
+
self.class.new( *stripped.collect { |elem| elem[2] } )
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
# Skip elements of an array
|
data/lib/multiarray/mask.rb
CHANGED
|
@@ -134,9 +134,9 @@ module Hornetseye
|
|
|
134
134
|
# @private
|
|
135
135
|
def strip
|
|
136
136
|
stripped = [ @dest, @source, @m, @index ].collect { |value| value.strip }
|
|
137
|
-
return stripped.inject(
|
|
138
|
-
stripped.inject(
|
|
139
|
-
self.class.new( *stripped.collect { |elem| elem[
|
|
137
|
+
return stripped.inject([]) { |vars,elem| vars + elem[0] },
|
|
138
|
+
stripped.inject([]) { |values,elem| values + elem[1] },
|
|
139
|
+
self.class.new( *stripped.collect { |elem| elem[2] } )
|
|
140
140
|
end
|
|
141
141
|
|
|
142
142
|
# Check whether this term is compilable
|
data/lib/multiarray/methods.rb
CHANGED
|
@@ -63,9 +63,9 @@ module Hornetseye
|
|
|
63
63
|
target = a.typecode.send conversion
|
|
64
64
|
target.new mod.send( op, a.simplify.get )
|
|
65
65
|
else
|
|
66
|
-
Hornetseye::ElementWise(
|
|
66
|
+
Hornetseye::ElementWise( proc { |x| mod.send op, x },
|
|
67
67
|
"#{mod}.#{op}",
|
|
68
|
-
|
|
68
|
+
proc { |x| x.send conversion } ).
|
|
69
69
|
new(a.sexp).force
|
|
70
70
|
end
|
|
71
71
|
else
|
|
@@ -99,9 +99,9 @@ module Hornetseye
|
|
|
99
99
|
target = a.typecode.send coercion, b.typecode
|
|
100
100
|
target.new mod.send(op, a.simplify.get, b.simplify.get)
|
|
101
101
|
else
|
|
102
|
-
Hornetseye::ElementWise(
|
|
102
|
+
Hornetseye::ElementWise( proc { |x,y| mod.send op, x, y },
|
|
103
103
|
"#{mod}.#{op}",
|
|
104
|
-
|
|
104
|
+
proc { |t,u| t.send coercion, u } ).
|
|
105
105
|
new(a.sexp, b.sexp).force
|
|
106
106
|
end
|
|
107
107
|
else
|
data/lib/multiarray/node.rb
CHANGED
|
@@ -320,7 +320,7 @@ module Hornetseye
|
|
|
320
320
|
#
|
|
321
321
|
# @return [Integer] Returns number of elements of this value.
|
|
322
322
|
def size
|
|
323
|
-
shape.inject
|
|
323
|
+
shape.inject 1, :*
|
|
324
324
|
end
|
|
325
325
|
|
|
326
326
|
# Duplicate array expression if it is not in row-major format
|
|
@@ -329,7 +329,7 @@ module Hornetseye
|
|
|
329
329
|
def memorise
|
|
330
330
|
if memory
|
|
331
331
|
contiguous_strides = (0 ... dimension).collect do |i|
|
|
332
|
-
shape[0 ... i].inject
|
|
332
|
+
shape[0 ... i].inject 1, :*
|
|
333
333
|
end
|
|
334
334
|
if strides == contiguous_strides
|
|
335
335
|
self
|
|
@@ -37,8 +37,8 @@ module Hornetseye
|
|
|
37
37
|
target = typecode.send conversion
|
|
38
38
|
target.new simplify.get.send(op)
|
|
39
39
|
else
|
|
40
|
-
Hornetseye::ElementWise(
|
|
41
|
-
|
|
40
|
+
Hornetseye::ElementWise(proc { |x| x.send op }, op,
|
|
41
|
+
proc { |t| t.send conversion }).
|
|
42
42
|
new(self).force
|
|
43
43
|
end
|
|
44
44
|
end
|
|
@@ -61,8 +61,8 @@ module Hornetseye
|
|
|
61
61
|
target = typecode.send coercion, other.typecode
|
|
62
62
|
target.new simplify.get.send(op, other.simplify.get)
|
|
63
63
|
else
|
|
64
|
-
Hornetseye::ElementWise(
|
|
65
|
-
|
|
64
|
+
Hornetseye::ElementWise(proc { |x,y| x.send op, y }, op,
|
|
65
|
+
proc { |t,u| t.send coercion, u } ).
|
|
66
66
|
new(sexp, other.sexp).force
|
|
67
67
|
end
|
|
68
68
|
end
|
|
@@ -141,8 +141,8 @@ module Hornetseye
|
|
|
141
141
|
target.new(simplify.get).simplify
|
|
142
142
|
else
|
|
143
143
|
key = "to_#{dest.to_s.downcase}"
|
|
144
|
-
Hornetseye::ElementWise(
|
|
145
|
-
|
|
144
|
+
Hornetseye::ElementWise( proc { |x| x.to_type dest }, key,
|
|
145
|
+
proc { |t| t.to_type dest } ).new(self).force
|
|
146
146
|
end
|
|
147
147
|
end
|
|
148
148
|
|
|
@@ -195,7 +195,7 @@ module Hornetseye
|
|
|
195
195
|
#
|
|
196
196
|
# @return [Node] Array with desired shape.
|
|
197
197
|
def reshape(*ret_shape)
|
|
198
|
-
target_size = ret_shape.inject
|
|
198
|
+
target_size = ret_shape.inject 1, :*
|
|
199
199
|
if target_size != size
|
|
200
200
|
raise "Target is of size #{target_size} but should be of size #{size}"
|
|
201
201
|
end
|
|
@@ -219,8 +219,8 @@ module Hornetseye
|
|
|
219
219
|
target.new simplify.get.conditional(proc { a.simplify.get },
|
|
220
220
|
proc { b.simplify.get })
|
|
221
221
|
else
|
|
222
|
-
Hornetseye::ElementWise(
|
|
223
|
-
|
|
222
|
+
Hornetseye::ElementWise(proc { |x,y,z| x.conditional y, z }, :conditional,
|
|
223
|
+
proc { |t,u,v| t.cond u, v }).
|
|
224
224
|
new(self, a.sexp, b.sexp).force
|
|
225
225
|
end
|
|
226
226
|
end
|
|
@@ -280,7 +280,7 @@ module Hornetseye
|
|
|
280
280
|
var
|
|
281
281
|
end.reverse
|
|
282
282
|
order.collect { |o| variables[o] }.
|
|
283
|
-
inject(
|
|
283
|
+
inject(term) { |retval,var| Lambda.new var, retval }
|
|
284
284
|
end
|
|
285
285
|
|
|
286
286
|
# Cycle indices of array
|
|
@@ -318,10 +318,10 @@ module Hornetseye
|
|
|
318
318
|
# @param [Proc] action Operation(s) to perform on elements.
|
|
319
319
|
#
|
|
320
320
|
# @return [Node] The resulting array.
|
|
321
|
-
def collect(
|
|
321
|
+
def collect(&action)
|
|
322
322
|
var = Variable.new typecode
|
|
323
323
|
block = action.call var
|
|
324
|
-
conversion =
|
|
324
|
+
conversion = proc { |t| t.to_type action.call(Variable.new(t.typecode)).typecode }
|
|
325
325
|
Hornetseye::ElementWise( action, block.to_s, conversion ).new( self ).force
|
|
326
326
|
end
|
|
327
327
|
|
|
@@ -334,14 +334,29 @@ module Hornetseye
|
|
|
334
334
|
|
|
335
335
|
# Perform cummulative operation on array
|
|
336
336
|
#
|
|
337
|
-
# @
|
|
338
|
-
#
|
|
339
|
-
#
|
|
340
|
-
#
|
|
341
|
-
#
|
|
337
|
+
# @overload inject(initial = nil, options = {}, &action)
|
|
338
|
+
# @param [Object] initial Initial value for cummulative operation.
|
|
339
|
+
# @option options [Variable] :var1 First variable defining operation.
|
|
340
|
+
# @option options [Variable] :var1 Second variable defining operation.
|
|
341
|
+
# @option options [Variable] :block (action.call(var1, var2)) The operation to apply.
|
|
342
|
+
#
|
|
343
|
+
# @overload inject(initial = nil, symbol)
|
|
344
|
+
# @param [Object] initial Initial value for cummulative operation.
|
|
345
|
+
# @param [Symbol,String] symbol The operation to apply.
|
|
342
346
|
#
|
|
343
347
|
# @return [Object] Result of injection.
|
|
344
|
-
def inject(
|
|
348
|
+
def inject(*args, &action)
|
|
349
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
|
350
|
+
unless action or options[:block]
|
|
351
|
+
unless [1, 2].member? args.size
|
|
352
|
+
raise "Inject expected 1 or 2 arguments but got #{args.size}"
|
|
353
|
+
end
|
|
354
|
+
initial, symbol = args[-2], args[-1]
|
|
355
|
+
action = proc { |a,b| a.send symbol, b }
|
|
356
|
+
else
|
|
357
|
+
raise "Inject expected 0 or 1 arguments but got #{args.size}" if args.size > 1
|
|
358
|
+
initial = args.empty? ? nil : args.first
|
|
359
|
+
end
|
|
345
360
|
unless initial.nil?
|
|
346
361
|
initial = Node.match( initial ).new initial unless initial.matched?
|
|
347
362
|
initial_typecode = initial.typecode
|
|
@@ -350,7 +365,7 @@ module Hornetseye
|
|
|
350
365
|
end
|
|
351
366
|
var1 = options[ :var1 ] || Variable.new( initial_typecode )
|
|
352
367
|
var2 = options[ :var2 ] || Variable.new( typecode )
|
|
353
|
-
block = options[ :block ] ||
|
|
368
|
+
block = options[ :block ] || action.call( var1, var2 )
|
|
354
369
|
if dimension == 0
|
|
355
370
|
if initial
|
|
356
371
|
block.subst( var1 => initial, var2 => self ).simplify
|
|
@@ -384,7 +399,7 @@ module Hornetseye
|
|
|
384
399
|
if other.matched?
|
|
385
400
|
if variables.empty?
|
|
386
401
|
if other.typecode == typecode and other.shape == shape
|
|
387
|
-
Hornetseye::finalise { eq(other).inject
|
|
402
|
+
Hornetseye::finalise { eq(other).inject true, :and }
|
|
388
403
|
else
|
|
389
404
|
false
|
|
390
405
|
end
|
|
@@ -404,7 +419,7 @@ module Hornetseye
|
|
|
404
419
|
#
|
|
405
420
|
# @return [Object] Minimum value of array.
|
|
406
421
|
def min( initial = nil )
|
|
407
|
-
inject
|
|
422
|
+
inject initial, :minor
|
|
408
423
|
end
|
|
409
424
|
|
|
410
425
|
# Find maximum value of array
|
|
@@ -413,14 +428,14 @@ module Hornetseye
|
|
|
413
428
|
#
|
|
414
429
|
# @return [Object] Maximum value of array.
|
|
415
430
|
def max( initial = nil )
|
|
416
|
-
inject
|
|
431
|
+
inject initial, :major
|
|
417
432
|
end
|
|
418
433
|
|
|
419
434
|
# Compute sum of array
|
|
420
435
|
#
|
|
421
436
|
# @return [Object] Sum of array.
|
|
422
437
|
def sum
|
|
423
|
-
Hornetseye::lazy { to_type typecode.maxint }.inject
|
|
438
|
+
Hornetseye::lazy { to_type typecode.maxint }.inject :+
|
|
424
439
|
end
|
|
425
440
|
|
|
426
441
|
# Find range of values of array
|
|
@@ -696,7 +711,7 @@ module Hornetseye
|
|
|
696
711
|
Hornetseye::lazy do
|
|
697
712
|
( 0 ... field.size ).
|
|
698
713
|
collect { |i| ( field[i] >= 0 ).and( field[i] < shape[i] ) }.
|
|
699
|
-
inject
|
|
714
|
+
inject :and
|
|
700
715
|
end.conditional Lut.new( *( field + [ self ] ) ), options[ :default ]
|
|
701
716
|
else
|
|
702
717
|
field.lut self, :safe => false
|
data/lib/multiarray/rgb.rb
CHANGED
|
@@ -475,7 +475,7 @@ module Hornetseye
|
|
|
475
475
|
if values.all? { |value| value.is_a? RGB or value.is_a? Float or
|
|
476
476
|
value.is_a? Integer }
|
|
477
477
|
if values.any? { |value| value.is_a? RGB }
|
|
478
|
-
elements = values.inject(
|
|
478
|
+
elements = values.inject([]) do |arr,value|
|
|
479
479
|
if value.is_a? RGB
|
|
480
480
|
arr + [ value.r, value.g, value.b ]
|
|
481
481
|
else
|
data/lib/multiarray/unmask.rb
CHANGED
|
@@ -141,9 +141,9 @@ module Hornetseye
|
|
|
141
141
|
def strip
|
|
142
142
|
stripped = [ @dest, @source, @m, @index, @default ].
|
|
143
143
|
collect { |value| value.strip }
|
|
144
|
-
return stripped.inject(
|
|
145
|
-
stripped.inject(
|
|
146
|
-
self.class.new(
|
|
144
|
+
return stripped.inject([]) { |vars,elem| vars + elem[0] },
|
|
145
|
+
stripped.inject([]) { |values,elem| values + elem[1] },
|
|
146
|
+
self.class.new(*stripped.collect { |elem| elem[2] })
|
|
147
147
|
end
|
|
148
148
|
|
|
149
149
|
# Check whether this term is compilable
|
data/test/tc_multiarray.rb
CHANGED
|
@@ -336,7 +336,9 @@ class TC_MultiArray < Test::Unit::TestCase
|
|
|
336
336
|
|
|
337
337
|
def test_inject
|
|
338
338
|
assert_equal 21, M[[1, 2, 3], [4, 5, 6]].inject { |a,b| a + b }
|
|
339
|
+
assert_equal 21, M[[1, 2, 3], [4, 5, 6]].inject(:+)
|
|
339
340
|
assert_equal 28, M[[1, 2, 3], [4, 5, 6]].inject(7) { |a,b| a + b }
|
|
341
|
+
assert_equal 28, M[[1, 2, 3], [4, 5, 6]].inject(7, :+)
|
|
340
342
|
end
|
|
341
343
|
|
|
342
344
|
def test_collect
|
data/test/tc_sequence.rb
CHANGED
|
@@ -265,7 +265,9 @@ class TC_Sequence < Test::Unit::TestCase
|
|
|
265
265
|
|
|
266
266
|
def test_inject
|
|
267
267
|
assert_equal 6, S[ 1, 2, 3 ].inject { |a,b| a + b }
|
|
268
|
-
assert_equal
|
|
268
|
+
assert_equal 6, S[ 1, 2, 3 ].inject(:+)
|
|
269
|
+
assert_equal 10, S[ 1, 2, 3 ].inject(4) { |a,b| a + b }
|
|
270
|
+
assert_equal 10, S[ 1, 2, 3 ].inject(4, :+)
|
|
269
271
|
assert_equal 'abc', S[ 'a', 'b', 'c' ].inject { |a,b| a + b }
|
|
270
272
|
assert_equal 'abcd', S[ 'b', 'c', 'd' ].inject( 'a' ) { |a,b| a + b }
|
|
271
273
|
assert_equal C( 3, 5, 8 ), S[ C( 1, 2, 3 ), C( 2, 3, 5 ) ].inject { |a,b| a + b }
|
metadata
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: multiarray
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
prerelease:
|
|
5
|
-
|
|
6
|
-
- 0
|
|
7
|
-
- 23
|
|
8
|
-
- 1
|
|
9
|
-
version: 0.23.1
|
|
4
|
+
prerelease:
|
|
5
|
+
version: 0.23.2
|
|
10
6
|
platform: ruby
|
|
11
7
|
authors:
|
|
12
8
|
- Jan Wedekind
|
|
@@ -14,8 +10,7 @@ autorequire:
|
|
|
14
10
|
bindir: bin
|
|
15
11
|
cert_chain: []
|
|
16
12
|
|
|
17
|
-
date: 2011-06-29 00:00:00
|
|
18
|
-
default_executable:
|
|
13
|
+
date: 2011-06-29 00:00:00 Z
|
|
19
14
|
dependencies:
|
|
20
15
|
- !ruby/object:Gem::Dependency
|
|
21
16
|
name: malloc
|
|
@@ -25,9 +20,6 @@ dependencies:
|
|
|
25
20
|
requirements:
|
|
26
21
|
- - ~>
|
|
27
22
|
- !ruby/object:Gem::Version
|
|
28
|
-
segments:
|
|
29
|
-
- 1
|
|
30
|
-
- 1
|
|
31
23
|
version: "1.1"
|
|
32
24
|
type: :runtime
|
|
33
25
|
version_requirements: *id001
|
|
@@ -39,8 +31,6 @@ dependencies:
|
|
|
39
31
|
requirements:
|
|
40
32
|
- - ">="
|
|
41
33
|
- !ruby/object:Gem::Version
|
|
42
|
-
segments:
|
|
43
|
-
- 0
|
|
44
34
|
version: "0"
|
|
45
35
|
type: :development
|
|
46
36
|
version_requirements: *id002
|
|
@@ -106,7 +96,6 @@ files:
|
|
|
106
96
|
- test/tc_bool.rb
|
|
107
97
|
- test/tc_rgb.rb
|
|
108
98
|
- test/tc_sequence.rb
|
|
109
|
-
has_rdoc: yard
|
|
110
99
|
homepage: http://wedesoft.github.com/multiarray/
|
|
111
100
|
licenses: []
|
|
112
101
|
|
|
@@ -120,21 +109,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
120
109
|
requirements:
|
|
121
110
|
- - ">="
|
|
122
111
|
- !ruby/object:Gem::Version
|
|
123
|
-
segments:
|
|
124
|
-
- 0
|
|
125
112
|
version: "0"
|
|
126
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
114
|
none: false
|
|
128
115
|
requirements:
|
|
129
116
|
- - ">="
|
|
130
117
|
- !ruby/object:Gem::Version
|
|
131
|
-
segments:
|
|
132
|
-
- 0
|
|
133
118
|
version: "0"
|
|
134
119
|
requirements: []
|
|
135
120
|
|
|
136
121
|
rubyforge_project: hornetseye
|
|
137
|
-
rubygems_version: 1.
|
|
122
|
+
rubygems_version: 1.8.5
|
|
138
123
|
signing_key:
|
|
139
124
|
specification_version: 3
|
|
140
125
|
summary: Multi-dimensional and uniform Ruby arrays
|