The TinyHugeNumbers package exports tiny and huge objects to represent tiny and huge numbers. These objects aren't really numbers and behave differently depending on the context. They do support any operation that is defined for Real numbers. For more info see Julia's documentation about promotion.
tiny represents a (wow!) tiny number that can be used in a various computations without unnecessary type promotions.
tiny is defined as:
1.0f-6forFloat321e-12forFloat64big"1e-24"forBigFloat10 * eps(F)for an arbitrary typeF <: AbstractFloat
julia> tiny
tiny
julia> 1 + tiny
1.000000000001
julia> tiny + 1
1.000000000001
julia> 1f0 + tiny
1.000001f0
julia> big"1.0" + tiny
1.000000000000000000000001
julia> big"1" + tiny
1.000000000000000000000001huge represents a (wow!) huge number that can be used in a various computations without unnecessary type promotions.
huge is defined as:
1.0f+6forFloat321e+12forFloat64big"1e+24"forBigFloatinv(tiny(F))for an arbitrary typeF <: AbstractFloat
julia> huge
huge
julia> 1 + huge
1.000000000001e12
julia> huge + 1
1.000000000001e12
julia> 1f0 + huge
1.000001f6
julia> big"1.0" + huge
1.000000000000000000000001e+24
julia> big"1" + huge
1.000000000000000000000001e+24