クロネッカー積を計算する単純な fortran 関数があります。
function kron(A, B)
implicit none
real, intent(in) :: A(:, :), B(:, :)
integer :: i, j, ma, na, mb, nb
real, dimension(:, :) :: kron
ma = ubound(A, 1)
na = ubound(A, 2)
mb = ubound(b, 1)
nb = ubound(b, 2)
forall(i=1:ma, j=1:na)
kron(mb*(i-1)+1:mb*i, nb*(j-1)+1:nb*j) = A(i,j)*B
end forall
end function kron
モジュール内にありますが、でコンパイルするとgfortran -static -ffree-form -std=f2003 -Wall
、次のエラーが発生します。
function kron(A, B)
1
Error: Array 'kron' at (1) cannot have a deferred shape
返される配列のサイズを事前に知っているはずなので、このエラーが発生していますか?