Trait CheckedMultifactorial

Source
pub trait CheckedMultifactorial: Sized {
    // Required method
    fn checked_multifactorial(n: u64, m: u64) -> Option<Self>;
}
Expand description

Computes the $m$-multifactorial of a u64, returning None if the result is too large to be represented. The $m$-multifactorial of a non-negative integer $n$ is the product of all integers $k$ such that $0<k\leq n$ and $k\equiv n \pmod m$.

Required Methods§

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl CheckedMultifactorial for u8

Source§

fn checked_multifactorial(n: u64, m: u64) -> Option<u8>

Computes a multifactorial of a number.

If the input is too large, the function returns None.

$$ f(n, m) = \begin{cases} \operatorname{Some}(n!^{(m)}) & \text{if} \quad n!^{(m)} < 2^W, \\ \operatorname{None} & \text{if} \quad n!^{(m)} \geq 2^W, \end{cases} $$ where $W$ is Self::WIDTH.

$n!^{(m)} = O(\sqrt{n}(n/e)^{n/m})$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

impl CheckedMultifactorial for u16

Source§

fn checked_multifactorial(n: u64, m: u64) -> Option<u16>

Computes a multifactorial of a number.

If the input is too large, the function returns None.

$$ f(n, m) = \begin{cases} \operatorname{Some}(n!^{(m)}) & \text{if} \quad n!^{(m)} < 2^W, \\ \operatorname{None} & \text{if} \quad n!^{(m)} \geq 2^W, \end{cases} $$ where $W$ is Self::WIDTH.

$n!^{(m)} = O(\sqrt{n}(n/e)^{n/m})$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

impl CheckedMultifactorial for u32

Source§

fn checked_multifactorial(n: u64, m: u64) -> Option<u32>

Computes a multifactorial of a number.

If the input is too large, the function returns None.

$$ f(n, m) = \begin{cases} \operatorname{Some}(n!^{(m)}) & \text{if} \quad n!^{(m)} < 2^W, \\ \operatorname{None} & \text{if} \quad n!^{(m)} \geq 2^W, \end{cases} $$ where $W$ is Self::WIDTH.

$n!^{(m)} = O(\sqrt{n}(n/e)^{n/m})$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

impl CheckedMultifactorial for u64

Source§

fn checked_multifactorial(n: u64, m: u64) -> Option<u64>

Computes a multifactorial of a number.

If the input is too large, the function returns None.

$$ f(n, m) = \begin{cases} \operatorname{Some}(n!^{(m)}) & \text{if} \quad n!^{(m)} < 2^W, \\ \operatorname{None} & \text{if} \quad n!^{(m)} \geq 2^W, \end{cases} $$ where $W$ is Self::WIDTH.

$n!^{(m)} = O(\sqrt{n}(n/e)^{n/m})$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

impl CheckedMultifactorial for u128

Source§

fn checked_multifactorial(n: u64, m: u64) -> Option<u128>

Computes a multifactorial of a number.

If the input is too large, the function returns None.

$$ f(n, m) = \begin{cases} \operatorname{Some}(n!^{(m)}) & \text{if} \quad n!^{(m)} < 2^W, \\ \operatorname{None} & \text{if} \quad n!^{(m)} \geq 2^W, \end{cases} $$ where $W$ is Self::WIDTH.

$n!^{(m)} = O(\sqrt{n}(n/e)^{n/m})$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

impl CheckedMultifactorial for usize

Source§

fn checked_multifactorial(n: u64, m: u64) -> Option<usize>

Computes a multifactorial of a number.

If the input is too large, the function returns None.

$$ f(n, m) = \begin{cases} \operatorname{Some}(n!^{(m)}) & \text{if} \quad n!^{(m)} < 2^W, \\ \operatorname{None} & \text{if} \quad n!^{(m)} \geq 2^W, \end{cases} $$ where $W$ is Self::WIDTH.

$n!^{(m)} = O(\sqrt{n}(n/e)^{n/m})$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Implementors§