#include <stdio.h>
double binEq(double left, double right, double eps, double (*f)(double))
{
double x = left;
if (left > right)
{
double t = left;
left = right;
right = t;
}
double fl = f(left), fr = f(right);
if (fl*fr > 0)
{
fprintf(stderr
,"Wrong range in binEq\n"); return 0;
}
while ( right - left > eps )
{
x = (left + right)/2.0;
if (fl * f(x) < 0)
right = x;
else
left = x;
}
return x;
}
double F(double x)
{
return 11*x - 19;
}
int main()
{
printf("x = %lf\n",binEq
(-100,100,1e-8,F
)); }
I2luY2x1ZGUgPHN0ZGlvLmg+Cgpkb3VibGUgYmluRXEoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdodCwgZG91YmxlIGVwcywgZG91YmxlICgqZikoZG91YmxlKSkKewogICAgZG91YmxlIHggPSBsZWZ0OwoKICAgIGlmIChsZWZ0ID4gcmlnaHQpCiAgICB7CiAgICAgICAgZG91YmxlIHQgPSBsZWZ0OwogICAgICAgIGxlZnQgPSByaWdodDsKICAgICAgICByaWdodCA9IHQ7CiAgICB9CgogICAgZG91YmxlIGZsID0gZihsZWZ0KSwgZnIgPSBmKHJpZ2h0KTsKCiAgICBpZiAoZmwqZnIgPiAwKQogICAgewogICAgICAgIGZwcmludGYoc3RkZXJyLCJXcm9uZyByYW5nZSBpbiBiaW5FcVxuIik7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgd2hpbGUgKCByaWdodCAtIGxlZnQgPiBlcHMgKQogICAgewogICAgICAgIHggPSAobGVmdCArIHJpZ2h0KS8yLjA7CiAgICAgICAgaWYgKGZsICogZih4KSA8IDApCiAgICAgICAgICAgIHJpZ2h0ID0geDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGxlZnQgPSB4OwogICAgfQogICAgcmV0dXJuIHg7Cn0KCmRvdWJsZSBGKGRvdWJsZSB4KQp7CiAgICByZXR1cm4gMTEqeCAtIDE5Owp9CgoKaW50IG1haW4oKQp7CiAgICBwcmludGYoInggPSAlbGZcbiIsYmluRXEoLTEwMCwxMDAsMWUtOCxGKSk7Cn0K