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 |