>DenseMatrix(double data) : should this guy just reference data (as we do in DenseVector)?
I prefer it to be a reference. This will give us a performance boost with the Matlab parser and other library interop.
>is there a smart way to cast this to a one dimensional array and reference that?
I thought there might be something in the runtime interop classes, but it doesn't look it. We might be able to do it with pointer manipulation, but then the code has to marked as unsafe. It looks like copying might be the only option.
>having two constructors which look so similar but behave completely different is a bit confusing.
Agreed, it might be a bit confusing - but as long as it is documented it should be OK.