Skip to content

Commit e60f49a

Browse files
committed
Implement Outer
1 parent 287f515 commit e60f49a

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/vector.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
//! Define trait for vectors
22
33
use std::iter::Sum;
4-
use ndarray::{LinalgScalar, ArrayBase, Data, Dimension};
4+
use ndarray::{Array, NdFloat, Ix1, Ix2, LinalgScalar, ArrayBase, Data, Dimension};
55
use num_traits::float::Float;
6+
use super::outer::ImplOuter;
67

78
/// Methods for vectors
89
pub trait Vector {
@@ -55,3 +56,19 @@ impl<A: Float> Squared for A {
5556
self.abs()
5657
}
5758
}
59+
60+
pub fn outer<A, S1, S2>(a: &ArrayBase<S1, Ix1>, b: &ArrayBase<S2, Ix1>) -> Array<A, Ix2>
61+
where A: NdFloat + ImplOuter,
62+
S1: Data<Elem = A>,
63+
S2: Data<Elem = A>
64+
{
65+
let m = a.len();
66+
let n = b.len();
67+
let mut ab = Array::zeros((m, n));
68+
ImplOuter::outer(m,
69+
n,
70+
a.as_slice_memory_order().unwrap(),
71+
b.as_slice_memory_order().unwrap(),
72+
ab.as_slice_memory_order_mut().unwrap());
73+
ab
74+
}

0 commit comments

Comments
 (0)