3

Fortran コードを取得するために sympy - codegen を使用しようとしていました。解決策が見つからない厄介なことを除いて、問題なく動作します。私の例をこれに単純化しました:

bar = Matrix([x*x,y*z,z*y])
result = codegen(('foo', bar), 'f95', 'project')

結果は次のとおりです。

subroutine foo(x, y, z, out_6551735094710235777)
implicit none
REAL*8, intent(in) :: x
REAL*8, intent(in) :: y
REAL*8, intent(in) :: z
REAL*8, intent(out), dimension(1:3, 1:1) :: out_6551735094710235777

out_6551735094710235777(1, 1) = x**2
out_6551735094710235777(2, 1) = y*z
out_6551735094710235777(3, 1) = y*z

end subroutine

ルーチンの出力は 2 次元配列です。1 次元にする方法はありますか? この場合、2 番目の次元はとにかく 1 です。この例の C コードを生成すると、デフォルトで 1 次元のベクトルが得られます。なぜfortranの場合は違うのですか?

また、自動生成されたものではなく、このような場合の出力の名前を定義する方法は?

4

0 に答える 0