*** mul.cpp Wed Aug 28 00:50:17 2002 --- mul.cpp.patched Wed Aug 28 00:49:53 2002 *************** *** 141,165 **** while (it != itend) { // If the first argument is a negative integer power, it gets printed as "1.0/" ! if (it == seq.begin() && ex_to(it->coeff).is_integer() && it->coeff.info(info_flags::negative)) { ! if (is_a(c)) c.s << "recip("; ! else c.s << "1.0/"; } // If the exponent is 1 or -1, it is left out 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: ! (ex(power(it->rest, abs(ex_to(it->coeff))))).print(c, level); ! } // Separator is "/" for negative integer powers, "*" otherwise ++it; if (it != itend) { ! if (ex_to(it->coeff).is_integer() && it->coeff.info(info_flags::negative)) c.s << "/"; else c.s << "*"; --- 141,171 ---- while (it != itend) { // If the first argument is a negative integer power, it gets printed as "1.0/" ! bool printfinalparenthesis=false; ! if (it == seq.begin() && it->coeff.info(info_flags::negint)) { ! if (is_a(c)) { c.s << "recip("; ! printfinalparenthesis=true; ! } else c.s << "1.0/"; } // If the exponent is 1 or -1, it is left out if (it->coeff.is_equal(_ex1) || it->coeff.is_equal(_ex_1)) it->rest.print(c, precedence()); ! else if(it->coeff.info(info_flags::negint)) // Outer parens around ex needed for broken gcc-2.95 parser: ! (ex(power(it->rest, -ex_to(it->coeff)))).print(c, level); ! else ! (ex(power(it->rest, ex_to(it->coeff)))).print(c, level); ! ! if(printfinalparenthesis) ! c.s << ")"; // Separator is "/" for negative integer powers, "*" otherwise ++it; if (it != itend) { ! if (it->coeff.info(info_flags::negint)) c.s << "/"; else c.s << "*";