フリーフォーム Fortran を学ぶことにした最近まで、私はすべてのプログラミングを Matlab で行ってきました。Cygwin で gfortran コンパイラを使用しています。配列を入力として取り、それに対して計算を行い、新しい配列を返すことができる関数を書くことに興味があります。これが難しい仕事だと思ったことは一度もありませんでしたが、少なくとも私にとっては難しい仕事であることが証明されました. これが私の簡単なテストコードです:
PROGRAM RETURN_ARRAY
! Description: This program is used to test a function that returns
! an array.
REAL*8 :: NROOT
PRINT *, NROOT(2, [1.0D0, 4.0D0, 9.0D0, 16.0D0, 25.0D0])
END PROGRAM RETURN_ARRAY
FUNCTION NROOT(N, X) RESULT(Y)
! Description: This function calculates the Nth root of a real number
! or array of real numbers.
!
! Inputs: N - desired Nth root
! X - real number or array of real numbers to take Nth root of
!
! Outputs: Y - Nth root of real number or array of real numbers, X
INTEGER, INTENT(IN) :: N
REAL*8, INTENT(IN) :: X(:)
REAL*8 :: P
REAL*8 :: Y(SIZE(X))
P = 1.0D0/N
Y = X**P
END FUNCTION NROOT
このプログラムと内部関数を次のようにコンパイルします。
gfortran RETURN_ARRAY.f90 -o MAIN.exe
プログラムはエラーなしでコンパイルされます。ただし、プログラムを実行しようとすると、ターミナルに次の出力が表示されます。
Segmentation fault (core dumped)
この問題を解決するための助けをいただければ幸いです。前もって感謝します。