@@ -31,15 +31,16 @@ function test_triangular(elty1_types)
3131 @test full! (copy (A1)) == A1
3232
3333 # similar
34- @test isa (similar (A1), t1)
35- @test eltype (similar (A1)) == elty1
36- @test isa (similar (A1, Int), t1)
37- @test eltype (similar (A1, Int)) == Int
34+ simA1 = similar (A1)
35+ @test isa (simA1, t1)
36+ @test eltype (simA1) == elty1
37+ simA1Int = similar (A1, Int)
38+ @test isa (simA1Int, t1)
39+ @test eltype (simA1Int) == Int
3840 @test isa (similar (A1, (3 , 2 )), Matrix{elty1})
3941 @test isa (similar (A1, Int, (3 , 2 )), Matrix{Int})
4042
4143 # copyto!
42- simA1 = similar (A1)
4344 copyto! (simA1, A1)
4445 @test simA1 == A1
4546
@@ -119,23 +120,28 @@ function test_triangular(elty1_types)
119120 @test tril (A1, 0 ) == A1
120121 @test tril (A1, - 1 ) == LowerTriangular (tril (M1, - 1 ))
121122 @test tril (A1, 1 ) == t1 (tril (tril (M1, 1 )))
122- @test tril (A1, - n - 2 ) == zeros (size (A1))
123+ A1tril = tril (A1, - n - 2 )
124+ @test iszero (A1tril) && size (A1tril) == size (A1)
123125 @test tril (A1, n) == A1
124- @test triu (A1, 0 ) == t1 (diagm ( 0 => diag (A1)))
126+ @test triu (A1, 0 ) == t1 (Diagonal ( diagview (A1)))
125127 @test triu (A1, - 1 ) == t1 (tril (triu (A1. data, - 1 )))
126- @test triu (A1, 1 ) == zeros (size (A1)) # or just @test iszero(triu(A1,1))?
128+ A1triu = triu (A1, 1 )
129+ @test iszero (A1triu) && size (A1triu) == size (A1)
127130 @test triu (A1, - n) == A1
128- @test triu (A1, n + 2 ) == zeros (size (A1))
131+ A1triu = triu (A1, n + 2 )
132+ @test iszero (A1triu) && size (A1triu) == size (A1)
129133 else
130134 @test triu (A1, 0 ) == A1
131135 @test triu (A1, 1 ) == UpperTriangular (triu (M1, 1 ))
132136 @test triu (A1, - 1 ) == t1 (triu (triu (M1, - 1 )))
133137 @test triu (A1, - n) == A1
134- @test triu (A1, n + 2 ) == zeros (size (A1))
135- @test tril (A1, 0 ) == t1 (diagm (0 => diag (A1)))
138+ A1triu = triu (A1, n + 2 )
139+ @test iszero (A1triu) && size (A1triu) == size (A1)
140+ @test tril (A1, 0 ) == t1 (Diagonal (diagview (A1)))
136141 @test tril (A1, 1 ) == t1 (triu (tril (A1. data, 1 )))
137- @test tril (A1, - 1 ) == zeros (size (A1)) # or just @test iszero(tril(A1,-1))?
138- @test tril (A1, - n - 2 ) == zeros (size (A1))
142+ A1tril = tril (A1, - 1 )
143+ @test iszero (A1tril) && size (A1tril) == size (A1)
144+ @test iszero (A1tril) && size (A1tril) == size (A1)
139145 @test tril (A1, n) == A1
140146 end
141147
@@ -173,7 +179,8 @@ function test_triangular(elty1_types)
173179
174180 # zero
175181 if A1 isa UpperTriangular || A1 isa LowerTriangular
176- @test zero (A1) == zero (parent (A1))
182+ Z = zero (A1)
183+ @test iszero (Z) && size (Z) == size (A1)
177184 end
178185
179186 # Unary operations
@@ -426,46 +433,49 @@ function test_triangular(elty1_types)
426433 mul! (C, A1, Tri)
427434 @test C ≈ M1 * Tri
428435
436+ bcol1 = B[:, 1 ]
437+
429438 # Triangular-dense Matrix/vector multiplication
430- @test A1 * B[:, 1 ] ≈ M1 * B[:, 1 ]
439+ @test A1 * bcol1 ≈ M1 * bcol1
431440 @test A1 * B ≈ M1 * B
432- @test transpose (A1) * B[:, 1 ] ≈ transpose (M1) * B[:, 1 ]
433- @test A1' B[:, 1 ] ≈ M1' B[:, 1 ]
441+ @test transpose (A1) * bcol1 ≈ transpose (M1) * bcol1
442+ @test A1' bcol1 ≈ M1' bcol1
434443 @test transpose (A1) * B ≈ transpose (M1) * B
435444 @test A1' B ≈ M1' B
436445 @test A1 * transpose (B) ≈ M1 * transpose (B)
437446 @test adjoint (A1) * transpose (B) ≈ M1' * transpose (B)
438447 @test transpose (A1) * adjoint (B) ≈ transpose (M1) * adjoint (B)
439448 @test A1 * B' ≈ M1 * B'
440449 @test B * A1 ≈ B * M1
441- @test transpose (B[:, 1 ] ) * A1 ≈ transpose (B[:, 1 ] ) * M1
442- @test B[:, 1 ] ' A1 ≈ B[:, 1 ] ' M1
450+ @test transpose (bcol1 ) * A1 ≈ transpose (bcol1 ) * M1
451+ @test bcol1 ' A1 ≈ bcol1 ' M1
443452 @test transpose (B) * A1 ≈ transpose (B) * M1
444453 @test transpose (B) * adjoint (A1) ≈ transpose (B) * M1'
445454 @test adjoint (B) * transpose (A1) ≈ adjoint (B) * transpose (M1)
446455 @test B' A1 ≈ B' M1
447456 @test B * transpose (A1) ≈ B * transpose (M1)
448457 @test B * A1' ≈ B * M1'
449- @test transpose (B[:, 1 ] ) * transpose (A1) ≈ transpose (B[:, 1 ] ) * transpose (M1)
450- @test B[:, 1 ] ' A1' ≈ B[:, 1 ] ' M1'
458+ @test transpose (bcol1 ) * transpose (A1) ≈ transpose (bcol1 ) * transpose (M1)
459+ @test bcol1 ' A1' ≈ bcol1 ' M1'
451460 @test transpose (B) * transpose (A1) ≈ transpose (B) * transpose (M1)
452461 @test B' A1' ≈ B' M1'
453462
454463 if eltyB == elty1
455- @test mul! (similar (B), A1, B) ≈ M1 * B
456- @test mul! (similar (B), A1, adjoint (B)) ≈ M1 * B'
457- @test mul! (similar (B), A1, transpose (B)) ≈ M1 * transpose (B)
458- @test mul! (similar (B), adjoint (A1), adjoint (B)) ≈ M1' * B'
459- @test mul! (similar (B), transpose (A1), transpose (B)) ≈ transpose (M1) * transpose (B)
460- @test mul! (similar (B), transpose (A1), adjoint (B)) ≈ transpose (M1) * B'
461- @test mul! (similar (B), adjoint (A1), transpose (B)) ≈ M1' * transpose (B)
462- @test mul! (similar (B), adjoint (A1), B) ≈ M1' * B
463- @test mul! (similar (B), transpose (A1), B) ≈ transpose (M1) * B
464+ Bsim = similar (B)
465+ @test mul! (Bsim, A1, B) ≈ M1 * B
466+ @test mul! (Bsim, A1, adjoint (B)) ≈ M1 * B'
467+ @test mul! (Bsim, A1, transpose (B)) ≈ M1 * transpose (B)
468+ @test mul! (Bsim, adjoint (A1), adjoint (B)) ≈ M1' * B'
469+ @test mul! (Bsim, transpose (A1), transpose (B)) ≈ transpose (M1) * transpose (B)
470+ @test mul! (Bsim, transpose (A1), adjoint (B)) ≈ transpose (M1) * B'
471+ @test mul! (Bsim, adjoint (A1), transpose (B)) ≈ M1' * transpose (B)
472+ @test mul! (Bsim, adjoint (A1), B) ≈ M1' * B
473+ @test mul! (Bsim, transpose (A1), B) ≈ transpose (M1) * B
464474 # test also vector methods
465- B1 = vec (B[ 1 , :] )
466- @test mul! (similar (B1) , A1, B1 ) ≈ M1 * B1
467- @test mul! (similar (B1) , adjoint (A1), B1 ) ≈ M1' * B1
468- @test mul! (similar (B1) , transpose (A1), B1 ) ≈ transpose (M1) * B1
475+ bcol1sim = similar (bcol1 )
476+ @test mul! (bcol1sim , A1, bcol1 ) ≈ M1 * bcol1
477+ @test mul! (bcol1sim , adjoint (A1), bcol1 ) ≈ M1' * bcol1
478+ @test mul! (bcol1sim , transpose (A1), bcol1 ) ≈ transpose (M1) * bcol1
469479 end
470480 # error handling
471481 Ann, Bmm, bm = A1, Matrix {eltyB} (undef, n + 1 , n + 1 ), Vector {eltyB} (undef, n + 1 )
@@ -477,10 +487,10 @@ function test_triangular(elty1_types)
477487 @test_throws DimensionMismatch rmul! (Bmm, transpose (Ann))
478488
479489 # ... and division
480- @test A1 \ B[:, 1 ] ≈ M1 \ B[:, 1 ]
490+ @test A1 \ bcol1 ≈ M1 \ bcol1
481491 @test A1 \ B ≈ M1 \ B
482- @test transpose (A1) \ B[:, 1 ] ≈ transpose (M1) \ B[:, 1 ]
483- @test A1' \ B[:, 1 ] ≈ M1' \ B[:, 1 ]
492+ @test transpose (A1) \ bcol1 ≈ transpose (M1) \ bcol1
493+ @test A1' \ bcol1 ≈ M1' \ bcol1
484494 @test transpose (A1) \ B ≈ transpose (M1) \ B
485495 @test A1' \ B ≈ M1' \ B
486496 @test A1 \ transpose (B) ≈ M1 \ transpose (B)
0 commit comments