to implement a reliable eigensolver