| 查看: 2364 | 回复: 14 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
hfj1988新虫 (小有名气)
|
[求助]
fortran 程序有write和没有write两种情况计算的结果为什么会不一样?
|
||
|
fortran 程序在调试的时候我加了几个write(*,*)语句,发现计算的结果和不加不一样(在小数点后几位不一样),这是为什么? 在subroutine 中:intel 的fortran 编译器是否不检查数组大小?数组越界了也能算,但是就是计算错的,为什么?比如在某个子程序中:real(8) a(1000) 运行时候发现用到a(1200),却不报错。 |
» 猜你喜欢
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有7人回复
申请2026年博士
已经有5人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有5人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有6人回复
2025冷门绝学什么时候出结果
已经有7人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有6人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有7人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
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













回复此楼