Функцию синуса на С, но ответ выдает гараздо больше нужного
Пишу функцию синуса на С, но ответ выдает гараздо больше нужного (и соответственно больше 1), не могу понять в чем ошибка
#include<stdio.h>
#include<stdlib.h> // для модуля
float sinus(float radians, float epsilon);
int main() {
int a = 500;
float b;
b = sinus(a, 0.001);
printf("%f", b);
if(b > 1 || b < -1)
printf("\nFunction works incorrect!\n");
else
printf("\nFunction works correct!\n");
return 0;
}
float sinus(float radians, float epsilon){
radians = radians / 180 * 3.14; // перевод из радианов в градусы
int k = 0; // счетчик итераций
float s = 0; // сумма всех чисел в Тейлоровом ряде
while(abs(radians) > epsilon){
s = s + radians;
radians = radians * (-(radians * radians)/2*k)/(2*k * (k+1));
k++;
}
return s;
}
Источник: Stack Overflow на русском