Skip to main content

Mul

Trait Mul 

1.0.0 (const: unstable) · Source
pub trait Mul<Rhs = Self> {
    type Output;

    // Required method
    fn mul(self, rhs: Rhs) -> Self::Output;
}
Expand description

The multiplication operator *.

Note that Rhs is Self by default, but this is not mandatory.

§Examples

§Multipliable rational numbers

use std::ops::Mul;

// By the fundamental theorem of arithmetic, rational numbers in lowest
// terms are unique. So, by keeping `Rational`s in reduced form, we can
// derive `Eq` and `PartialEq`.
#[derive(Debug, Eq, PartialEq)]
struct Rational {
    numerator: usize,
    denominator: usize,
}

impl Rational {
    fn new(numerator: usize, denominator: usize) -> Self {
        if denominator == 0 {
            panic!("Zero is an invalid denominator!");
        }

        // Reduce to lowest terms by dividing by the greatest common
        // divisor.
        let gcd = gcd(numerator, denominator);
        Self {
            numerator: numerator / gcd,
            denominator: denominator / gcd,
        }
    }
}

impl Mul for Rational {
    // The multiplication of rational numbers is a closed operation.
    type Output = Self;

    fn mul(self, rhs: Self) -> Self {
        let numerator = self.numerator * rhs.numerator;
        let denominator = self.denominator * rhs.denominator;
        Self::new(numerator, denominator)
    }
}

// Euclid's two-thousand-year-old algorithm for finding the greatest common
// divisor.
fn gcd(x: usize, y: usize) -> usize {
    let mut x = x;
    let mut y = y;
    while y != 0 {
        let t = y;
        y = x % y;
        x = t;
    }
    x
}

assert_eq!(Rational::new(1, 2), Rational::new(2, 4));
assert_eq!(Rational::new(2, 3) * Rational::new(3, 4),
           Rational::new(1, 2));

§Multiplying vectors by scalars as in linear algebra

use std::ops::Mul;

struct Scalar { value: usize }

#[derive(Debug, PartialEq)]
struct Vector { value: Vec<usize> }

impl Mul<Scalar> for Vector {
    type Output = Self;

    fn mul(self, rhs: Scalar) -> Self::Output {
        Self { value: self.value.iter().map(|v| v * rhs.value).collect() }
    }
}

let vector = Vector { value: vec![2, 4, 6] };
let scalar = Scalar { value: 3 };
assert_eq!(vector * scalar, Vector { value: vec![6, 12, 18] });

Required Associated Types§

1.0.0 (const: unstable) · Source

type Output

The resulting type after applying the * operator.

Required Methods§

1.0.0 (const: unstable) · Source

fn mul(self, rhs: Rhs) -> Self::Output

Performs the * operation.

§Example
assert_eq!(12 * 2, 24);

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§

Source§

impl Mul for BoxedMontyForm

Source§

impl Mul for Limb

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<i8>

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<i16>

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<i32>

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<i64>

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<i128>

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<isize>

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<u8>

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<u16>

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<u32>

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<u64>

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<u128>

1.74.0 (const: unstable) · Source§

impl Mul for Saturating<usize>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<i8>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<i16>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<i32>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<i64>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<i128>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<isize>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<u8>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<u16>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<u32>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<u64>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<u128>

1.0.0 (const: unstable) · Source§

impl Mul for core::num::wrapping::Wrapping<usize>

1.0.0 (const: unstable) · Source§

impl Mul for f16

1.0.0 (const: unstable) · Source§

impl Mul for f32

1.0.0 (const: unstable) · Source§

impl Mul for f64

1.0.0 (const: unstable) · Source§

impl Mul for f128

1.0.0 (const: unstable) · Source§

impl Mul for i8

1.0.0 (const: unstable) · Source§

impl Mul for i16

1.0.0 (const: unstable) · Source§

impl Mul for i32

1.0.0 (const: unstable) · Source§

impl Mul for i64

1.0.0 (const: unstable) · Source§

impl Mul for i128

1.0.0 (const: unstable) · Source§

impl Mul for isize

1.0.0 (const: unstable) · Source§

impl Mul for u8

1.0.0 (const: unstable) · Source§

impl Mul for u16

1.0.0 (const: unstable) · Source§

impl Mul for u32

1.0.0 (const: unstable) · Source§

impl Mul for u64

1.0.0 (const: unstable) · Source§

impl Mul for u128

1.0.0 (const: unstable) · Source§

impl Mul for usize

Source§

impl Mul<&BoxedMontyForm> for &BoxedMontyForm

Source§

impl Mul<&BoxedMontyForm> for BoxedMontyForm

Source§

impl Mul<&Limb> for &Limb

Source§

impl Mul<&Limb> for Limb

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<i8>> for &Saturating<i8>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<i8>> for Saturating<i8>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<i16>> for &Saturating<i16>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<i16>> for Saturating<i16>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<i32>> for &Saturating<i32>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<i32>> for Saturating<i32>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<i64>> for &Saturating<i64>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<i64>> for Saturating<i64>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<i128>> for &Saturating<i128>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<i128>> for Saturating<i128>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<isize>> for &Saturating<isize>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<isize>> for Saturating<isize>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<u8>> for &Saturating<u8>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<u8>> for Saturating<u8>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<u16>> for &Saturating<u16>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<u16>> for Saturating<u16>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<u32>> for &Saturating<u32>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<u32>> for Saturating<u32>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<u64>> for &Saturating<u64>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<u64>> for Saturating<u64>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<u128>> for &Saturating<u128>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<u128>> for Saturating<u128>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<usize>> for &Saturating<usize>

1.74.0 (const: unstable) · Source§

impl Mul<&Saturating<usize>> for Saturating<usize>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<i8>> for &core::num::wrapping::Wrapping<i8>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<i8>> for core::num::wrapping::Wrapping<i8>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<i16>> for &core::num::wrapping::Wrapping<i16>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<i16>> for core::num::wrapping::Wrapping<i16>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<i32>> for &core::num::wrapping::Wrapping<i32>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<i32>> for core::num::wrapping::Wrapping<i32>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<i64>> for &core::num::wrapping::Wrapping<i64>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<i64>> for core::num::wrapping::Wrapping<i64>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<i128>> for &core::num::wrapping::Wrapping<i128>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<i128>> for core::num::wrapping::Wrapping<i128>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<isize>> for &core::num::wrapping::Wrapping<isize>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<isize>> for core::num::wrapping::Wrapping<isize>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<u8>> for &core::num::wrapping::Wrapping<u8>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<u8>> for core::num::wrapping::Wrapping<u8>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<u16>> for &core::num::wrapping::Wrapping<u16>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<u16>> for core::num::wrapping::Wrapping<u16>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<u32>> for &core::num::wrapping::Wrapping<u32>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<u32>> for core::num::wrapping::Wrapping<u32>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<u64>> for &core::num::wrapping::Wrapping<u64>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<u64>> for core::num::wrapping::Wrapping<u64>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<u128>> for &core::num::wrapping::Wrapping<u128>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<u128>> for core::num::wrapping::Wrapping<u128>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<usize>> for &core::num::wrapping::Wrapping<usize>

1.14.0 (const: unstable) · Source§

impl Mul<&Wrapping<usize>> for core::num::wrapping::Wrapping<usize>

1.0.0 (const: unstable) · Source§

impl Mul<&f16> for &f16

1.0.0 (const: unstable) · Source§

impl Mul<&f16> for f16

1.0.0 (const: unstable) · Source§

impl Mul<&f32> for &f32

1.0.0 (const: unstable) · Source§

impl Mul<&f32> for f32

1.0.0 (const: unstable) · Source§

impl Mul<&f64> for &f64

1.0.0 (const: unstable) · Source§

impl Mul<&f64> for f64

1.0.0 (const: unstable) · Source§

impl Mul<&f128> for &f128

1.0.0 (const: unstable) · Source§

impl Mul<&f128> for f128

1.0.0 (const: unstable) · Source§

impl Mul<&i8> for &i8

1.0.0 (const: unstable) · Source§

impl Mul<&i8> for i8

1.0.0 (const: unstable) · Source§

impl Mul<&i16> for &i16

1.0.0 (const: unstable) · Source§

impl Mul<&i16> for i16

1.0.0 (const: unstable) · Source§

impl Mul<&i32> for &i32

1.0.0 (const: unstable) · Source§

impl Mul<&i32> for i32

1.0.0 (const: unstable) · Source§

impl Mul<&i64> for &i64

1.0.0 (const: unstable) · Source§

impl Mul<&i64> for i64

1.0.0 (const: unstable) · Source§

impl Mul<&i128> for &i128

1.0.0 (const: unstable) · Source§

impl Mul<&i128> for i128

1.0.0 (const: unstable) · Source§

impl Mul<&isize> for &isize

1.0.0 (const: unstable) · Source§

impl Mul<&isize> for isize

1.0.0 (const: unstable) · Source§

impl Mul<&u8> for &u8

1.0.0 (const: unstable) · Source§

impl Mul<&u8> for u8

1.0.0 (const: unstable) · Source§

impl Mul<&u16> for &u16

1.0.0 (const: unstable) · Source§

impl Mul<&u16> for u16

1.0.0 (const: unstable) · Source§

impl Mul<&u32> for &u32

1.0.0 (const: unstable) · Source§

impl Mul<&u32> for u32

1.0.0 (const: unstable) · Source§

impl Mul<&u64> for &u64

1.0.0 (const: unstable) · Source§

impl Mul<&u64> for u64

1.0.0 (const: unstable) · Source§

impl Mul<&u128> for &u128

1.0.0 (const: unstable) · Source§

impl Mul<&u128> for u128

1.0.0 (const: unstable) · Source§

impl Mul<&usize> for &usize

1.0.0 (const: unstable) · Source§

impl Mul<&usize> for usize

Source§

impl Mul<ATerm> for Z0

Source§

impl Mul<B0> for UTerm

UTerm * B0 = UTerm

Source§

impl Mul<B1> for UTerm

UTerm * B1 = UTerm

Source§

impl Mul<BoxedMontyForm> for &BoxedMontyForm

1.31.0 (const: unstable) · Source§

impl Mul<Duration> for u32

Source§

impl Mul<Limb> for &Limb

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<i8>> for &Saturating<i8>

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<i16>> for &Saturating<i16>

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<i32>> for &Saturating<i32>

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<i64>> for &Saturating<i64>

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<i128>> for &Saturating<i128>

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<isize>> for &Saturating<isize>

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<u8>> for &Saturating<u8>

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<u16>> for &Saturating<u16>

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<u32>> for &Saturating<u32>

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<u64>> for &Saturating<u64>

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<u128>> for &Saturating<u128>

1.74.0 (const: unstable) · Source§

impl Mul<Saturating<usize>> for &Saturating<usize>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<i8>> for &core::num::wrapping::Wrapping<i8>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<i16>> for &core::num::wrapping::Wrapping<i16>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<i32>> for &core::num::wrapping::Wrapping<i32>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<i64>> for &core::num::wrapping::Wrapping<i64>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<i128>> for &core::num::wrapping::Wrapping<i128>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<isize>> for &core::num::wrapping::Wrapping<isize>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<u8>> for &core::num::wrapping::Wrapping<u8>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<u16>> for &core::num::wrapping::Wrapping<u16>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<u32>> for &core::num::wrapping::Wrapping<u32>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<u64>> for &core::num::wrapping::Wrapping<u64>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<u128>> for &core::num::wrapping::Wrapping<u128>

1.14.0 (const: unstable) · Source§

impl Mul<Wrapping<usize>> for &core::num::wrapping::Wrapping<usize>

1.0.0 (const: unstable) · Source§

impl Mul<f16> for &f16

1.0.0 (const: unstable) · Source§

impl Mul<f32> for &f32

1.0.0 (const: unstable) · Source§

impl Mul<f64> for &f64

1.0.0 (const: unstable) · Source§

impl Mul<f128> for &f128

1.0.0 (const: unstable) · Source§

impl Mul<i8> for &i8

1.0.0 (const: unstable) · Source§

impl Mul<i16> for &i16

1.0.0 (const: unstable) · Source§

impl Mul<i32> for &i32

1.0.0 (const: unstable) · Source§

impl Mul<i64> for &i64

1.0.0 (const: unstable) · Source§

impl Mul<i128> for &i128

1.0.0 (const: unstable) · Source§

impl Mul<isize> for &isize

1.0.0 (const: unstable) · Source§

impl Mul<u8> for &u8

1.0.0 (const: unstable) · Source§

impl Mul<u16> for &u16

1.0.0 (const: unstable) · Source§

impl Mul<u32> for &u32

1.3.0 (const: unstable) · Source§

impl Mul<u32> for Duration

1.0.0 (const: unstable) · Source§

impl Mul<u64> for &u64

1.0.0 (const: unstable) · Source§

impl Mul<u128> for &u128

1.0.0 (const: unstable) · Source§

impl Mul<usize> for &usize

Source§

impl<'lhs, 'rhs, T, const N: usize> Mul<&'rhs Simd<T, N>> for &'lhs Simd<T, N>
where T: SimdElement, Simd<T, N>: Mul<Output = Simd<T, N>>,

Source§

type Output = Simd<T, N>

Source§

impl<C, P> Mul<&NonIdentity<P>> for &NonZeroScalar<C>
where C: CurveArithmetic, for<'a> &'a NonIdentity<P>: Mul<&'a NonZeroScalar<C>, Output = NonIdentity<P>>,

Source§

impl<C, P> Mul<&NonIdentity<P>> for NonZeroScalar<C>
where C: CurveArithmetic, for<'a> &'a NonIdentity<P>: Mul<NonZeroScalar<C>, Output = NonIdentity<P>>,

Source§

impl<C, P> Mul<&NonZeroScalar<C>> for &NonIdentity<P>
where C: CurveArithmetic, P: Copy + Mul<Scalar<C>, Output = P>,

Source§

impl<C, P> Mul<&NonZeroScalar<C>> for NonIdentity<P>
where C: CurveArithmetic, P: Copy + Mul<Scalar<C>, Output = P>,

Source§

impl<C, P> Mul<NonIdentity<P>> for &NonZeroScalar<C>
where C: CurveArithmetic, for<'a> NonIdentity<P>: Mul<&'a NonZeroScalar<C>, Output = NonIdentity<P>>,

Source§

impl<C, P> Mul<NonIdentity<P>> for NonZeroScalar<C>
where C: CurveArithmetic, NonIdentity<P>: Mul<NonZeroScalar<C>, Output = NonIdentity<P>>,

Source§

impl<C, P> Mul<NonZeroScalar<C>> for &NonIdentity<P>
where C: CurveArithmetic, P: Copy + Mul<Scalar<C>, Output = P>,

Source§

impl<C, P> Mul<NonZeroScalar<C>> for NonIdentity<P>
where C: CurveArithmetic, P: Copy + Mul<Scalar<C>, Output = P>,

Source§

impl<C> Mul for NonZeroScalar<C>

Source§

impl<C> Mul<&NonZeroScalar<C>> for NonZeroScalar<C>

Source§

impl<G, const WINDOW_SIZE: usize> Mul<&WnafScalar<<G as Group>::Scalar, WINDOW_SIZE>> for &WnafBase<G, WINDOW_SIZE>
where G: Group,

Source§

impl<I> Mul<I> for Z0
where I: Integer,

Z0 * I = Z0

Source§

impl<MOD, const LIMBS: usize> Mul for ConstMontyForm<MOD, LIMBS>
where MOD: ConstMontyParams<LIMBS>,

Source§

type Output = ConstMontyForm<MOD, LIMBS>

Source§

impl<MOD, const LIMBS: usize> Mul<&ConstMontyForm<MOD, LIMBS>> for &ConstMontyForm<MOD, LIMBS>
where MOD: ConstMontyParams<LIMBS>,

Source§

type Output = ConstMontyForm<MOD, LIMBS>

Source§

impl<MOD, const LIMBS: usize> Mul<&ConstMontyForm<MOD, LIMBS>> for ConstMontyForm<MOD, LIMBS>
where MOD: ConstMontyParams<LIMBS>,

Source§

type Output = ConstMontyForm<MOD, LIMBS>

Source§

impl<MOD, const LIMBS: usize> Mul<ConstMontyForm<MOD, LIMBS>> for &ConstMontyForm<MOD, LIMBS>
where MOD: ConstMontyParams<LIMBS>,

Source§

type Output = ConstMontyForm<MOD, LIMBS>

Source§

impl<Rhs> Mul<Rhs> for &BoxedUint
where Rhs: AsRef<UintRef>,

Source§

impl<Rhs> Mul<Rhs> for ATerm

Source§

impl<Rhs> Mul<Rhs> for BoxedUint
where Rhs: AsRef<UintRef>,

Source§

impl<T, const N: usize> Mul<&Simd<T, N>> for Simd<T, N>
where T: SimdElement, Simd<T, N>: Mul<Output = Simd<T, N>>,

Source§

type Output = Simd<T, N>

Source§

impl<T, const N: usize> Mul<Simd<T, N>> for &Simd<T, N>
where T: SimdElement, Simd<T, N>: Mul<Output = Simd<T, N>>,

Source§

type Output = Simd<T, N>

Source§

impl<T> Mul for Checked<T>

Source§

impl<T> Mul for NonZero<T>
where T: Integer,

Any non-zero integer multiplied by another non-zero integer is definitionally non-zero.

Source§

impl<T> Mul for Odd<T>
where T: Mul<Output = T>,

Any odd integer multiplied by another odd integer is definitionally odd.

Source§

impl<T> Mul for crypto_bigint::wrapping::Wrapping<T>
where T: WrappingMul,

Source§

impl<T> Mul<&Checked<T>> for &Checked<T>

Source§

impl<T> Mul<&Checked<T>> for Checked<T>

Source§

impl<T> Mul<&Wrapping<T>> for &crypto_bigint::wrapping::Wrapping<T>
where T: WrappingMul,

Source§

impl<T> Mul<&Wrapping<T>> for crypto_bigint::wrapping::Wrapping<T>
where T: WrappingMul,

Source§

impl<T> Mul<Checked<T>> for &Checked<T>

Source§

impl<T> Mul<Wrapping<T>> for &crypto_bigint::wrapping::Wrapping<T>
where T: WrappingMul,

Source§

impl<U, B> Mul<B0> for UInt<U, B>
where U: Unsigned, B: Bit,

UInt * B0 = UTerm

Source§

impl<U, B> Mul<B1> for UInt<U, B>
where U: Unsigned, B: Bit,

UInt * B1 = UInt

Source§

type Output = UInt<U, B>

Source§

impl<U, B> Mul<UTerm> for UInt<U, B>
where U: Unsigned, B: Bit,

UInt<U, B> * UTerm = UTerm

Source§

impl<U> Mul<ATerm> for NInt<U>
where U: Unsigned + NonZero,

Source§

impl<U> Mul<ATerm> for PInt<U>
where U: Unsigned + NonZero,

Source§

impl<U> Mul<U> for UTerm
where U: Unsigned,

UTerm * U = UTerm

Source§

impl<U> Mul<Z0> for NInt<U>
where U: Unsigned + NonZero,

N * Z0 = Z0

Source§

impl<U> Mul<Z0> for PInt<U>
where U: Unsigned + NonZero,

P * Z0 = Z0

Source§

impl<Ul, B, Ur> Mul<UInt<Ur, B>> for UInt<Ul, B0>
where Ul: Unsigned + Mul<UInt<Ur, B>>, B: Bit, Ur: Unsigned,

UInt<Ul, B0> * UInt<Ur, B> = UInt<(Ul * UInt<Ur, B>), B0>

Source§

type Output = UInt<<Ul as Mul<UInt<Ur, B>>>::Output, B0>

Source§

impl<Ul, B, Ur> Mul<UInt<Ur, B>> for UInt<Ul, B1>
where Ul: Unsigned + Mul<UInt<Ur, B>>, B: Bit, Ur: Unsigned, UInt<<Ul as Mul<UInt<Ur, B>>>::Output, B0>: Add<UInt<Ur, B>>,

UInt<Ul, B1> * UInt<Ur, B> = UInt<(Ul * UInt<Ur, B>), B0> + UInt<Ur, B>

Source§

type Output = <UInt<<Ul as Mul<UInt<Ur, B>>>::Output, B0> as Add<UInt<Ur, B>>>::Output

Source§

impl<Ul, Ur> Mul<NInt<Ur>> for NInt<Ul>
where Ul: Unsigned + NonZero + Mul<Ur>, Ur: Unsigned + NonZero, <Ul as Mul<Ur>>::Output: Unsigned + NonZero,

N(Ul) * N(Ur) = P(Ul * Ur)

Source§

type Output = PInt<<Ul as Mul<Ur>>::Output>

Source§

impl<Ul, Ur> Mul<NInt<Ur>> for PInt<Ul>
where Ul: Unsigned + NonZero + Mul<Ur>, Ur: Unsigned + NonZero, <Ul as Mul<Ur>>::Output: Unsigned + NonZero,

P(Ul) * N(Ur) = N(Ul * Ur)

Source§

type Output = NInt<<Ul as Mul<Ur>>::Output>

Source§

impl<Ul, Ur> Mul<PInt<Ur>> for NInt<Ul>
where Ul: Unsigned + NonZero + Mul<Ur>, Ur: Unsigned + NonZero, <Ul as Mul<Ur>>::Output: Unsigned + NonZero,

N(Ul) * P(Ur) = N(Ul * Ur)

Source§

type Output = NInt<<Ul as Mul<Ur>>::Output>

Source§

impl<Ul, Ur> Mul<PInt<Ur>> for PInt<Ul>
where Ul: Unsigned + NonZero + Mul<Ur>, Ur: Unsigned + NonZero, <Ul as Mul<Ur>>::Output: Unsigned + NonZero,

P(Ul) * P(Ur) = P(Ul * Ur)

Source§

type Output = PInt<<Ul as Mul<Ur>>::Output>

Source§

impl<V, A, Rhs> Mul<Rhs> for TArr<V, A>
where V: Mul<Rhs>, A: Mul<Rhs>, Rhs: Copy,

Source§

type Output = TArr<<V as Mul<Rhs>>::Output, <A as Mul<Rhs>>::Output>

Source§

impl<V, A, U> Mul<TArr<V, A>> for NInt<U>
where U: Unsigned + NonZero, NInt<U>: Mul<A> + Mul<V>,

Source§

type Output = TArr<<NInt<U> as Mul<V>>::Output, <NInt<U> as Mul<A>>::Output>

Source§

impl<V, A, U> Mul<TArr<V, A>> for PInt<U>
where U: Unsigned + NonZero, PInt<U>: Mul<A> + Mul<V>,

Source§

type Output = TArr<<PInt<U> as Mul<V>>::Output, <PInt<U> as Mul<A>>::Output>

Source§

impl<V, A> Mul<TArr<V, A>> for Z0
where Z0: Mul<A>,

Source§

type Output = TArr<Z0, <Z0 as Mul<A>>::Output>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<&Int<RHS_LIMBS>> for &Int<LIMBS>

Source§

type Output = Int<LIMBS>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<&Int<RHS_LIMBS>> for Int<LIMBS>

Source§

type Output = Int<LIMBS>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<&Uint<RHS_LIMBS>> for &Int<LIMBS>

Source§

type Output = Int<LIMBS>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<&Uint<RHS_LIMBS>> for &Uint<LIMBS>

Source§

type Output = Uint<LIMBS>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<&Uint<RHS_LIMBS>> for Int<LIMBS>

Source§

type Output = Int<LIMBS>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<&Uint<RHS_LIMBS>> for Uint<LIMBS>

Source§

type Output = Uint<LIMBS>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<Int<RHS_LIMBS>> for &Int<LIMBS>

Source§

type Output = Int<LIMBS>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<Int<RHS_LIMBS>> for Int<LIMBS>

Source§

type Output = Int<LIMBS>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<Uint<RHS_LIMBS>> for &Int<LIMBS>

Source§

type Output = Int<LIMBS>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<Uint<RHS_LIMBS>> for &Uint<LIMBS>

Source§

type Output = Uint<LIMBS>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<Uint<RHS_LIMBS>> for Int<LIMBS>

Source§

type Output = Int<LIMBS>

Source§

impl<const LIMBS: usize, const RHS_LIMBS: usize> Mul<Uint<RHS_LIMBS>> for Uint<LIMBS>

Source§

type Output = Uint<LIMBS>

Source§

impl<const LIMBS: usize> Mul for FixedMontyForm<LIMBS>

Source§

impl<const LIMBS: usize> Mul<&FixedMontyForm<LIMBS>> for &FixedMontyForm<LIMBS>

Source§

impl<const LIMBS: usize> Mul<&FixedMontyForm<LIMBS>> for FixedMontyForm<LIMBS>

Source§

impl<const LIMBS: usize> Mul<FixedMontyForm<LIMBS>> for &FixedMontyForm<LIMBS>

Source§

impl<const N: usize> Mul for Simd<f16, N>

Source§

impl<const N: usize> Mul for Simd<f32, N>

Source§

impl<const N: usize> Mul for Simd<f64, N>

Source§

impl<const N: usize> Mul for Simd<i8, N>
where i8: SimdElement,

Source§

impl<const N: usize> Mul for Simd<i16, N>

Source§

impl<const N: usize> Mul for Simd<i32, N>

Source§

impl<const N: usize> Mul for Simd<i64, N>

Source§

impl<const N: usize> Mul for Simd<isize, N>

Source§

impl<const N: usize> Mul for Simd<u8, N>
where u8: SimdElement,

Source§

impl<const N: usize> Mul for Simd<u16, N>

Source§

impl<const N: usize> Mul for Simd<u32, N>

Source§

impl<const N: usize> Mul for Simd<u64, N>

Source§

impl<const N: usize> Mul for Simd<usize, N>