@@ -53,16 +53,16 @@ Interval(a::T, b::S) where {T<:Real, S<:Real} = Interval(promote(a,b)...)
53
53
# BigFloat or Rational{Integer} intervals.
54
54
Interval (a:: T , b:: T ) where T<: Integer = Interval (float (a), float (b))
55
55
56
- # Constructors for Irrational
57
- # Single argument Irrational constructor are in IntervalArithmetic.jl
56
+ # Constructors for AbstractIrrational
57
+ # Single argument AbstractIrrational constructor are in IntervalArithmetic.jl
58
58
# as generated functions need to be define last.
59
- Interval {T} (a:: Irrational , b:: Irrational ) where {T<: Real } = Interval {T} (T (a, RoundDown), T (b, RoundUp))
60
- Interval {T} (a:: Irrational , b:: Real ) where {T<: Real } = Interval {T} (T (a, RoundDown), b)
61
- Interval {T} (a:: Real , b:: Irrational ) where {T<: Real } = Interval {T} (a, T (b, RoundUp))
59
+ Interval {T} (a:: AbstractIrrational , b:: AbstractIrrational ) where {T<: Real } = Interval {T} (T (a, RoundDown), T (b, RoundUp))
60
+ Interval {T} (a:: AbstractIrrational , b:: Real ) where {T<: Real } = Interval {T} (T (a, RoundDown), b)
61
+ Interval {T} (a:: Real , b:: AbstractIrrational ) where {T<: Real } = Interval {T} (a, T (b, RoundUp))
62
62
63
- Interval (a:: Irrational , b:: Irrational ) = Interval {Float64} (a, b)
64
- Interval (a:: Irrational , b:: Real ) = Interval {Float64} (a, b)
65
- Interval (a:: Real , b:: Irrational ) = Interval {Float64} (a, b)
63
+ Interval (a:: AbstractIrrational , b:: AbstractIrrational ) = Interval {Float64} (a, b)
64
+ Interval (a:: AbstractIrrational , b:: Real ) = Interval {Float64} (a, b)
65
+ Interval (a:: Real , b:: AbstractIrrational ) = Interval {Float64} (a, b)
66
66
67
67
Interval (x:: Interval ) = x
68
68
Interval (x:: Complex ) = Interval (real (x)) + im* Interval (imag (x))
@@ -144,25 +144,25 @@ function ..(a::T, b::S) where {T, S}
144
144
Interval (atomic (Interval{T}, a). lo, atomic (Interval{S}, b). hi)
145
145
end
146
146
147
- function .. (a:: T , b:: Irrational{S} ) where {T, S}
147
+ function .. (a:: T , b:: S ) where {T, S<: AbstractIrrational }
148
148
if ! is_valid_interval (a, b)
149
149
@warn " Invalid input, empty interval is returned"
150
- return emptyinterval (promote_type (T, Irrational{S} ))
150
+ return emptyinterval (promote_type (T, S ))
151
151
end
152
- R = promote_type (T, Irrational{S} )
152
+ R = promote_type (T, S )
153
153
Interval (atomic (Interval{R}, a). lo, R (b, RoundUp))
154
154
end
155
155
156
- function .. (a:: Irrational{T} , b:: S ) where {T, S}
156
+ function .. (a:: T , b:: S ) where {T<: AbstractIrrational , S}
157
157
if ! is_valid_interval (a, b)
158
158
@warn " Invalid input, empty interval is returned"
159
- return emptyinterval (promote_type (Irrational{T} , S))
159
+ return emptyinterval (promote_type (T , S))
160
160
end
161
- R = promote_type (Irrational{T} , S)
161
+ R = promote_type (T , S)
162
162
return Interval (R (a, RoundDown), atomic (Interval{R}, b). hi)
163
163
end
164
164
165
- function .. (a:: Irrational{T} , b:: Irrational{S} ) where {T, S}
165
+ function .. (a:: T , b:: S ) where {T<: AbstractIrrational , S<: AbstractIrrational }
166
166
return interval (a, b)
167
167
end
168
168
0 commit comments