Comparisons
This section of the manual lists the comparison functions in floating point between scalars and between vectors.
LazySets._leq — Method._leq(x::N, y::N; [kwargs...]) where {N<:Real}Determine if x is smaller than or equal to y.
Input
x– numbery– another number (of the same numeric type asx)kwargs– not used
Output
A boolean that is true iff x <= y.
Algorithm
This is a fallback implementation for numbers of type Real. If the arguments are floating point numbers, see _leq(x::AbstractFloat, y::AbstractFloat).
LazySets._leq — Method._leq(x::N, y::M; [kwargs...]) where {N<:Real, M<:Real}Determine if x is smaller than or equal to y.
Input
x– numbery– another number (of possibly different numeric type thanx)kwargs– optional arguments; see?_leqfor the available options
Output
A boolean that is true iff x <= y.
Algorithm
This implementation calls Julia's promote(x, y) function, which converts all arguments to a common numeric type, returning them as a tuple. The conversion is such that the common type to which the values are converted can represent them as faithfully as possible.
LazySets._geq — Method._geq(x::Real, y::Real; [kwargs...])Determine if x is greater than or equal to y.
Input
x– numbery– another number (of possibly different numeric type thanx)
Output
A boolean that is true iff x >= y.
Algorithm
This function falls back to _leq(y, x), with type promotion if needed. See the documentation of _leq for further details.
LazySets.isapproxzero — Method.isapproxzero(x::Real; [kwargs...])Determine if x is approximately zero.
Input
x– numberkwargs– ignored
Output
A boolean that is true iff x ≈ 0.
Algorithm
This is a fallback implementation for any real x such that x ≈ 0 is true whenever x is equal to zero in the same numeric type as x.
LazySets.isapproxzero — Method.isapproxzero(x::N; ztol::Real=ABSZTOL(N)) where {N<:AbstractFloat}Determine if x is approximately zero.
Input
x– numberztol– (optional, default:ABSZTOL) tolerance against zero
Output
A boolean that is true iff x ≈ 0.
Algorithm
It is considered that x ≈ 0 whenever x (in absolute value) is smaller than the tolerance for zero, ztol.
LazySets._isapprox — Method._isapprox(x::N, y::N;
rtol::Real=Base.rtoldefault(N),
ztol::Real=ABSZTOL(N),
atol::Real=zero(N)) where {N<:AbstractFloat}Determine if x is approximately equal to y.
Input
x– numbery– another number (of the same numeric type asx)rtol– (optional, default:Base.rtoldefault(N)) relative toleranceztol– (optional, default:ABSZTOL(N)) absolute tolerance for comparison against zeroatol– (optional, default:zero(N)) absolute tolerance
Output
A boolean that is true iff x ≈ y.
Algorithm
We first check if x and y are both approximately zero, using isapproxzero(x, y). If that fails, we check if x ≈ y, using Julia's isapprox(x, y). In the latter check we use atol absolute tolerance and rtol relative tolerance.
Comparing to zero with default tolerances is a special case in Julia's isapprox, see the last paragraph in ?isapprox. This function tries to combine isapprox with its default values and a branch for x ≈ y ≈ 0 which includes x == y == 0 but also admits a tolerance ztol.
Note that if x = ztol and y = -ztol, then |x-y| = 2*ztol and still _isapprox returns true.
LazySets._leq — Method._leq(x::N, y::N;
rtol::Real=Base.rtoldefault(N),
ztol::Real=ABSZTOL(N),
atol::Real=zero(N)) where {N<:AbstractFloat}Determine if x is smaller than or equal to y.
Input
x– numbery– another number (of the same numeric type asx)rtol– (optional, default:Base.rtoldefault(N)) relative toleranceztol– (optional, default:ABSZTOL(N)) absolute tolerance for comparison against zeroatol– absolute tolerance
Output
A boolean that is true iff x <= y.
Algorithm
The x <= y comparison is split into x < y or x ≈ y; the latter is implemented by extending Juila's built-in isapprox(x, y) with an absolute tolerance that is used to compare against zero.