24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 497  |  回复: 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的回帖

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的回帖
查看全部 5 个回答

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

金虫 (正式写手)


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的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿北京化工大学材料与化工(085600)296求调剂 +12 稻妻小编 2026-03-26 12/600 2026-03-29 01:04 by 我是小康
[考研] 316求调剂 +7 江辞666 2026-03-26 7/350 2026-03-28 21:28 by sanrepian
[考研] 085701求调剂初试286分 +4 secret0328 2026-03-28 4/200 2026-03-28 21:09 by 15366876211
[考研] 生物学学硕,一志愿湖南大学,初试成绩338 +6 YYYYYNNNNN 2026-03-26 7/350 2026-03-28 20:52 by 唐沐儿
[考研] 求调剂一志愿海大,0703化学学硕304分,有大创项目,四级已过 +7 幸运哩哩 2026-03-22 11/550 2026-03-28 20:27 by 唐沐儿
[考研] 0703化学求调剂 +9 奶油草莓. 2026-03-22 10/500 2026-03-28 13:30 by 唐沐儿
[考研] 086502化学工程342求调剂 +6 阿姨复古不过 2026-03-27 6/300 2026-03-28 07:06 by wangy0907
[考研] 275求调剂 +10 jjjjjjjjjjl 2026-03-27 10/500 2026-03-27 23:47 by barnett0632
[考研] 一志愿北京化工大学 070300 学硕 336分 求调剂 +9 vv迷 2026-03-22 9/450 2026-03-27 15:59 by 不吃魚的貓
[考研] 求调剂,一志愿 南京航空航天大学大学 ,080500材料科学与工程学硕 +4 @taotao 2026-03-26 5/250 2026-03-27 08:10 by hypershenger
[考研] 351求调剂 +4 麦克阿磊 2026-03-24 4/200 2026-03-27 00:32 by wxiongid
[考研] 294分080500材料科学与工程求调剂 +4 柳溪边 2026-03-26 4/200 2026-03-26 21:14 by XPU李庆
[考研] 材料考研求调剂 +3 Dendel 2026-03-23 6/300 2026-03-26 17:51 by fmesaito
[考研] 289求调剂 +17 硕星赴 2026-03-23 17/850 2026-03-26 16:18 by 不吃魚的貓
[考研] 281求调剂 +6 Koxui 2026-03-24 7/350 2026-03-26 15:37 by 无际的草原
[考研] 环境专硕324分求调剂推荐 +5 轩小宁—— 2026-03-26 5/250 2026-03-26 12:05 by i_cooler
[考研] 化学调剂一志愿上海交通大学336分-本科上海211 +4 小鱼爱有机 2026-03-25 4/200 2026-03-26 10:19 by aa331100
[考研] 296求调剂 +4 汪!?! 2026-03-25 7/350 2026-03-25 16:41 by 汪!?!
[考研] 一志愿武理085500机械专业总分300求调剂 +3 an10101 2026-03-24 7/350 2026-03-25 00:00 by 山鬼0-
[考研] 材料专硕找调剂 +5 哈哈哈吼吼吼哈 2026-03-23 5/250 2026-03-24 19:07 by 了了了了。。
信息提示
请填处理意见