|
884 | 884 | @test mul!(C1, B, sv, 1, 2) == mul!(C2, B, v, 1 ,2) |
885 | 885 | end |
886 | 886 |
|
| 887 | +@testset "rmul!/lmul! with banded matrices" begin |
| 888 | + dv, ev = rand(4), rand(3) |
| 889 | + for A in (Bidiagonal(dv, ev, :U), Bidiagonal(dv, ev, :L)) |
| 890 | + @testset "$(nameof(typeof(B)))" for B in ( |
| 891 | + Bidiagonal(dv, ev, :U), |
| 892 | + Bidiagonal(dv, ev, :L), |
| 893 | + Diagonal(dv) |
| 894 | + ) |
| 895 | + @test_throws ArgumentError rmul!(B, A) |
| 896 | + @test_throws ArgumentError lmul!(A, B) |
| 897 | + end |
| 898 | + D = Diagonal(dv) |
| 899 | + @test rmul!(copy(A), D) ≈ A * D |
| 900 | + @test lmul!(D, copy(A)) ≈ D * A |
| 901 | + end |
| 902 | + @testset "non-commutative" begin |
| 903 | + S32 = SizedArrays.SizedArray{(3,2)}(rand(3,2)) |
| 904 | + S33 = SizedArrays.SizedArray{(3,3)}(rand(3,3)) |
| 905 | + S22 = SizedArrays.SizedArray{(2,2)}(rand(2,2)) |
| 906 | + for uplo in (:L, :U) |
| 907 | + B = Bidiagonal(fill(S32, 4), fill(S32, 3), uplo) |
| 908 | + D = Diagonal(fill(S22, size(B,2))) |
| 909 | + @test rmul!(copy(B), D) ≈ B * D |
| 910 | + D = Diagonal(fill(S33, size(B,1))) |
| 911 | + @test lmul!(D, copy(B)) ≈ D * B |
| 912 | + end |
| 913 | + |
| 914 | + B = Bidiagonal(fill(S33, 4), fill(S33, 3), :U) |
| 915 | + D = Diagonal(fill(S32, 4)) |
| 916 | + @test lmul!(B, Array(D)) ≈ B * D |
| 917 | + B = Bidiagonal(fill(S22, 4), fill(S22, 3), :U) |
| 918 | + @test rmul!(Array(D), B) ≈ D * B |
| 919 | + end |
| 920 | +end |
| 921 | + |
887 | 922 | @testset "off-band indexing error" begin |
888 | 923 | B = Bidiagonal(Vector{BigInt}(undef, 4), Vector{BigInt}(undef,3), :L) |
889 | 924 | @test_throws "cannot set entry" B[1,2] = 4 |
|
0 commit comments