fork download
  1. #include <stdio.h>
  2.  
  3. #include <complex.h>
  4. #define M y*=1.5-n*y*y/2
  5. i;_Complex float f(float m){float y,n;n=m>0?m:-m;y=n;i=0x5f3759df-*(int*)&y/2;y=*(float*)&i;M;M;M;return m>0?y*n:y*n*I;}
  6.  
  7.  
  8. int main (int argc, char **argv) {
  9. int i;
  10. _Complex float result;
  11. float testcases[] = { 0, 4, 7, 5.0625, -15, -9 };
  12.  
  13. for (i = 0; i < sizeof(testcases) / sizeof(testcases[0]); i++) {
  14. result = f(testcases[i]);
  15. printf("%f + %fi\n", creal(result), cimag(result));
  16. }
  17.  
  18. return 0;
  19. }
  20.  
Success #stdin #stdout 0s 2156KB
stdin
Standard input is empty
stdout
0.000000 + 0.000000i
2.000000 + 0.000000i
2.645751 + 0.000000i
2.250000 + 0.000000i
0.000000 + 3.872983i
0.000000 + 3.000000i