gentrigtables.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /* Generate trigonometric function tables. */
  2. /*
  3. * GRUB -- GRand Unified Bootloader
  4. * Copyright (C) 2008, 2009 Free Software Foundation, Inc.
  5. *
  6. * GRUB is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * GRUB is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. #define _GNU_SOURCE 1
  20. #include <grub/trig.h>
  21. #include <math.h>
  22. #include <stdio.h>
  23. int
  24. main (int argc __attribute__ ((unused)),
  25. char **argv __attribute__ ((unused)))
  26. {
  27. int i;
  28. printf ("#include <grub/types.h>\n");
  29. printf ("#include <grub/dl.h>\n");
  30. printf ("\n");
  31. printf ("/* Under copyright legislature such automated output isn't\n");
  32. printf ("covered by any copyright. Hence it's public domain. Public\n");
  33. printf ("domain works can be dual-licenced with any license. */\n");
  34. printf ("GRUB_MOD_LICENSE (\"GPLv3+\");");
  35. printf ("GRUB_MOD_DUAL_LICENSE (\"Public Domain\");");
  36. #define TAB(op) \
  37. printf ("const grub_int16_t grub_trig_" #op "tab[] =\n{"); \
  38. for (i = 0; i < GRUB_TRIG_ANGLE_MAX; i++) \
  39. { \
  40. double x = i * 2 * M_PI / GRUB_TRIG_ANGLE_MAX; \
  41. if (i % 10 == 0) \
  42. printf ("\n "); \
  43. printf ("%d,", (int) (round (op (x) * GRUB_TRIG_FRACTION_SCALE))); \
  44. } \
  45. printf ("\n};\n")
  46. TAB(sin);
  47. TAB(cos);
  48. return 0;
  49. }