Use the LAPACK dnrm2 algorithm to compute the l2 norm instead of the
square root of the inner product of a vector with itself. This
modification prevents overflow by ensuring that any squared term has a
nonnegative argument of 1.0 or less. However, it also disables OpenMP
parallelism (because mfem::Vector::operator* is no longer being used);
this functionality would have to be reintroduced in a subsequent
commit.
Use a scaling trick (also performed in C++'s std::hypot) to prevent
overflow of $\ell^{p}$ norm of `mfem::Vector`s in some cases (e.g.,
large values of $p$).
Copying a DenseMatrixEigensystem when using LAPACK
is done by value. The dynamic memory is incorrectly copied
which leads to a segfault on delete. Also, a segfault occurs
when copying a vector that has a nonzero size, but null data.