#include <stdio.h>

#define SPREC   11
#define APREC   11

main()
{
	FILE *fp = fdopen(creat("arch.h", 0644), "w");
	double  a,
		pi,
		pib2,
		pib4,
		atan(),
		atan2(),
		sin();
	int sz = 0;

	fprintf(fp, "#define PIB4\t%20.17f\n", pib4 = atan(1.));
	fprintf(fp, "#define PIB2\t%20.17f\n", pib2 = 2. * pib4);
	fprintf(fp, "#define PI\t%20.17f\n", pi = 4. * pib4);
	fprintf(fp, "#define TBPI\t%20.17f\n", 1. / pib2);

	fprintf(fp, "static float st[] = {\n");
	for (sz = 0; sz < (1 << SPREC); fprintf(fp, ",\n"), ++sz) {
		a = pib2 * ((double)sz / (double)((1 << SPREC) - 1));
		fprintf(fp, "\t%10.8f", sin(a));
	}
	fprintf(fp, "};\n#define ST\t%d\n", sz);
	fprintf(fp, "#define MMAS\t0%o\n", sz - 1);
	fprintf(fp, "static float at[] = {\n");
	for (sz = 0; sz < (1 << APREC); fprintf(fp, ",\n"), ++sz) {
		a = ((double)sz / (double)((1 << APREC) - 1));
		fprintf(fp, "\t%10.8f", atan(a));
	}
	fprintf(fp, "\t%10.8f", atan(1.));
	fprintf(fp, "};\n#define AT\t%d\n", sz);
}
