isapprox
isapprox(x, y; rtol::Real=sqrt(eps), atol::Real=0)
Inexact equality comparison: true
if norm(x-y) <= atol + rtol*max(norm(x), norm(y))
. The default atol
is zero and the default rtol
depends on the types of x
and y
.
For real or complex floating-point values, rtol
defaults to sqrt(eps(typeof(real(x-y))))
. This corresponds to requiring equality of about half of the significand digits. For other types, rtol
defaults to zero.
x
and y
may also be arrays of numbers, in which case norm
defaults to vecnorm
but may be changed by passing a norm::Function
keyword argument. (For numbers, norm
is the same thing as abs
.)
The binary operator ≈
is equivalent to isapprox
with the default arguments, and x ≉ y
is equivalent to !isapprox(x,y)
.
Examples
jldoctest
julia> isapprox(0.1 + 0.2, 0.3)
true
In this example, isapprox
is used to compare the sum of two floating-point numbers with the value 0.3
. It returns true
because the difference between the sum and 0.3
is within the default tolerance.
jldoctest
julia> isapprox(0.1 + 0.2, 0.3, rtol=1e-2, atol=1e-3)
false
Here, isapprox
is used with custom relative and absolute tolerances. Since the difference between the sum and 0.3
exceeds the specified tolerance, it returns false
.
jldoctest
julia> isapprox([1.0, 2.0, 3.0], [1.0, 2.01, 2.99])
true
In this case, isapprox
is used to compare arrays of numbers. It returns true
because the element-wise differences between the arrays are within the default tolerance.
jldoctest
julia> isapprox([1.0, 2.0, 3.0], [1.0, 2.01, 2.99], atol=1e-2)
false
Here, the absolute tolerance is customized to 1e-2
. Since one of the element-wise differences exceeds this tolerance, isapprox
returns false
.
The binary operator ≈
can also be used as a shorthand for isapprox
with the default arguments.
jldoctest
julia> 0.1 + 0.2 ≈ 0.3
true
Similarly, ≉
can be used as a shorthand for !isapprox
.
jldoctest
julia> 0.1 + 0.2 ≉ 0.3
false
See Also
cmp, float, get_bigfloat_precision, get_rounding, get_zero_subnormals, isapprox, maxintfloat, mod2pi, nextfloat, precision, prevfloat, rationalize, round, set_bigfloat_precision, set_rounding, set_zero_subnormals, significand, with_bigfloat_precision, with_rounding,User Contributed Notes
Add a Note
The format of note supported is markdown, use triple backtick to start and end a code block.