]> www.ginac.de Git - ginac.git/blobdiff - ginac/expair.h
added decomp_rational()
[ginac.git] / ginac / expair.h
index 2f34b4b8795afc17f40526f2c7709d7f6deb049b..91dd2323ffb2352bdaf0240acd2af9c150f7420e 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "ex.h"
 #include "numeric.h"
+#include "print.h"
 
 namespace GiNaC {
 
@@ -40,7 +41,7 @@ public:
        ~expair() { }
        expair(const expair & other) : rest(other.rest), coeff(other.coeff)
        {
-               GINAC_ASSERT(is_ex_exactly_of_type(coeff,numeric));
+               GINAC_ASSERT(is_exactly_a<numeric>(coeff));
        }
        const expair & operator=(const expair & other)
        {
@@ -54,7 +55,7 @@ public:
        /** Construct an expair from two ex. */
        expair(const ex & r, const ex & c) : rest(r), coeff(c)
        {
-               GINAC_ASSERT(is_ex_exactly_of_type(coeff,numeric));
+               GINAC_ASSERT(is_exactly_a<numeric>(coeff));
        }
        
        /** Member-wise check for canonical ordering equality. */
@@ -81,20 +82,18 @@ public:
                        return coeff.compare(other.coeff);
        }
        
-       /** Output to ostream in ugly raw format. */
-       void printraw(std::ostream & os) const
+       void print(std::ostream & os) const
        {
-               os << "expair(";
-               rest.printraw(os);
-               os << ",";
-               coeff.printraw(os);
-               os << ")";
+               os << "expair:";
+               print_tree c(os);
+               rest.print(c, c.delta_indent);
+               coeff.print(c, c.delta_indent);
        }
        
        /** True if this is of the form (numeric,ex(1)). */
        bool is_canonical_numeric(void) const
        {
-               GINAC_ASSERT(is_ex_exactly_of_type(coeff,numeric));
+               GINAC_ASSERT(is_exactly_a<numeric>(coeff));
                return (is_ex_exactly_of_type(rest,numeric) &&
                        (coeff.is_equal(1)));
        }