src/nalgebra_support.rs

branch
dev
changeset 180
ec5a811eab09
parent 178
073ea94b119a
child 181
f159287bc191
equal deleted inserted replaced
179:724413fc8d17 180:ec5a811eab09
292 SM: Storage<E, N, M>, 292 SM: Storage<E, N, M>,
293 N: Dim, 293 N: Dim,
294 M: Dim, 294 M: Dim,
295 K: Dim, 295 K: Dim,
296 E: Scalar + Zero + One + Copy + ClosedMulAssign + ClosedAddAssign, 296 E: Scalar + Zero + One + Copy + ClosedMulAssign + ClosedAddAssign,
297 DefaultAllocator: Allocator<N, K> + Allocator<M, K> + Allocator<N, M>, 297 DefaultAllocator: Allocator<M, K> + Allocator<N, K>,
298 ShapeConstraint: StridesOk<E, M, K> + StridesOk<E, N, K>, 298 ShapeConstraint: StridesOk<E, M, K> + StridesOk<E, N, K>,
299 { 299 {
300 type Codomain = OMatrix<E, N, K>; 300 type Codomain = OMatrix<E, N, K>;
301 301
302 #[inline] 302 #[inline]
310 SM: Storage<E, N, M>, 310 SM: Storage<E, N, M>,
311 N: Dim, 311 N: Dim,
312 M: Dim, 312 M: Dim,
313 K: Dim, 313 K: Dim,
314 E: Scalar + Zero + One + Copy + ClosedMulAssign + ClosedAddAssign, 314 E: Scalar + Zero + One + Copy + ClosedMulAssign + ClosedAddAssign,
315 DefaultAllocator: Allocator<N, K> + Allocator<M, K> + Allocator<N, M>, 315 DefaultAllocator: Allocator<N, K> + Allocator<M, K>,
316 ShapeConstraint: StridesOk<E, M, K> + StridesOk<E, N, K>, 316 ShapeConstraint: StridesOk<E, M, K> + StridesOk<E, N, K>,
317 { 317 {
318 } 318 }
319 319
320 impl<SM, SV2, N, M, K, E> GEMV<E, OMatrix<E, M, K>, Matrix<E, N, K, SV2>> for Matrix<E, N, M, SM> 320 impl<SM, SV2, N, M, K, E> GEMV<E, OMatrix<E, M, K>, Matrix<E, N, K, SV2>> for Matrix<E, N, M, SM>
323 SV2: StorageMut<E, N, K>, 323 SV2: StorageMut<E, N, K>,
324 N: Dim, 324 N: Dim,
325 M: Dim, 325 M: Dim,
326 K: Dim, 326 K: Dim,
327 E: Scalar + Zero + One + Float, 327 E: Scalar + Zero + One + Float,
328 DefaultAllocator: Allocator<N, K> + Allocator<M, K> + Allocator<N, M>, 328 DefaultAllocator: Allocator<N, K> + Allocator<M, K>,
329 ShapeConstraint: StridesOk<E, M, K> + StridesOk<E, N, K>, 329 ShapeConstraint: StridesOk<E, M, K> + StridesOk<E, N, K>,
330 { 330 {
331 #[inline] 331 #[inline]
332 fn gemv<I: Instance<OMatrix<E, M, K>>>( 332 fn gemv<I: Instance<OMatrix<E, M, K>>>(
333 &self, y: &mut Matrix<E, N, K, SV2>, α: E, x: I, β: E 333 &self, y: &mut Matrix<E, N, K, SV2>, α: E, x: I, β: E
444 SM: Storage<E, N, M>, 444 SM: Storage<E, N, M>,
445 N: Dim, 445 N: Dim,
446 M: Dim, 446 M: Dim,
447 K: Dim, 447 K: Dim,
448 E: Scalar + Zero + One + Copy + SimdComplexField, 448 E: Scalar + Zero + One + Copy + SimdComplexField,
449 DefaultAllocator: Allocator<N, K> + Allocator<M, K> + Allocator<N, M> + Allocator<M, N>, 449 DefaultAllocator: Allocator<N, K> + Allocator<M, K> + Allocator<M, N>,
450 ShapeConstraint: StridesOk<E, N, K> + StridesOk<E, M, K>, 450 ShapeConstraint: StridesOk<E, N, K> + StridesOk<E, M, K>,
451 { 451 {
452 type AdjointCodomain = OMatrix<E, M, K>; 452 type AdjointCodomain = OMatrix<E, M, K>;
453 type Adjoint<'a> 453 type Adjoint<'a>
454 = OMatrix<E, M, N> 454 = OMatrix<E, M, N>
568 impl<E, M, S> Norm<L1, E> for Vector<E, M, S> 568 impl<E, M, S> Norm<L1, E> for Vector<E, M, S>
569 where 569 where
570 M: Dim, 570 M: Dim,
571 S: Storage<E, M>, 571 S: Storage<E, M>,
572 E: Float + Scalar + Zero + One + RealField, 572 E: Float + Scalar + Zero + One + RealField,
573 DefaultAllocator: Allocator<M>,
574 { 573 {
575 #[inline] 574 #[inline]
576 fn norm(&self, _: L1) -> E { 575 fn norm(&self, _: L1) -> E {
577 nalgebra::Norm::norm(&LpNorm(1), self) 576 nalgebra::Norm::norm(&LpNorm(1), self)
578 } 577 }
596 where 595 where
597 M: Dim, 596 M: Dim,
598 N: Dim, 597 N: Dim,
599 S: Storage<E, M, N>, 598 S: Storage<E, M, N>,
600 E: Float + Scalar + Zero + One + RealField, 599 E: Float + Scalar + Zero + One + RealField,
601 DefaultAllocator: Allocator<M, N>,
602 { 600 {
603 #[inline] 601 #[inline]
604 fn norm(&self, _: L2) -> E { 602 fn norm(&self, _: L2) -> E {
605 nalgebra::Norm::norm(&LpNorm(2), self) 603 nalgebra::Norm::norm(&LpNorm(2), self)
606 } 604 }
625 where 623 where
626 M: Dim, 624 M: Dim,
627 N: Dim, 625 N: Dim,
628 S: Storage<E, M, N>, 626 S: Storage<E, M, N>,
629 E: Float + Scalar + Zero + One + RealField, 627 E: Float + Scalar + Zero + One + RealField,
630 DefaultAllocator: Allocator<M, N>,
631 { 628 {
632 #[inline] 629 #[inline]
633 fn norm(&self, _: Linfinity) -> E { 630 fn norm(&self, _: Linfinity) -> E {
634 nalgebra::Norm::norm(&UniformNorm, self) 631 nalgebra::Norm::norm(&UniformNorm, self)
635 } 632 }

mercurial