summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--NEWS3
-rw-r--r--lib/matrix.rb8
-rw-r--r--test/matrix/test_matrix.rb6
-rw-r--r--test/matrix/test_vector.rb4
5 files changed, 26 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index c0edee86cd..25034759a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Mar 6 08:45:26 2015 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Add Vector#round. Patch by Jordan Stephens.
+ [Fixes GH-802]
+
Fri Mar 6 07:33:03 2015 Koichi Sasada <ko1@atdot.net>
* gc.c (obj_info): show node name too.
diff --git a/NEWS b/NEWS
index 67f7b3f294..114b9d2ec7 100644
--- a/NEWS
+++ b/NEWS
@@ -44,6 +44,9 @@ with all sufficient information, see the ChangeLog file.
* Base64.urlsafe_decode64: now it accepts not only correctly-padded
input but also unpadded input.
+* lib/matrix.rb
+ * Add Vector#round. https://github.com/ruby/ruby/pull/802
+
* ext/coverage/coverage.c
* Coverage.peek_result: new method to allow coverage to be captured without
stopping the coverage tool.
diff --git a/lib/matrix.rb b/lib/matrix.rb
index 1f8f0589e1..f1e30f82cb 100644
--- a/lib/matrix.rb
+++ b/lib/matrix.rb
@@ -1713,6 +1713,7 @@ end
# * #norm
# * #normalize
# * #r
+# * #round
# * #size
#
# Conversion to other data types:
@@ -1790,6 +1791,13 @@ class Vector
alias set_component []=
private :[]=, :set_element, :set_component
+ # Returns a vector with entries rounded to the given precision
+ # (see Float#round)
+ #
+ def round(ndigits=0)
+ map{|e| e.round(ndigits)}
+ end
+
#
# Returns the number of elements in the vector.
#
diff --git a/test/matrix/test_matrix.rb b/test/matrix/test_matrix.rb
index 3fdef3b314..7f058abe37 100644
--- a/test/matrix/test_matrix.rb
+++ b/test/matrix/test_matrix.rb
@@ -190,6 +190,12 @@ class TestMatrix < Test::Unit::TestCase
assert_equal(@m1, Matrix[o, [4,5,6]])
end
+ def test_round
+ a = Matrix[[1.0111, 2.32320, 3.04343], [4.81, 5.0, 6.997]]
+ b = Matrix[[1.01, 2.32, 3.04], [4.81, 5.0, 7.0]]
+ assert_equal(a.round(2), b)
+ end
+
def test_rows
assert_equal(@m1, Matrix.rows([[1, 2, 3], [4, 5, 6]]))
end
diff --git a/test/matrix/test_vector.rb b/test/matrix/test_vector.rb
index 3275310b42..77fc68dd2b 100644
--- a/test/matrix/test_vector.rb
+++ b/test/matrix/test_vector.rb
@@ -157,6 +157,10 @@ class TestVector < Test::Unit::TestCase
assert_equal(5, Vector[3, 4].r)
end
+ def test_round
+ assert_equal(Vector[1.234, 2.345, 3.40].round(2), Vector[1.23, 2.35, 3.4])
+ end
+
def test_covector
assert_equal(Matrix[[1,2,3]], @v1.covector)
end