42 #ifndef TEUCHOS_SET_SCIENTIFIC_HPP
43 #define TEUCHOS_SET_SCIENTIFIC_HPP
72 template<typename Scalar, const bool isFloatingPoint = ! Teuchos::ScalarTraits<Scalar>::isOrdinal>
81 template<
typename Scalar>
84 typedef Scalar scalar_type;
88 originalFlags_(out.flags()),
89 originalPrecision_(out.precision())
92 out << std::scientific;
98 out.precision(static_cast<std::streamsize>(prec));
101 static inline int getDefaultPrecision() {
103 typedef typename STS::magnitudeType magnitude_type;
121 const magnitude_type numDecDigits = STM::t() * STM::log10 (STM::base());
126 const magnitude_type one = STM::one();
127 const magnitude_type two = one + one;
131 Teuchos::as<int>(magnitude_type((two*numDecDigits + one) / two));
136 out_.flags (originalFlags_);
144 std::ios_base::fmtflags originalFlags_;
147 std::streamsize originalPrecision_;
151 template<
class Scalar>
154 typedef Scalar scalar_type;
161 #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.