// protected
/** Ctor from representation, for internal use only. */
-matrix::matrix(int r, int c, vector<ex> const & m2)
+matrix::matrix(int r, int c, exvector const & m2)
: basic(TINFO_matrix), row(r), col(c), m(m2)
{
- debugmsg("matrix constructor from int,int,vector<ex>",LOGLEVEL_CONSTRUCT);
+ debugmsg("matrix constructor from int,int,exvector",LOGLEVEL_CONSTRUCT);
}
//////////
/** expands the elements of a matrix entry by entry. */
ex matrix::expand(unsigned options) const
{
- vector<ex> tmp(row*col);
+ exvector tmp(row*col);
for (int i=0; i<row*col; ++i) {
tmp[i]=m[i].expand(options);
}
if (is_equal(*other.bp)) return true;
// search all the elements
- for (vector<ex>::const_iterator r=m.begin(); r!=m.end(); ++r) {
+ for (exvector::const_iterator r=m.begin(); r!=m.end(); ++r) {
if ((*r).has(other)) return true;
}
return false;
}
// eval() entry by entry
- vector<ex> m2(row*col);
+ exvector m2(row*col);
--level;
for (int r=0; r<row; ++r) {
for (int c=0; c<col; ++c) {
}
// evalf() entry by entry
- vector<ex> m2(row*col);
+ exvector m2(row*col);
--level;
for (int r=0; r<row; ++r) {
for (int c=0; c<col; ++c) {
throw (std::logic_error("matrix::add(): incompatible matrices"));
}
- vector<ex> sum(this->m);
- vector<ex>::iterator i;
- vector<ex>::const_iterator ci;
+ exvector sum(this->m);
+ exvector::iterator i;
+ exvector::const_iterator ci;
for (i=sum.begin(), ci=other.m.begin();
i!=sum.end();
++i, ++ci) {
throw (std::logic_error("matrix::sub(): incompatible matrices"));
}
- vector<ex> dif(this->m);
- vector<ex>::iterator i;
- vector<ex>::const_iterator ci;
+ exvector dif(this->m);
+ exvector::iterator i;
+ exvector::const_iterator ci;
for (i=dif.begin(), ci=other.m.begin();
i!=dif.end();
++i, ++ci) {
throw (std::logic_error("matrix::mul(): incompatible matrices"));
}
- vector<ex> prod(row*other.col);
+ exvector prod(row*other.col);
for (int i=0; i<row; ++i) {
for (int j=0; j<other.col; ++j) {
for (int l=0; l<col; ++l) {
* represents the transposed. */
matrix matrix::transpose(void) const
{
- vector<ex> trans(col*row);
+ exvector trans(col*row);
for (int r=0; r<col; ++r) {
for (int c=0; c<row; ++c) {
}
// check, if there are non-numeric entries in the matrix:
- for (vector<ex>::const_iterator r=m.begin(); r!=m.end(); ++r) {
+ for (exvector::const_iterator r=m.begin(); r!=m.end(); ++r) {
if (!(*r).info(info_flags::numeric)) {
if (normalized) {
return determinant_symbolic_minor(*this).normal();
}
// assemble the solution matrix
- vector<ex> sol(v.row*v.col);
+ exvector sol(v.row*v.col);
for (int c=0; c<v.col; ++c) {
for (int r=col-1; r>=0; --r) {
sol[r*v.col+c] = tmp[r*tmp.col+c];