(m: &Matrix<f64>)
| 114 | } |
| 115 | |
| 116 | pub fn all_pair_distances(m: &Matrix<f64>) -> Matrix<f64> { |
| 117 | |
| 118 | let mut r = Matrix::fill(0.0, m.rows(), m.rows()); |
| 119 | |
| 120 | // TODO handling of NaN and stuff like this |
| 121 | for (i, row1) in m.row_iter().enumerate() { |
| 122 | for (j, row2) in m.row_iter_at(i + 1).enumerate() { |
| 123 | let p = j + i + 1; |
| 124 | let d = Euclid::compute(row1, row2).unwrap(); |
| 125 | r.set(i, p, d); |
| 126 | r.set(p, i, d); |
| 127 | } |
| 128 | } |
| 129 | r |
| 130 | } |
| 131 | |
| 132 | #[cfg(test)] |
| 133 | mod tests { |