Fortran Coder

查看: 11293|回复: 10
打印 上一主题 下一主题

[编译器] Powerstation上遇到的浮点数错误

[复制链接]

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2016-3-17 18:48:40 | 显示全部楼层
1.请放弃 CVF 和 Powerstation 这些古老的编译器
2. 你遇到的首要问题是, ** 乘方遇到了负数。
当指数是浮点数时,负数开方容易出错。
比如第699行,应改为
t = 1.0+AL2*P(I)
EA= sign(1.0,t) * (abs(t))**Z0
关于这个问题,更详细的描述请看这里
http://bbs.fcode.cn/thread-770-1-1.html
3. 我更改这个问题以后,出现了其他的浮点数异常。我没有继续为您更改
但是我建议您学会自己debug调试,视频教程在这里: http://v.fcode.cn/video-debugger.html

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2016-3-20 07:57:35 | 显示全部楼层
除数为 0
exp 指数太大,超出浮点数范围
90度求tan
......
......
变量未初始化参与计算

等等,情况非常多,我强烈建议你学习 debug调试。

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2016-3-24 09:40:55 | 显示全部楼层
1. 你的截图很显然还是 Poswerstation 的,而不是VS的显示
2. 你的代码问题可能较多。在你那里调试,是 705 行的问题,但在我(IVFXE2016)这里,705行没有遇到问题。
3. exp(120.1)的结果是 e57 次方,超过了单精度的上限 (e38),你可能需要双精度来计算
4. AITA(I,J)=EXP(EC) 为什么可以写成 EC=LOG(AITA(I,J)) ????数学表达式编程表达式你还没有弄清楚。

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2016-3-24 11:18:08 | 显示全部楼层
1.可以改默认kind值。但是从你的截图来看,你改了依然超界
2.请直接卸载Powerstation,没有保留的必要。截图也没必要
3.VS也可以设置颜色为浅色,不一定非得是黑色的
4. debug 是一个好的工具,要学会使用。但是它只能找到问题,而不能给你解决问题的方法。
5. 要解决问题,必须从算法,数据稳定性等多方面入手。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-20 00:09

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表