static struct xpr rred (struct xpr z, int kf, int *ps) { struct xpr is, q; if (x_neg (&z)) { z = xneg (z); is = xOne; } else is = xZero; z = xfmod (z, xPi, &q); if (kf == 't') q = is; else if (kf == 's') q = xadd (q, is, 0); if (xprcmp (&z, &xPi2) == 1) { z = xadd (xPi, z, 1); if (kf == 'c' || kf == 't') q = xadd (q, xOne, 0); } *ps = (xodd (q)) ? 1 : 0; return z; }
bool Hexagon::less(const Hexagon *h) const { if (y() < h->y()) return true; if (y() > h->y()) return false; if (xeven() && h->xodd()) return true; if (xodd() && h->xeven()) return false; return x() < h->x(); }