minor
eig_ should already be diagonal when residual is called.
std::abs is safer for complex numbers.

This might not make any difference in some cases as the ax_plus_y routines might just have a quick return for the 0.0 case.
getting rid of all warnings by clang