c中双打的问题

Pau*_*rés 2 c double trigonometry

我在课堂上编写了这段代码来练习递归。它是一个sin使用cossincos定义的计算器。此代码从库中打印正确的sinand示例,以及从计算器中打印 0 到 360 度之间的sincos示例。我认为,有一个错误,一些结果给了我。有人知道问题出在哪里吗?cos<math.h>#IND0

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define M_PI 3.14159265358979323846
#define TOL 0.001

double my_sin(double num);
double my_cos(double num);

double a_radians(double num)
{
    return num * M_PI / 180;
}

double my_sin(double num)
{
    if (fabs(num) < TOL) {
        num = 1.0;
        return num;
    } else {
        num = 2.0 * (my_sin(num / 2.0)) * (my_cos(num / 2.0));
        return num;
    }
}

double my_cos(double num)
{
    if (fabs(num) < TOL) {
        num = 1.0;
        return num;
    } else {
        num = ((my_cos(num / 2.0)) * (my_cos(num / 2.0))) -
              ((my_sin(num / 2.0)) * (my_sin(num / 2.0)));
        return num;
    }
}

int main()
{
    int graus;
    double radians, cos_r, sin_r;

    graus = 0;

    while (graus <= 360) {
        printf("%d graus", graus);

        radians = a_radians(graus);
        printf("\n%f radiants", radians);

        sin_r = radians;
        sin_r = my_sin(sin_r);
        cos_r = radians;
        cos_r = my_cos(cos_r);

        printf("\nEl sin es %f", sin(radians));
        printf("\nEl sin de mysin es %.5f", sin_r);
        printf("\nEl cos es %f", cos(radians));
        printf("\nEl cos de mycos es %.5f\n\n", cos_r);

        graus = graus + 45;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我尝试做一个sin计算器cos,但不起作用。