int main() { int T; scanf("%d", &T); assert(1 <= T && T <= MAXT); for (int cas = 1; cas <= T; ++cas) { printf("Testing case %d ..\n", cas); scanf("%lf", &t); assert(0.0 + EPS < t && t < MAXVAL - EPS); bool Sgn = yp(t) > 0.0; for (double x = t - DELTA, X = t + DELTA; x < X; x += DELTAINC) { double deriv = yp(x); bool sgn = deriv > 0.0; assert(! eps_equal(deriv, 0.0)); assert(sgn == Sgn); } } puts("OK"); return 0; }
// Finds the circle formed by three points Circle(const Point<T> &p1, const Point<T> &p2, const Point<T> &p3) { Point<T> m, a, b; if (! eps_equal(p1.x, p2.x) && ! eps_equal(p1.x, p3.x)) m = p1, a = p2, b = p3; else if (! eps_equal(p2.x, p1.x) && ! eps_equal(p2.x, p3.x)) m = p2, a = p1, b = p3; else m = p3, a = p1, b = p2; T ma = (m.y - a.y) / (m.x - a.x); T mb = (b.y - m.y) / (b.x - m.x); x = ma*mb*(a.y - b.y) + mb*(a.x + m.x) - ma*(m.x + b.x); x /= (mb - ma)*2.0; if (eps_equal(0.0, ma)) y = (m.y + b.y) / 2.0 - (x - (m.x + b.x)/2.0) / mb; else y = (a.y + m.y) / 2.0 - (x - (a.x + m.x)/2.0) / ma; r = p1.distance(Point<T>(x, y)); }