gxqcn 发表于 2012-9-24 13:14:39

浮点的两倍,如何写运行高效?

近期看一份代码,比对其历史,发现一个有趣的现象,现把问题抛出来,供大家讨论。
已知:double x, y;
// ...现要实现 y=2x 功能,以下写法哪种高效,为什么?

[*]y = x + x;[*]y = 2 * x;[*]y = 2.0 * x;[*] 更好的(留待你补充。。。)

mathtime 发表于 2012-9-24 17:16:30

2: y=2*x的效率应该最低,因为数2要转换为浮动点数。1或3哪个高效不是很明确,猜3最好。

mathe 发表于 2012-9-24 20:31:21

还可以试一试比特位操作,将最高12位加1即可

mathe 发表于 2012-9-24 20:33:03

也就是
y=x;
long long *px=(long long *)&y;
*px+=(1LL<<52);
页: [1]
查看完整版本: 浮点的两倍,如何写运行高效?