im not to sure what is going on here, when i compile my program and run it, the thing works fine for values below 2 and above -2. beyond those limits my program seems to go into an infinite loop.......
Code:
/* fucntion that computes the cosine of angle X */
#include "trig.h"
#include "util.h"
#include <stdio.h>
/* Function that computes the value of cosine for a given float value passed in. */
double cos(float angle_x)
{
/* Variable decleration */
double sign = -1;
int n = 2;
double old, result = 1;
do
{
/* This saves the current with the old results */
old = result;
/* computes the cosine using its taylor series */
result = result + sign* ((double)pos_power(angle_x, n)) / (double)factorial(n);
/* switches '+' to '-' */
sign *= -1;
/* counting for increments of power in pos_power and factorial value in factorial() */
n = n + 2;
}
/* while loop runs as long as the error is smaller then absolute value of variable old & results (old-results) */
while(!close_enough(old, result));
/* returns the last result of the while do function */
return result;
}
ill include my driver and all files needed to run the program and hopefully someone can explain to me whats happening.