24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 493  |  回复: 4
当前主题已经存档。

holmescn

金虫 (正式写手)

[交流] 【讨论】关于Intel CPP Compiler数学库的精度

翌日,波波版主提出Intel C++ Compiler虽然速度无敌,但是似乎存在精度误差。后来,我也在一次数值计算中体验了一把。Gcc结果为1e285量级,icc显示inf。不知道怎么回事。

今天,写了两个小程序,以检验gcc和icc数学函数库的计算精度差异。
我的系统是:Archlinux  2.6.32 Kernel
gcc:4.4.2
icc:11.1 非商业版

代码 gen.c:
CODE:
#include
#include

#define FUNC(x) exp(x)

const double begin=-8*3.1415926;
const double end=8*3.1415926;
const double step=1e-4;

int main()
{
        double num;

        for(num=begin;num         {
                printf("%20.20g %20.20g\n",num,FUNC(num));
        }

        return 0;
}

代码 compare.c
CODE:
#include
#include

#define FUNC(x) exp(x)


int main()
{
        double num=0,result=0;

        while(!feof(stdin))
        {
                scanf("%lf %lf",&num,&result);
                if(fabs((FUNC(num)-result)/FUNC(num))>1e-15
                    || fabs((FUNC(num)-result)/result)>1e-15)
                        printf("%6g %.20g %.20g %.3g %.3g\n", num, result,
                                  FUNC(num),
                                  fabs((FUNC(num)-result)/FUNC(num)),
                                  fabs((FUNC(num)-result)/result));
        }

        return 0;
}

测试命令:
CODE:
./gen | ./compare

OK.你可以用ICC编译gen.c,用gcc编译compare.c。然后测试一下。

我的结论是,icc和gcc的数学库完全满足双精度要求,不分彼此。至于溢出问题,大家发表下意见。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
jjdg(金币+1,VIP+0):辛苦了! 1-12 01:01
建议使用Fortran里的4倍精度的函数(qexp)来作参考值。
不过其实双精度后面没有必要用20位小数,你可以看看输出的后面的一截都是随机的(第一列更 有说服力)。
http://www.china-pub.com/42116#zyz
这本书开始的列子我当时用 real*16 计算过,基本上也足够了。不过双精度的计算结果是没有任何意义的。
不同的函数库里定义的精度不一样吧,只要符合IEEE 754就是合格的了。
引用回帖:
Originally posted by holmescn at 2010-1-11 16:02:
翌日,波波版主提出Intel C++ Compiler虽然速度无敌,但是似乎存在精度误差。后来,我也在一次数值计算中体验了一把。Gcc结果为1e285量级,icc显示inf。不知道怎么回事。

今天,写了两个小程序,以检验gcc和ic ...

2楼2010-01-11 23:47:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

波不动

木虫 (正式写手)

Wave No Move


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by holmescn at 2010-1-11 16:02:
翌日,波波版主提出Intel C++ Compiler虽然速度无敌,但是似乎存在精度误差。后来,我也在一次数值计算中体验了一把。Gcc结果为1e285量级,icc显示inf。不知道怎么回事。

今天,写了两个小程序,以检验gcc和ic ...

很可能是我用法问题。因为要调用别人的各种函数,所以我的程序中float型和double中的转换太混乱,以至于在gcc下没事,但在icc下就会出问题。

小误差最后也可能被放大数万倍,导致看起来像是编译器精度问题。
端好自己的碗,吃好自己的饭。
3楼2010-01-12 02:20:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

这个我知道的,根据IEEE 754 标准,Double 只保证15位有效数字。我输出20位,是为了人工验证结果。呵呵。
引用回帖:
Originally posted by tjyl at 2010-1-11 23:47:
建议使用Fortran里的4倍精度的函数(qexp)来作参考值。
不过其实双精度后面没有必要用20位小数,你可以看看输出的后面的一截都是随机的(第一列更 有说服力)。
http://www.china-pub.com/42116#zyz
...

4楼2010-01-12 10:07:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)


jjdg(金币+1,VIP+0):感谢回帖交流 1-12 18:11
这确实是个问题。我看还是用Fortran保险啊。
引用回帖:
Originally posted by 波不动 at 2010-1-12 02:20:


很可能是我用法问题。因为要调用别人的各种函数,所以我的程序中float型和double中的转换太混乱,以至于在gcc下没事,但在icc下就会出问题。

小误差最后也可能被放大数万倍,导致看起来像是编译器精度问题。

5楼2010-01-12 10:09:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 holmescn 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 食品工程专硕一志愿中海洋309求调剂 +3 小张zxy张 2026-03-26 6/300 2026-03-28 15:55 by 小张zxy张
[考研] 311求调剂 +4 冬十三 2026-03-24 4/200 2026-03-28 13:17 by 唐沐儿
[考研] 299求调剂 +7 嗯嗯嗯嗯2 2026-03-27 7/350 2026-03-28 13:09 by 唐沐儿
[考研] 材料与化工(0856)304求B区调剂 +8 邱gl 2026-03-27 8/400 2026-03-28 12:42 by 唐沐儿
[考研] 一志愿南京航空航天大学材料学硕求调剂 +3 @taotao 2026-03-28 3/150 2026-03-28 10:26 by JourneyLucky
[考研] 一志愿 西北大学 总分282 英语一62 求调剂 +7 18419759900 2026-03-25 8/400 2026-03-27 16:38 by 18419759900
[考研] 07化学280分求调剂 +10 722865 2026-03-23 10/500 2026-03-27 15:51 by Plutoqq
[考研] 333求调剂 +6 wfh030413@ 2026-03-23 6/300 2026-03-26 22:45 by 学员8dgXkO
[考研] 总分322求生物学/生化与分子/生物信息学相关调剂 +5 星沉uu 2026-03-26 6/300 2026-03-26 19:02 by macy2011
[考研] 一志愿211 初试270分 求调剂 +6 谷雨上岸 2026-03-23 7/350 2026-03-26 18:55 by 不吃魚的貓
[考研] 352求调剂 +4 大米饭! 2026-03-22 4/200 2026-03-26 16:40 by 不吃魚的貓
[考研] 334分 一志愿武理 材料求调剂 +4 李李不服输 2026-03-26 4/200 2026-03-26 16:00 by 不吃魚的貓
[考研] 281求调剂 +6 Koxui 2026-03-24 7/350 2026-03-26 15:37 by 无际的草原
[考研] 各位老师您好:本人初试372分 +5 jj涌77 2026-03-25 6/300 2026-03-25 14:15 by mapenggao
[考研] 289材料与化工(085600)B区求调剂 +4 这么名字咋样 2026-03-22 5/250 2026-03-25 08:20 by mx.yue
[考研] 300求调剂,材料科学英一数二 +5 leaflight 2026-03-24 5/250 2026-03-24 16:25 by laoshidan
[考研] 307求调剂 +3 余意卿 2026-03-21 6/300 2026-03-24 15:03 by 余意卿
[考研] 一志愿山东大学药学学硕求调剂 +3 开开心心没烦恼 2026-03-23 4/200 2026-03-24 00:06 by 开开心心没烦恼
[考研] 335求调剂 +4 yuyu宇 2026-03-23 5/250 2026-03-23 23:49 by Txy@872106
[考研] 求老师收我 +3 zzh16938784 2026-03-23 3/150 2026-03-23 12:56 by ztnimte
信息提示
请填处理意见