mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Matrix: Add #reflexive? method. [Fix GH-1730]
Adapted from a patch by Yilo git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64796 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
a64338ce44
commit
19fe6552c4
3 changed files with 43 additions and 1 deletions
4
NEWS
4
NEWS
|
@ -264,10 +264,12 @@ sufficient information, see the ChangeLog file or Redmine
|
|||
|
||||
* `Matrix`
|
||||
|
||||
* New method:
|
||||
* New methods:
|
||||
|
||||
* `Matrix#antisymmetric?`
|
||||
|
||||
* `Matrix#reflexive?`
|
||||
|
||||
* `Net`
|
||||
|
||||
* New options:
|
||||
|
|
|
@ -813,6 +813,15 @@ class Matrix
|
|||
true
|
||||
end
|
||||
|
||||
#
|
||||
# Returns +true+ if this is a reflexive matrix.
|
||||
# Raises an error if matrix is not square.
|
||||
#
|
||||
def reflexive?
|
||||
Matrix.Raise ErrDimensionMismatch unless square?
|
||||
each(:diagonal).all? { |e| e == 1 }
|
||||
end
|
||||
|
||||
#
|
||||
# Returns +true+ if this is a unitary matrix
|
||||
# Raises an error if matrix is not square.
|
||||
|
|
31
spec/ruby/library/matrix/reflexive_spec.rb
Normal file
31
spec/ruby/library/matrix/reflexive_spec.rb
Normal file
|
@ -0,0 +1,31 @@
|
|||
require File.expand_path('../../../spec_helper', __FILE__)
|
||||
require 'matrix'
|
||||
|
||||
ruby_version_is '2.6' do
|
||||
describe "Matrix.reflexive?" do
|
||||
it "returns true for a reflexive Matrix" do
|
||||
Matrix[[1, 2, 3], [4, 1, 3], [5, 3, 1]].reflexive?.should be_true
|
||||
end
|
||||
|
||||
it "returns true for a 0x0 empty matrix" do
|
||||
Matrix.empty.reflexive?.should be_true
|
||||
end
|
||||
|
||||
it "returns false for a non-reflexive Matrix" do
|
||||
Matrix[[1, 1],[2, 2]].reflexive?.should be_false
|
||||
end
|
||||
|
||||
it "raises an error for non-square matrices" do
|
||||
[
|
||||
Matrix[[0], [0]],
|
||||
Matrix[[0, 0]],
|
||||
Matrix.empty(0, 2),
|
||||
Matrix.empty(2, 0),
|
||||
].each do |rectangular_matrix|
|
||||
lambda {
|
||||
rectangular_matrix.reflexive?
|
||||
}.should raise_error(Matrix::ErrDimensionMismatch)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue