diff options
Diffstat (limited to 'aberth/poly.cpp')
-rw-r--r-- | aberth/poly.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/aberth/poly.cpp b/aberth/poly.cpp new file mode 100644 index 0000000..cf19816 --- /dev/null +++ b/aberth/poly.cpp @@ -0,0 +1,28 @@ +#include <sstream> +#include "poly.h" + + +ostream& operator<<(ostream &os, const Poly &p) { + static const char *supers[10] = { + "⁰", "¹", "²", "³", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹" + }; + + os << p[0]; + + for (int i = 1; i < (int)p.size(); i++) { + if (p[i] < 0) os << " - " << -p[i]; + else if (p[i] > 0) os << " + " << p[i]; + else continue; + + os << "x"; + + if (i == 1) continue; + + ostringstream ss; + ss << i; + string s = ss.str(); + for (char c : s) os << supers[c - '0']; + } + + return os; +} |