FieldOperation

Enum FieldOperation 

Source
pub enum FieldOperation {
    BasicArithmetic,
    Inversion,
    SquareRoot,
    BatchOperations,
    MultiExponentiation,
    LegendreSymbol,
}
Expand description

Operations that may or may not be supported by different field implementations.

This enum defines the various mathematical operations that field implementations can support. Some operations may not be available for certain moduli (e.g., square root may not exist for all elements in some fields), while others may be computationally expensive or have specialized implementations.

Variants§

§

BasicArithmetic

Basic arithmetic operations: addition, subtraction, and multiplication.

These are the fundamental operations that all field implementations should support. They include modular addition, subtraction, and multiplication with proper reduction modulo the field prime.

§

Inversion

Modular inversion: finding x such that (a * x) ≡ 1 mod p.

Not all elements have multiplicative inverses (specifically, zero does not). This operation typically uses the extended Euclidean algorithm.

§

SquareRoot

Square root computation in the field.

Computes x such that x² ≡ a mod p. This may not exist for all elements depending on the field properties (Tonelli-Shanks algorithm is commonly used).

§

BatchOperations

Batch operations: performing the same operation on multiple field elements.

This enables optimizations like Montgomery batch processing or SIMD operations when multiple field elements need the same operation applied.

§

MultiExponentiation

Multi-exponentiation: computing ∑ bᵢ * xᵢ^yᵢ for multiple bases and exponents.

This is a fundamental operation in cryptographic protocols and pairing-based cryptography. Efficient implementations use techniques like the Pippenger algorithm.

§

LegendreSymbol

Legendre symbol computation: determining if an element is a quadratic residue.

Computes the Legendre symbol (a/p) which indicates whether a has a square root modulo p. Returns 1 (quadratic residue), -1 (non-residue), or 0 (zero).

Trait Implementations§

Source§

impl Clone for FieldOperation

Source§

fn clone(&self) -> FieldOperation

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FieldOperation

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for FieldOperation

Source§

fn eq(&self, other: &FieldOperation) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for FieldOperation

Source§

impl Eq for FieldOperation

Source§

impl StructuralPartialEq for FieldOperation

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.