Trait malachite_base::num::arithmetic::traits::Reciprocal

source ·
pub trait Reciprocal {
    type Output;

    // Required method
    fn reciprocal(self) -> Self::Output;
}
Expand description

Finds the reciprocal (multiplicative inverse) of a number.

Required Associated Types§

Required Methods§

source

fn reciprocal(self) -> Self::Output

Implementations on Foreign Types§

source§

impl Reciprocal for f32

source§

fn reciprocal(self) -> f32

Takes the reciprocal of a floating-point number.

$$ f(x) = 1/x+\varepsilon. $$ Let $p$ be the precision of the input float (typically 24 for f32s and 53 for f64s, unless the float is subnormal).

  • If $1/x$ is infinite, zero, or NaN, $\varepsilon$ may be ignored or assumed to be 0.
  • If $1/x$ is finite and nonzero, and $m$ is not Nearest, then $|\varepsilon| < 2^{\lfloor\log_2 |1/x|\rfloor-p+1}$.
  • If $1/x$ is finite and nonzero, and $m$ is Nearest, then $|\varepsilon| < 2^{\lfloor\log_2 |1/x|\rfloor-p}$.

If the output has a precision, it is prec.

Special cases:

  • $f(\text{NaN})=\text{NaN}$
  • $f(\infty)=0.0$
  • $f(-\infty)=-0.0$
  • $f(0.0)=\infty$
  • $f(-0.0)=-\infty$
§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

source§

type Output = f32

source§

impl Reciprocal for f64

source§

fn reciprocal(self) -> f64

Takes the reciprocal of a floating-point number.

$$ f(x) = 1/x+\varepsilon. $$ Let $p$ be the precision of the input float (typically 24 for f32s and 53 for f64s, unless the float is subnormal).

  • If $1/x$ is infinite, zero, or NaN, $\varepsilon$ may be ignored or assumed to be 0.
  • If $1/x$ is finite and nonzero, and $m$ is not Nearest, then $|\varepsilon| < 2^{\lfloor\log_2 |1/x|\rfloor-p+1}$.
  • If $1/x$ is finite and nonzero, and $m$ is Nearest, then $|\varepsilon| < 2^{\lfloor\log_2 |1/x|\rfloor-p}$.

If the output has a precision, it is prec.

Special cases:

  • $f(\text{NaN})=\text{NaN}$
  • $f(\infty)=0.0$
  • $f(-\infty)=-0.0$
  • $f(0.0)=\infty$
  • $f(-0.0)=-\infty$
§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

source§

type Output = f64

Implementors§