Некоторый контекст. У меня есть этот кусок кода:
function areeq(array1,array2) result(eq)
real :: array1(1:100,1:100), array2(1:100,1:100)
logical :: eq
integer :: x,y,f
do x=1,100
do y = 1,100
print *,array1(x:x,y:y)
print *,array2(x:x,y:y)
if(.not.(array1(x:x,y:y) == array2(x:x,y:y))) then
eq = .false.
return
end if
read *,f
end do
end do
eq = .true.
return
end function
Однако, когда я пытаюсь его запустить, выдается следующее сообщение об ошибке:
if(.not.(array1(x:x,y:y) == array2(x:x,y:y))) then
1
Error: IF clause at (1) requires a scalar LOGICAL expression
Это второй раз, когда я сталкиваюсь с проблемами с чем-то, что должно быть Скалярным, и хотя мне удалось в последний раз взломать временную работу, я действительно должен и должен быть в состоянии справиться с этим. их правильно.
Итак, TL; DR: Что не так с этим фрагментом кода, и что я должен делать в ситуациях, подобных этой в более общем плане?