【发布时间】:2015-04-19 06:55:18
【问题描述】:
尝试编译时出现以下错误:
call qplot (Z, B, m + 1)
1
Error: Type mismatch in argument 'x' at (1); passed REAL(8) to REAL(4)
一切似乎都是双精度的,所以我不禁认为这是一个 Dislin 错误,特别是考虑到它是参考 Dislin 语句出现的。我究竟做错了什么?我的代码如下:
program test
use dislin
integer :: i
integer, parameter :: n = 2
integer, parameter :: m = 5000
real (kind = 8) :: X(n + 1), Z(0:m), B(0:m)
X(1) = 1.D0
X(2) = 0.D0
X(3) = 2.D0
do i = 0, m
Z(i) = -1.D0 + (2.D0*i) / m
B(i) = f(Z(i))
end do
call qplot (Z, B, m + 1)
read(*,*)
contains
real (kind = 8) function f(t)
implicit none
real (kind = 8), intent(in) :: t
real (kind = 8), parameter :: pi = Atan(1.D0)*4.D0
f = cos(pi*t)
end function f
end program
【问题讨论】:
-
我认为你的编译器 kind=8 不是双精度的。请尝试使用双精度或选择类型例程。
-
这是 gfortran。我用 kind = 8 编写了其他双精度程序。我尝试使用其他语句,但得到了同样的错误。
-
感谢您的所有回答。它可以工作并编译。
-
请不要用 solved 之类的噪音来改变问题... 相反,请接受答案。然后,每个人都可以看到您的问题已解决,以及如何。 [作为一个很好的副作用,你会因为接受答案而获得闪亮的虚假互联网积分;-)] 另外,请不要在标题中包含标签!
标签: function graph plot fortran double-precision