From c56472ceb5d46af1db39b1ac2cd822baffa3ec30 Mon Sep 17 00:00:00 2001 From: Benjamin Chausse Date: Tue, 27 Sep 2022 16:41:07 -0400 Subject: Semi functional Sine function --- sine.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 sine.c diff --git a/sine.c b/sine.c new file mode 100644 index 0000000..871acc0 --- /dev/null +++ b/sine.c @@ -0,0 +1,50 @@ +/* sine.h + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice + * you can do whatever you want with this stuff. If we meet some day, and you + * think this stuff is worth it, you can buy me a beer in return. + * Benjamin Chausse + * ---------------------------------------------------------------------------- + */ + +#include +#include "format.h" +#include "testData.h" + +const int DEBUG = TRUE; + +float sin(float input, int precision){ + float ttl = input; + int denom = 1; + float num; + for (int i=3;i<(2*precision)+2;i+=2) { + num = mpow(input,i); + denom *= i*(i-1); + ttl += ((i-1)/2 %2 == 1) ? -1*num/denom : num/denom; + } + return ttl; +} + +int main(){ + const int precision = 16; + const float threshold = 1e-4; + + for (int i=0; ithreshold ){ + printf("ERROR: \n" + "Deviation between calculated value and expected value\n" + "surpasses threshold of %f for number %f\n" + "Expected: %f but got: %f\n", + threshold, + piValues[i][0], + piValues[i][1], + sin(piValues[i][0],precision)); + return 1; + } else { + printf("%f IS ALL GOOD!\n",piValues[i][0]); + } + } + + return 0; +} -- cgit v1.2.3