src/direct_product.rs

branch
dev
changeset 131
8264d72aa347
parent 130
0a689881b0f1
equal deleted inserted replaced
130:0a689881b0f1 131:8264d72aa347
262 impl_scalar_mut!(MulAssign, mul_assign); 262 impl_scalar_mut!(MulAssign, mul_assign);
263 impl_scalar_mut!(DivAssign, div_assign); 263 impl_scalar_mut!(DivAssign, div_assign);
264 264
265 /// We only support 'closed' `Euclidean` `Pair`s, as more general ones cause 265 /// We only support 'closed' `Euclidean` `Pair`s, as more general ones cause
266 /// compiler overflows. 266 /// compiler overflows.
267 impl<A, B, F: Float> Euclidean<F> for Pair<A, B> 267 impl<A, B, F: Float> Euclidean for Pair<A, B>
268 where 268 where
269 A: Euclidean<F>, 269 A: Euclidean<Field = F>,
270 B: Euclidean<F>, 270 B: Euclidean<Field = F>,
271 //Pair<A, B>: Euclidean<F>, 271 //Pair<A, B>: Euclidean<F>,
272 Self: Sized 272 Self: Sized
273 + Mul<F, Output = Pair<A, B>> 273 + Mul<F, Output = Pair<A, B>>
274 + MulAssign<F> 274 + MulAssign<F>
275 + Div<F, Output = Pair<A, B>> 275 + Div<F, Output = Pair<A, B>>
282 + for<'b> AddAssign<&'b Self> 282 + for<'b> AddAssign<&'b Self>
283 + SubAssign<Self> 283 + SubAssign<Self>
284 + for<'b> SubAssign<&'b Self> 284 + for<'b> SubAssign<&'b Self>
285 + Neg<Output = Pair<A, B>>, 285 + Neg<Output = Pair<A, B>>,
286 { 286 {
287 type Output = Pair<A, B>;
288
289 fn dot<I: Instance<Self>>(&self, other: I) -> F { 287 fn dot<I: Instance<Self>>(&self, other: I) -> F {
290 let Pair(u, v) = other.decompose(); 288 let Pair(u, v) = other.decompose();
291 self.0.dot(u) + self.1.dot(v) 289 self.0.dot(u) + self.1.dot(v)
292 } 290 }
293 291

mercurial