36 template<
typename Derived>
37 std::ostream &
print_matrix(std::ostream & s,
const Derived& _m,
const IOFormat& fmt);
69 const std::string& _coeffSeparator =
" ",
70 const std::string& _rowSeparator =
"\n",
const std::string& _rowPrefix=
"",
const std::string& _rowSuffix=
"",
71 const std::string& _matPrefix=
"",
const std::string& _matSuffix=
"")
105 template<
typename ExpressionType>
131 template<
typename Derived>
140 template<
typename Scalar,
bool IsInteger>
141 struct significant_decimals_default_impl
144 static inline int run()
151 template<
typename Scalar>
152 struct significant_decimals_default_impl<Scalar, true>
154 static inline int run()
160 template<
typename Scalar>
161 struct significant_decimals_impl
162 : significant_decimals_default_impl<Scalar, NumTraits<Scalar>::IsInteger>
167 template<
typename Derived>
176 typename Derived::Nested m = _m;
177 typedef typename Derived::Scalar Scalar;
178 typedef typename Derived::Index Index;
182 std::streamsize explicit_precision;
185 explicit_precision = 0;
191 explicit_precision = 0;
195 explicit_precision = significant_decimals_impl<Scalar>::run();
207 for(Index j = 1; j < m.cols(); ++j)
208 for(Index i = 0; i < m.rows(); ++i)
210 std::stringstream sstr;
211 if(explicit_precision) sstr.precision(explicit_precision);
212 sstr << m.coeff(i,j);
213 width = std::max<Index>(width, Index(sstr.str().length()));
216 std::streamsize old_precision = 0;
217 if(explicit_precision) old_precision = s.precision(explicit_precision);
219 for(Index i = 0; i < m.rows(); ++i)
224 if(width) s.width(width);
226 for(Index j = 1; j < m.cols(); ++j)
229 if (width) s.width(width);
233 if( i < m.rows() - 1)
237 if(explicit_precision) s.precision(old_precision);
254 template<
typename Derived>
255 std::ostream &
operator <<