Ruby 2.6.0-preview2 was recently released.

A matrix according to Wikipedia is a rectangular array of numbers. Matrix class in ruby represents a mathematical matrix.

>> x = Matrix [[ 1 , 2 ] , [ 3 , 4 ]] => Matrix [[ 1 , 2 ] , [ 3 , 4 ]]

Ruby 2.5.0

Let’s say we want to find out if a matrix is a skew-symmetric (or antisymmetric) matrix.

>> matrix1 = Matrix [[ 0 , 1 ] , [- 1 , 0 ]] => Matrix [[ 0 , 1 ] , [- 1 , 0 ]] >> matrix1 == - matrix1 . transpose => true => matrix2 = Matrix [[ 0 , 2 , - 1 ] , [- 2 , 0 , - 4 ] , [ 1 , 4 , 0 ]] >> matrix2 == - matrix2 . transpose => true

Ruby 2.6.0

In Ruby 2.6, we can use Matrix#antisymmetric? method to check if the matrix is skew-symmetric (or antisymmetric or antimetric) matrix. It returns true for skew-symmetric matrix.

>> matrix1 = Matrix [[ 0 , 1 ] , [- 1 , 0 ]] => Matrix [[ 0 , 1 ] , [- 1 , 0 ]] >> y . antisymmetric? => true >> matrix2 = Matrix [[ 0 , 2 , - 1 ] , [- 2 , 0 , - 4 ] , [ 1 , 4 , 0 ]] => Matrix [[ 0 , 2 , - 1 ] , [- 2 , 0 , - 4 ] , [ 1 , 4 , 0 ]] >> matrix2 . antisymmetric? => true

Matrix#antisymmetric? returns true for a 0x0 empty matrix.

>> Matrix . empty => Matrix . empty( 0 , 0 ) >> Matrix . empty . antisymmetric? => true

It returns false for a non-antisymmetric matrix.

>> x = Matrix [[ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ]] => Matrix [[ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ]] >> x . antisymmetric? => false

It raises a Matrix::ErrDimensionMismatch error for rectangular matrix i.e. a matrix for which horizontal and vertical dimensions are not the same.

>> x = Matrix [[ 1 , 2 , 3 ] , [ 4 , 5 , 6 ]] => Matrix [[ 1 , 2 , 3 ] , [ 4 , 5 , 6 ]] >> x . antisymmetric? Traceback (most recent call last): 3 : from /home/ atul /. rvm / rubies / ruby - 2 . 6 . 0 - preview2 / bin / irb : 11 :in `<main>' 2: from (irb):24 1: from /home/atul/.rvm/rubies/ruby-2.6.0-preview2/lib/ruby/2.6.0/matrix.rb:809:in ` antisymmetric? ' ExceptionForMatrix :: ErrDimensionMismatch ( Matrix dimension mismatch)

Here is the relevant commit and discussion for the change.