10 #ifndef TEUCHOS_SET_SCIENTIFIC_HPP
11 #define TEUCHOS_SET_SCIENTIFIC_HPP
40 template<typename Scalar, const bool isFloatingPoint = ! Teuchos::ScalarTraits<Scalar>::isOrdinal>
49 template<
typename Scalar>
56 originalFlags_(out.flags()),
57 originalPrecision_(out.precision())
60 out << std::scientific;
66 out.precision(static_cast<std::streamsize>(prec));
71 typedef typename STS::magnitudeType magnitude_type;
89 const magnitude_type numDecDigits = STM::t() * STM::log10 (STM::base());
94 const magnitude_type one = STM::one();
95 const magnitude_type two = one + one;
99 Teuchos::as<int>(magnitude_type((two*numDecDigits + one) / two));
104 out_.flags (originalFlags_);
119 template<
class Scalar>
129 #endif // TEUCHOS_SET_SCIENTIFIC_HPP
std::streamsize originalPrecision_
The output stream's original precision.
static int getDefaultPrecision()
Temporarily make an output stream use scientific notation with sufficient precision.
This structure defines some basic traits for a scalar field type.
std::ostream & out_
The output stream to which to apply flags.
SetScientific(std::ostream &)
SetScientific(std::ostream &out, int prec=-1)
std::ios_base::fmtflags originalFlags_
The output stream's original flags.
Defines basic traits for the scalar field type.
Definition of Teuchos::as, for conversions between types.