Skip to main content

MulXWide

Trait MulXWide 

Source
pub trait MulXWide {
    // Required method
    fn mul_x_wide(self) -> Self;
}
Expand description

An unreduced widening product (a WideMul::Output) that can be scaled by the field element X while still unreduced.

Scaling by X and the modular reduction are both GF(2)-linear, and they commute: reduce(wide.mul_x_wide()) == reduce(wide).mul_x(). Doing the scaling on the unreduced product lets an extension-field multiply fold the X of its irreducible polynomial into a product it is going to reduce anyway, saving a reduction over scaling the reduced coordinate.

Required Methods§

Source

fn mul_x_wide(self) -> Self

Returns the unreduced product scaled by X.

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.

Implementors§

Source§

impl<U: Underlier128bLanes> MulXWide for WideGhashProduct<U>