diff --git a/dune/solvers/solvers/loopsolver.cc b/dune/solvers/solvers/loopsolver.cc index 799f05df063b698db87277d0fd1f1a1070aca97e..d33da8ff31d0f37c0c70a95646f49165c7c8056b 100644 --- a/dune/solvers/solvers/loopsolver.cc +++ b/dune/solvers/solvers/loopsolver.cc @@ -112,8 +112,9 @@ void ::LoopSolver<VectorType, BitVectorType>::solve() } // Turn the error into the relative error, if requested - if (this->useRelativeError_ && !std::isnan(error/oldNorm)) - error = error / oldNorm; + if (this->useRelativeError_ && error != 0) + error = (oldNorm == 0) ? std::numeric_limits<real_type>::max() + : error / oldNorm; if (!std::isinf(convRate) && !std::isnan(convRate) && i>0) {