+ ex conjugate() const
+ {
+ STLT *newcont = NULL;
+ for (const_iterator i=this->seq.begin(); i!=this->seq.end(); ++i) {
+ if (newcont) {
+ newcont->push_back(i->conjugate());
+ continue;
+ }
+ ex x = i->conjugate();
+ if (are_ex_trivially_equal(x, *i)) {
+ continue;
+ }
+ newcont = new STLT;
+ this->reserve(*newcont, this->seq.size());
+ for (const_iterator j=this->seq.begin(); j!=i; ++j) {
+ newcont->push_back(*j);
+ }
+ newcont->push_back(x);
+ }
+ if (newcont) {
+ ex result = thiscontainer(*newcont);
+ delete newcont;
+ return result;
+ }
+ return *this;
+ }
+
+ ex real_part() const
+ {
+ STLT cont;
+ this->reserve(cont, nops());
+ const_iterator b = begin();
+ const_iterator e = end();
+ for(const_iterator i=b; i!=e; ++i)
+ cont.push_back(i->real_part());
+ return thiscontainer(cont);
+ }
+
+ ex imag_part() const
+ {
+ STLT cont;
+ this->reserve(cont, nops());
+ const_iterator b = begin();
+ const_iterator e = end();
+ for(const_iterator i=b; i!=e; ++i)
+ cont.push_back(i->imag_part());
+ return thiscontainer(cont);
+ }
+