Skip to content

Commit 8aaa1e3

Browse files
committed
Fix tests
1 parent 019f36a commit 8aaa1e3

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

src/matmul.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ Matrix multiplication mode type.
5050
5151
Available mode types:
5252
- `:slow` (default): generic algorithm.
53-
- `:fast` : Rump's algorithm.
53+
- `:fast`: Rump's algorithm.
5454
"""
5555
struct MatMulMode{T} end
5656

@@ -122,18 +122,18 @@ end
122122
# Note: Rump's algorithm
123123

124124
_mul!(::MatMulMode{:fast}, C, A::AbstractMatrix{<:Interval{<:Rational}}, B::AbstractVecOrMat{<:Interval{<:Rational}}, α, β) =
125-
LinearAlgebra._mul!(C, A, B, α, β)
125+
_mul!(MatMulMode{:slow}(), C, A, B, α, β)
126126
_mul!(::MatMulMode{:fast}, C, A::AbstractMatrix{<:Interval{<:Rational}}, B::AbstractVecOrMat, α, β) =
127-
LinearAlgebra._mul!(C, A, B, α, β)
127+
_mul!(MatMulMode{:slow}(), C, A, B, α, β)
128128
_mul!(::MatMulMode{:fast}, C, A::AbstractMatrix, B::AbstractVecOrMat{<:Interval{<:Rational}}, α, β) =
129-
LinearAlgebra._mul!(C, A, B, α, β)
129+
_mul!(MatMulMode{:slow}(), C, A, B, α, β)
130130

131131
_mul!(::MatMulMode{:fast}, C, A::AbstractMatrix{<:Complex{<:Interval{<:Rational}}}, B::AbstractVecOrMat{<:Complex{<:Interval{<:Rational}}}, α, β) =
132-
LinearAlgebra._mul!(C, A, B, α, β)
132+
_mul!(MatMulMode{:slow}(), C, A, B, α, β)
133133
_mul!(::MatMulMode{:fast}, C, A::AbstractMatrix{<:Complex{<:Interval{<:Rational}}}, B::AbstractVecOrMat{<:Interval{<:Rational}}, α, β) =
134-
LinearAlgebra._mul!(C, A, B, α, β)
134+
_mul!(MatMulMode{:slow}(), C, A, B, α, β)
135135
_mul!(::MatMulMode{:fast}, C, A::AbstractMatrix{<:Interval{<:Rational}}, B::AbstractVecOrMat{<:Complex{<:Interval{<:Rational}}}, α, β) =
136-
LinearAlgebra._mul!(C, A, B, α, β)
136+
_mul!(MatMulMode{:slow}(), C, A, B, α, β)
137137

138138
function _mul!(::MatMulMode{:fast}, C, A, B, α, β)
139139
Int == Int32 || return _fastmul!(C, A, B, α, β)

test/interval_tests/linearalgebra.jl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
import LinearAlgebra
22

33
@testset "Matrix inversion" begin
4+
IntervalArithmetic.configure(; matmul = :slow)
45
A = [interval(2) interval(1, 2) ; interval(0) interval(1)]
56
@test all(isequal_interval.(inv(A), [interval(0, 1) interval(-1.25, -0.25) ; interval(-0.5, 0.5) interval(0.5, 1.5)]))
67
B = [interval(2) interval(1, 2) ; interval(0) interval(0, 1)]
78
@test all(isnai, inv(B))
89
end
910

1011
@testset "Matrix multiplication" begin
12+
IntervalArithmetic.configure(; matmul = :fast)
1113
A = [interval(2, 4) interval(-2, 1) ; interval(-1, 2) interval(2, 4)]
1214
imA = interval(im) * A
1315

14-
@test all(isequal_interval.(A * A, [interval(-2, 19.5) interval(-16, 10) ; interval(-10, 16) interval(-2, 19.5)]))
15-
@test all(isequal_interval.(A * mid.(A), [interval(5, 12.5) interval(-8, 2) ; interval(-2, 8) interval(5, 12.5)]))
16-
@test all(isequal_interval.(mid.(A) * A, [interval(5, 12.5) interval(-8, 2) ; interval(-2, 8) interval(5, 12.5)]))
16+
@test all(issubset_interval.([interval(0, 18) interval(-16, 8) ; interval(-8, 16) interval(0, 18)], A * A))
17+
@test all(issubset_interval.([interval(5, 12.5) interval(-8, 2) ; interval(-2, 8) interval(5, 12.5)], A * mid.(A)))
18+
@test all(issubset_interval.([interval(5, 12.5) interval(-8, 2) ; interval(-2, 8) interval(5, 12.5)], mid.(A) * A))
1719

18-
@test all(isequal_interval.(imA * imA, -[interval(-2, 19.5) interval(-16, 10) ; interval(-10, 16) interval(-2, 19.5)]))
19-
@test all(isequal_interval.(mid.(A) * imA, interval(im)*[interval(5, 12.5) interval(-8, 2) ; interval(-2, 8) interval(5, 12.5)]))
20-
@test all(isequal_interval.(imA * mid.(A), interval(im)*[interval(5, 12.5) interval(-8, 2) ; interval(-2, 8) interval(5, 12.5)]))
20+
@test all(issubset_interval.([interval(-18, 0) interval(-8, 16) ; interval(-16, 8) interval(-18, 0)], imA * imA))
21+
@test all(issubset_interval.(interval(im)*[interval(5, 12.5) interval(-8, 2) ; interval(-2, 8) interval(5, 12.5)], mid.(A) * imA))
22+
@test all(issubset_interval.(interval(im)*[interval(5, 12.5) interval(-8, 2) ; interval(-2, 8) interval(5, 12.5)], imA * mid.(A)))
2123
end

0 commit comments

Comments
 (0)