Float Point
Base.Math.exponent
— Functionexponent(x::Real) -> Int
Returns the largest integer y
such that 2^y ≤ abs(x)
.
Throws a DomainError
when x
is zero, infinite, or NaN
. For any other non-subnormal floating-point number x
, this corresponds to the exponent bits of x
.
See also signbit
, significand
, frexp
, issubnormal
, log2
, ldexp
.
Examples
julia> exponent(8)
3
julia> exponent(6.5)
2
julia> exponent(-1//4)
-2
julia> exponent(3.142e-4)
-12
julia> exponent(floatmin(Float32)), exponent(nextfloat(0.0f0))
(-126, -149)
julia> exponent(0.0)
ERROR: DomainError with 0.0:
Cannot be ±0.0.
[...]
Base.Math.significand
— Functionsignificand(x)
Extract the significand (a.k.a. mantissa) of a floating-point number. If x
is a non-zero finite number, then the result will be a number of the same type and sign as x
, and whose absolute value is on the interval $[1,2)$. Otherwise x
is returned.
Examples
julia> significand(15.2)
1.9
julia> significand(-15.2)
-1.9
julia> significand(-15.2) * 2^3
-15.2
julia> significand(-Inf), significand(Inf), significand(NaN)
(-Inf, Inf, NaN)
Base.Math.frexp
— Functionfrexp(val)
Return (x,exp)
such that x
has a magnitude in the interval $[1/2, 1)$ or 0, and val
is equal to $x \times 2^{exp}$.
See also significand
, exponent
, ldexp
.
Examples
julia> frexp(6.0)
(0.75, 3)
julia> significand(6.0), exponent(6.0) # interval [1, 2) instead
(1.5, 2)
julia> frexp(0.0), frexp(NaN), frexp(-Inf) # exponent would give an error
((0.0, 0), (NaN, 0), (-Inf, 0))
Base.Math.ldexp
— FunctionBase.Math.modf
— Functionmodf(x)
Return a tuple (fpart, ipart)
of the fractional and integral parts of a number. Both parts have the same sign as the argument.
Examples
julia> modf(3.5)
(0.5, 3.0)
julia> modf(-3.5)
(-0.5, -3.0)