summaryrefslogtreecommitdiff
path: root/test/matrix/test_matrix.rb
diff options
context:
space:
mode:
authorMarc-Andre Lafortune <github@marc-andre.ca>2020-12-04 01:57:40 -0500
committerMarc-André Lafortune <github@marc-andre.ca>2020-12-05 00:56:58 -0500
commita83a51932dbc31b549e11b9da8967f2f52a8b07c (patch)
tree272eea99e5f40150af2a52114d7f8c9d8f325264 /test/matrix/test_matrix.rb
parent3b5b309b7b3724849c27dc1c836b5348a8a82e23 (diff)
[ruby/matrix] Optimize **
Avoiding recursive call would imply iterating bits starting from most significant, which is not easy to do efficiently. Any saving would be dwarfed by the multiplications anyways. [Feature #15233]
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3844
Diffstat (limited to 'test/matrix/test_matrix.rb')
-rw-r--r--test/matrix/test_matrix.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/test/matrix/test_matrix.rb b/test/matrix/test_matrix.rb
index b134bfb3a1..8125fb2bcb 100644
--- a/test/matrix/test_matrix.rb
+++ b/test/matrix/test_matrix.rb
@@ -448,6 +448,12 @@ class TestMatrix < Test::Unit::TestCase
assert_equal(Matrix[[67,96],[48,99]], Matrix[[7,6],[3,9]] ** 2)
assert_equal(Matrix.I(5), Matrix.I(5) ** -1)
assert_raise(Matrix::ErrOperationNotDefined) { Matrix.I(5) ** Object.new }
+
+ m = Matrix[[0,2],[1,0]]
+ exp = 0b11101000
+ assert_equal(Matrix.scalar(2, 1 << (exp/2)), m ** exp)
+ exp = 0b11101001
+ assert_equal(Matrix[[0, 2 << (exp/2)], [1 << (exp/2), 0]], m ** exp)
end
def test_det