]> www.ginac.de Git - ginac.git/commitdiff
* Fix thinkos in print_csrc context.
authorRichard Kreckel <Richard.Kreckel@uni-mainz.de>
Fri, 21 Dec 2001 20:32:23 +0000 (20:32 +0000)
committerRichard Kreckel <Richard.Kreckel@uni-mainz.de>
Fri, 21 Dec 2001 20:32:23 +0000 (20:32 +0000)
  (Cebix: read the implementations of ex::compare() and basic::compare()!!!)

ginac/add.cpp
ginac/mul.cpp
ginac/power.cpp

index 3a7a9126db69f03209f2bb90bafcd8f1574acf3e..90d7891bb4e0357b3dfc4a02a76c15139f353859 100644 (file)
@@ -121,16 +121,16 @@ void add::print(const print_context & c, unsigned level) const
                while (it != itend) {
                
                        // If the coefficient is -1, it is replaced by a single minus sign
-                       if (it->coeff.compare(_num1) == 0) {
+                       if (it->coeff.is_equal(_ex1)) {
                                it->rest.print(c, precedence());
-                       } else if (it->coeff.compare(_num_1) == 0) {
+                       } else if (it->coeff.is_equal(_ex_1)) {
                                c.s << "-";
                                it->rest.print(c, precedence());
-                       } else if (ex_to<numeric>(it->coeff).numer().compare(_num1) == 0) {
+                       } else if (ex_to<numeric>(it->coeff).numer().is_equal(_num1)) {
                                it->rest.print(c, precedence());
                                c.s << "/";
                                ex_to<numeric>(it->coeff).denom().print(c, precedence());
-                       } else if (ex_to<numeric>(it->coeff).numer().compare(_num_1) == 0) {
+                       } else if (ex_to<numeric>(it->coeff).numer().is_equal(_num_1)) {
                                c.s << "-";
                                it->rest.print(c, precedence());
                                c.s << "/";
@@ -143,7 +143,7 @@ void add::print(const print_context & c, unsigned level) const
                
                        // Separator is "+", except if the following expression would have a leading minus sign
                        ++it;
-                       if (it != itend && !(it->coeff.compare(_num0) < 0 || (it->coeff.compare(_num1) == 0 && is_exactly_a<numeric>(it->rest) && it->rest.compare(_num0) < 0)))
+                       if (it != itend && !(it->coeff.info(info_flags::negative) || (it->coeff.is_equal(_num1) && is_exactly_a<numeric>(it->rest) && it->rest.info(info_flags::negative))))
                                c.s << "+";
                }
        
index 51668803a88371322901cf9c4a35c2f6011d4295..81d648a599bd108319a225a959dea2accfca5899 100644 (file)
@@ -141,7 +141,7 @@ void mul::print(const print_context & c, unsigned level) const
                while (it != itend) {
 
                        // If the first argument is a negative integer power, it gets printed as "1.0/<expr>"
-                       if (it == seq.begin() && ex_to<numeric>(it->coeff).is_integer() && it->coeff.compare(_num0) < 0) {
+                       if (it == seq.begin() && ex_to<numeric>(it->coeff).is_integer() && it->coeff.info(info_flags::negative)) {
                                if (is_a<print_csrc_cl_N>(c))
                                        c.s << "recip(";
                                else
@@ -149,7 +149,7 @@ void mul::print(const print_context & c, unsigned level) const
                        }
 
                        // If the exponent is 1 or -1, it is left out
-                       if (it->coeff.compare(_ex1) == 0 || it->coeff.compare(_num_1) == 0)
+                       if (it->coeff.is_equal(_ex1) || it->coeff.is_equal(_ex_1))
                                it->rest.print(c, precedence());
                        else {
                                // Outer parens around ex needed for broken gcc-2.95 parser:
@@ -159,7 +159,7 @@ void mul::print(const print_context & c, unsigned level) const
                        // Separator is "/" for negative integer powers, "*" otherwise
                        ++it;
                        if (it != itend) {
-                               if (ex_to<numeric>(it->coeff).is_integer() && it->coeff.compare(_num0) < 0)
+                               if (ex_to<numeric>(it->coeff).is_integer() && it->coeff.info(info_flags::negative))
                                        c.s << "/";
                                else
                                        c.s << "*";
index 72ec5aa368ae65c3bc8565309e379074e00d134e..abbee766cd6b5afa4e16f14b63406a35da2445fb 100644 (file)
@@ -139,7 +139,7 @@ void power::print(const print_context & c, unsigned level) const
                        c.s << ')';
 
                // <expr>^-1 is printed as "1.0/<expr>" or with the recip() function of CLN
-               } else if (exponent.compare(_num_1) == 0) {
+               } else if (exponent.is_equal(_ex_1)) {
                        if (is_a<print_csrc_cl_N>(c))
                                c.s << "recip(";
                        else