15得票6回答
将Fortran 77代码转换为C++

有人将一个大型的Fortran 77代码(我们的是550,000行)转换成C ++吗?你遇到了哪些陷阱?转换成功了吗?你是否使用了for_c这样的工具(http://www.cobalt-blue.com/fc/fcmain.htm)?生成的C++代码速度是否显著变快或变慢?

8得票1回答
Fortran衍生类型实例的用户定义构造函数

这是我关于Fortran的第二个问题(我使用C ++,所以原谅我的思维方式)。 我想要在适当的时候使用OOP,也就是在Fortran中使用派生类型。 在C ++中,您可以使用用户定义的构造函数,例如https://msdn.microsoft.com/en-us/library/s16xw1...

21得票4回答
Fortran非格式化文件中出现了意外的“填充”。

我不理解Fortran中未经格式化的文件的格式。 例如:open (3,file=filename,form="unformatted",access="sequential") write(3) matrix(i,:) 将矩阵的一列输出到文件中。我发现它在文件的两端填充了4个字节,但我不太...

11得票2回答
Fortran 77中的局部变量是静态还是栈动态的?

我编程语言课程的一个作业问题是: FORTRAN中的本地变量是静态的还是栈动态的?初始化为默认值的本地变量是静态的还是栈动态的?请用一些代码和解释来支持你的答案。提示:检查历史敏感度子程序的最简单方法是测试程序。查看当您将本地变量初始化为值时会发生什么,以及当您不这样做时会发生什么。您可能需...

8得票4回答
Fortran中与Matlab find函数等价的函数-用于切片矩阵而不重复使用内存

我经常在Matlab中使用find命令,我想知道如何在Fortran中聪明地翻译它以提取数组的切片。在Matlab中,您可以使用逻辑或索引进行切片,但在Fortran中,您需要使用索引来进行切片。我知道内置子例程pack等,但从未使用过。另外,由于我处理大矩阵,我想避免重复使用内存。我希望切片...

11得票1回答
大多数编译器是否会对MATMUL(TRANSPOSE(A),B)进行优化?

在一个Fortran程序中,我需要计算几个表达式,例如M · v,MT · v,MT · M,M · MT等等... 这里,M和v是小型的2D和1D数组(通常为2-10左右,大小不超过100)。 我想知道是否编写MATMUL(TRANSPOSE(M),v)会在编译时展开为与MATMUL(N...

11得票2回答
Matlab、Julia和Fortran中的速度比较。

我正在尝试使用不同的编程语言解决一个简单的价值函数迭代问题,它需要循环遍历状态空间网格。我试图理解性能差异以及如何调整每个代码。为了后人,我在下面发布了每种语言的完整工作示例。然而,我认为大部分调整应该在while循环中进行。我有点困惑Fortran的运行速度似乎不太理想。 Matlab ~2...

10得票2回答
Fortran的分配/释放内存

我有以下问题: Fortran90+中分配/释放语句的真正开销是多少? 也就是说,在循环内部分配了几个中等大小的数组,例如:do i = 1, 1000 allocate(tmp(20)) tmp(1:20) = 1d0 call foo(tmp) deallo...

8得票1回答
多维数组在omp simd中的对齐方式

如果我理解正确,omp simd 块中的 aligned 子句是指整个数组的对齐方式。 针对多维数组,它该如何使用呢?假设... ni = 131; nj = 137; nk = 127 !allocates arr(1:131,1:137,1:127) aligned to 64-b...

35得票2回答
如何在Fortran中为函数起别名

不确定标题是否恰当,欢迎提出建议。 我想要做的是:检查一个条件,然后在循环中决定使用哪个函数。例如:if (a < 0) then loop_func = func1 else loop_func = func2 endif 我可以使用loop_func作为指针来编写我...