Skip to content

Commit eeee7a8

Browse files
committed
more tests for Matrix MathObjects
1 parent bb3eb77 commit eeee7a8

File tree

1 file changed

+68
-2
lines changed

1 file changed

+68
-2
lines changed

t/math_objects/matrix.t

+68-2
Original file line numberDiff line numberDiff line change
@@ -105,17 +105,83 @@ subtest 'Use isSquare, isOne, and isRow methods' => sub {
105105
};
106106

107107
subtest 'Use tests for triangular matrices' => sub {
108-
my $A1 = Matrix([ [ 1, 2, 3, 4 ], [ 0, 6, 7, 8 ], [ 0, 0, 11, 12 ], [ 0, 0, 0, 16 ] ]);
108+
my $A1 = Matrix([ [ 1, 2, 3, 4 ], [ 0, 6, 7, 8 ], [ 0, 0, 11, 12 ], [ 0, 0, 0, 16 ] ]);
109109
my $A2 = Matrix([ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ], [ 13, 14, 15, 16 ] ]);
110+
my $A3 = Matrix($A1, $A1);
111+
my $A4 = Matrix($A2, $A1);
110112
ok $A1->isUpperTriangular, 'test for upper triangular matrix';
111113
ok !$A2->isUpperTriangular, 'not an upper triangular matrix';
114+
ok $A3->isUpperTriangular, 'test for upper triangular degree 3 matrix';
115+
ok !$A4->isUpperTriangular, 'not an upper triangular degree 3 matrix';
112116
my $B1 = Matrix([ [ 1, 0, 0, 0 ], [ 5, 6, 0, 0 ], [ 9, 10, 11, 0 ], [ 13, 14, 15, 16 ] ]);
113-
ok $B1->isLowerTriangular, 'test for lower triangular matrix';
114117
my $B2 = Matrix([ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ] ]);
118+
my $B3 = Matrix($B1, $B1);
119+
my $B4 = Matrix($B2, $B1);
120+
ok $B1->isLowerTriangular, 'test for lower triangular matrix';
115121
ok !$B2->isLowerTriangular, 'not a lower triangular matrix.';
122+
ok $B3->isLowerTriangular, 'test for lower triangular degree 3 matrix';
123+
ok !$B4->isLowerTriangular, 'not a lower triangular degree 3 matrix.';
116124

117125
};
118126

127+
subtest 'Test if a Matrix is symmetric' => sub {
128+
my $A = Matrix(5);
129+
ok $A->isSymmetric, 'test a degree 1 Matrix of length 1 is symmetric';
130+
my $B = Matrix([ 1, 2 ], [ 2, 3 ]);
131+
my $C = Matrix([ 1, 2 ], [ 3, 4 ]);
132+
ok $B->isSymmetric, 'test a degree 2 symmetric Matrix';
133+
ok !$C->isSymmetric, 'test a degree 2 nonsymmetric Matrix';
134+
my $D = Matrix($B, $B);
135+
my $E = Matrix($B, $C);
136+
ok $D->isSymmetric, 'test a degree 3 symmetric Matrix';
137+
ok !$E->isSymmetric, 'test a degree 3 nonsymmetric Matrix';
138+
};
139+
140+
subtest 'Test if a Matrix is orthogonal' => sub {
141+
my $A = Matrix(-1);
142+
my $B = Matrix( 2);
143+
ok $A->isOrthogonal, 'test a degree 1 orthogonal Matrix';
144+
ok !$B->isOrthogonal, 'test a degree 1 nonorthogonal Matrix';
145+
my $C = Matrix([ 3 / 5, 4 / 5 ], [ -4 / 5, 3 / 5 ]);
146+
my $D = Matrix([ 1, 2 ], [ 3, 4 ]);
147+
ok $C->isOrthogonal, 'test a degree 2 orthogonal Matrix';
148+
ok !$D->isOrthogonal, 'test a degree 2 nonorthogonal Matrix';
149+
my $E = Matrix($C, [ [ 0, 1 ], [ -1, 0 ] ]);
150+
my $F = Matrix($D, $C);
151+
ok $E->isOrthogonal, 'test a degree 3 orthogonal Matrix';
152+
ok !$F->isOrthogonal, 'test a degree 3 nonorthogonal Matrix';
153+
};
154+
155+
subtest 'Test if Matrix is in (R)REF' => sub {
156+
my $A1 = Matrix(0);
157+
my $A2 = Matrix(1);
158+
my $A3 = Matrix(2);
159+
my $A4 = Matrix(1, 3, 4);
160+
my $A5 = Matrix(2, 3, 4);
161+
my $A6 = Matrix(0, 3, 4);
162+
my $A7 = Matrix(0, 1, 4);
163+
ok $A1->isRREF, "$A1 is in RREF";
164+
ok $A2->isRREF, "$A2 is in RREF";
165+
ok !$A3->isRREF, "$A3 is not in RREF";
166+
ok $A4->isRREF, "$A4 is in RREF";
167+
ok !$A5->isRREF, "$A5 is not in RREF";
168+
ok !$A6->isRREF, "$A6 is not in RREF";
169+
ok $A7->isRREF, "$A7 is in RREF";
170+
171+
my $B1 = Matrix([ 1, 2, 3 ], [ 0, 4, 5 ]);
172+
my $B2 = Matrix([ 1, 2, 3 ], [ 0, 1, 5 ]);
173+
my $B3 = Matrix([ 1, 0, 3 ], [ 0, 1, 5 ]);
174+
my $B4 = Matrix([ 0, 1, 3 ], [ 2, 1, 5 ]);
175+
ok $B1->isREF, "$B1 is in REF";
176+
ok !$B1->isRREF, "$B1 is not in RREF";
177+
ok $B2->isREF, "$B2 is in REF";
178+
ok !$B2->isRREF, "$B2 is not in RREF";
179+
ok $B3->isREF, "$B3 is in REF";
180+
ok $B3->isRREF, "$B3 is in RREF";
181+
ok !$B4->isREF, "$B4 is not in REF";
182+
ok !$B4->isRREF, "$B4 is not in RREF";
183+
};
184+
119185
subtest 'Transpose a Matrix' => sub {
120186
my $A = Matrix([ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ] ]);
121187
my $B = Matrix([ [ 1, 5, 9 ], [ 2, 6, 10 ], [ 3, 7, 11 ], [ 4, 8, 12 ] ]);

0 commit comments

Comments
 (0)