- debugmsg("constant duplicate",LOGLEVEL_DUPLICATE);
- return new constant(*this);
+ if (is_a<print_tree>(c)) {
+ c.s << std::string(level, ' ') << name << " (" << class_name() << ")"
+ << std::hex << ", hash=0x" << hashvalue << ", flags=0x" << flags << std::dec
+ << std::endl;
+ } else if (is_a<print_latex>(c))
+ c.s << TeX_name;
+ else
+ c.s << name;
+}
+
+int constant::degree(const ex & s) const
+{
+ return is_equal(ex_to<basic>(s)) ? 1 : 0;
+}
+
+int constant::ldegree(const ex & s) const
+{
+ return is_equal(ex_to<basic>(s)) ? 1 : 0;
+}
+
+ex constant::coeff(const ex & s, int n) const
+{
+ if (is_equal(ex_to<basic>(s)))
+ return n==1 ? _ex1 : _ex0;
+ else
+ return n==0 ? *this : _ex0;