24小时热门版块排行榜    

Znn3bq.jpeg
查看: 519  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[博后之家] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 k37jurhrau 2026-05-16 4/200 2026-05-17 01:35 by ue3ir18jc3
[基金申请] 精华III评审感受-评审感受-评审感受 +16 ferrarichen 2026-05-11 20/1000 2026-05-17 01:10 by 南开小綦
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 ky2p12rrjj 2026-05-15 4/200 2026-05-17 00:50 by ue3ir18jc3
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +5 v9tggjlwd0 2026-05-15 5/250 2026-05-17 00:32 by xiangfeng
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +5 x0mp7owy2b 2026-05-15 5/250 2026-05-17 00:29 by xiangfeng
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 l7k6xnh0yc 2026-05-14 7/350 2026-05-16 23:17 by ue3ir18jc3
[考博] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +5 l7k6xnh0yc 2026-05-14 5/250 2026-05-16 23:05 by ue3ir18jc3
[高分子] 本人最近太闲了,谁有问题可以提,每天会统一回复 +9 一切都是空工 2026-05-12 20/1000 2026-05-16 19:52 by Equinoxhua
[有机交流] 求助2,4-二氯-5-嘧啶甲醛的合成方法 20+3 光吃不拉 2026-05-14 6/300 2026-05-16 19:46 by Equinoxhua
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 ky2p12rrjj 2026-05-15 3/150 2026-05-16 18:35 by j6b2pdz07o
[考博] 光量子物理方向 博士招生 1人(2026.09) +3 sandyworld 2026-05-15 3/150 2026-05-16 17:11 by zznnnj
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +5 cjf4bx70cj 2026-05-14 6/300 2026-05-16 16:17 by 0i5p09z61n
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 k37jurhrau 2026-05-16 3/150 2026-05-16 13:57 by vcdazktkjx
[硕博家园] 考博自荐 +3 科研狗111 2026-05-13 4/200 2026-05-16 11:45 by 科研狗111
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 l7k6xnh0yc 2026-05-14 6/300 2026-05-16 11:29 by h3oerqvkv9
[硕博家园] 申请博士 +3 呃?呃 2026-05-15 3/150 2026-05-16 11:01 by a4742549
[基金申请] 这年头没有找到涵评专家,还有中面上的可能吗 +11 dd921ww 2026-05-12 13/650 2026-05-16 09:16 by Howard28
[教师之家] 上海大学实验技术岗位非升即走 +5 嘻嘻哈哈乐呵呵 2026-05-15 5/250 2026-05-16 00:17 by caiyun
[文学芳草园] 风把牡丹吹跑了 +5 myrtle 2026-05-12 9/450 2026-05-15 15:27 by myrtle
[论文投稿] 求助大佬sci投稿哪个好中 +3 江沅188 2026-05-12 4/200 2026-05-13 14:35 by 江沅188
信息提示
请填处理意见