diagonalization no longer modifies the matrix you want to diagonalize
Invoking Jacobi::Diagonalize() no longer modifies the matrix you want to diagonalize. (Previous versions of this library did not allocate extra memory where intermediate calculations could be made and stored. Instead the actual matrix was used causing it to be erased during the diagonalization process. The current version allocates an array to store these intermediate calculations. This incurs a small cost because the contents of the original matrix must be copied into this array at the beginning of Jacobi::Diagonalize(). However I believe this additional cost is neglegible.)