diff --git a/src/power.jl b/src/power.jl index efd13b51..78dc9cbc 100644 --- a/src/power.jl +++ b/src/power.jl @@ -56,10 +56,6 @@ mutable struct IntervalMatrixPower{T} Mᵏ::IntervalMatrix{T} k::Int - function IntervalMatrixPower(M::IntervalMatrix{T}) where {T} - return new{T}(M, M, 1) - end - function IntervalMatrixPower(M::IntervalMatrix{T}, Mᵏ::IntervalMatrix{T}, k::Int) where {T} @assert k >= 1 "matrix powers must be positive" @@ -67,6 +63,19 @@ mutable struct IntervalMatrixPower{T} end end +function IntervalMatrixPower(M::IntervalMatrix{T}) where {T} + return IntervalMatrixPower(M, M, 1) +end + +function IntervalMatrixPower(M::IntervalMatrix{T}, k::Int) where {T} + @assert k >= 1 "matrix powers must be positive" + pow = IntervalMatrixPower(M, M, 1) + @inbounds for i in 1:(k-1) + increment!(pow) + end + return pow +end + function copy(pow::IntervalMatrixPower) return IntervalMatrixPower(pow.M, pow.Mᵏ, pow.k) end