diff -r 9226980e45a7 -r 848ecc05becf src/direct_product.rs --- a/src/direct_product.rs Tue Dec 31 08:30:02 2024 -0500 +++ b/src/direct_product.rs Tue Dec 31 09:02:55 2024 -0500 @@ -15,7 +15,7 @@ use crate::mapping::Space; use crate::linops::AXPY; use crate::loc::Loc; -use crate::norms::{Norm, PairNorm, NormExponent}; +use crate::norms::{Norm, PairNorm, NormExponent, Normed, HasDual, L2}; #[derive(Debug,Clone,Copy,PartialEq,Eq,Serialize,Deserialize)] pub struct Pair (pub A, pub B); @@ -468,3 +468,29 @@ } +impl Normed for Pair +where + A : Normed, + B : Normed, +{ + type NormExp = PairNorm; + + #[inline] + fn norm_exponent(&self) -> Self::NormExp { + PairNorm(self.0.norm_exponent(), self.1.norm_exponent(), L2) + } + + #[inline] + fn is_zero(&self) -> bool { + self.0.is_zero() && self.1.is_zero() + } +} + +impl HasDual for Pair +where + A : HasDual, + B : HasDual, + +{ + type DualSpace = Pair; +}