fn change_shape(&self) -> Self {
        let r = self.row;
        let c = self.col;
        assert_eq!(r * c, self.data.len());
        let l = r * c - 1;
        let mut data: Vec<C64> = self.data.clone();
        let ref_data = &self.data;

        match self.shape {
            Shape::Row => {
                for i in 0..l {
                    let s = (i * c) % l;
                    data[i] = ref_data[s];
                }
                data[l] = ref_data[l];
                cmatrix(data, r, c, Shape::Col)
            }
            Shape::Col => {
                for i in 0..l {
                    let s = (i * r) % l;
                    data[i] = ref_data[s];
                }
                data[l] = ref_data[l];
                cmatrix(data, r, c, Shape::Row)
            }
        }
    }
Change Bindings

`Row` -> `Col` or `Col` -> `Row`

# Examples
```rust
use peroxide::fuga::*;
use peroxide::complex::matrix::*;

let mut a = cmatrix(vec![C64::new(1f64, 1f64),
C64::new(2f64, 2f64),
C64::new(3f64, 3f64),
C64::new(4f64, 4f64)],
2, 2, Row
);
assert_eq!(a.shape, Row);
let b = a.change_shape();
assert_eq!(b.shape, Col);
```
src/complex/matrix.rs