diff --git a/base/floatfuncs.jl b/base/floatfuncs.jl index dbaa8b924da17..941318da37b6f 100644 --- a/base/floatfuncs.jl +++ b/base/floatfuncs.jl @@ -176,7 +176,7 @@ const ≈ = isapprox # default tolerance arguments rtoldefault{T<:AbstractFloat}(::Type{T}) = sqrt(eps(T)) rtoldefault{T<:Real}(::Type{T}) = 0 -rtoldefault{T<:Number,S<:Number}(x::Union{T,Type{T}}, y::Union{S,Type{S}}) = rtoldefault(promote_type(real(T),real(S))) +rtoldefault{T<:Number,S<:Number}(x::Union{T,Type{T}}, y::Union{S,Type{S}}) = max(rtoldefault(real(T)),rtoldefault(real(S))) # fused multiply-add fma_libm(x::Float32, y::Float32, z::Float32) = diff --git a/test/numbers.jl b/test/numbers.jl index f108f6410641a..a96cb373dfe6f 100644 --- a/test/numbers.jl +++ b/test/numbers.jl @@ -1663,10 +1663,10 @@ end @test isnan(eps(-Inf)) @test .1+.1+.1 != .3 -# TODO: uncomment when isapprox() becomes part of base. -# @test isapprox(.1+.1+.1, .3) -# @test !isapprox(.1+.1+.1-.3, 0) -# @test isapprox(.1+.1+.1-.3, 0, eps(.3)) +@test isapprox(.1+.1+.1, .3) +@test !isapprox(.1+.1+.1-.3, 0) +@test isapprox(.1+.1+.1-.3, 0, atol=eps(.3)) +@test isapprox(1.1,1.1f0) @test div(1e50,1) == 1e50 @test fld(1e50,1) == 1e50