Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141122
  • 博文数量: 25
  • 博客积分: 100
  • 博客等级: 中士
  • 技术积分: 310
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-03 18:56
文章分类

全部博文(25)

文章存档

2012年(4)

2011年(21)

分类:

2012-08-14 19:50:09

题目如下:
               对多项式求值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?
阅读(1625) | 评论(0) | 转发(0) |
0

上一篇:Linux之死亡三圣器——Shell VIM Makefile

下一篇:没有了

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