Tag: fortran

从64位进程调用32位代码

我有一个应用程序,我们试图从32位迁移到64位。 它是.NET,使用x64标志进行编译。 但是,我们有大量编译为32位的FORTRAN 90编写的DLL。 FORTRAN DLL中的函数非常简单:将数据放入数据中; 没有任何forms的状态。 我们也没有花太多时间,总共有3%,但是它所执行的计算逻辑是非常宝贵的。 我可以以某种方式从64位代码调用32位DLL? MSDNbuild议我不能,期限。 我做了一些简单的黑客行为,并validation了这一点。 一切都会引发无效的入口点exception。 目前唯一可能的解决scheme是为所有32位DLL函数创buildCOM +包装器,并从64位进程调用COM。 这似乎相当头痛。 我们也可以在WoW模拟中运行这个过程,但是内存的上限不会增加,上限为1.6GB左右。 有没有其他的方式来从64位CLR过程调用32位DLL?

在Fortran 90中计算两个向量的叉积

我想计算Fortran 90中两个vector的叉积。例如,用(1,2,3)和(4,5,6)的叉积结果是(-3,6, -3)以笛卡尔坐标表示。 我写了下面的代码(主程序后跟函数定义): PROGRAM crosstest IMPLICIT NONE INTEGER, DIMENSION(3) :: m, n INTEGER, DIMENSION(3) :: cross INTEGER, DIMENSION(3) :: r m=(/1, 2, 3/) n=(/4, 5, 6/) r=cross(m,n) END PROGRAM crosstest FUNCTION cross(a, b) INTEGER, DIMENSION(3) :: cross INTEGER, DIMENSION(3), INTENT(IN) :: a, b cross(1) = a(2) * b(3) – a(3) * b(2) cross(2) = […]

将整数转换为string以在运行时创build输出文件名

我在Fortran中有一个程序将结果保存到一个文件中。 目前我使用打开文件 OPEN (1, FILE = 'Output.TXT') 但是,我现在要运行一个循环,并将每次迭代的结果保存到文件'Output2.TXT' , 'Output3.TXT' , 'Output3.TXT'等等。 在Fortran中有一个简单的方法来构build来自循环计数器i文件名吗?

Fortran:整数* 4与整数(4)与整数(种类= 4)

我试图学习Fortran,我看到很多不同的定义被传递,我想知道他们是否试图完成同样的事情。 以下是什么区别? integer*4 integer(4) integer(kind=4)

Fortran 90种参数

我无法理解Fortran 90的kind参数。 据我所知,它并不决定变量的精度(即浮点数或双精度),也不决定变量的类型。 那么,它是什么决定的,到底是什么呢?

由R包调用的Fortran代码仅在Linux上导致段错误崩溃

我正在尝试使用smwrQW R软件包。 我可以让它在Windows机器上工作( example("censReg", "smwrQW") )。 但是,在Linux机器上运行相同的代码会导致我立即发生段错误。 我相信我已经跟踪到以下行的错误。 您应该能够使用Docker和以下命令重现此行为: docker pull rocker/tidyverse docker run -it rocker/tidyverse /bin/bash sudo apt-get install ed Rscript -e "devtools::install_github('USGS-R/smwrBase')" Rscript -e "devtools::install_github('USGS-R/smwrGraphs')" Rscript -e "devtools::install_github('USGS-R/smwrStats')" Rscript -e "devtools::install_github('USGS-R/smwrQW')" Rscript -e "example('censReg', package = 'smwrQW')" Docker版本的gfortran(6.3.0)与RTools版本之间不匹配是否导致问题? 见http://www.thecoatlessprofessor.com/programming/rcpp-rcpparmadillo-and-os-x-mavericks-lgfortran-and-lquadmath-error/#the-solution 我遇到了两个令人费解的怪癖。 首先,如果我在上面链接的那一行之前设置了一个断点( browser() ),那么就没有错误。 其次,Travis的构建似乎已经过去了。