#define inf (1e6)
#define EPS (1e-8)
double Calc(double a)
{
    ……
}
double Solve()
{
    double Left, Right;
    double mid, midmid;
    double mid_area, midmid_area;
    Left = -inf; Right = inf;
    while (Left + EPS < Right)
    {
        mid = (Left + Right) / 2;
        midmid = (mid + Right) / 2;
        double mid_area = Calc(mid);
        double midmid_area = Calc(midmid);
        // 假设求解最小极值.最大极值改为(mid_area >= midmid_area)
        if (mid_area <= midmid_area) Right = midmid;
        else Left = mid;
    }
	return Left;
}