From 666df1459406ad03d95105e228841d5bbfbe6e15 Mon Sep 17 00:00:00 2001 From: marcandre Date: Tue, 14 Mar 2017 20:09:30 +0000 Subject: * lib/matrix.rb: Add Vector.zero and Vector#zero? Patch by Chia-sheng Chen [#13208] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/matrix.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib/matrix.rb') diff --git a/lib/matrix.rb b/lib/matrix.rb index eaa4bfc6e1..77c35b3475 100644 --- a/lib/matrix.rb +++ b/lib/matrix.rb @@ -1685,6 +1685,7 @@ end # * Vector.[](*array) # * Vector.elements(array, copy = true) # * Vector.basis(size: n, index: k) +# * Vector.zero(n) # # To access elements: # * #[](i) @@ -1697,6 +1698,7 @@ end # * #angle_with(v) # * Vector.independent?(*vs) # * #independent?(*vs) +# * #zero? # # Vector arithmetic: # * #*(x) "is matrix or number" @@ -1768,6 +1770,17 @@ class Vector new convert_to_array(array, false) end + # + # Return a zero vector. + # + # Vector.zero(3) => Vector[0, 0, 0] + # + def Vector.zero(size) + raise ArgumentError, "invalid size (#{size} for 0..)" if size < 0 + array = Array.new(size, 0) + new convert_to_array(array, false) + end + # # Vector.new is private; use Vector[] or Vector.elements to create. # @@ -1882,6 +1895,13 @@ class Vector self.class.independent?(self, *vs) end + # + # Returns +true+ iff all elements are zero. + # + def zero? + all?(&:zero?) + end + #-- # COMPARING -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #++ -- cgit v1.2.3