You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.4 KiB

## matrix_ops
### Instructions
In this exercise, you will define some basic matrix operations, Implement traits for `Add` and `Sub`
Remember that two matrices can only be added or subtracted if they have the same dimensions. Therefore, you must handle the possibility of failure by returning an `Option<T>`.
You will be reusing your `Matrix` and `Scalar` structures defined in the [matrix](../matrix/README.md) and [lalgebra_scalar](../lalgebra_scalar/README.md) exercises.
### Expected Function
```rust
use crate::{Matrix, Scalar};
use std::ops::{ Add, Sub };
impl Add for Matrix {
}
impl Sub for Matrix {
}
```
### Usage
Here is a program to test your function
```rust
use matrix_ops::*;
fn main() {
let matrix = Matrix(vec![vec![8, 1], vec![9, 1]]);
let matrix_2 = Matrix(vec![vec![1, 1], vec![1, 1]]);
println!("{:?}", matrix + matrix_2);
let matrix = Matrix(vec![vec![1, 3], vec![2, 5]]);
let matrix_2 = Matrix(vec![vec![3, 1], vec![1, 1]]);
println!("{:?}", matrix - matrix_2);
let matrix = Matrix(vec![vec![1, 1], vec![1, 1]]);
let matrix_2 = Matrix(vec![vec![1, 1, 3], vec![1, 1]]);
println!("{:?}", matrix - matrix_2);
let matrix = Matrix(vec![vec![1, 3], vec![9, 1]]);
let matrix_2 = Matrix(vec![vec![1, 1, 3], vec![1, 1]]);
println!("{:?}", matrix + matrix_2);
}
```
And its output
```console
$ cargo run
Some(Matrix([[9, 2], [10, 2]]))
Some(Matrix([[-2, 2], [1, 4]]))
None
None
$
```