|
6 | 6 | its(:to_s) { is_expected.to eq "[1, 2]\n[3, 4]\n" } |
7 | 7 | end |
8 | 8 |
|
9 | | - describe 'dense_matrix functions' do |
| 9 | + describe 'dense_matrix inverse, FFLU, LU, LDL, FFLDU, det' do |
10 | 10 | subject { SymEngine([[4, 3],[3, 2]]) } |
11 | 11 |
|
12 | 12 | its(:inv) { is_expected.to be_a SymEngine::DenseMatrix } |
|
20 | 20 |
|
21 | 21 | its(:LDL) { is_expected.to eq [SymEngine([[1, 0],[SymEngine(3)/SymEngine(4), 1]]), |
22 | 22 | SymEngine([[4, 0],[0, SymEngine(-1)/SymEngine(4)]])] } |
23 | | - |
24 | | - its(:FFLU) { is_expected.to eq SymEngine([[4, 3],[3, -1]]) } |
25 | 23 |
|
26 | 24 | its(:FFLDU) { is_expected.to eq [SymEngine([[4, 0],[3, 1]]), SymEngine([[4, 0],[0, 4]]), |
27 | 25 | SymEngine([[4, 3],[0, -1]])] } |
|
30 | 28 |
|
31 | 29 | end |
32 | 30 |
|
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]]) } |
40 | 37 |
|
41 | | - it do |
| 38 | + describe 'dense_matrix addition, multiplication' do |
42 | 39 |
|
| 40 | + it 'adds and multiplies' do |
43 | 41 | expect(mat1 + mat2).to eq(SymEngine([[5, 5],[5, 5]])) |
44 | 42 | expect(mat1 + a).to eq(SymEngine([[5, 6],[7, 8]])) |
45 | 43 | expect(mat1 * mat2).to eq(SymEngine([[8, 5],[20, 13]])) |
46 | 44 | 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 |
48 | 50 | expect(mat1.transpose).to eq(SymEngine([[1, 3],[2, 4]])) |
49 | | - |
50 | 51 | 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 |
53 | 57 | expect(matA.LU_solve(b)).to eq(SymEngine([[SymEngine(12)/SymEngine(29)], |
54 | 58 | [SymEngine(-32)/SymEngine(29)], |
55 | 59 | [SymEngine(56)/SymEngine(29)] |
56 | | - ])) |
| 60 | + ])) |
| 61 | + end |
| 62 | + end |
| 63 | + |
| 64 | + describe 'getter and setter' do |
| 65 | + it 'gets and sets elements' do |
57 | 66 | expect(mat1.set(0, 0, a)).to eq(SymEngine([[4, 2],[3, 4]])) |
58 | 67 | expect(mat1.get(1, 0)).to eq(SymEngine(3)) |
59 | 68 | end |
60 | 69 | end |
61 | 70 |
|
| 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 | + |
62 | 78 | end |
0 commit comments