#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int counter; //乗算のカウンターをグローバル変数として宣言
//x^nを繰り返し計算して多項式の各項を計算する方法の間数polyを完成すること
double poly(int n, double a[], double x){
double result = 0.0; // ← 追加(結果用)
// fot → for に修正(ここは必須)
for(int i=0; i<=n; i++){
double xn = 1.0; // ← 追加(x^i用)
// x^i を繰り返し計算
for(int j=0; j<i; j++){
xn *= x;
counter++; //乗算カウント
}
result += a[i] * xn;
counter++; //乗算カウント
}
return result; // ← 追加
}
//Honer法で計算するhonerを完成すること
double honer(int n, double a[], double x){
double result = a[n]; // ← 追加
for(int i=n-1; i>=0; i--){
result = result * x + a[i];
counter++; //乗算カウント
}
return result; // ← 追加
}
int main(){
int n=40;
double a[100], x=0.9, px;
for(int i=0; i<=n; i++){
a[i]=1.0*(i+1);
}
counter=0;
px = poly(n, a, x);
printf("poly: px=%f, n=%d, count=%d\n", px
, n
, counter
); counter=0;
px=honer(n, a, x);
printf("honer: px=%f, n=%d, count=%d\n", px
, n
, counter
); return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPG1hdGguaD4KI2luY2x1ZGU8dGltZS5oPgoKaW50IGNvdW50ZXI7IC8v5LmX566X44Gu44Kr44Km44Oz44K/44O844KS44Kw44Ot44O844OQ44Or5aSJ5pWw44Go44GX44Gm5a6j6KiACgovL3hebuOCkue5sOOCiui/lOOBl+ioiOeul+OBl+OBpuWkmumgheW8j+OBruWQhOmgheOCkuioiOeul+OBmeOCi+aWueazleOBrumWk+aVsHBvbHnjgpLlrozmiJDjgZnjgovjgZPjgagKZG91YmxlIHBvbHkoaW50IG4sIGRvdWJsZSBhW10sIGRvdWJsZSB4KXsKCiAgICBkb3VibGUgcmVzdWx0ID0gMC4wOyAvLyDihpAg6L+95Yqg77yI57WQ5p6c55So77yJCgogICAgLy8gZm90IOKGkiBmb3Ig44Gr5L+u5q2j77yI44GT44GT44Gv5b+F6aCI77yJCiAgICBmb3IoaW50IGk9MDsgaTw9bjsgaSsrKXsKICAgICAgICBkb3VibGUgeG4gPSAxLjA7IC8vIOKGkCDov73liqDvvIh4XmnnlKjvvIkKCiAgICAgICAgLy8geF5pIOOCkue5sOOCiui/lOOBl+ioiOeulwogICAgICAgIGZvcihpbnQgaj0wOyBqPGk7IGorKyl7CiAgICAgICAgICAgIHhuICo9IHg7CiAgICAgICAgICAgIGNvdW50ZXIrKzsgLy/kuZfnrpfjgqvjgqbjg7Pjg4gKICAgICAgICB9CgogICAgICAgIHJlc3VsdCArPSBhW2ldICogeG47CiAgICAgICAgY291bnRlcisrOyAvL+S5l+eul+OCq+OCpuODs+ODiAogICAgfQoKICAgIHJldHVybiByZXN1bHQ7IC8vIOKGkCDov73liqAKfQoKLy9Ib25lcuazleOBp+ioiOeul+OBmeOCi2hvbmVy44KS5a6M5oiQ44GZ44KL44GT44GoCmRvdWJsZSBob25lcihpbnQgbiwgZG91YmxlIGFbXSwgZG91YmxlIHgpewoKICAgIGRvdWJsZSByZXN1bHQgPSBhW25dOyAvLyDihpAg6L+95YqgCgogICAgZm9yKGludCBpPW4tMTsgaT49MDsgaS0tKXsKICAgICAgICByZXN1bHQgPSByZXN1bHQgKiB4ICsgYVtpXTsKICAgICAgICBjb3VudGVyKys7IC8v5LmX566X44Kr44Km44Oz44OICiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsgLy8g4oaQIOi/veWKoAp9CgppbnQgbWFpbigpewogICAgaW50IG49NDA7CiAgICBkb3VibGUgYVsxMDBdLCB4PTAuOSwgcHg7CiAgICBmb3IoaW50IGk9MDsgaTw9bjsgaSsrKXsKICAgICAgICBhW2ldPTEuMCooaSsxKTsKICAgIH0KICAgIGNvdW50ZXI9MDsKICAgIHB4ID0gcG9seShuLCBhLCB4KTsKICAgIHByaW50ZigicG9seTogIHB4PSVmLCBuPSVkLCBjb3VudD0lZFxuIiwgcHgsIG4sIGNvdW50ZXIpOwogICAgY291bnRlcj0wOwogICAgcHg9aG9uZXIobiwgYSwgeCk7CiAgICBwcmludGYoImhvbmVyOiBweD0lZiwgbj0lZCwgY291bnQ9JWRcbiIsIHB4LCBuLCBjb3VudGVyKTsKICAgIHJldHVybiAwOwp9