@@ -64,7 +64,12 @@ function isinterior(x::Interval, y::Interval)
6464 return isinterior (bareinterval (x), bareinterval (y))
6565end
6666
67- isinterior (x:: AbstractVector , y:: AbstractVector ) = all (t -> isinterior (t[1 ], t[2 ]), zip (x, y))
67+ function isinterior (x:: AbstractVector , y:: AbstractVector )
68+ n = length (x)
69+ m = length (y)
70+ n == m || return throw (DimensionMismatch (" dimensions must match: x has length $n , y has length $m " ))
71+ return all (t -> isinterior (t[1 ], t[2 ]), zip (x, y))
72+ end
6873
6974isinterior (x, y, z, w... ) = isinterior (x, y) & isinterior (y, z, w... )
7075isinterior (x:: Complex , y:: Complex ) =
@@ -86,7 +91,7 @@ isstrictsubset(x::BareInterval, y::BareInterval) = isinterior(x, y)
8691
8792isstrictsubset (x:: Interval , y:: Interval ) = isinterior (x, y)
8893
89- isstrictsubset (x:: AbstractVector , y:: AbstractVector ) = any (t -> isinterior (t[1 ], t[2 ]), zip (x, y))
94+ isstrictsubset (x:: AbstractVector , y:: AbstractVector ) = isinterior (x, y) & any (t -> isinterior (t[1 ], t[2 ]), zip (x, y))
9095
9196isstrictsubset (x, y, z, w... ) = isstrictsubset (x, y) & isstrictsubset (y, z, w... )
9297isstrictsubset (x:: Complex , y:: Complex ) =
@@ -179,12 +184,13 @@ Test whether `x` is an element of `y`.
179184
180185Implement the `isMember` function of the IEEE Standard 1788-2015 (Section 10.6.3).
181186"""
182- function in_interval (x:: Real , y:: BareInterval )
187+ function in_interval (x:: Number , y:: BareInterval )
183188 isinf (x) && return contains_infinity (y)
184189 return inf (y) ≤ x ≤ sup (y)
185190end
191+ in_interval (x:: Complex , y:: BareInterval ) = in_interval (real (x), y) & iszero (imag (x))
186192
187- function in_interval (x:: Real , y:: Interval )
193+ function in_interval (x:: Number , y:: Interval )
188194 isnai (y) && return false
189195 return in_interval (x, bareinterval (y))
190196end
@@ -196,8 +202,8 @@ in_interval(::Interval, ::Interval) =
196202 throw (ArgumentError (" `in_interval` is purposely not supported for two interval arguments. See instead `issubset_interval`" ))
197203
198204in_interval (x:: Complex , y:: Complex ) = in_interval (real (x), real (y)) & in_interval (imag (x), imag (y))
199- in_interval (x:: Complex , y:: Real ) = in_interval (real (x), y) & isthinzero (imag (x))
200- in_interval (x:: Real , y:: Complex ) = in_interval (x, real (y)) & in_interval (0 , imag (y))
205+ in_interval (x:: Complex , y:: Number ) = in_interval (real (x), y) & iszero (imag (x))
206+ in_interval (x:: Number , y:: Complex ) = in_interval (x, real (y)) & in_interval (0 , imag (y))
201207
202208in_interval (x) = Base. Fix2 (in_interval, x)
203209
@@ -328,13 +334,18 @@ isthin(x::Complex) = isthin(real(x)) & isthin(imag(x))
328334Test whether `x` contains only `y`.
329335"""
330336isthin (x:: BareInterval , y:: Number ) = inf (x) == sup (x) == y
337+ isthin (x:: BareInterval , y:: Complex ) = isthin (x, real (y)) & iszero (imag (y))
331338
332339function isthin (x:: Interval , y:: Number )
333340 isnai (x) && return false
334341 return isthin (bareinterval (x), y)
335342end
336343
337- isthin (x:: Complex , y:: Number ) = isthin (real (x), y) & isthin (imag (x), y)
344+ isthin (x:: Complex , y:: Complex ) = isthin (real (x), real (y)) & isthin (imag (x), imag (y))
345+ isthin (x:: Complex , y:: Number ) = isthin (real (x), real (y)) & isthinzero (imag (x))
346+ isthin (x:: Number , y:: Complex ) = isthin (real (x), real (y)) & iszero (imag (y))
347+
348+ isthin (x:: BareInterval , y:: Interval ) = throw (MethodError (isthin, (x, y)))
338349
339350"""
340351 isthinzero(x)
@@ -376,4 +387,4 @@ function isthininteger(x::Interval)
376387 return isthininteger (bareinterval (x))
377388end
378389
379- isthininteger (x:: Complex ) = isthininteger (real (x)) & isthininteger (imag (x))
390+ isthininteger (x:: Complex ) = isthininteger (real (x)) & isthinzero (imag (x))
0 commit comments