Yeah, it does. That is why the ImmutableMatrix class was created. I would like to eventually make ImmutableMatrix the default, but it would break compatibility, and there is some work to do there anyway.

One easy fix for diagonalize would be to build it up as it is done now with a mutable matrix, and then convert it to the type of the input at the end.