16enum { DontAlignCols = 1 };
17enum { StreamPrecision = -1,
21template<
typename Derived>
22std::ostream & print_matrix(std::ostream & s,
const Derived& _m,
const IOFormat& fmt);
62 if((flags & DontAlignCols))
64 int i = int(matSuffix.length())-1;
65 while (i>=0 && matSuffix[i]!=
'\n')
71 std::string matPrefix, matSuffix;
72 std::string rowPrefix, rowSuffix, rowSeparator, rowSpacer;
73 std::string coeffSeparator;
93template<
typename ExpressionType>
99 : m_matrix(matrix), m_format(format)
104 return internal::print_matrix(s,
wf.m_matrix.eval(),
wf.m_format);
108 const typename ExpressionType::Nested m_matrix;
119template<
typename Derived>
128template<
typename Scalar,
bool IsInteger>
131 typedef typename NumTraits<Scalar>::Real
RealScalar;
132 static inline int run()
140template<
typename Scalar>
143 static inline int run()
149template<
typename Scalar>
156template<
typename Derived>
157std::ostream & print_matrix(std::ostream & s,
const Derived&
_m,
const IOFormat&
fmt)
161 s <<
fmt.matPrefix <<
fmt.matSuffix;
165 typename Derived::Nested m =
_m;
166 typedef typename Derived::Scalar Scalar;
171 if(
fmt.precision == StreamPrecision)
175 else if(fmt.precision == FullPrecision)
177 if (NumTraits<Scalar>::IsInteger)
179 explicit_precision = 0;
183 explicit_precision = significant_decimals_impl<Scalar>::run();
188 explicit_precision = fmt.precision;
191 std::streamsize old_precision = 0;
192 if(explicit_precision) old_precision = s.precision(explicit_precision);
194 bool align_cols = !(fmt.flags & DontAlignCols);
198 for(Index j = 0; j < m.cols(); ++j)
199 for(Index i = 0; i < m.rows(); ++i)
201 std::stringstream sstr;
203 sstr << m.coeff(i,j);
204 width = std::max<Index>(width, Index(sstr.str().length()));
208 for(Index i = 0; i < m.rows(); ++i)
213 if(width) s.width(width);
215 for(Index j = 1; j < m.cols(); ++j)
217 s << fmt.coeffSeparator;
218 if (width) s.width(width);
222 if( i < m.rows() - 1)
223 s << fmt.rowSeparator;
226 if(explicit_precision) s.precision(old_precision);
243template<
typename Derived>
244std::ostream &
operator <<
248 return internal::print_matrix(s, m.eval(), EIGEN_DEFAULT_IO_FORMAT);
Base class for all dense matrices, vectors, and arrays.
Definition DenseBase.h:49
Pseudo expression representing a solving operation.
Definition Solve.h:63
Holds information about the various numeric (i.e.
Definition NumTraits.h:108