回 帖 发 新 帖 刷新版面

主题:[讨论]如何改变fortran的浮点精度

这是90年代编写的源程序,我现在想改变这个程序里边的一些参数,浮点精度与现在的计算机相匹配,望各位高手指点,不胜感激!

回复列表 (共14个回复)

沙发

里面使用DOUBLE PRECISION这些声明, 用相应现代的编译器编译就可以得到相应的精度.

板凳

如果用现代的编译器运行,会出现很多错误,请继续支招,谢谢!

3 楼

既然是讨论, 你还是把错误贴上来吧. 没实体无法讨论.
什么系统, 什么编译器, 什么错误.

4 楼

我是在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 楼


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 楼

你的代码是fixed格式的老代码. 文件扩展名用.f或者.for吧. 编译器把注释也编译了.

7 楼


能具体点怎么操作吗?谢谢

8 楼

文件扩展名用.f或者.for.
xycontin2.f90 => xycontin2.f

9 楼


我现在按如上操作,得到的精度参数是这样的
0PRECIS = 1.49D-15          SRANGE = 1.00E+35     RANGE = 1.00D+35
运行后显示的为输入数据,没有需要得到的结果

10 楼


用 fixed format运行的结果与上也是一样,请问这个怎么解释与解决?谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册