|      4 use std::marker::PhantomData; | 
     4 use std::marker::PhantomData; | 
|      5 use std::sync::Arc; | 
     5 use std::sync::Arc; | 
|      6 use crate::types::Float; | 
     6 use crate::types::Float; | 
|      7 use crate::mapping::{ | 
     7 use crate::mapping::{ | 
|      8     Instance, Mapping, DifferentiableImpl, DifferentiableMapping, Space, | 
     8     Instance, Mapping, DifferentiableImpl, DifferentiableMapping, Space, | 
|      9     BasicDecomposition, | 
     9     BasicDecomposition, ArithmeticFalse, | 
|     10 }; | 
    10 }; | 
|     11 //use crate::linops::{Apply, Linear}; | 
    11 //use crate::linops::{Apply, Linear}; | 
|     12 use crate::sets::Set; | 
    12 use crate::sets::Set; | 
|     13 use crate::sets::Cube; | 
    13 use crate::sets::Cube; | 
|     14 use crate::loc::Loc; | 
    14 use crate::loc::Loc; | 
|    413     G::SupportType : LocalAnalysis<F, BT::Agg, N> + Mapping<Loc<F, N>, Codomain = V>, | 
   413     G::SupportType : LocalAnalysis<F, BT::Agg, N> + Mapping<Loc<F, N>, Codomain = V>, | 
|    414     V : Sum + Space, | 
   414     V : Sum + Space, | 
|    415 { | 
   415 { | 
|    416  | 
   416  | 
|    417     type Codomain = V; | 
   417     type Codomain = V; | 
|         | 
   418     type ArithmeticOptIn = ArithmeticFalse; | 
|    418  | 
   419  | 
|    419     fn apply<I : Instance<Loc<F,N>>>(&self, x : I) -> Self::Codomain { | 
   420     fn apply<I : Instance<Loc<F,N>>>(&self, x : I) -> Self::Codomain { | 
|    420         let xc = x.cow(); | 
   421         let xc = x.cow(); | 
|    421         self.bt.iter_at(&*xc) | 
   422         self.bt.iter_at(&*xc) | 
|    422             .map(|&d| self.generator.support_for(d).apply(&*xc)).sum() | 
   423             .map(|&d| self.generator.support_for(d).apply(&*xc)).sum() |