pub trait CheckedRoot<POW> {
    type Output;

    fn checked_root(self, pow: POW) -> Option<Self::Output>;
}
Expand description

Finds the $n$th root of a number, returning None if it is not a perfect $n$th power.

Required Associated Types

Required Methods

Implementations on Foreign Types

Returns the the $n$th root of a u8, or None if the u8 is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero.

Examples

See here.

Notes

The u8 implementation uses lookup tables.

Returns the the $n$th root of a u16, or None if the u16 is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero.

Examples

See here.

Notes

The u16 implementation calls the implementation for u32s.

Returns the the $n$th root of a u32, or None if the u32 is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero.

Examples

See here.

Notes

For cube roots, the u32 implementation uses a piecewise Chebyshev approximation. For other roots, it uses Newton’s method. In both implementations, the result of these approximations is adjusted afterwards to account for error.

Returns the the $n$th root of a u64, or None if the u64 is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero.

Examples

See here.

Notes

For cube roots, the u64 implementation uses a piecewise Chebyshev approximation. For other roots, it uses Newton’s method. In both implementations, the result of these approximations is adjusted afterwards to account for error.

Returns the the $n$th root of a usize, or None if the usize is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero.

Examples

See here.

Notes

The usize implementation calls the u32 or u64 implementations.

Returns the the $n$th root of a u128, or None if the u128 is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero.

Examples

See here.

Notes

The u128 implementation computes the root using floating-point arithmetic. The approximate result is adjusted afterwards to account for error.

Returns the the $n$th root of an integer, or None if the integer is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero, or if self is negative and exp is even.

Examples

See here.

Returns the the $n$th root of an integer, or None if the integer is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero, or if self is negative and exp is even.

Examples

See here.

Returns the the $n$th root of an integer, or None if the integer is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero, or if self is negative and exp is even.

Examples

See here.

Returns the the $n$th root of an integer, or None if the integer is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero, or if self is negative and exp is even.

Examples

See here.

Returns the the $n$th root of an integer, or None if the integer is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero, or if self is negative and exp is even.

Examples

See here.

Returns the the $n$th root of an integer, or None if the integer is not a perfect $n$th power.

$$ f(x, n) = \begin{cases} \operatorname{Some}(sqrt[n]{x}) & \text{if} \quad \sqrt[n]{x} \in \Z, \\ \operatorname{None} & \textrm{otherwise}. \end{cases} $$

Worst-case complexity

Constant time and additional memory.

Panics

Panics if exp is zero, or if self is negative and exp is even.

Examples

See here.

Implementors