fork(1) download
  1. #include <cstdio>
  2. #include <cmath>
  3.  
  4. void f(
  5. float phi,
  6. float omega,
  7. float kappa,
  8. unsigned int n)
  9. {
  10. float
  11. c=std::cos(phi),
  12. s=std::sin(phi),
  13. a=std::cos(omega+0.5f*kappa),
  14. b=std::sin(omega+0.5f*kappa),
  15. u=std::cos(kappa),
  16. v=std::sin(kappa);
  17. float c0,s0,a0,b0,u0,v0;
  18.  
  19. float d=0.0f;
  20.  
  21. for(unsigned int i=0;i<n;++i)
  22. {
  23. c0=c;
  24. s0=s;
  25. a0=a;
  26. b0=b;
  27. c=a0*c0-b0*s0;
  28. s=a0*s0+b0*c0;
  29. a=u*a0-v*b0;
  30. b=v*a0+u*b0;
  31. float e=std::fabs(std::cos(phi+omega*float(i)+0.5f*kappa*float(i*i))-c0);
  32. if(d<e) d=e;
  33. }
  34. printf("%f\n",d);
  35. }
  36.  
  37. int main()
  38. {
  39. float dt=1.0f/44100.0f;
  40. f(1.0f,1000.0f*dt,1000.0f*dt*dt,10000);
  41. f(0.0f,1000.0f*dt,1000.0f*dt*dt,10000);
  42. f(-2.0f,100.0f*dt,1000.0f*dt*dt,10000);
  43. f(-5.0f,10000.0f*dt,10.0f*dt*dt,10000);
  44. f(-5.0f,100.0f*dt,100.0f*dt*dt,10000);
  45. f(-5.0f,10.0f*dt,1000.0f*dt*dt,10000);
  46. f(-5.0f,1000.0f*dt,1.0f*dt*dt,10000);
  47. f(1.0f,440.0f*dt,0.0f*dt*dt,10000);
  48. return 0;
  49. }
Success #stdin #stdout 0.01s 3140KB
stdin
Standard input is empty
stdout
0.853698
0.862326
0.099463
0.255586
0.005848
0.048894
0.025644
0.000033