This is my task:
Write a C function to evaluate the series // cos(x) = x-(x2 /2!)+(x4 /4!)-(x6 /6!)+... etc. Variable realNuber use radians instead of degrees
I lose precision, but I don't understand where. The answer with realNumber = 60 must be 0.500, but I've 0.501. Please help.
#include "stdio.h"
#include "inttypes.h"
double power(float N, uint32_t P){
    double buffer = 1;
    for (int i = 0; i < P; ++i) {
        buffer *= N;
    }
    return buffer;
}
float factorial(float number){
    float result = number;
    if (number == 0) {
        return 0;
    }
    for (int i = 0; i < number - 1; ++i) {
        result *= i + 1;
    }
    return result;
}
float cos(float x){
    float result = x * (3.14159265359 / 180.);
    float polar = -1;
    for (int i = 2; i < 10; i += 2) {
        result += power(result, i) / factorial(i) * polar;
        polar *= -1;
    }
    return result;
}
int main(void){
    float realNumber = 0;
    float result = 0;
    scanf("%f", &realNumber);
    result = cos(realNumber);
    printf("%.13f", result);
}
I tried making changes in function cos(); maybe the problem is in a different place?
 
     
    
 
     
    