src/euclidean/wrap.rs

branch
dev
changeset 175
ef02a80bf4bc
parent 174
53ab61a41d70
child 176
21e51de02ab6
--- a/src/euclidean/wrap.rs	Wed Sep 03 21:31:13 2025 -0500
+++ b/src/euclidean/wrap.rs	Wed Sep 03 22:05:33 2025 -0500
@@ -137,6 +137,36 @@
 
         $crate::self_ownable!($type where $($qual)*);
 
+        impl<$($qual)*> $crate::norms::Norm<$crate::norms::L2, $F> for $type
+        {
+            fn norm(&self, p : $crate::norms::L2) -> $F {
+                self.get_view().norm(p)
+            }
+        }
+
+        impl<$($qual)*> $crate::norms::Dist<$crate::norms::L2, $F> for $type
+        {
+            fn dist<I: $crate::instance::Instance<Self>>(&self, other : I, p : $crate::norms::L2) -> $F {
+                other.eval_decompose(|x| self.get_view().dist(p, x))
+            }
+        }
+
+        impl<$($qual)*> $crate::norms::Normed<$F> for $type {
+            type NormExp = $crate::norms::L2;
+
+            fn norm_exponent(&self) -> Self::NormExp {
+                $crate::norms::L2
+            }
+        }
+
+        impl<$($qual)*> $crate::norms::HasDual<$F> for $type {
+            type DualSpace = Self;
+
+            fn dual_origin(&self) -> Self {
+                self.similar_origin(self)
+            }
+        }
+
         impl<$($qual)*> $crate::euclidean::Euclidean<$F> for $type
         // where
         //     Self: $crate::euclidean::wrap::Wrapped<WrappedField = $F>
@@ -207,13 +237,13 @@
 
             fn scale_from<I: $crate::instance::Instance<Self>>(&mut self, α: $F, x: I) {
                 x.eval_decompose(|v| {
-                    self.get_mut_view().scale_from(α, v.get_view())
+                    self.get_view_mut().scale_from(α, v.get_view())
                 })
             }
 
             /// Set self to zero.
             fn set_zero(&mut self) {
-                self.get_mut_view().set_zero()
+                self.get_view_mut().set_zero()
             }
         }
 

mercurial