主题:[讨论]如何改变fortran的浮点精度
673374082
[专家分:0] 发布于 2011-09-24 11:36:00
这是90年代编写的源程序,我现在想改变这个程序里边的一些参数,浮点精度与现在的计算机相匹配,望各位高手指点,不胜感激!
回复列表 (共14个回复)
沙发
yeg001 [专家分:14390] 发布于 2011-09-24 12:28:00
里面使用DOUBLE PRECISION这些声明, 用相应现代的编译器编译就可以得到相应的精度.
板凳
673374082 [专家分:0] 发布于 2011-09-24 14:51:00
如果用现代的编译器运行,会出现很多错误,请继续支招,谢谢!
3 楼
yeg001 [专家分:14390] 发布于 2011-09-25 09:56:00
既然是讨论, 你还是把错误贴上来吧. 没实体无法讨论.
什么系统, 什么编译器, 什么错误.
4 楼
673374082 [专家分:0] 发布于 2011-09-25 20:20:00
我是在windowXp系统下运行的 错误如下(分两段)
--------------------Configuration: xycontin2 - Win32 Debug--------------------
Compiling Fortran...
C:\xycontin2\xycontin2.f90
C:\xycontin2\xycontin2.f90(1) : Error: Missing mandatory separating blank
C++++++++++++++++ Multiq Package VERSION 2DP (March 1996) ++++++++++++++
------------------------------------------^
C:\xycontin2\xycontin2.f90(1) : Error: Syntax error, found '+' when expecting one of: ( : % . = =>
C++++++++++++++++ Multiq Package VERSION 2DP (March 1996) ++++++++++++++
-^
C:\xycontin2\xycontin2.f90(1) : Error: Syntax error, found IDENTIFIER 'PACKAGE' when expecting one of: ( * :: , <END-OF-STATEMENT> ; : ) + . - % (/ [ ] /) . ** / > ...
C++++++++++++++++ Multiq Package VERSION 2DP (March 1996) ++++++++++++++
-------------------------^
C:\xycontin2\xycontin2.f90(3) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( : % . = =>
C
-^
C:\xycontin2\xycontin2.f90(4) : Error: Syntax error, found IDENTIFIER 'THIS' when expecting one of: ( : % . = =>
C This is an extension of the splice package to allow for a two grids, as
---^
C:\xycontin2\xycontin2.f90(5) : Error: Syntax error, found IDENTIFIER 'WELL' when expecting one of: ( : % . = =>
C well as user-supplied form factors.
-----^
C:\xycontin2\xycontin2.f90(6) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( : % . = =>
c
-^
C:\xycontin2\xycontin2.f90(7) : Error: Syntax error, found IDENTIFIER 'DOWNLOAD' when expecting one of: ( : % . = =>
c Download the Users Manual and other essential documentation from
---^
C:\xycontin2\xycontin2.f90(8) : Error: Syntax error, found IDENTIFIER 'HTTP' when expecting one of: ( : % . = =>
C http://S-provencher.COM
-------^
C:\xycontin2\xycontin2.f90(9) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( : % . = =>
c
-^
C:\xycontin2\xycontin2.f90(10) : Error: Syntax error, found IDENTIFIER 'ALTHOUGH' when expecting one of: ( : % . = =>
c Although the Users Manual is essential, all the documentation specific to
---^
C:\xycontin2\xycontin2.f90(11) : Error: Syntax error, found IDENTIFIER 'THIS' when expecting one of: ( : % . = =>
c this MULTIQ package is in the comments below (not the manual).
-----^
C:\xycontin2\xycontin2.f90(12) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( : % . = =>
C
-^
C:\xycontin2\xycontin2.f90(13) : Error: Syntax error, found IDENTIFIER 'THE' when expecting one of: ( : % . = =>
C The DIMENSION specifications for nearly all arrays have also been
---^
C:\xycontin2\xycontin2.f90(14) : Error: Unterminated character constant
C increased, so that you can probably avoid checking Sec. 3.5 of the User's
----------------------------------------------------------------------------^
C:\xycontin2\xycontin2.f90(14) : Error: Invalid character_kind_parameter. No underscore
C increased, so that you can probably avoid checking Sec. 3.5 of the User's
-------------------------------------------------------------------------------^
C:\xycontin2\xycontin2.f90(14) : Error: Syntax error, found IDENTIFIER 'INCREASED' when expecting one of: ( : % . = =>
C increased, so that you can probably avoid checking Sec. 3.5 of the User's
-----^
C:\xycontin2\xycontin2.f90(15) : Error: Syntax error, found IDENTIFIER 'MANUAL' when expecting one of: ( : % . = =>
C Manual or the DATA statement following line 0099. If you have very
-----^
C:\xycontin2\xycontin2.f90(16) : Error: Syntax error, found IDENTIFIER 'LIMITED' when expecting one of: ( : % . = =>
C limited memory, you may have to reduce these dimensions.
-----^
C:\xycontin2\xycontin2.f90(16) : Error: Syntax error, found IDENTIFIER 'MAY' when expecting one of: ( * :: , <END-OF-STATEMENT> ; : ) + . - % (/ [ ] /) . ** / > ...
C limited memory, you may have to reduce these dimensions.
-------------------------^
C:\xycontin2\xycontin2.f90(17) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( : % . = =>
C
5 楼
673374082 [专家分:0] 发布于 2011-09-25 20:23:00
C:\xycontin2\xycontin2.f90(18) : Error: Syntax error, found IDENTIFIER 'THE' when expecting one of: ( : % . = =>
C The FUNCTION FORMF2 sets all form factors = 1.0. You must modify this
---^
C:\xycontin2\xycontin2.f90(19) : Error: Syntax error, found IDENTIFIER 'FUNCTION' when expecting one of: ( : % . = =>
C FUNCTION in the places indicated, if you want to use form factors.
-----^
C:\xycontin2\xycontin2.f90(20) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( : % . = =>
C
-^
C:\xycontin2\xycontin2.f90(21) : Error: Syntax error, found '-' when expecting one of: ( : % . = =>
C----------------------------------------------------------------------------
-^
C:\xycontin2\xycontin2.f90(21) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( <IDENTIFIER> <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> <INTEGER_CONSTANT> ...
C----------------------------------------------------------------------------
-----------------------------------------------------------------------------^
C:\xycontin2\xycontin2.f90(22) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( : % . = =>
C
-^
C:\xycontin2\xycontin2.f90(23) : Error: Syntax error, found IDENTIFIER 'LUSER' when expecting one of: ( : % . = =>
C LUSER(29) = F to use only a single grid, as the original splice package.
---^
C:\xycontin2\xycontin2.f90(23) : Error: Syntax error, found IDENTIFIER 'TO' when expecting one of: ( * :: , <END-OF-STATEMENT> ; : ) + . - % (/ [ ] /) . ** / > ...
C LUSER(29) = F to use only a single grid, as the original splice package.
-----------------^
C:\xycontin2\xycontin2.f90(24) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( : % . = =>
C
-^
(26) : Severe: Too many errors, exiting
Error executing df.exe.
xycontin2.exe - 30 error(s), 0 warning(s)
6 楼
yeg001 [专家分:14390] 发布于 2011-09-25 21:28:00
你的代码是fixed格式的老代码. 文件扩展名用.f或者.for吧. 编译器把注释也编译了.
7 楼
673374082 [专家分:0] 发布于 2011-09-25 22:15:00
能具体点怎么操作吗?谢谢
8 楼
yeg001 [专家分:14390] 发布于 2011-09-26 09:16:00
文件扩展名用.f或者.for.
xycontin2.f90 => xycontin2.f
9 楼
673374082 [专家分:0] 发布于 2011-09-26 11:48:00
我现在按如上操作,得到的精度参数是这样的
0PRECIS = 1.49D-15 SRANGE = 1.00E+35 RANGE = 1.00D+35
运行后显示的为输入数据,没有需要得到的结果
10 楼
673374082 [专家分:0] 发布于 2011-09-26 14:42:00
用 fixed format运行的结果与上也是一样,请问这个怎么解释与解决?谢谢!
我来回复