[][src]Trait alga::general::AbstractModule

pub trait AbstractModule<OpGroup: Operator = Additive, OpAdd: Operator = Additive, OpMul: Operator = Multiplicative>: AbstractGroupAbelian<OpGroup> {
    type AbstractRing: AbstractRingCommutative<OpAdd, OpMul>;
    fn multiply_by(&self, r: Self::AbstractRing) -> Self;
}

A module combines two sets: one with an Abelian group structure and another with a commutative ring structure.

OpGroup denotes the Abelian group operator (usually the addition). In addition, and external multiplicative law noted is defined. Let S be the ring with multiplicative operator OpMul noted ×, multiplicative identity element noted 1, and additive operator OpAdd. Then:

∀ a, b ∈ S
∀ x, y ∈ Self

a ∘ (x + y) = (a ∘ x) + (a ∘ y)
(a + b) ∘ x = (a ∘ x) + (b ∘ x)
(a × b) ∘ x = a ∘ (b ∘ x)
1 ∘ x       = x

Associated Types

type AbstractRing: AbstractRingCommutative<OpAdd, OpMul>

The underlying scalar field.

Loading content...

Required methods

fn multiply_by(&self, r: Self::AbstractRing) -> Self

Multiplies an element of the ring with an element of the module.

Loading content...

Implementations on Foreign Types

impl<N: AbstractRingCommutative<Additive, Multiplicative> + Num + ClosedNeg> AbstractModule<Additive, Additive, Multiplicative> for Complex<N>[src]

type AbstractRing = N

impl AbstractModule<Additive, Additive, Multiplicative> for i8[src]

type AbstractRing = i8

impl AbstractModule<Additive, Additive, Multiplicative> for i16[src]

type AbstractRing = i16

impl AbstractModule<Additive, Additive, Multiplicative> for i32[src]

type AbstractRing = i32

impl AbstractModule<Additive, Additive, Multiplicative> for i64[src]

type AbstractRing = i64

impl AbstractModule<Additive, Additive, Multiplicative> for isize[src]

type AbstractRing = isize

impl AbstractModule<Additive, Additive, Multiplicative> for f32[src]

type AbstractRing = f32

impl AbstractModule<Additive, Additive, Multiplicative> for f64[src]

type AbstractRing = f64

Loading content...

Implementors

Loading content...