src/nalgebra_support.rs

branch
dev
changeset 167
effb80efba09
parent 166
20fa28637737
child 168
93daa824c04a
equal deleted inserted replaced
166:20fa28637737 167:effb80efba09
205 } 205 }
206 206
207 impl<SM, SV, N, M, K, E> Mapping<Matrix<E, M, K, SV>> for Matrix<E, N, M, SM> 207 impl<SM, SV, N, M, K, E> Mapping<Matrix<E, M, K, SV>> for Matrix<E, N, M, SM>
208 where 208 where
209 SM: Storage<E, N, M>, 209 SM: Storage<E, N, M>,
210 SV: Storage<E, M, K> + Clone, 210 SV: Storage<E, M, K>,
211 N: Dim, 211 N: Dim,
212 M: Dim, 212 M: Dim,
213 K: Dim, 213 K: Dim,
214 E: Scalar + Zero + One + Copy + ClosedMulAssign + ClosedAddAssign, 214 E: Scalar + Zero + One + Copy + ClosedMulAssign + ClosedAddAssign,
215 DefaultAllocator: Allocator<N, K> + Allocator<M, K> + Allocator<N, M> + Allocator<M, N>, 215 DefaultAllocator: Allocator<N, K> + Allocator<M, K> + Allocator<N, M>,
216 ShapeConstraint: StridesOk<E, N, M, SM> + StridesOk<E, M, K, SV> + StridesOk<E, N, K>, 216 ShapeConstraint: StridesOk<E, N, M, SM> + StridesOk<E, M, K, SV> + StridesOk<E, N, K>,
217 { 217 {
218 type Codomain = OMatrix<E, N, K>; 218 type Codomain = OMatrix<E, N, K>;
219 219
220 #[inline] 220 #[inline]
224 } 224 }
225 225
226 impl<'a, SM, SV, N, M, K, E> Linear<Matrix<E, M, K, SV>> for Matrix<E, N, M, SM> 226 impl<'a, SM, SV, N, M, K, E> Linear<Matrix<E, M, K, SV>> for Matrix<E, N, M, SM>
227 where 227 where
228 SM: Storage<E, N, M>, 228 SM: Storage<E, N, M>,
229 SV: Storage<E, M, K> + Clone, 229 SV: Storage<E, M, K>,
230 N: Dim, 230 N: Dim,
231 M: Dim, 231 M: Dim,
232 K: Dim, 232 K: Dim,
233 E: Scalar + Zero + One + Copy + ClosedMulAssign + ClosedAddAssign, 233 E: Scalar + Zero + One + Copy + ClosedMulAssign + ClosedAddAssign,
234 DefaultAllocator: Allocator<N, K> + Allocator<M, K> + Allocator<N, M> + Allocator<M, N>, 234 DefaultAllocator: Allocator<N, K> + Allocator<M, K> + Allocator<N, M>,
235 ShapeConstraint: StridesOk<E, N, M, SM> + StridesOk<E, M, K, SV> + StridesOk<E, N, K>, 235 ShapeConstraint: StridesOk<E, N, M, SM> + StridesOk<E, M, K, SV> + StridesOk<E, N, K>,
236 { 236 {
237 } 237 }
238 238
239 impl<SM, SV1, SV2, N, M, K, E> GEMV<E, Matrix<E, M, K, SV1>, Matrix<E, N, K, SV2>> 239 impl<SM, SV1, SV2, N, M, K, E> GEMV<E, Matrix<E, M, K, SV1>, Matrix<E, N, K, SV2>>
240 for Matrix<E, N, M, SM> 240 for Matrix<E, N, M, SM>
241 where 241 where
242 SM: Storage<E, N, M>, 242 SM: Storage<E, N, M>,
243 SV1: Storage<E, M, K> + Clone, 243 SV1: Storage<E, M, K>,
244 SV2: StorageMut<E, N, K>, 244 SV2: StorageMut<E, N, K>,
245 N: Dim, 245 N: Dim,
246 M: Dim, 246 M: Dim,
247 K: Dim, 247 K: Dim,
248 E: Scalar + Zero + One + Float, 248 E: Scalar + Zero + One + Float,
249 DefaultAllocator: Allocator<N, K> + Allocator<M, K> + Allocator<N, M> + Allocator<M, N>, 249 DefaultAllocator: Allocator<N, K> + Allocator<M, K> + Allocator<N, M>,
250 ShapeConstraint: StridesOk<E, N, M, SM> + StridesOk<E, M, K, SV1> + StridesOk<E, N, K, SV2>, 250 ShapeConstraint: StridesOk<E, N, M, SM> + StridesOk<E, M, K, SV1> + StridesOk<E, N, K, SV2>,
251 { 251 {
252 #[inline] 252 #[inline]
253 fn gemv<I: Instance<Matrix<E, M, K, SV1>>>( 253 fn gemv<I: Instance<Matrix<E, M, K, SV1>>>(
254 &self, 254 &self,

mercurial