--- a/src/mapping.rs Tue Dec 31 08:48:50 2024 -0500 +++ b/src/mapping.rs Thu Dec 26 12:35:53 2024 -0500 @@ -127,53 +127,6 @@ } } -/// A sum of [`Mapping`]s. -#[derive(Serialize, Debug, Clone)] -pub struct Sum<Domain, M> { - components : Vec<M>, - _domain : PhantomData<Domain>, -} - -impl<Domain, M> Sum<Domain, M> { - /// Construct from an iterator. - pub fn new<I : Iterator<Item = M>>(iter : I) -> Self { - Sum { components : iter.collect(), _domain : PhantomData } - } - - /// Iterate over the component functions of the sum - pub fn iter(&self) -> std::slice::Iter<'_, M> { - self.components.iter() - } -} - - -impl<Domain, M> Mapping<Domain> for Sum<Domain, M> -where - Domain : Space + Clone, - M : Mapping<Domain>, - M::Codomain : std::iter::Sum + Clone -{ - type Codomain = M::Codomain; - - fn apply<I : Instance<Domain>>(&self, x : I) -> Self::Codomain { - let xr = x.ref_instance(); - self.components.iter().map(|c| c.apply(xr)).sum() - } -} - -impl<Domain, M> DifferentiableImpl<Domain> for Sum<Domain, M> -where - Domain : Space + Clone, - M : DifferentiableMapping<Domain>, - M :: DerivativeDomain : std::iter::Sum -{ - type Derivative = M::DerivativeDomain; - - fn differential_impl<I : Instance<Domain>>(&self, x : I) -> Self::Derivative { - let xr = x.ref_instance(); - self.components.iter().map(|c| c.differential(xr)).sum() - } -} /// Container for the differential [`Mapping`] of a [`Differentiable`] mapping. pub struct Differential<'a, X, G : Clone> {