-
Notifications
You must be signed in to change notification settings - Fork 5
Boolean Arrays
Rodrigo Botafogo edited this page May 20, 2013
·
3 revisions
setup do
# create a = [20 30 40 50]
@a = MDArray.arange(20, 60, 10)
# create b = [0 1 2 3]
@b = MDArray.arange(4)
# create c = [1.87 5.34 7.18 8.84]
@c = MDArray.double([4], [1.87, 5.34, 7.18, 8.84])
# create d = [[1 2] [3 4]]
@d = MDArray.int([2, 2], [1, 2, 3, 4])
# creates an array from a function (actually a block). The name fromfunction
# is preserved to maintain API compatibility with NumPy (is it necessary?)
@e = MDArray.fromfunction("double", [4, 5, 6]) do |x, y, z|
3.21 * (x + y + z)
end
@f = MDArray.fromfunction("double", [4, 5, 6]) do |x, y, z|
9.57 * x + y + z
end
@bool1 = MDArray.boolean([4], [true, false, true, false])
@bool2 = MDArray.boolean([4], [false, false, true, true])
end # setup
#-------------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------------
should "work with boolean arrays and operators" do
# elementwise boolean operations supported
result = @bool1.and(@bool2)
assert_equal("false false true false ", result.to_string)
result = @bool2.and(@bool1)
assert_equal("false false true false ", result.to_string)
# Cannot overload and, so using & as an alias to and
result = @bool1 & @bool2
assert_equal("false false true false ", result.to_string)
result = @bool2.or(@bool1)
assert_equal("true false true true ", result.to_string)
# Cannot overload or, so using | as an alias to or
result = @bool2 | @bool1
assert_equal("true false true true ", result.to_string)
result = @bool1.not
assert_equal("false true false true ", result.to_string)
end