| 1 | 1 | 
| 2 //! Things for constructing new kernels from component kernels and traits for analysing them | 2 //! Things for constructing new kernels from component kernels and traits for analysing them | 
| 3 use serde::Serialize; | 3 use serde::{Serialize, Deserialize}; | 
| 4 use numeric_literals::replace_float_literals; | 4 use numeric_literals::replace_float_literals; | 
| 5 | 5 | 
| 6 use alg_tools::types::*; | 6 use alg_tools::types::*; | 
| 7 use alg_tools::norms::*; | 7 use alg_tools::norms::*; | 
| 8 use alg_tools::loc::Loc; | 8 use alg_tools::loc::Loc; | 
| 294 /// Representation of the convolution of two kernels. | 294 /// Representation of the convolution of two kernels. | 
| 295 /// | 295 /// | 
| 296 /// The kernels typically implement [`Support`]s and [`Mapping`]. | 296 /// The kernels typically implement [`Support`]s and [`Mapping`]. | 
| 297 // | 297 // | 
| 298 /// Trait implementations have to be on a case-by-case basis. | 298 /// Trait implementations have to be on a case-by-case basis. | 
| 299 #[derive(Copy,Clone,Serialize,Debug,Eq,PartialEq)] | 299 #[derive(Copy,Clone,Serialize,Deserialize,Debug,Eq,PartialEq)] | 
| 300 pub struct Convolution<A, B>( | 300 pub struct Convolution<A, B>( | 
| 301     /// First kernel | 301     /// First kernel | 
| 302     pub A, | 302     pub A, | 
| 303     /// Second kernel | 303     /// Second kernel | 
| 304     pub B | 304     pub B |