Skip to main content

ModPow

Trait ModPow 

Source
pub trait ModPow<RHS = Self, M = Self> {
    type Output;

    // Required method
    fn mod_pow(self, exp: RHS, m: M) -> Self::Output;
}
Expand description

Raises a number to a power modulo another number $m$. The base must be already reduced modulo $m$.

Required Associated Types§

Required Methods§

Source

fn mod_pow(self, exp: RHS, m: M) -> Self::Output

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl ModPow for u64

Source§

fn mod_pow(self, exp: u64, m: u64) -> u64

Raises a number to a power modulo another number $m$. The base must be already reduced modulo $m$.

$f(x, n, m) = y$, where $x, y < m$ and $x^n \equiv y \mod m$.

§Worst-case complexity

$T(n) = O(n)$

$M(n) = O(1)$

where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits().

§Panics

Panics if self is greater than or equal to m.

§Examples

See here.

Source§

type Output = u64

Source§

impl ModPow<u64> for u8

Source§

fn mod_pow(self, exp: u64, m: u8) -> u8

Raises a number to a power modulo another number $m$. The base must be already reduced modulo $m$.

$f(x, n, m) = y$, where $x, y < m$ and $x^n \equiv y \mod m$.

§Worst-case complexity

$T(n) = O(n)$

$M(n) = O(1)$

where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits().

§Panics

Panics if self is greater than or equal to m.

§Examples

See here.

Source§

type Output = u8

Source§

impl ModPow<u64> for u16

Source§

fn mod_pow(self, exp: u64, m: u16) -> u16

Raises a number to a power modulo another number $m$. The base must be already reduced modulo $m$.

$f(x, n, m) = y$, where $x, y < m$ and $x^n \equiv y \mod m$.

§Worst-case complexity

$T(n) = O(n)$

$M(n) = O(1)$

where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits().

§Panics

Panics if self is greater than or equal to m.

§Examples

See here.

Source§

type Output = u16

Source§

impl ModPow<u64> for u32

Source§

fn mod_pow(self, exp: u64, m: u32) -> u32

Raises a number to a power modulo another number $m$. The base must be already reduced modulo $m$.

$f(x, n, m) = y$, where $x, y < m$ and $x^n \equiv y \mod m$.

§Worst-case complexity

$T(n) = O(n)$

$M(n) = O(1)$

where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits().

§Panics

Panics if self is greater than or equal to m.

§Examples

See here.

Source§

type Output = u32

Source§

impl ModPow<u64> for u128

Source§

fn mod_pow(self, exp: u64, m: u128) -> u128

Raises a number to a power modulo another number $m$. The base must be already reduced modulo $m$.

$f(x, n, m) = y$, where $x, y < m$ and $x^n \equiv y \mod m$.

§Worst-case complexity

$T(n) = O(n)$

$M(n) = O(1)$

where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits().

§Panics

Panics if self is greater than or equal to m.

§Examples

See here.

Source§

type Output = u128

Source§

impl ModPow<u64> for usize

Source§

fn mod_pow(self, exp: u64, m: usize) -> usize

Raises a number to a power modulo another number $m$. The base must be already reduced modulo $m$.

$f(x, n, m) = y$, where $x, y < m$ and $x^n \equiv y \mod m$.

§Worst-case complexity

$T(n) = O(n)$

$M(n) = O(1)$

where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits().

§Panics

Panics if self is greater than or equal to m.

§Examples

See here.

Source§

type Output = usize

Implementors§