Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26654
  • 博文数量: 6
  • 博客积分: 135
  • 博客等级: 入伍新兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-09 15:51
文章存档

2011年(6)

我的朋友

分类: LINUX

2011-10-07 15:15:13

题目如下:
               对多项式求值a0+a1*x+a2*x^2+...+an*x^n。
               代码如下:
                              double poly(double a[], double x, int degree)
                              {
                                      long int i;
                                      double result = a[0];
                                      double xpwr = x;
                                      for ( i = 1; i <= degree; i++)
                                      {
                                              result += a[i] * xpwr;
                                              xpwr = x * xpwr;
                                       }
                                        return result;
                               }                                    
               该题第二问说到,在参考机Core i7上,测量这个函数的CPE等于5.00。
               参考答案是这样解释的:限制性能的计算是反复地计算表达式xpwr = x * xpwr。这需要一个双精度浮点数乘法(5个时钟周期),并且直到前一次迭代完成,下一次迭代的计算才能开始。两次连续的迭代之间,对result的更新只需要一个浮点加法(3个时钟周期)
                    我的疑问是:为什么对result的更新只需要一个浮点加法,而不是需要一个浮点加法和一个浮点乘法a[i]*xpwr?
阅读(5130) | 评论(1) | 转发(1) |
0

上一篇:过程调用和缓冲区溢出

下一篇:没有了

给主人留下些什么吧!~~

mariolw2012-08-14 19:49:28

哥们儿,这题我也很费解,你现在搞明白了么?