|
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