获得π值的最快方法是什么?
我正在寻找获得π值的最快方法,这是个人的挑战。更具体地说,我使用的方式不涉及使用#define诸如的常数,也不用M_PI硬编码数字。 下面的程序测试了我所知道的各种方式。理论上,内联汇编版本是最快的选择,尽管显然不是便携式的。我将其作为与其他版本进行比较的基准。在我的测试中,使用内置功能,该4 * atan(1)版本在GCC 4.2上运行速度最快,因为它可以将折叠atan(1)为常数。使用-fno-builtin指定的atan2(0, -1)版本是最快的。 这是主要的测试程序(pitimes.c): #include <math.h> #include <stdio.h> #include <time.h> #define ITERS 10000000 #define TESTWITH(x) { \ diff = 0.0; \ time1 = clock(); \ for (i = 0; i < ITERS; ++i) \ diff += (x) - M_PI; \ time2 = clock(); \ printf("%s\t=> %e, time …