- [ ] Create an `AbstractNDArray` class that subtypes `AbstractArray` so we can create special types of NDArray - [ ] Create the `DiagonalNDArray` - [ ] Should store the diagonal entries as a 1D NDArray - [ ] Implement all operations for diagonal arrays that can be specialized (i.e., `eigen`). - [ ] Make sure functions which are not specialized still return correct results
AbstractNDArrayclass that subtypesAbstractArrayso we can create special types of NDArrayDiagonalNDArrayeigen).