变量出错

时间:2015-07-24 07:08:42

标签: fortran gfortran

请帮助我解决以下错误。

 real(16), parameter :: &                                          
                              1
Error: Invalid character in name at (1)

包含上述代码的模块如下:

module degree_trig
    real(16), parameter :: &
            quadpi = 3.141592653589793238462643383279502884197
    real(16), parameter :: dgr_to_rad = (quadpi/180)
    intrinsic cos, sin, tan
      contains
    function sind(dgr_argument)
        real(4) sind, dgr_argument
            sind = sin(dgr_to_rad * dgr_argument)
    end function

    function cosd(dgr_argument)
        real(4) cosd, dgr_argument
            cosd = cos(dgr_to_rad * dgr_argument)
    end function

    function tand(dgr_argument)
        real(4) tand, dgr_argument
            tand = tan(dgr_to_rad * dgr_argument)
    end function

    function dsind(dgr_argument)
        real(8) dsind, dgr_argument
            dsind = sin(dgr_to_rad * dgr_argument)
    end function

    function dcosd(dgr_argument)
        real(8) dcosd, dgr_argument
            dcosd = cos(dgr_to_rad * dgr_argument)
    end function

    function dtand(dgr_argument)
        real(8) dtand, dgr_argument
            dtand = tan(dgr_to_rad * dgr_argument)
        end function
      end ! module

1 个答案:

答案 0 :(得分:1)

首先,它在gfortran 4.9中编译。

但是你确定你把它保存在.f90文件中吗? 我的意思是错误看起来像编译器期望固定格式。

顺便说一下,存储在常数quadpi中的值不是四倍精度。我建议你定义一个qp整数参数(和sp,dp也用于单精度和双精度)。使用函数selected_real_kind存储对应于四倍精度的种类值,传递该函数的精度(对于四倍精度为33,对于双精度为15,对于单精度为6)。 您必须在数字常量(和_dp,以及其他类型的数字常量的_sp)附加_qp。

我建议你写一下:

module degree_trig
implicit none

integer, parameter :: sp = selected_real_kind(6)
integer, parameter :: dp = selected_real_kind(15)
integer, parameter :: qp = selected_real_kind(33)

real(qp), parameter :: &
        quadpi = 3.141592653589793238462643383279502884197_qp
real(qp), parameter :: dgr_to_rad = (quadpi/180.0_qp)

contains
   elemental function sind(dgr_argument)
        real(sp), intent(in) :: dgr_argument
        real(sp) sind
        sind = sin(dgr_to_rad * dgr_argument)
   end function