| 查看: 2453 | 回复: 14 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
hfj1988新虫 (小有名气)
|
[求助]
fortran 程序有write和没有write两种情况计算的结果为什么会不一样?
|
||
|
fortran 程序在调试的时候我加了几个write(*,*)语句,发现计算的结果和不加不一样(在小数点后几位不一样),这是为什么? 在subroutine 中:intel 的fortran 编译器是否不检查数组大小?数组越界了也能算,但是就是计算错的,为什么?比如在某个子程序中:real(8) a(1000) 运行时候发现用到a(1200),却不报错。 |
» 猜你喜欢
Cas 72-43-5需要30g,定制合成,能接单的留言
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有6人回复
北京211副教授,35岁,想重新出发,去国外做博后,怎么样?
已经有8人回复
磺酰氟产物,毕不了业了!
已经有5人回复
论文终于录用啦!满足毕业条件了
已经有25人回复
2026年机械制造与材料应用国际会议 (ICMMMA 2026)
已经有3人回复
自荐读博
已经有3人回复
不自信的我
已经有5人回复
投稿Elsevier的杂志(返修),总是在选择OA和subscription界面被踢皮球
已经有8人回复
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
hfj1988: 金币+15 2013-01-16 17:28:45
hfj1988: 金币+15 2013-01-16 17:28:45
|
可能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
hfj1988
新虫 (小有名气)
- 应助: 4 (幼儿园)
- 金币: 1057.2
- 帖子: 185
- 在线: 115.2小时
- 虫号: 2138982
- 注册: 2012-11-21
- 专业: 计算数学与科学工程计算
2楼2013-01-11 20:02:10
wxdongmeng
新虫 (初入文坛)
- 应助: 1 (幼儿园)
- 金币: 114.5
- 帖子: 49
- 在线: 6.7小时
- 虫号: 229853
- 注册: 2006-03-25
- 性别: MM
- 专业: 计算数学与科学工程计算
3楼2013-01-11 20:31:29
hfj1988
新虫 (小有名气)
- 应助: 4 (幼儿园)
- 金币: 1057.2
- 帖子: 185
- 在线: 115.2小时
- 虫号: 2138982
- 注册: 2012-11-21
- 专业: 计算数学与科学工程计算
4楼2013-01-11 20:32:57









回复此楼