haar_lib/algebra/act/
add_sum.rs1pub use crate::algebra::{act::Act, traits::*};
3use std::fmt::Debug;
4
5#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
7pub struct AddSum<S: Monoid + Additive>(pub S);
8
9impl<M, A> Act<M> for AddSum<A>
10where
11 M: Monoid + Additive,
12 A: Monoid + Additive,
13 M::Element: TryFrom<A::Element, Error: Debug>,
14{
15 type Monoid = A;
16 type Element = A::Element;
17
18 fn monoid(&self) -> &Self::Monoid {
19 &self.0
20 }
21 fn act(&self, m: &M, val: M::Element, a: Self::Element, len: usize) -> M::Element {
22 m.op(
23 val,
24 M::Element::try_from(Additive::times(&self.0, a, len as u64)).unwrap(),
25 )
26 }
27}