diff options
Diffstat (limited to 'Eigen/src/Core/IO.h')
-rw-r--r-- | Eigen/src/Core/IO.h | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/Eigen/src/Core/IO.h b/Eigen/src/Core/IO.h index d132064a6..8f91e272e 100644 --- a/Eigen/src/Core/IO.h +++ b/Eigen/src/Core/IO.h @@ -143,9 +143,16 @@ std::ostream & ei_print_matrix(std::ostream & s, const Derived& _m, const IOForm } else if(fmt.precision == FullPrecision) { - explicit_precision = NumTraits<Scalar>::HasFloatingPoint - ? std::ceil(-ei_log(epsilon<Scalar>())/ei_log(10.0)) - : 0; + if (NumTraits<Scalar>::HasFloatingPoint) + { + typedef typename NumTraits<Scalar>::Real RealScalar; + RealScalar explicit_precision_fp = std::ceil(-ei_log(epsilon<Scalar>())/ei_log(10.0)); + explicit_precision = static_cast<std::streamsize>(explicit_precision_fp); + } + else + { + explicit_precision = 0; + } } else { |