#include <bits/stdc++.h>
using namespace std;
pair<double, double> horner(const vector<double> &a, double x) {
double p = a[0], dp = 0;
for (int i = 1; i < (int)a.size(); i++) {
dp = dp * x + p;
p = p * x + a[i];
}
return {p, dp};
}
int main() {
int n;
cin >> n;
vector<double> a(n + 1);
for (int i = 0; i <= n; i++) cin >> a[i];
double x0;
cin >> x0;
const double E = 1e-8;
cout << fixed << setprecision(10);
cout << "Iter\t" << setw(12) << "x"
<< "\t" << setw(12) << "f(x)"
<< "\t" << setw(12) << "f'(x)"
<< "\t" << setw(12) << "error\n";
for (int i = 1; i <= 100; i++) {
auto [fx, dfx] = horner(a, x0);
if (fabs(dfx) < 1e-14) {
cout << "Derivative too small at iteration " << i << ", stopping.\n";
break;
}
double x1 = x0 - fx / dfx;
double error = fabs(x1 - x0);
cout << i << "\t"
<< setw(12) << x0 << "\t"
<< setw(12) << fx << "\t"
<< setw(12) << dfx << "\t"
<< setw(12) << error << "\n";
if (fabs(x1 - x0) < E * max(1.0, fabs(x1))) {
cout << "Root = " << x1 << "\n";
break;
}
x0 = x1;
}
return 0;
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKcGFpcjxkb3VibGUsIGRvdWJsZT4gaG9ybmVyKGNvbnN0IHZlY3Rvcjxkb3VibGU+ICZhLCBkb3VibGUgeCkgewogICAgZG91YmxlIHAgPSBhWzBdLCBkcCA9IDA7CiAgICBmb3IgKGludCBpID0gMTsgaSA8IChpbnQpYS5zaXplKCk7IGkrKykgewogICAgICAgIGRwID0gZHAgKiB4ICsgcDsKICAgICAgICBwID0gcCAqIHggKyBhW2ldOwogICAgfQogICAgcmV0dXJuIHtwLCBkcH07Cn0KCmludCBtYWluKCkgewogICAgaW50IG47CiAgICBjaW4gPj4gbjsKICAgIHZlY3Rvcjxkb3VibGU+IGEobiArIDEpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbjsgaSsrKSBjaW4gPj4gYVtpXTsKCiAgICBkb3VibGUgeDA7CiAgICBjaW4gPj4geDA7CgogICAgY29uc3QgZG91YmxlIEUgPSAxZS04OwogICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMTApOwogICAgY291dCA8PCAiSXRlclx0IiA8PCBzZXR3KDEyKSA8PCAieCIKICAgICAgICAgPDwgIlx0IiA8PCBzZXR3KDEyKSA8PCAiZih4KSIKICAgICAgICAgPDwgIlx0IiA8PCBzZXR3KDEyKSA8PCAiZicoeCkiCiAgICAgICAgIDw8ICJcdCIgPDwgc2V0dygxMikgPDwgImVycm9yXG4iOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDEwMDsgaSsrKSB7CiAgICAgICAgYXV0byBbZngsIGRmeF0gPSBob3JuZXIoYSwgeDApOwoKICAgICAgICBpZiAoZmFicyhkZngpIDwgMWUtMTQpIHsKICAgICAgICAgICAgY291dCA8PCAiRGVyaXZhdGl2ZSB0b28gc21hbGwgYXQgaXRlcmF0aW9uICIgPDwgaSA8PCAiLCBzdG9wcGluZy5cbiI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgZG91YmxlIHgxID0geDAgLSBmeCAvIGRmeDsKICAgICAgICBkb3VibGUgZXJyb3IgPSBmYWJzKHgxIC0geDApOwoKICAgICAgICBjb3V0IDw8IGkgPDwgIlx0IiAKICAgICAgICAgICAgIDw8IHNldHcoMTIpIDw8IHgwIDw8ICJcdCIgCiAgICAgICAgICAgICA8PCBzZXR3KDEyKSA8PCBmeCA8PCAiXHQiIAogICAgICAgICAgICAgPDwgc2V0dygxMikgPDwgZGZ4IDw8ICJcdCIgCiAgICAgICAgICAgICA8PCBzZXR3KDEyKSA8PCBlcnJvciA8PCAiXG4iOwoKICAgICAgICBpZiAoZmFicyh4MSAtIHgwKSA8IEUgKiBtYXgoMS4wLCBmYWJzKHgxKSkpIHsKICAgICAgICAgICAgY291dCA8PCAiUm9vdCA9ICIgPDwgeDEgPDwgIlxuIjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICB4MCA9IHgxOwogICAgfQoKICAgIHJldHVybiAwOwp9