3

我试图使用 sympy - codegen 来获取 fortran 代码。除了我找不到解决方案的一件烦人的事情外,它工作正常。我将示例简化为:

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

该例程的输出是一个二维数组。有没有办法使它成为一维 - 对于这种情况,第二维无论如何都是一个。如果我为此示例生成 C 代码,默认情况下我会得到一个一维向量。为什么fortran不一样?

另外,如何为这种情况的输出定义一个名称,而不是自动生成一个?

4

0 回答 0