#include <stdio.h>
#include <math.h>
double der(double x, double c[], int n)
{
double d = 0;
for (int i = 0; i < n; i++) {
d *= x;
d += c[i];
}
return d;
}
double der2(double x, double c[], int n)
{
double d = 0;
for (int i = 0; i < n - 1; i++) {
d *= x;
d += (n - i - 1) * c[i];
}
return d;
}
int main()
{
double coeffs[] = { 3 * 3.0, 2 * 2.0, 1 * 4.0 };
double x = 1.0;
double d = der(x, coeffs, sizeof(coeffs) / sizeof(coeffs[0]));
printf("f'(%lf) = %lf\n", x
, d
);
double coeffs2[] = { 3.0, 2.0, 4.0, 5.0 };
d = der2(x, coeffs2, sizeof(coeffs2) / sizeof(coeffs2[0]));
printf("f'(%lf) = %lf\n", x
, d
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiAKIApkb3VibGUgZGVyKGRvdWJsZSB4LCBkb3VibGUgY1tdLCBpbnQgbikKewogICAgZG91YmxlIGQgPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBkICo9IHg7CiAgICAgICAgZCArPSBjW2ldOwogICAgfQogICAgcmV0dXJuIGQ7Cn0KIApkb3VibGUgZGVyMihkb3VibGUgeCwgZG91YmxlIGNbXSwgaW50IG4pCnsKICAgIGRvdWJsZSBkID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgIGQgKj0geDsKICAgICAgICBkICs9IChuIC0gaSAtIDEpICogY1tpXTsKICAgIH0KICAgIHJldHVybiBkOwp9CiAKaW50IG1haW4oKQp7CiAgICBkb3VibGUgY29lZmZzW10gPSB7IDMgKiAzLjAsIDIgKiAyLjAsIDEgKiA0LjAgfTsKICAgIGRvdWJsZSB4ID0gMS4wOwogICAgZG91YmxlIGQgPSBkZXIoeCwgY29lZmZzLCBzaXplb2YoY29lZmZzKSAvIHNpemVvZihjb2VmZnNbMF0pKTsKICAgIHByaW50ZigiZicoJWxmKSA9ICVsZlxuIiwgeCwgZCk7CiAKICAgIGRvdWJsZSBjb2VmZnMyW10gPSB7IDMuMCwgMi4wLCA0LjAsIDUuMCB9OwogICAgZCA9IGRlcjIoeCwgY29lZmZzMiwgc2l6ZW9mKGNvZWZmczIpIC8gc2l6ZW9mKGNvZWZmczJbMF0pKTsKICAgIHByaW50ZigiZicoJWxmKSA9ICVsZlxuIiwgeCwgZCk7CiAgICByZXR1cm4gMDsKfQog