double polyh2(double a[],double x,int degree)
{
long int i;
double x2=x*x;
double x3 =x2*x;
double result1,result2,result3 = a[degree];
for(i=degree-1;i>=9;i-=9)
{
result1 = result3*x3+ (a[i-2] + x*a[i-1] +x2*a[i]);
result2 = result1*x3+ (a[i-5] + x*a[i-4] +x2*a[i-3]);
result3 = result2*x3+ (a[i-8] + x*a[i-7] +x2*a[i-6]);
}
for(;i>=0;i--)
result3=a[i]+x*result3;
return result3;
}
{
long int i;
double x2=x*x;
double x3 =x2*x;
double result1,result2,result3 = a[degree];
for(i=degree-1;i>=9;i-=9)
{
result1 = result3*x3+ (a[i-2] + x*a[i-1] +x2*a[i]);
result2 = result1*x3+ (a[i-5] + x*a[i-4] +x2*a[i-3]);
result3 = result2*x3+ (a[i-8] + x*a[i-7] +x2*a[i-6]);
}
for(;i>=0;i--)
result3=a[i]+x*result3;
return result3;
}