#include extern double F (double); void approxc (int n, double *c) { double pi, h, ya, yb, y; int i, k; pi = 4.0 * atan (1.0); h = pi / (double) (n != 1 ? n - 1 : 1); ya = F (1.0); yb = F (-1.0); for (i = 0; i < n; i++) c[i] = ya + (i % 2 == 0 ? yb : -yb); for (k = 2; k < n; k++) { y = F (-cos (h * (double) (n - k))); for (i = 0; i < n; i++) c[i] += 2.0 * y * cos (h * (double) (i * (k - 1))); } for (i = 0; i < n; i++) { if (i == 0 || i + 1 == n) c[i] *= 0.5; c[i] /= (double) (n != 1 ? n - 1 : 1); } return; }