我试图使用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与众不同?
另外,如何为这样的情况定义输出的名称而不是自动生成的名称?