#include <fstream>
#include <iostream>
using namespace std;
double polyeval(const double* polyarray, double x, int arraySize) {
if(arraySize <= 0) { return 0; }
double value = 0;
const double * p = polyarray + (arraySize-1);
for(int i=0; i<arraySize; ++i) {
value *= x;
value += *p;
p--;
}
return value;
}
int main () {
const int arraySize = 3;
const double polyarrayA[3] = {0.0,0.0,1.0}; // 0 x^2 + 0 x + 1
const double polyarrayB[3] = {0.0,1.0,0.0}; // 0 x^2 + 1 x + 0
const double polyarrayC[3] = {1.0,0.0,0.0}; // 1 x^2 + 0 x + 1
cout << "Polynomial Evaluation A f(x) = " << polyeval(polyarrayA, 0.5, arraySize)<<std::endl;
cout << "Polynomial Evaluation B f(x) = " << polyeval(polyarrayB, 0.5, arraySize)<<std::endl;
cout << "Polynomial Evaluation C f(x) = " << polyeval(polyarrayC, 0.5, arraySize)<<std::endl;
}
I2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmRvdWJsZSBwb2x5ZXZhbChjb25zdCBkb3VibGUqIHBvbHlhcnJheSwgZG91YmxlIHgsIGludCBhcnJheVNpemUpIHsKICAgIGlmKGFycmF5U2l6ZSA8PSAwKSB7IHJldHVybiAwOyB9CiAgICBkb3VibGUgdmFsdWUgPSAwOwogICAgY29uc3QgZG91YmxlICogcCA9IHBvbHlhcnJheSArIChhcnJheVNpemUtMSk7CiAgICBmb3IoaW50IGk9MDsgaTxhcnJheVNpemU7ICsraSkgewogICAgICAgIHZhbHVlICo9IHg7CiAgICAgICAgdmFsdWUgKz0gKnA7CiAgICAgICAgcC0tOwogICAgfQogICAgcmV0dXJuIHZhbHVlOwp9CgppbnQgbWFpbiAoKSB7CiAgICAKICAgIGNvbnN0IGludCBhcnJheVNpemUgPSAzOwogICAgCiAgICBjb25zdCBkb3VibGUgcG9seWFycmF5QVszXSA9IHswLjAsMC4wLDEuMH07IC8vIDAgeF4yICsgMCB4ICsgMQogICAgY29uc3QgZG91YmxlIHBvbHlhcnJheUJbM10gPSB7MC4wLDEuMCwwLjB9OyAvLyAwIHheMiArIDEgeCArIDAKICAgIGNvbnN0IGRvdWJsZSBwb2x5YXJyYXlDWzNdID0gezEuMCwwLjAsMC4wfTsgLy8gMSB4XjIgKyAwIHggKyAxCgogICAgY291dCA8PCAiUG9seW5vbWlhbCBFdmFsdWF0aW9uIEEgZih4KSA9ICIgPDwgcG9seWV2YWwocG9seWFycmF5QSwgMC41LCBhcnJheVNpemUpPDxzdGQ6OmVuZGw7CiAgICBjb3V0IDw8ICJQb2x5bm9taWFsIEV2YWx1YXRpb24gQiBmKHgpID0gIiA8PCBwb2x5ZXZhbChwb2x5YXJyYXlCLCAwLjUsIGFycmF5U2l6ZSk8PHN0ZDo6ZW5kbDsgICAgCiAgICBjb3V0IDw8ICJQb2x5bm9taWFsIEV2YWx1YXRpb24gQyBmKHgpID0gIiA8PCBwb2x5ZXZhbChwb2x5YXJyYXlDLCAwLjUsIGFycmF5U2l6ZSk8PHN0ZDo6ZW5kbDsgICAgCgoKfQo=