void aitkenneville2 (unsigned int n, unsigned int m, double *xi, double *yi, double *xo, double *yo, double *w) { /* xi[n], yi[n], xo[m], yo[m], w[((n + 1) * n >> 1) + 1] */ unsigned int i, ii, j, k; double yok; for (i = 0; i < n; i++) w[i] = yi[i]; for (i = 1; i < n; i++) { ii = (n + n - i) * (i - 1) >> 1; for (j = i; j < n; j++) w[ii + j + n - i] = (w[ii + j] - w[ii + j - 1]) / (xi[j] - xi[j - i]); } for (i = 0; i < n; i++) w[n - (i + 1)] = w[(n + n + 1 - i) * i >> 1]; for (i = 0; i < n; i++) w[n + n - (i + 1)] = xi[i]; if (n > 0) for (k = 0; k < m; k++) { yok = w[0]; for (i = 1; i < n; i++) yok = yok * (xo[k] - w[n + i]) + w[i]; yo[k] = yok; } return; }