24小时热门版块排行榜    

查看: 1902  |  回复: 14

hfj1988

新虫 (小有名气)

[求助] fortran 程序有write和没有write两种情况计算的结果为什么会不一样?

fortran 程序在调试的时候我加了几个write(*,*)语句,发现计算的结果和不加不一样(在小数点后几位不一样),这是为什么?

在subroutine 中:intel 的fortran 编译器是否不检查数组大小?数组越界了也能算,但是就是计算错的,为什么?比如在某个子程序中:real(8) a(1000) 运行时候发现用到a(1200),却不报错。
回复此楼

» 收录本帖的淘贴专辑推荐

悠悠

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

shmech

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
hfj1988: 金币+15 2013-01-16 17:28:45
引用回帖:
10楼: Originally posted by hfj1988 at 2013-01-11 21:55:26
我是稍微修改了别人的fortran 77 的老程序,里面变量不声明也能用,感觉很不安全,我自己写的程序是用的fortran 90,是不是这两种结合起来可能错?如果我把fortran 77的老程序都转变成fortran 90 工作量很大啊,有 ...

可能Fortran77程序里没有加implicit none?在fortran 90里直接调用fortran 77没有任何问题,不需要格式转换。这也是fortran在科学计算界仍然占据主流的一个重要原因:对于40年前的老程序只要将其包装在一个subroutine或function里面就可以在最新格式的程序调用,重用性极强。

如果你编译fortran 77的时候发现有问题,如上面提到的数组越界等,可以通过指定编译器选项在编译时进行检查,ifort提供的选项是-check bounds.

fortran 77最应该避免的一个语法是goto,它会导致你在看老程序的时候产生毁灭世界的冲动。
fortran 77转换到fortran 90的工具有一些,免费的如Alan Miller网页上提供的to_f90.f90,链接
http://jblevins.org/mirror/amiller/to_f90.f90
这个程序好像也不能完全转换goto。另外nag的windows版fortran也提供转换功能,但更有限。另外有个软件记不清名字了,它有免费和商业版两种,格式转换做得非常好,不过免费版的不提供转换goto语句的功能。

写程序时尽量避免fortran 77的语法,养成良好的编程风格,不但自己赏心悦目也方便了后面维护程序的人。
12楼2013-01-15 14:52:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

hfj1988

新虫 (小有名气)

还有为什么程序无缘无故的在不该终止的地方终止,但是我没用 stop 语句
2楼2013-01-11 20:02:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wxdongmeng

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
应该是有段错误 有段错误时结果就会不稳定
3楼2013-01-11 20:31:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hfj1988

新虫 (小有名气)

引用回帖:
3楼: Originally posted by wxdongmeng at 2013-01-11 20:31:29
应该是有段错误 有段错误时结果就会不稳定

什么叫段错误?
4楼2013-01-11 20:32:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wxdongmeng

新虫 (初入文坛)

【答案】应助回帖

在C语言里一般是指针方面的错误 我不知道fortran里有没有指针 也可能你某个变量没有赋初值 系统随机给你赋了值 你可以把上面出现的结果都write出来 一点点检查 这种错误很隐蔽 找起来得花点时间
5楼2013-01-11 20:39:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hfj1988

新虫 (小有名气)

引用回帖:
5楼: Originally posted by wxdongmeng at 2013-01-11 20:39:30
在C语言里一般是指针方面的错误 我不知道fortran里有没有指针 也可能你某个变量没有赋初值 系统随机给你赋了值 你可以把上面出现的结果都write出来 一点点检查 这种错误很隐蔽 找起来得花点时间

我没有用指针啊,也不是没赋初值的原因
6楼2013-01-11 20:52:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

【答案】应助回帖

感谢参与,应助指数 +1
这种问题应该是程序某些地方写得不严格造成的,例如变量类型、数组维数等,在子程序调用时很容易出现这种错误。
7楼2013-01-11 21:04:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

王虫木

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
应该是在某些程序地方写得不严格造成的,在子程序调用时很容易出现这种错误。
我叫王虫木,我爱爬山!
8楼2013-01-11 21:47:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hfj1988

新虫 (小有名气)

引用回帖:
7楼: Originally posted by nono2009 at 2013-01-11 21:04:51
这种问题应该是程序某些地方写得不严格造成的,例如变量类型、数组维数等,在子程序调用时很容易出现这种错误。

我是稍微修改了别人的fortran 77 的老程序,里面变量不声明也能用,感觉很不安全,我自己写的程序是用的fortran 90,是不是这两种结合起来可能错?如果我把fortran 77的老程序都转变成fortran 90 工作量很大啊,有没有什么自动转换的工具,谢谢!
9楼2013-01-11 21:55:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hfj1988

新虫 (小有名气)

引用回帖:
8楼: Originally posted by 王虫木 at 2013-01-11 21:47:04
应该是在某些程序地方写得不严格造成的,在子程序调用时很容易出现这种错误。

我是稍微修改了别人的fortran 77 的老程序,里面变量不声明也能用,感觉很不安全,我自己写的程序是用的fortran 90,是不是这两种结合起来可能错?如果我把fortran 77的老程序都转变成fortran 90 工作量很大啊,有没有什么自动转换的工具,谢谢!
10楼2013-01-11 21:55:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hfj1988 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 基你太美 +13 lyfbangong 2024-06-24 15/750 2024-06-26 17:12 by lyfbangong
[论文投稿] 投稿求助 +5 平凡的日子 2024-06-19 6/300 2024-06-26 16:38 by 大大熊呀
[基金申请] 基金评审时,评审专家还回去看申请人代表作之外的文章吗? +5 孤单12站 2024-06-26 6/300 2024-06-26 16:05 by 孤单12站
[基金申请] 自然基金变化?? +14 今晚推荐22 2024-06-21 24/1200 2024-06-26 15:47 by 梦渺岚烟
[育儿交流] 暑假孩子一个人在家可以干什么 +4 唠叨的映 2024-06-25 5/250 2024-06-26 15:35 by 361997417
[基金申请] 青年基金E02口青基去年几个函评专家? +6 他山攻玉之石 2024-06-25 9/450 2024-06-26 15:09 by 他山攻玉之石
[基金申请] 要持续整治滥发“帽子”、“牌子”之风 +6 babu2015 2024-06-25 6/300 2024-06-26 14:52 by felicity6056
[硕博家园] 【45岁以上博士】柔性人才引进项目,有补贴 +9 Dreamsummit 2024-06-24 18/900 2024-06-26 12:28 by hujm159
[公派出国] CSC博士联培对将来就业有用吗 +4 也就这样 2024-06-22 4/200 2024-06-26 10:46 by lxs7405
[基金申请] 今天能不能出来名单 +8 地理学1995 2024-06-25 10/500 2024-06-26 09:46 by msjy
[有机交流] 过柱子,产品,杂质在是 pe:ea=100:1 也一起出来? +5 w256 2024-06-25 5/250 2024-06-26 09:31 by 小木木cc
[基金申请] 专科院校申请国自然 +14 孤单12站 2024-06-24 20/1000 2024-06-26 09:09 by chong2024
[基金申请] 这样的说辞是上会了吗 +12 学员d3zYCz 2024-06-24 15/750 2024-06-25 22:05 by 3115321
[硕博家园] 数据不好 +5 Hetai 2024-06-23 7/350 2024-06-25 12:37 by 1591099
[有机交流] 高温酯化反应喷料 20+4 hl24678 2024-06-21 7/350 2024-06-25 09:45 by ghj-hebust
[考博] 申请25博士,可以提前进组做科研助理 +6 逐梦途中w 2024-06-22 8/400 2024-06-24 21:49 by keyaner23
[教师之家] 复旦夏同学提出高校成年人学生退学不应该让家长审核,大家认同吗? +10 苏东坡二世 2024-06-22 17/850 2024-06-24 16:52 by wanghuawei
[基金申请] 青年和面上,哪个上会难度更大 +12 今晚推荐22 2024-06-21 18/900 2024-06-24 11:08 by 半简体
[有机交流] 生成亚胺的反应怎么能进行完全 +3 1369836 2024-06-23 3/150 2024-06-23 18:44 by hwqMSE
[有机交流] 求助 45+7 脂质纳米粒 2024-06-20 9/450 2024-06-23 07:52 by buhui7829
信息提示
请填处理意见