24小时热门版块排行榜    

查看: 584  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 面上没中,邀请各位路过的虫友分析一下分数 +3 jackleilei 2026-09-03 3/150 2026-09-03 19:13 by god_tian
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 YLHlRHNwYkce 2026-09-02 7/350 2026-09-03 18:50 by jyNB2vrbdUpR
[硕博家园] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 YLHlRHNwYkce 2026-09-02 8/400 2026-09-03 18:50 by jyNB2vrbdUpR
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 YLHlRHNwYkce 2026-09-02 11/550 2026-09-03 18:42 by jyNB2vrbdUpR
[硕博家园] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 rFEsUBKXRll0 2026-09-02 6/300 2026-09-03 16:49 by T0rGB46095mJ
[找工作] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 ero8OE6tv9cu 2026-09-02 8/400 2026-09-03 16:38 by T0rGB46095mJ
[考研] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 ero8OE6tv9cu 2026-09-02 10/500 2026-09-03 16:27 by T0rGB46095mJ
[教师之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 ero8OE6tv9cu 2026-09-02 8/400 2026-09-03 14:48 by T0rGB46095mJ
[基金申请] 国社科又开始会评了,不知道这次命运如何 +10 雨打竹帘 2026-08-30 14/700 2026-09-03 13:17 by qsd10086
[教师之家] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 YLHlRHNwYkce 2026-09-02 8/400 2026-09-03 12:03 by T0rGB46095mJ
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +8 gdd2018 2026-08-28 13/650 2026-09-03 06:22 by 羽毛枫f
[基金申请] 科研人应该花精力去思考如何解决问题,而不是去凝练问题 +7 瞬息宇宙 2026-09-01 14/700 2026-09-02 17:33 by ma0526
[基金申请] 学科评审组评审是指会评吗? +5 瞬息宇宙 2026-08-31 5/250 2026-09-02 10:13 by 雨冰共舞
[基金申请] 面上函评意见出来了,像什么等级? 20+4 Tsingking1 2026-08-27 17/850 2026-09-01 19:51 by 超级无敌华子
[基金申请] 面上意见出来了 +12 黄鸟于飞Chao 2026-08-29 23/1150 2026-08-31 18:57 by 黄鸟于飞Chao
[基金申请] 中青基了要发朋友圈吗? +7 349506619 2026-08-28 7/350 2026-08-31 13:39 by 冼亮淀粉酶
[基金申请] 29号明天会评吗 +4 笨笨唐 2026-08-28 4/200 2026-08-31 09:30 by huixian257
[基金申请] 为什么到现在没收到通知? +5 tannykie 2026-08-29 5/250 2026-08-30 21:05 by purplejack
[考博] 找导师 +6 yuanjiabao 2026-08-29 7/350 2026-08-30 14:40 by 生科新手
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 11/550 2026-08-30 07:57 by gouxfjh
信息提示
请填处理意见