Feature #13208 ยป 0001-Add-Vector.zero-n-and-vector.zero.patch
| lib/matrix.rb | ||
|---|---|---|
|
# * Vector.[](*array)
|
||
|
# * Vector.elements(array, copy = true)
|
||
|
# * Vector.basis(size: n, index: k)
|
||
|
# * Vector.zero(n)
|
||
|
#
|
||
|
# To access elements:
|
||
|
# * #[](i)
|
||
| ... | ... | |
|
# * #angle_with(v)
|
||
|
# * Vector.independent?(*vs)
|
||
|
# * #independent?(*vs)
|
||
|
# * #zero?
|
||
|
#
|
||
|
# Vector arithmetic:
|
||
|
# * #*(x) "is matrix or number"
|
||
| ... | ... | |
|
end
|
||
|
#
|
||
|
# Return a zero vector.
|
||
|
#
|
||
|
# Vector.zero(3) => Vector[0, 0, 0]
|
||
|
#
|
||
|
def Vector.zero(size)
|
||
|
raise ArgumentError, "invalid size (#{size} for 1..)" if size < 1
|
||
|
array = Array.new(size, 0)
|
||
|
new convert_to_array(array, false)
|
||
|
end
|
||
|
#
|
||
|
# Vector.new is private; use Vector[] or Vector.elements to create.
|
||
|
#
|
||
|
def initialize(array)
|
||
| ... | ... | |
|
self.class.independent?(self, *vs)
|
||
|
end
|
||
|
#
|
||
|
# Returns +true+ iff all elements are zero.
|
||
|
#
|
||
|
def zero?
|
||
|
all?(&:zero?)
|
||
|
end
|
||
|
#--
|
||
|
# COMPARING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||
|
#++
|
||
| test/matrix/test_vector.rb | ||
|---|---|---|
|
@w1 = Vector[2,3,4]
|
||
|
end
|
||
|
def test_zero
|
||
|
assert_equal Vector[0, 0, 0, 0], Vector.zero(4)
|
||
|
assert_raise(ArgumentError) { Vector.zero(-1) }
|
||
|
assert Vector[0, 0, 0, 0].zero?
|
||
|
end
|
||
|
|
||
|
def test_basis
|
||
|
assert_equal(Vector[1, 0, 0], Vector.basis(size: 3, index: 0))
|
||
|
assert_raise(ArgumentError) { Vector.basis(size: -1, index: 2) }
|
||