summaryrefslogtreecommitdiff
path: root/libk/src/math/trig.c
diff options
context:
space:
mode:
authorTyler Murphy <=>2023-07-16 02:54:32 -0400
committerTyler Murphy <=>2023-07-16 02:54:32 -0400
commitfbf131b5c043b27e0b1543374bb144e3e426f723 (patch)
tree07f0ab2fc107b36621d5ae95480e6a91e332548b /libk/src/math/trig.c
downloadfinix-fbf131b5c043b27e0b1543374bb144e3e426f723.tar.gz
finix-fbf131b5c043b27e0b1543374bb144e3e426f723.tar.bz2
finix-fbf131b5c043b27e0b1543374bb144e3e426f723.zip
initial
Diffstat (limited to 'libk/src/math/trig.c')
-rw-r--r--libk/src/math/trig.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/libk/src/math/trig.c b/libk/src/math/trig.c
new file mode 100644
index 0000000..f234d69
--- /dev/null
+++ b/libk/src/math/trig.c
@@ -0,0 +1,62 @@
+#include <math.h>
+
+double sin(double r) {
+ r = fmod(r + PI, PI * 2) - PI;
+ double d = r;
+ float mult = -1;
+ for (int i = 3; i < 11; i+= 2, mult = -mult) {
+ d += (pow(r, i)/fact(i)) * mult;
+ }
+ return d;
+}
+
+double cos(double r) {
+ r = fmod(r + PI, PI * 2) - PI;
+ double d = 1;
+ float mult = -1;
+ for (int i = 2; i < 10; i+= 2, mult = -mult) {
+ d += (pow(r, i)/fact(i)) * mult;
+ }
+ return d;
+}
+
+double tan(double r) {
+ return sin(r) / cos(r);
+}
+
+double csc(double r) {
+ return 1 / sin(r);
+}
+
+double sec(double r) {
+ return 1 / cos(r);
+}
+
+double cot(double r) {
+ return cos(r) / sin(r);
+}
+
+double sinh(double r) {
+ return (pow(E, r) - pow(E, -r)) / 2;
+}
+
+double cosh(double r) {
+ return (pow(E, r) + pow(E, -r)) / 2;
+}
+
+double tanh(double r) {
+ return sinh(r) / cosh(r);
+}
+
+double csch(double r) {
+ return 1 / sinh(r);
+}
+
+double sech(double r) {
+ return 1 / cosh(r);
+}
+
+double coth(double r) {
+ return cosh(r) / sinh(r);
+}
+