[−][src]Struct contest_algorithms::math::num::Field
Represents an element of the finite (Galois) field of prime order, given by MOD. Until Rust gets const generics, MOD must be hardcoded, but any prime in [1, 2^31.5] will work. If MOD is not prime, ring operations are still valid but recip() and division are not. Note that the latter operations are also the slowest, so precompute any inverses that you intend to use frequently.
Fields
val: i64
Implementations
impl Field
[src]
pub const MOD: i64
[src]
pub fn pow(self, exp: u64) -> Self
[src]
Computes self^exp in O(log(exp)) time
pub fn vec_of_recips(n: i64) -> Vec<Self>
[src]
Computes inverses of 1 to n in O(n) time
pub fn recip(self) -> Self
[src]
Computes self^-1 in O(log(Self::MOD)) time
Trait Implementations
impl Add<Field> for Field
[src]
type Output = Self
The resulting type after applying the +
operator.
fn add(self, other: Self) -> Self
[src]
impl Clone for Field
[src]
impl Copy for Field
[src]
impl Debug for Field
[src]
impl Div<Field> for Field
[src]
type Output = Self
The resulting type after applying the /
operator.
fn div(self, other: Self) -> Self
[src]
impl Eq for Field
[src]
impl From<i64> for Field
[src]
impl Hash for Field
[src]
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl Mul<Field> for Field
[src]
type Output = Self
The resulting type after applying the *
operator.
fn mul(self, other: Self) -> Self
[src]
impl Neg for Field
[src]
impl PartialEq<Field> for Field
[src]
impl StructuralEq for Field
[src]
impl StructuralPartialEq for Field
[src]
impl Sub<Field> for Field
[src]
Auto Trait Implementations
impl RefUnwindSafe for Field
impl Send for Field
impl Sync for Field
impl Unpin for Field
impl UnwindSafe for Field
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,