Skip to content

Commit e447e97

Browse files
committed
Updated matrix spec, better grouping for tests and row, column tests
1 parent 6a7fa2b commit e447e97

File tree

2 files changed

+33
-17
lines changed

2 files changed

+33
-17
lines changed

lib/symengine/dense_matrix.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module SymEngine
2-
class MatrixBase
2+
class DenseMatrix
33
def inspect
44
"#<#{self.class}(#{rows}x#{cols})>"
55
end

spec/matrix_spec.rb

+32-16
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
its(:to_s) { is_expected.to eq "[1, 2]\n[3, 4]\n" }
77
end
88

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

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

2121
its(:LDL) { is_expected.to eq [SymEngine([[1, 0],[SymEngine(3)/SymEngine(4), 1]]),
2222
SymEngine([[4, 0],[0, SymEngine(-1)/SymEngine(4)]])] }
23-
24-
its(:FFLU) { is_expected.to eq SymEngine([[4, 3],[3, -1]]) }
2523

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

3129
end
3230

33-
describe 'more dense_matrix functions' do
34-
35-
let(:mat1) { SymEngine([[1, 2],[3, 4]]) }
36-
let(:mat2) { SymEngine([[4, 3],[2, 1]]) }
37-
let(:a) { SymEngine(4) }
38-
let(:matA) { SymEngine([[3, 1, 2],[5, 7, 5], [1, 2, 3]]) }
39-
let(:b) { SymEngine([[4],[4],[4]]) }
31+
32+
let(:mat1) { SymEngine([[1, 2],[3, 4]]) }
33+
let(:mat2) { SymEngine([[4, 3],[2, 1]]) }
34+
let(:a) { SymEngine(4) }
35+
let(:matA) { SymEngine([[3, 1, 2],[5, 7, 5], [1, 2, 3]]) }
36+
let(:b) { SymEngine([[4],[4],[4]]) }
4037

41-
it do
38+
describe 'dense_matrix addition, multiplication' do
4239

40+
it 'adds and multiplies' do
4341
expect(mat1 + mat2).to eq(SymEngine([[5, 5],[5, 5]]))
4442
expect(mat1 + a).to eq(SymEngine([[5, 6],[7, 8]]))
4543
expect(mat1 * mat2).to eq(SymEngine([[8, 5],[20, 13]]))
4644
expect(mat1 * a).to eq(SymEngine([[4, 8],[12, 16]]))
47-
45+
end
46+
end
47+
48+
describe 'dense_matrix transpose and submatrix' do
49+
it 'performs transpose and submatrix' do
4850
expect(mat1.transpose).to eq(SymEngine([[1, 3],[2, 4]]))
49-
5051
expect(mat1.submatrix(0, 0, 1, 0, 1, 1)).to eq(SymEngine([[1],[3]]))
51-
52-
52+
end
53+
end
54+
55+
describe 'LU_solve' do
56+
it 'solves Ax = b' do
5357
expect(matA.LU_solve(b)).to eq(SymEngine([[SymEngine(12)/SymEngine(29)],
5458
[SymEngine(-32)/SymEngine(29)],
5559
[SymEngine(56)/SymEngine(29)]
56-
]))
60+
]))
61+
end
62+
end
63+
64+
describe 'getter and setter' do
65+
it 'gets and sets elements' do
5766
expect(mat1.set(0, 0, a)).to eq(SymEngine([[4, 2],[3, 4]]))
5867
expect(mat1.get(1, 0)).to eq(SymEngine(3))
5968
end
6069
end
6170

71+
describe 'rows and cols' do
72+
it 'returns row and column count' do
73+
expect(matA.rows). to eq (3)
74+
expect(matA.cols). to eq (3)
75+
end
76+
end
77+
6278
end

0 commit comments

Comments
 (0)