[][src]Struct contest_algorithms::math::num::Field

pub struct Field {
    pub val: i64,
}

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.

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.

impl Eq for Field[src]

impl From<i64> for Field[src]

impl Hash for Field[src]

impl Mul<Field> for Field[src]

type Output = Self

The resulting type after applying the * operator.

impl Neg for Field[src]

type Output = Self

The resulting type after applying the - operator.

impl PartialEq<Field> for Field[src]

impl StructuralEq for Field[src]

impl StructuralPartialEq for Field[src]

impl Sub<Field> for Field[src]

type Output = Self

The resulting type after applying the - operator.

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]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.