我需要一个字段中拉格朗日插值的C ++源代码。因此,给定n对(x,y),我可以在场上构造多项式。我的代码如下,但它没有输出正确的结果:
bigint* interpolate (int n, bigint *x, bigint *y,bigint N) {
int d,i;
bigint temp,temp2,temp3;
for (d = 1; d < n; d++) {
for (i = 0; i < n - d; i++) {
int j = i + d;
mul( temp,x[j], y[i]);
mpz_mul( temp2,x[i], y[i+1] );
sub( temp2,temp2,temp );
sub( temp3, x[j], x[i] ); temp3=x[j]-x[i]
invert(temp3,temp3,N);
mul(y[i] ,temp2, temp3 );// y[i]=temp2 * temp3
}
}
return y;
}
这里N是模数,n是对数,x和y是包含x_i和f(x_i)= y_i元素的大整数数组。