-static void print_sym_pow(std::ostream & os, unsigned type, const symbol &x, int exp)
-{
- // Optimal output of integer powers of symbols to aid compiler CSE
- if (exp == 1) {
- x.printcsrc(os, type, 0);
- } else if (exp == 2) {
- x.printcsrc(os, type, 0);
- os << "*";
- x.printcsrc(os, type, 0);
- } else if (exp & 1) {
- x.printcsrc(os, 0);
- os << "*";
- print_sym_pow(os, type, x, exp-1);
- } else {
- os << "(";
- print_sym_pow(os, type, x, exp >> 1);
- os << ")*(";
- print_sym_pow(os, type, x, exp >> 1);
- os << ")";
- }
-}