Example #1
0
File: check.cpp Project: lbv/ffa-pc
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;
}
Example #2
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));
    }