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.