找回密码
 欢迎注册
查看: 8118|回复: 3

[讨论] 浮点的两倍,如何写运行高效?

[复制链接]
发表于 2012-9-24 13:14:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
近期看一份代码,比对其历史,发现一个有趣的现象,现把问题抛出来,供大家讨论。
已知:
  1. double x, y;
  2. // ...
复制代码
现要实现 $y=2x$ 功能,以下写法哪种高效,为什么?
    1. y = x + x;
    复制代码
    1. y = 2 * x;
    复制代码
    1. y = 2.0 * x;
    复制代码
  • 更好的(留待你补充。。。)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-9-24 17:16:30 | 显示全部楼层
2: y=2*x的效率应该最低,因为数2要转换为浮动点数。1或3哪个高效不是很明确,猜3最好。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-9-24 20:31:21 | 显示全部楼层
还可以试一试比特位操作,将最高12位加1即可
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-9-24 20:33:03 | 显示全部楼层
也就是
y=x;
long long *px=(long long *)&y;
*px+=(1LL<<52);
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-3-29 19:04 , Processed in 0.044941 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表