结果不同

Intel MKL函数,如何得到相同的计算结果?

在运行程序时,我们总希望多次运行的结果,是完全一致,甚至在不同的机器与不同的OS中,程序运行的结果每一位都完全相同。

事实上,程序往往很难保证做到这一点。 为什么呢? 我们先看一个简单的例子: 当程序使用单精度或者双精度的浮点数时, 浮点数有一定的精度的限制。 单精度的浮点数,使用23位二进制表示的尾数。 双精度浮点数,使用52位的二进制(http://en.wikipedia.org/wiki/IEEE_754-1985)。

 如果,程序中计算下面的表达式:

        double d1,d2,d3,d4,d5;
        d1 = 1e-63;
        d2 = 1;
        d3= -1;

         d4 = (d1+ d2) +d3;
        d5 = d1+ (d2 +d3);

       printf("d4=%e\n",d4);
       printf("d5=%e\n",d5);

Subscribe to 结果不同