main.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <inttypes.h>
  4. #include <math.h>
  5. #include <libfixmath/fixmath.h>
  6. int main(int argc, char** argv) {
  7. FILE* fp = fopen("fix16_trig_sin_lut.h", "wb");
  8. if(fp == NULL) {
  9. fprintf(stderr, "Error: Unable to open file for writing.\n");
  10. return EXIT_FAILURE;
  11. }
  12. // TODO - Store as uint16_t with a count to determine the end and return 1.
  13. fprintf(fp, "#ifndef __fix16_trig_sin_lut_h__\n");
  14. fprintf(fp, "#define __fix16_trig_sin_lut_h__\n");
  15. fprintf(fp, "\n");
  16. fix16_t fix16_sin_lut_count = (fix16_pi >> 1);
  17. fix16_t fix16_sin_lut[fix16_sin_lut_count];
  18. uintptr_t i;
  19. for(i = 0; i < fix16_sin_lut_count; i++)
  20. fix16_sin_lut[i] = fix16_from_dbl(sin(fix16_to_dbl(i)));
  21. for(i--; fix16_sin_lut[i] == fix16_one; i--, fix16_sin_lut_count--);
  22. fprintf(fp, "static const uint32_t _fix16_sin_lut_count = %"PRIi32";\n", fix16_sin_lut_count);
  23. fprintf(fp, "static uint16_t _fix16_sin_lut[%"PRIi32"] = {", fix16_sin_lut_count);
  24. for(i = 0; i < fix16_sin_lut_count; i++) {
  25. if((i & 7) == 0)
  26. fprintf(fp, "\n\t");
  27. fprintf(fp, "%"PRIi32", ", fix16_sin_lut[i]);
  28. }
  29. fprintf(fp, "\n\t};\n");
  30. fprintf(fp, "\n");
  31. fprintf(fp, "#endif\n");
  32. fclose(fp);
  33. return EXIT_SUCCESS;
  34. }