| 146 } |
146 } |
| 147 |
147 |
| 148 impl<$($qual)*> $crate::norms::Dist<$crate::norms::L2, $F> for $type |
148 impl<$($qual)*> $crate::norms::Dist<$crate::norms::L2, $F> for $type |
| 149 { |
149 { |
| 150 fn dist<I: $crate::instance::Instance<Self>>(&self, other : I, p : $crate::norms::L2) -> $F { |
150 fn dist<I: $crate::instance::Instance<Self>>(&self, other : I, p : $crate::norms::L2) -> $F { |
| 151 other.eval_ref(|x| self.get_view().dist(x, p)) |
151 other.eval_ref(|x| self.get_view().dist(x.get_view(), p)) |
| 152 } |
152 } |
| 153 } |
153 } |
| 154 |
154 |
| 155 impl<$($qual)*> $crate::norms::Normed<$F> for $type { |
155 impl<$($qual)*> $crate::norms::Normed<$F> for $type { |
| 156 type NormExp = $crate::norms::L2; |
156 type NormExp = $crate::norms::L2; |
| 224 // Self: std::ops::MulAssign<F> + std::ops::DivAssign<F>, |
224 // Self: std::ops::MulAssign<F> + std::ops::DivAssign<F>, |
| 225 // Self::Unwrapped: std::ops::MulAssign<F> + std::ops::DivAssign<F>, |
225 // Self::Unwrapped: std::ops::MulAssign<F> + std::ops::DivAssign<F>, |
| 226 { |
226 { |
| 227 fn axpy<I: $crate::instance::Instance<Self>>(&mut self, α: $F, x: I, β: $F) { |
227 fn axpy<I: $crate::instance::Instance<Self>>(&mut self, α: $F, x: I, β: $F) { |
| 228 x.eval_decompose(|v| { |
228 x.eval_decompose(|v| { |
| 229 self.get_view_mut().axpy(α, v.get_view(), β) |
229 self.get_view_mut().axpy(α, (*v).get_view(), β) |
| 230 }) |
230 }) |
| 231 } |
231 } |
| 232 |
232 |
| 233 fn copy_from<I: $crate::instance::Instance<Self>>(&mut self, x: I) { |
233 fn copy_from<I: $crate::instance::Instance<Self>>(&mut self, x: I) { |
| 234 x.eval_decompose(|v| { |
234 x.eval_decompose(|v| { |
| 235 self.get_view_mut().copy_from(&v.get_view()) |
235 self.get_view_mut().copy_from((*v).get_view()) |
| 236 }) |
236 }) |
| 237 } |
237 } |
| 238 |
238 |
| 239 fn scale_from<I: $crate::instance::Instance<Self>>(&mut self, α: $F, x: I) { |
239 fn scale_from<I: $crate::instance::Instance<Self>>(&mut self, α: $F, x: I) { |
| 240 x.eval_decompose(|v| { |
240 x.eval_decompose(|v| { |
| 241 self.get_view_mut().scale_from(α, v.get_view()) |
241 self.get_view_mut().scale_from(α, (*v).get_view()) |
| 242 }) |
242 }) |
| 243 } |
243 } |
| 244 |
244 |
| 245 /// Set self to zero. |
245 /// Set self to zero. |
| 246 fn set_zero(&mut self) { |
246 fn set_zero(&mut self) { |