fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #ifndef M_PI
  5. #define M_PI (4*atan(1.0))
  6. #endif
  7.  
  8. double sinus(double x);
  9. double cosinus(double x);
  10.  
  11. double sinus(double x) {
  12. if(fabs(x) < 2.45E-5) { // (2.45E-5)²/6 ≈ 1E-10
  13. return x;
  14. } else {
  15. return 2 * sinus(x/2) * cosinus(x/2);
  16. }
  17. }
  18.  
  19. double cosinus(double x) {
  20. if(fabs(x) < 1.4E-5) { // (1.4E-5)²/2 ≈ 1E-10
  21. return 1;
  22. } else {
  23. double c = cosinus(x/2), s = sinus(x/2);
  24. return (c + s) * (c - s);
  25. }
  26. }
  27.  
  28. int main() {
  29. printf("sin(π/6) = %f\n", sinus(M_PI/6));
  30. printf("cos(π/3) = %f\n", cosinus(M_PI/3));
  31. return 0;
  32. }
  33.  
Success #stdin #stdout 0s 4376KB
stdin
Standard input is empty
stdout
sin(π/6) = 0.500001
cos(π/3) = 0.500002