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>
52 typedef Scalar scalar_type;
56 originalFlags_(out.flags()),
57 originalPrecision_(out.precision())
60 out << std::scientific;
66 out.precision(static_cast<std::streamsize>(prec));
69 static inline int getDefaultPrecision() {
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_);
112 std::ios_base::fmtflags originalFlags_;
115 std::streamsize originalPrecision_;
119 template<
class Scalar>
122 typedef Scalar scalar_type;
129 #endif // TEUCHOS_SET_SCIENTIFIC_HPP
Temporarily make an output stream use scientific notation with sufficient precision.
This structure defines some basic traits for a scalar field type.
Defines basic traits for the scalar field type.
Definition of Teuchos::as, for conversions between types.