プロシージャポインター(Fortran 2003の新機能)を使用して初等関数をポイントしようとしていますが、機能しません。私は本当に関数が必要ELEMENTAL
であり、それへのポインタが必要です。Fortranで初等関数を指すことは本当に不可能ですか?
module elemfunc
implicit none
contains
elemental function fun111(x) result(y)
real*8, intent(in) :: x
real*8 :: y
y = x**2+1
end function fun111
end module elemfunc
program testptr
use elemfunc
implicit none
interface
elemental function func (z)
real*8 :: func
real*8, intent (in) :: z
end function func
end interface
procedure (func), pointer :: ptr
ptr => fun111
print *, ptr( (/1.0d0,2.0d0/) )
end program testptr
エラーメッセージ:
main.f90:12.7:ptr=>fun111
1
Nonintrinstic elemental procedure pointer 'func111' is invalid in procedure pointer assignment at (1)