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-6
forFloat32
1e-12
forFloat64
big"1e-24"
forBigFloat
10 * 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.000000000000000000000001
huge
represents a (wow!) huge number that can be used in a various computations without unnecessary type promotions.
huge
is defined as:
1.0f+6
forFloat32
1e+12
forFloat64
big"1e+24"
forBigFloat
inv(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