summaryrefslogtreecommitdiff
path: root/gastro/src/trig.c
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-07-09 23:51:55 -0400
committerLLLL Colonq <llll@colonq>2026-07-09 23:51:55 -0400
commit2bdcaf319b1d74ffbaccf08a58336f804761beab (patch)
treec21de6df74ec79b5574ad2b89fcc275d10847802 /gastro/src/trig.c
Refactor into monorepo
Diffstat (limited to 'gastro/src/trig.c')
-rw-r--r--gastro/src/trig.c268
1 files changed, 268 insertions, 0 deletions
diff --git a/gastro/src/trig.c b/gastro/src/trig.c
new file mode 100644
index 0000000..7f838c1
--- /dev/null
+++ b/gastro/src/trig.c
@@ -0,0 +1,268 @@
+#include <lcq/gastro/trig.h>
+
+static gastro_fix SIN_TABLE[256] = {
+ 0x0,
+ 0x648,
+ 0xc8f,
+ 0x12d5,
+ 0x1917,
+ 0x1f56,
+ 0x2590,
+ 0x2bc4,
+ 0x31f1,
+ 0x3817,
+ 0x3e33,
+ 0x4447,
+ 0x4a50,
+ 0x504d,
+ 0x563e,
+ 0x5c22,
+ 0x61f7,
+ 0x67bd,
+ 0x6d74,
+ 0x7319,
+ 0x78ad,
+ 0x7e2e,
+ 0x839c,
+ 0x88f5,
+ 0x8e39,
+ 0x9368,
+ 0x987f,
+ 0x9d7f,
+ 0xa267,
+ 0xa736,
+ 0xabeb,
+ 0xb085,
+ 0xb504,
+ 0xb968,
+ 0xbdae,
+ 0xc1d8,
+ 0xc5e4,
+ 0xc9d1,
+ 0xcd9f,
+ 0xd14d,
+ 0xd4db,
+ 0xd848,
+ 0xdb94,
+ 0xdebe,
+ 0xe1c5,
+ 0xe4aa,
+ 0xe76b,
+ 0xea09,
+ 0xec83,
+ 0xeed8,
+ 0xf109,
+ 0xf314,
+ 0xf4fa,
+ 0xf6ba,
+ 0xf853,
+ 0xf9c7,
+ 0xfb14,
+ 0xfc3b,
+ 0xfd3a,
+ 0xfe13,
+ 0xfec4,
+ 0xff4e,
+ 0xffb1,
+ 0xffec,
+ 0xffff,
+ 0xffec,
+ 0xffb1,
+ 0xff4e,
+ 0xfec4,
+ 0xfe13,
+ 0xfd3a,
+ 0xfc3b,
+ 0xfb14,
+ 0xf9c7,
+ 0xf853,
+ 0xf6ba,
+ 0xf4fa,
+ 0xf314,
+ 0xf109,
+ 0xeed8,
+ 0xec83,
+ 0xea09,
+ 0xe76b,
+ 0xe4aa,
+ 0xe1c5,
+ 0xdebe,
+ 0xdb94,
+ 0xd848,
+ 0xd4db,
+ 0xd14d,
+ 0xcd9f,
+ 0xc9d1,
+ 0xc5e4,
+ 0xc1d8,
+ 0xbdae,
+ 0xb968,
+ 0xb504,
+ 0xb085,
+ 0xabeb,
+ 0xa736,
+ 0xa267,
+ 0x9d7f,
+ 0x987f,
+ 0x9368,
+ 0x8e39,
+ 0x88f5,
+ 0x839c,
+ 0x7e2e,
+ 0x78ad,
+ 0x7319,
+ 0x6d74,
+ 0x67bd,
+ 0x61f7,
+ 0x5c22,
+ 0x563e,
+ 0x504d,
+ 0x4a50,
+ 0x4447,
+ 0x3e33,
+ 0x3817,
+ 0x31f1,
+ 0x2bc4,
+ 0x2590,
+ 0x1f56,
+ 0x1917,
+ 0x12d5,
+ 0xc8f,
+ 0x648,
+ 0x0,
+ (i64) 0xfffffffffffff9b8,
+ (i64) 0xfffffffffffff371,
+ (i64) 0xffffffffffffed2b,
+ (i64) 0xffffffffffffe6e9,
+ (i64) 0xffffffffffffe0aa,
+ (i64) 0xffffffffffffda70,
+ (i64) 0xffffffffffffd43c,
+ (i64) 0xffffffffffffce0f,
+ (i64) 0xffffffffffffc7e9,
+ (i64) 0xffffffffffffc1cd,
+ (i64) 0xffffffffffffbbb9,
+ (i64) 0xffffffffffffb5b0,
+ (i64) 0xffffffffffffafb3,
+ (i64) 0xffffffffffffa9c2,
+ (i64) 0xffffffffffffa3de,
+ (i64) 0xffffffffffff9e09,
+ (i64) 0xffffffffffff9843,
+ (i64) 0xffffffffffff928c,
+ (i64) 0xffffffffffff8ce7,
+ (i64) 0xffffffffffff8753,
+ (i64) 0xffffffffffff81d2,
+ (i64) 0xffffffffffff7c64,
+ (i64) 0xffffffffffff770b,
+ (i64) 0xffffffffffff71c7,
+ (i64) 0xffffffffffff6c98,
+ (i64) 0xffffffffffff6781,
+ (i64) 0xffffffffffff6281,
+ (i64) 0xffffffffffff5d99,
+ (i64) 0xffffffffffff58ca,
+ (i64) 0xffffffffffff5415,
+ (i64) 0xffffffffffff4f7b,
+ (i64) 0xffffffffffff4afc,
+ (i64) 0xffffffffffff4698,
+ (i64) 0xffffffffffff4252,
+ (i64) 0xffffffffffff3e28,
+ (i64) 0xffffffffffff3a1c,
+ (i64) 0xffffffffffff362f,
+ (i64) 0xffffffffffff3261,
+ (i64) 0xffffffffffff2eb3,
+ (i64) 0xffffffffffff2b25,
+ (i64) 0xffffffffffff27b8,
+ (i64) 0xffffffffffff246c,
+ (i64) 0xffffffffffff2142,
+ (i64) 0xffffffffffff1e3b,
+ (i64) 0xffffffffffff1b56,
+ (i64) 0xffffffffffff1895,
+ (i64) 0xffffffffffff15f7,
+ (i64) 0xffffffffffff137d,
+ (i64) 0xffffffffffff1128,
+ (i64) 0xffffffffffff0ef7,
+ (i64) 0xffffffffffff0cec,
+ (i64) 0xffffffffffff0b06,
+ (i64) 0xffffffffffff0946,
+ (i64) 0xffffffffffff07ad,
+ (i64) 0xffffffffffff0639,
+ (i64) 0xffffffffffff04ec,
+ (i64) 0xffffffffffff03c5,
+ (i64) 0xffffffffffff02c6,
+ (i64) 0xffffffffffff01ed,
+ (i64) 0xffffffffffff013c,
+ (i64) 0xffffffffffff00b2,
+ (i64) 0xffffffffffff004f,
+ (i64) 0xffffffffffff0014,
+ (i64) 0xffffffffffff0001,
+ (i64) 0xffffffffffff0014,
+ (i64) 0xffffffffffff004f,
+ (i64) 0xffffffffffff00b2,
+ (i64) 0xffffffffffff013c,
+ (i64) 0xffffffffffff01ed,
+ (i64) 0xffffffffffff02c6,
+ (i64) 0xffffffffffff03c5,
+ (i64) 0xffffffffffff04ec,
+ (i64) 0xffffffffffff0639,
+ (i64) 0xffffffffffff07ad,
+ (i64) 0xffffffffffff0946,
+ (i64) 0xffffffffffff0b06,
+ (i64) 0xffffffffffff0cec,
+ (i64) 0xffffffffffff0ef7,
+ (i64) 0xffffffffffff1128,
+ (i64) 0xffffffffffff137d,
+ (i64) 0xffffffffffff15f7,
+ (i64) 0xffffffffffff1895,
+ (i64) 0xffffffffffff1b56,
+ (i64) 0xffffffffffff1e3b,
+ (i64) 0xffffffffffff2142,
+ (i64) 0xffffffffffff246c,
+ (i64) 0xffffffffffff27b8,
+ (i64) 0xffffffffffff2b25,
+ (i64) 0xffffffffffff2eb3,
+ (i64) 0xffffffffffff3261,
+ (i64) 0xffffffffffff362f,
+ (i64) 0xffffffffffff3a1c,
+ (i64) 0xffffffffffff3e28,
+ (i64) 0xffffffffffff4252,
+ (i64) 0xffffffffffff4698,
+ (i64) 0xffffffffffff4afc,
+ (i64) 0xffffffffffff4f7b,
+ (i64) 0xffffffffffff5415,
+ (i64) 0xffffffffffff58ca,
+ (i64) 0xffffffffffff5d99,
+ (i64) 0xffffffffffff6281,
+ (i64) 0xffffffffffff6781,
+ (i64) 0xffffffffffff6c98,
+ (i64) 0xffffffffffff71c7,
+ (i64) 0xffffffffffff770b,
+ (i64) 0xffffffffffff7c64,
+ (i64) 0xffffffffffff81d2,
+ (i64) 0xffffffffffff8753,
+ (i64) 0xffffffffffff8ce7,
+ (i64) 0xffffffffffff928c,
+ (i64) 0xffffffffffff9843,
+ (i64) 0xffffffffffff9e09,
+ (i64) 0xffffffffffffa3de,
+ (i64) 0xffffffffffffa9c2,
+ (i64) 0xffffffffffffafb3,
+ (i64) 0xffffffffffffb5b0,
+ (i64) 0xffffffffffffbbb9,
+ (i64) 0xffffffffffffc1cd,
+ (i64) 0xffffffffffffc7e9,
+ (i64) 0xffffffffffffce0f,
+ (i64) 0xffffffffffffd43c,
+ (i64) 0xffffffffffffda70,
+ (i64) 0xffffffffffffe0aa,
+ (i64) 0xffffffffffffe6e9,
+ (i64) 0xffffffffffffed2b,
+ (i64) 0xfffffffffffff371,
+ (i64) 0xfffffffffffff9b8
+};
+
+gastro_fix gastro_sin(u8 turns) {
+ return SIN_TABLE[turns];
+}
+
+gastro_fix gastro_cos(u8 turns) {
+ return SIN_TABLE[(u8) (turns + 64)];
+}