Skip to content

Commit

Permalink
Updated matrix spec, better grouping for tests and row, column tests
Browse files Browse the repository at this point in the history
  • Loading branch information
rajithv committed Jul 7, 2016
1 parent 6a7fa2b commit 54d0685
Showing 1 changed file with 32 additions and 16 deletions.
48 changes: 32 additions & 16 deletions spec/matrix_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
its(:to_s) { is_expected.to eq "[1, 2]\n[3, 4]\n" }
end

describe 'dense_matrix functions' do
describe 'dense_matrix inverse, FFLU, LU, LDL, FFLDU, det' do
subject { SymEngine([[4, 3],[3, 2]]) }

its(:inv) { is_expected.to be_a SymEngine::DenseMatrix }
Expand All @@ -20,8 +20,6 @@

its(:LDL) { is_expected.to eq [SymEngine([[1, 0],[SymEngine(3)/SymEngine(4), 1]]),
SymEngine([[4, 0],[0, SymEngine(-1)/SymEngine(4)]])] }

its(:FFLU) { is_expected.to eq SymEngine([[4, 3],[3, -1]]) }

its(:FFLDU) { is_expected.to eq [SymEngine([[4, 0],[3, 1]]), SymEngine([[4, 0],[0, 4]]),
SymEngine([[4, 3],[0, -1]])] }
Expand All @@ -30,33 +28,51 @@

end

describe 'more dense_matrix functions' do

let(:mat1) { SymEngine([[1, 2],[3, 4]]) }
let(:mat2) { SymEngine([[4, 3],[2, 1]]) }
let(:a) { SymEngine(4) }
let(:matA) { SymEngine([[3, 1, 2],[5, 7, 5], [1, 2, 3]]) }
let(:b) { SymEngine([[4],[4],[4]]) }

let(:mat1) { SymEngine([[1, 2],[3, 4]]) }
let(:mat2) { SymEngine([[4, 3],[2, 1]]) }
let(:a) { SymEngine(4) }
let(:matA) { SymEngine([[3, 1, 2],[5, 7, 5], [1, 2, 3]]) }
let(:b) { SymEngine([[4],[4],[4]]) }

it do
describe 'dense_matrix addition, multiplication' do

it 'adds and multiplies' do
expect(mat1 + mat2).to eq(SymEngine([[5, 5],[5, 5]]))
expect(mat1 + a).to eq(SymEngine([[5, 6],[7, 8]]))
expect(mat1 * mat2).to eq(SymEngine([[8, 5],[20, 13]]))
expect(mat1 * a).to eq(SymEngine([[4, 8],[12, 16]]))

end
end

describe 'dense_matrix transpose and submatrix' do
it 'performs transpose and submatrix' do
expect(mat1.transpose).to eq(SymEngine([[1, 3],[2, 4]]))

expect(mat1.submatrix(0, 0, 1, 0, 1, 1)).to eq(SymEngine([[1],[3]]))


end
end

describe 'LU_solve' do
it 'solves Ax = b' do
expect(matA.LU_solve(b)).to eq(SymEngine([[SymEngine(12)/SymEngine(29)],
[SymEngine(-32)/SymEngine(29)],
[SymEngine(56)/SymEngine(29)]
]))
]))
end
end

describe 'getter and setter' do
it 'gets and sets elements' do
expect(mat1.set(0, 0, a)).to eq(SymEngine([[4, 2],[3, 4]]))
expect(mat1.get(1, 0)).to eq(SymEngine(3))
end
end

describe 'rows and cols' do
it 'returns row and column count' do
expect(matA.rows). to eq (3)
expect(matA.cols). to eq (3)
end
end

end

0 comments on commit 54d0685

Please sign in to comment.