1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#include <stdio.h>
#include <math.h>
double newt_coeffs[58][58];
int main(int argc, const char *argv[])
{
int i, j, n = 57;
int sign;
#ifdef _MSC_VER
FILE *fp;
if (argc != 2)
{
fprintf(stderr, "usage: calcnewt <filename>\n");
return 1;
}
fp = fopen(argv[1], "w");
if (fp == NULL)
{
fprintf(stderr, "cannot open file:%s\n", argv[1]);
return 2;
}
#endif
newt_coeffs[0][0] = 1;
for (i = 0; i <= n; i++)
{
newt_coeffs[i][0] = 1;
newt_coeffs[i][i] = 1;
if (i > 1)
{
newt_coeffs[i][0] = newt_coeffs[i-1][0] / i;
newt_coeffs[i][i] = newt_coeffs[i-1][0] / i;
}
for (j = 1; j < i; j++)
{
newt_coeffs[i][j] = newt_coeffs[i-1][j-1] + newt_coeffs[i-1][j];
if (i > 1)
newt_coeffs[i][j] /= i;
}
}
for (i = 0; i <= n; i++)
for (j = 0, sign = pow(-1, i); j <= i; j++, sign *= -1)
newt_coeffs[i][j] *= sign;
#ifdef _MSC_VER
for (i = 0; i <= n; i++)
for (j = 0; j <= n; j++)
fprintf(fp, "(float)%2.32g,\n", newt_coeffs[i][j]);
fclose(fp);
#else
for (i = 0; i <= n; i++) {
printf("{\n");
for (j = 0; j <= n; j++) {
printf("%2.32g,\n", newt_coeffs[i][j]);
}
printf("},\n");
}
#endif
return 0;
}
|