#[cfg(test)]
mod tests {
use ferrix::{Matrix, RowVector, Vector};
#[test]
fn test_vector_add_assign() {
let mut v = Vector::<i32, 3>::from([1, 2, 3]);
v += 2;
assert_eq!(v, Vector::<i32, 3>::from([3, 4, 5]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let v2 = Vector::<i32, 3>::from([1, 2, 3]);
v1 += v2;
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let v2 = Vector::<i32, 3>::from([1, 2, 3]);
v1 += v2.view::<3>(0).unwrap();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let v2 = RowVector::<i32, 3>::from([1, 2, 3]);
v1 += v2.t();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let mut v2 = Vector::<i32, 3>::from([1, 2, 3]);
v1 += v2.view_mut::<3>(0).unwrap();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let mut v2 = RowVector::<i32, 3>::from([1, 2, 3]);
v1 += v2.t_mut();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let v2 = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
v1 += v2;
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let m2 = Matrix::<i32, 3, 2>::from([[1, 0], [2, 0], [3, 0]]);
v1 += m2.view::<3, 1>((0, 0)).unwrap();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let mut m2 = Matrix::<i32, 3, 2>::from([[1, 0], [2, 0], [3, 0]]);
v1 += m2.view_mut::<3, 1>((0, 0)).unwrap();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let m2 = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
v1 += m2.t();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let mut m2 = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
v1 += m2.t_mut();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
}
#[test]
fn test_vector_view_mut_add_assign() {
let mut v = Vector::<i32, 3>::from([1, 2, 3]);
let mut view = v.view_mut::<3>(0).unwrap();
view += 2;
assert_eq!(v, Vector::<i32, 3>::from([3, 4, 5]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let v2 = Vector::<i32, 3>::from([1, 2, 3]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2;
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let v2 = Vector::<i32, 3>::from([1, 2, 3]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2.view::<3>(0).unwrap();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let v2 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2.t();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let mut v2 = Vector::<i32, 3>::from([1, 2, 3]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2.view_mut::<3>(0).unwrap();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let mut v2 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2.t_mut();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let v2 = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2;
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let m2 = Matrix::<i32, 3, 2>::from([[1, 0], [2, 0], [3, 0]]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += m2.view::<3, 1>((0, 0)).unwrap();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let mut m2 = Matrix::<i32, 3, 2>::from([[1, 0], [2, 0], [3, 0]]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += m2.view_mut::<3, 1>((0, 0)).unwrap();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let m2 = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += m2.t();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
let mut v1 = Vector::<i32, 3>::from([1, 2, 3]);
let mut m2 = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += m2.t_mut();
assert_eq!(v1, Vector::<i32, 3>::from([2, 4, 6]));
}
#[test]
fn test_row_vector_add_assign() {
let mut v = RowVector::<i32, 3>::from([1, 2, 3]);
v += 2;
assert_eq!(v, RowVector::<i32, 3>::from([3, 4, 5]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let v2 = RowVector::<i32, 3>::from([1, 2, 3]);
v1 += v2;
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let v2 = RowVector::<i32, 3>::from([1, 2, 3]);
v1 += v2.view::<3>(0).unwrap();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let v2 = Vector::<i32, 3>::from([1, 2, 3]);
v1 += v2.t();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut v2 = RowVector::<i32, 3>::from([1, 2, 3]);
v1 += v2.view_mut::<3>(0).unwrap();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut v2 = Vector::<i32, 3>::from([1, 2, 3]);
v1 += v2.t_mut();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let v2 = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
v1 += v2;
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let m2 = Matrix::<i32, 2, 3>::from([[1, 2, 3], [0, 0, 0]]);
v1 += m2.view::<1, 3>((0, 0)).unwrap();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut m2 = Matrix::<i32, 2, 3>::from([[1, 2, 3], [0, 0, 0]]);
v1 += m2.view_mut::<1, 3>((0, 0)).unwrap();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let m2 = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
v1 += m2.t();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut m2 = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
v1 += m2.t_mut();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
}
#[test]
fn test_row_vector_view_mut_add_assign() {
let mut v = RowVector::<i32, 3>::from([1, 2, 3]);
let mut view = v.view_mut::<3>(0).unwrap();
view += 2;
assert_eq!(v, RowVector::<i32, 3>::from([3, 4, 5]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let v2 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2;
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let v2 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2.view::<3>(0).unwrap();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let v2 = Vector::<i32, 3>::from([1, 2, 3]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2.t();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut v2 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2.view_mut::<3>(0).unwrap();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut v2 = Vector::<i32, 3>::from([1, 2, 3]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2.t_mut();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let v2 = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += v2;
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let m2 = Matrix::<i32, 2, 3>::from([[1, 2, 3], [0, 0, 0]]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += m2.view::<1, 3>((0, 0)).unwrap();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut m2 = Matrix::<i32, 2, 3>::from([[1, 2, 3], [0, 0, 0]]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += m2.view_mut::<1, 3>((0, 0)).unwrap();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let m2 = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += m2.t();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
let mut v1 = RowVector::<i32, 3>::from([1, 2, 3]);
let mut m2 = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
let mut view = v1.view_mut::<3>(0).unwrap();
view += m2.t_mut();
assert_eq!(v1, RowVector::<i32, 3>::from([2, 4, 6]));
}
#[test]
fn test_matrix_add_assign() {
let mut m = Matrix::<i32, 2, 2>::from([[1, 2], [3, 4]]);
m += 5;
assert_eq!(m, Matrix::<i32, 2, 2>::from([[6, 7], [8, 9]]));
let mut m1 = Matrix::<i32, 2, 2>::from([[1, 2], [3, 4]]);
let m2 = Matrix::<i32, 2, 2>::from([[5, 6], [7, 8]]);
m1 += m2;
assert_eq!(m1, Matrix::<i32, 2, 2>::from([[6, 8], [10, 12]]));
let mut m1 = Matrix::<i32, 2, 2>::from([[1, 2], [3, 4]]);
let m2 = Matrix::<i32, 3, 3>::from([[5, 6, 0], [7, 8, 0], [0, 0, 0]]);
m1 += m2.view::<2, 2>((0, 0)).unwrap();
assert_eq!(m1, Matrix::<i32, 2, 2>::from([[6, 8], [10, 12]]));
let mut m1 = Matrix::<i32, 2, 2>::from([[1, 2], [3, 4]]);
let mut m2 = Matrix::<i32, 3, 3>::from([[5, 6, 0], [7, 8, 0], [0, 0, 0]]);
m1 += m2.view_mut::<2, 2>((0, 0)).unwrap();
assert_eq!(m1, Matrix::<i32, 2, 2>::from([[6, 8], [10, 12]]));
let mut m1 = Matrix::<i32, 3, 2>::from([[1, 2], [3, 4], [5, 6]]);
let m2 = Matrix::<i32, 2, 3>::from([[5, 7, 9], [6, 8, 10]]);
m1 += m2.t();
assert_eq!(m1, Matrix::<i32, 3, 2>::from([[6, 8], [10, 12], [14, 16]]));
let mut m1 = Matrix::<i32, 3, 2>::from([[1, 2], [3, 4], [5, 6]]);
let mut m2 = Matrix::<i32, 2, 3>::from([[5, 7, 9], [6, 8, 10]]);
m1 += m2.t_mut();
assert_eq!(m1, Matrix::<i32, 3, 2>::from([[6, 8], [10, 12], [14, 16]]));
let mut m = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
let v = Vector::<i32, 3>::from([4, 5, 6]);
m += v;
assert_eq!(m, Matrix::<i32, 3, 1>::from([[5], [7], [9]]));
let mut m = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
let v = Vector::<i32, 3>::from([4, 5, 6]);
m += v.view::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 3, 1>::from([[5], [7], [9]]));
let mut m = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
let mut v = Vector::<i32, 3>::from([4, 5, 6]);
m += v.view_mut::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 3, 1>::from([[5], [7], [9]]));
let mut m = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
let v = RowVector::<i32, 3>::from([4, 5, 6]);
m += v;
assert_eq!(m, Matrix::<i32, 1, 3>::from([[5, 7, 9]]));
let mut m = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
let v = RowVector::<i32, 3>::from([4, 5, 6]);
m += v.view::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 1, 3>::from([[5, 7, 9]]));
let mut m = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
let mut v = RowVector::<i32, 3>::from([4, 5, 6]);
m += v.view_mut::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 1, 3>::from([[5, 7, 9]]));
}
#[test]
fn test_matrix_view_mut_add_assign() {
let mut m = Matrix::<i32, 2, 2>::from([[1, 2], [3, 4]]);
let mut view = m.view_mut::<2, 2>((0, 0)).unwrap();
view += 5;
assert_eq!(m, Matrix::<i32, 2, 2>::from([[6, 7], [8, 9]]));
let mut m1 = Matrix::<i32, 3, 3>::from([[1, 2, 0], [3, 4, 0], [0, 0, 0]]);
let m2 = Matrix::<i32, 2, 2>::from([[5, 6], [7, 8]]);
let mut view = m1.view_mut::<2, 2>((0, 0)).unwrap();
view += m2;
assert_eq!(m1, Matrix::from([[6, 8, 0], [10, 12, 0], [0, 0, 0]]));
let mut m1 = Matrix::<i32, 3, 3>::from([[1, 2, 0], [3, 4, 0], [0, 0, 0]]);
let m2 = Matrix::<i32, 2, 2>::from([[5, 6], [7, 8]]);
let mut view = m1.view_mut::<2, 2>((0, 0)).unwrap();
view += m2.view::<2, 2>((0, 0)).unwrap();
assert_eq!(m1, Matrix::from([[6, 8, 0], [10, 12, 0], [0, 0, 0]]));
let mut m1 = Matrix::<i32, 3, 3>::from([[1, 2, 0], [3, 4, 0], [0, 0, 0]]);
let mut m2 = Matrix::<i32, 2, 2>::from([[5, 6], [7, 8]]);
let mut view = m1.view_mut::<2, 2>((0, 0)).unwrap();
view += m2.view_mut::<2, 2>((0, 0)).unwrap();
assert_eq!(m1, Matrix::from([[6, 8, 0], [10, 12, 0], [0, 0, 0]]));
let mut m1 = Matrix::<i32, 3, 3>::from([[1, 2, 0], [3, 4, 0], [0, 0, 0]]);
let m2 = Matrix::<i32, 2, 2>::from([[5, 7], [6, 8]]);
let mut view = m1.view_mut::<2, 2>((0, 0)).unwrap();
view += m2.t();
assert_eq!(m1, Matrix::from([[6, 8, 0], [10, 12, 0], [0, 0, 0]]));
let mut m1 = Matrix::<i32, 3, 3>::from([[1, 2, 0], [3, 4, 0], [0, 0, 0]]);
let mut m2 = Matrix::<i32, 2, 2>::from([[5, 7], [6, 8]]);
let mut view = m1.view_mut::<2, 2>((0, 0)).unwrap();
view += m2.t_mut();
assert_eq!(m1, Matrix::from([[6, 8, 0], [10, 12, 0], [0, 0, 0]]));
let mut m = Matrix::<i32, 3, 2>::from([[1, 0], [2, 0], [3, 0]]);
let v = Vector::<i32, 3>::from([4, 5, 6]);
let mut view = m.view_mut::<3, 1>((0, 0)).unwrap();
view += v;
assert_eq!(m, Matrix::<i32, 3, 2>::from([[5, 0], [7, 0], [9, 0]]));
let mut m = Matrix::<i32, 3, 2>::from([[1, 0], [2, 0], [3, 0]]);
let v = Vector::<i32, 3>::from([4, 5, 6]);
let mut view = m.view_mut::<3, 1>((0, 0)).unwrap();
view += v.view::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 3, 2>::from([[5, 0], [7, 0], [9, 0]]));
let mut m = Matrix::<i32, 3, 2>::from([[1, 0], [2, 0], [3, 0]]);
let mut v = Vector::<i32, 3>::from([4, 5, 6]);
let mut view = m.view_mut::<3, 1>((0, 0)).unwrap();
view += v.view_mut::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 3, 2>::from([[5, 0], [7, 0], [9, 0]]));
let mut m = Matrix::<i32, 2, 3>::from([[1, 2, 3], [0, 0, 0]]);
let v = RowVector::<i32, 3>::from([4, 5, 6]);
let mut view = m.view_mut::<1, 3>((0, 0)).unwrap();
view += v;
assert_eq!(m, Matrix::<i32, 2, 3>::from([[5, 7, 9], [0, 0, 0]]));
let mut m = Matrix::<i32, 2, 3>::from([[1, 2, 3], [0, 0, 0]]);
let v = RowVector::<i32, 3>::from([4, 5, 6]);
let mut view = m.view_mut::<1, 3>((0, 0)).unwrap();
view += v.view::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 2, 3>::from([[5, 7, 9], [0, 0, 0]]));
let mut m = Matrix::<i32, 2, 3>::from([[1, 2, 3], [0, 0, 0]]);
let mut v = RowVector::<i32, 3>::from([4, 5, 6]);
let mut view = m.view_mut::<1, 3>((0, 0)).unwrap();
view += v.view_mut::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 2, 3>::from([[5, 7, 9], [0, 0, 0]]));
}
#[test]
fn test_matrix_transpose_view_mut_add_assign() {
let mut m = Matrix::<i32, 2, 2>::from([[1, 2], [3, 4]]);
let mut view = m.t_mut();
view += 5;
assert_eq!(m, Matrix::<i32, 2, 2>::from([[6, 7], [8, 9]]));
let mut m1 = Matrix::<i32, 3, 2>::from([[1, 2], [3, 4], [5, 6]]);
let m2 = Matrix::<i32, 2, 3>::from([[5, 6, 7], [8, 9, 10]]);
let mut view = m1.t_mut();
view += m2;
assert_eq!(m1, Matrix::<i32, 3, 2>::from([[6, 10], [9, 13], [12, 16]]));
let mut m1 = Matrix::<i32, 3, 2>::from([[1, 2], [3, 4], [5, 6]]);
let m2 = Matrix::<i32, 2, 3>::from([[5, 6, 7], [8, 9, 10]]);
let mut view = m1.t_mut();
view += m2.view::<2, 3>((0, 0)).unwrap();
assert_eq!(m1, Matrix::<i32, 3, 2>::from([[6, 10], [9, 13], [12, 16]]));
let mut m1 = Matrix::<i32, 3, 2>::from([[1, 2], [3, 4], [5, 6]]);
let mut m2 = Matrix::<i32, 2, 3>::from([[5, 6, 7], [8, 9, 10]]);
let mut view = m1.t_mut();
view += m2.view_mut::<2, 3>((0, 0)).unwrap();
assert_eq!(m1, Matrix::<i32, 3, 2>::from([[6, 10], [9, 13], [12, 16]]));
let mut m1 = Matrix::<i32, 2, 2>::from([[1, 2], [3, 4]]);
let m2 = Matrix::<i32, 2, 2>::from([[5, 6], [7, 8]]);
let mut view = m1.t_mut();
view += m2.t();
assert_eq!(m1, Matrix::<i32, 2, 2>::from([[6, 8], [10, 12]]));
let mut m1 = Matrix::<i32, 2, 2>::from([[1, 2], [3, 4]]);
let mut m2 = Matrix::<i32, 2, 2>::from([[5, 6], [7, 8]]);
let mut view = m1.t_mut();
view += m2.t_mut();
assert_eq!(m1, Matrix::<i32, 2, 2>::from([[6, 8], [10, 12]]));
let mut m = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
let v = Vector::<i32, 3>::from([1, 2, 3]);
let mut view = m.t_mut();
view += v;
assert_eq!(m, Matrix::<i32, 1, 3>::from([[2, 4, 6]]));
let mut m = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
let v = Vector::<i32, 3>::from([1, 2, 3]);
let mut view = m.t_mut();
view += v.view::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 1, 3>::from([[2, 4, 6]]));
let mut m = Matrix::<i32, 1, 3>::from([[1, 2, 3]]);
let mut v = Vector::<i32, 3>::from([1, 2, 3]);
let mut view = m.t_mut();
view += v.view_mut::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 1, 3>::from([[2, 4, 6]]));
let mut m = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
let v = RowVector::<i32, 3>::from([1, 2, 3]);
let mut view = m.t_mut();
view += v;
assert_eq!(m, Matrix::<i32, 3, 1>::from([[2], [4], [6]]));
let mut m = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
let v = RowVector::<i32, 3>::from([1, 2, 3]);
let mut view = m.t_mut();
view += v.view::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 3, 1>::from([[2], [4], [6]]));
let mut m = Matrix::<i32, 3, 1>::from([[1], [2], [3]]);
let mut v = RowVector::<i32, 3>::from([1, 2, 3]);
let mut view = m.t_mut();
view += v.view_mut::<3>(0).unwrap();
assert_eq!(m, Matrix::<i32, 3, 1>::from([[2], [4], [6]]));
}
}