я получаю следующее сообщение об ошибке при попытке компиляции:двойной точности ошибка при использовании DISLIN
call qplot (Z, B, m + 1)
1
Error: Type mismatch in argument 'x' at (1); passed REAL(8) to REAL(4)
Все вроде бы в двойной точности, так что я не могу помочь, но думаю, что это ошибка 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
Я думаю, что с вашим компилятором вида = 8 не является двойной точностью. Попробуйте использовать двойную точность или процедуру выбора вида. – albert
Это gfortran. Я написал другие программы с двойной точностью с kind = 8. Я пробовал использовать другие операторы, и я получаю ту же ошибку. – Steve
Спасибо за все ответы. Он работает и компилируется. – Steve