1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/matrix.rb: Add @- and @+ for Matrix and Vector.

patch by gogo tanaka [#10068] [#10069]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
marcandre 2014-10-07 20:18:35 +00:00
parent 49e9f4714e
commit a2ae7bccf8
5 changed files with 45 additions and 1 deletions

View file

@ -1,3 +1,8 @@
Wed Oct 8 05:16:32 2014 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
* lib/matrix.rb: Add @- and @+ for Matrix and Vector.
patch by gogo tanaka [#10068] [#10069]
Wed Oct 8 04:58:48 2014 John Bachir <j@jjb.cc> Wed Oct 8 04:58:48 2014 John Bachir <j@jjb.cc>
* bootstraptest/test_io.rb (assert_finish): * bootstraptest/test_io.rb (assert_finish):
@ -55,7 +60,7 @@ Tue Oct 7 21:40:17 2014 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* ext/win32ole/win32ole_method.c: refactoring. add * ext/win32ole/win32ole_method.c: refactoring. add
olemethod_data_get_struct to wrap Data_Get_Struct. olemethod_data_get_struct to wrap Data_Get_Struct.
* ext/win32ole/win32ole_method.h: ditto. * ext/win32ole/win32ole_method.h: ditto.
* ext/win32ole/win32ole_param.c (oleparam_ole_param): * ext/win32ole/win32ole_param.c (oleparam_ole_param):
call olemethod_data_get_struct instead of Data_Get_Struct. call olemethod_data_get_struct instead of Data_Get_Struct.

1
NEWS
View file

@ -147,6 +147,7 @@ with all sufficient information, see the ChangeLog file.
* Matrix#laplace_expansion(row_or_column: num) returns the laplace_expansion * Matrix#laplace_expansion(row_or_column: num) returns the laplace_expansion
along the +num+ -th row or column. along the +num+ -th row or column.
* Vector.basis(size:, index:) returns the specified basis vector * Vector.basis(size:, index:) returns the specified basis vector
* Unary - and + added for Vector and Matrix
* Pathname * Pathname
* Pathname#/ is aliased to Pathname#+. * Pathname#/ is aliased to Pathname#+.

View file

@ -90,6 +90,8 @@ end
# * #inverse # * #inverse
# * #inv # * #inv
# * #** # * #**
# * #+@
# * #-@
# #
# Matrix functions: # Matrix functions:
# * #determinant # * #determinant
@ -1122,6 +1124,14 @@ class Matrix
end end
end end
def +@
self
end
def -@
collect {|e| -e }
end
#-- #--
# MATRIX FUNCTIONS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # MATRIX FUNCTIONS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#++ #++
@ -1670,6 +1680,8 @@ end
# * #*(x) "is matrix or number" # * #*(x) "is matrix or number"
# * #+(v) # * #+(v)
# * #-(v) # * #-(v)
# * #+@
# * #-@
# #
# Vector functions: # Vector functions:
# * #inner_product(v) # * #inner_product(v)
@ -1907,6 +1919,14 @@ class Vector
end end
end end
def +@
self
end
def -@
collect {|e| -e }
end
#-- #--
# VECTOR FUNCTIONS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # VECTOR FUNCTIONS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#++ #++

View file

@ -62,6 +62,15 @@ class TestMatrix < Test::Unit::TestCase
assert_equal @m1.hash, @m3.hash assert_equal @m1.hash, @m3.hash
end end
def test_uplus
assert_equal(@m1, +@m1)
end
def test_negate
assert_equal(Matrix[[-1, -2, -3], [-4, -5, -6]], -@m1)
assert_equal(@m1, -(-@m1))
end
def test_rank def test_rank
[ [
[[0]], [[0]],

View file

@ -120,6 +120,15 @@ class TestVector < Test::Unit::TestCase
assert_equal(0, Vector[1, 2, 3] - o) assert_equal(0, Vector[1, 2, 3] - o)
end end
def test_uplus
assert_equal(@v1, +@v1)
end
def test_negate
assert_equal(Vector[-1, -2, -3], -@v1)
assert_equal(@v1, -(-@v1))
end
def test_inner_product def test_inner_product
assert_equal(1+4+9, @v1.inner_product(@v1)) assert_equal(1+4+9, @v1.inner_product(@v1))
end end