@@ -162,8 +162,8 @@ function inv(a::Interval{T}) where T<:Real
162
162
isempty (a) && return emptyinterval (a)
163
163
164
164
if zero (T) ∈ a
165
- a. lo < zero (T) == a. hi && return @round (- Inf , inv (a. lo))
166
- a. lo == zero (T) < a. hi && return @round (inv (a. hi), Inf )
165
+ a. lo < zero (T) == a. hi && return @round (T ( - Inf ) , inv (a. lo))
166
+ a. lo == zero (T) < a. hi && return @round (inv (a. hi), T ( Inf ) )
167
167
a. lo < zero (T) < a. hi && return entireinterval (T)
168
168
a == zero (a) && return emptyinterval (T)
169
169
end
@@ -195,14 +195,14 @@ function /(a::Interval{T}, b::Interval{T}) where T<:Real
195
195
196
196
if iszero (b. lo)
197
197
198
- a. lo >= zero (T) && return @round (a. lo/ b. hi, Inf )
199
- a. hi <= zero (T) && return @round (- Inf , a. hi/ b. hi)
198
+ a. lo >= zero (T) && return @round (a. lo/ b. hi, T ( Inf ) )
199
+ a. hi <= zero (T) && return @round (T ( - Inf ) , a. hi/ b. hi)
200
200
return entireinterval (S)
201
201
202
202
elseif iszero (b. hi)
203
203
204
- a. lo >= zero (T) && return @round (- Inf , a. lo/ b. lo)
205
- a. hi <= zero (T) && return @round (a. hi/ b. lo, Inf )
204
+ a. lo >= zero (T) && return @round (T ( - Inf ) , a. lo/ b. lo)
205
+ a. hi <= zero (T) && return @round (a. hi/ b. lo, T ( Inf ) )
206
206
return entireinterval (S)
207
207
208
208
else
@@ -218,10 +218,10 @@ function extended_div(a::Interval{T}, b::Interval{T}) where T<:Real
218
218
S = typeof (a. lo / b. lo)
219
219
if 0 < b. hi && 0 > b. lo && 0 ∉ a
220
220
if a. hi < 0
221
- return (Interval (- Inf , a. hi / b. hi), Interval (a. hi / b. lo, Inf ))
221
+ return (Interval (T ( - Inf ) , a. hi / b. hi), Interval (a. hi / b. lo, T ( Inf ) ))
222
222
223
223
elseif a. lo > 0
224
- return (Interval (- Inf , a. lo / b. lo), Interval (a. lo / b. hi, Inf ))
224
+ return (Interval (T ( - Inf ) , a. lo / b. lo), Interval (a. lo / b. hi, T ( Inf ) ))
225
225
226
226
end
227
227
elseif 0 ∈ a && 0 ∈ b
@@ -432,13 +432,13 @@ function mid(a::Interval{T}) where T
432
432
a. lo == - ∞ && return nextfloat (a. lo)
433
433
a. hi == + ∞ && return prevfloat (a. hi)
434
434
435
- midpoint = 0.5 * (a. lo + a. hi)
435
+ midpoint = (a. lo + a. hi) / 2
436
436
isfinite (midpoint) && return midpoint
437
437
#= Fallback in case of overflow: a.hi + a.lo == +∞ or a.hi + a.lo == -∞.
438
438
This case can not be the default one as it does not pass several
439
439
IEEE1788-2015 tests for small floats.
440
440
=#
441
- return 0.5 * a. lo + 0.5 * a. hi
441
+ return a. lo / 2 + a. hi / 2
442
442
end
443
443
444
444
mid (a:: Interval{Rational{T}} ) where T = (1 // 2 ) * (a. lo + a. hi)
0 commit comments