diff --git a/dune/solvers/solvers/loopsolver.cc b/dune/solvers/solvers/loopsolver.cc index 96ab9c1a9b75031be8338590f3d3e5d875833d0a..59e696c3bf45142b2980efd25c0462b386fa6099 100644 --- a/dune/solvers/solvers/loopsolver.cc +++ b/dune/solvers/solvers/loopsolver.cc @@ -124,37 +124,39 @@ void ::LoopSolver<VectorType, BitVectorType>::solve() // Output if (this->verbosity_ == NumProc::FULL) { + std::streamsize const oldPrecision = std::cout.precision(); + std::ios_base::fmtflags const oldFormatFlags = std::cout.flags(); + std::cout << std::setw(5) << i; if (this->useRelativeError_) { - std::cout << std::setiosflags(std::ios::scientific); - std::cout << std::setw(15) << std::setprecision(7) << error; - std::cout << std::resetiosflags(std::ios::scientific); + std::cout << std::scientific + << std::setw(15) << std::setprecision(7) << error; } if (referenceSolution_) { - std::cout << std::setiosflags(std::ios::scientific); - std::cout << std::setw(15) << std::setprecision(7) << normOfError; - std::cout << std::resetiosflags(std::ios::scientific); + std::cout << std::scientific + << std::setw(15) << std::setprecision(7) << normOfError; } - std::cout << std::setiosflags(std::ios::scientific); - std::cout << std::setw(15) << std::setprecision(7) << normOfCorrection; - std::cout << std::resetiosflags(std::ios::scientific); + std::cout << std::scientific + << std::setw(15) << std::setprecision(7) << normOfCorrection; - std::cout << std::setiosflags(std::ios::fixed); - if (i==0) // We can't estimate the convergence rate at the first iteration + if (i == 0) + // We can't estimate the convergence rate at the first iteration std::cout << " "; else - std::cout << std::setw(9) << std::setprecision(5) << convRate; - std::cout << std::resetiosflags(std::ios::fixed); + std::cout << std::fixed + << std::setw(9) << std::setprecision(5) << convRate; + + std::cout << std::setprecision(oldPrecision) + << std::setiosflags(oldFormatFlags); std::cout << this->iterationStep_->getOutput(); std::cout << std::endl; } - }