我有一个pymc python模块的用例。
在执行python -m pip install pymc时,我会生成[Errno 2] No such file or directory "lapack/double/dpotrs.f"。
在执行python -m pip install lapack时,我会生成No matching distribution found for lapack。
根据指南,我知道我需要英特尔Fortran和MS。
因为这对我来说似乎不是小事,所以我正在寻找一个快速而简单的替代方案。
如何用CYGWIN安装LAPACK和BLAS?
我想将LAPACK库与我的fortran代码(.f90)链接到Ubuntu14.04上
我使用终端选项gfortran -o main main.f95 -L"usr/lib/lapack" -llapack运行它,它编译时没有错误。但是在Code::Block中,我创建了一个fortran项目和>Build选项
生成项目gfortran error: usr/lib/lapack/liblapack.so No such file or directory时会出现错误。
我不明白出了什么问题。我还安装了LAPACK。这些是/usr/lib/lapack libla
我正在尝试将一段代码从Fortran 77移植到Fortran 90,并且我有一个关于在Fortran 77的争论中捕获级别错配的问题。
这是Fortran 90中的代码
program test
use my_module
real ml_time
call gettimes(cdfid,ml_time,ml_ntimes)
在调用子例程中,这是定义传递变量的方式。
module my_module
use netcdf
subroutine gettimes(cdfid,times,ntimes)
real times(*)
call check(nf90_in
在Fortran 90中,我在调用带有假定形状数组的连续子例程时遇到了问题。更具体地说,我调用了两级子例程,将一个假定形数组作为参数传递,但最终该数组丢失了。要演示它,可以遵循下面的代码。
program main
INTERFACE
subroutine sub1(x)
real, dimension(:):: x
real C
end subroutine sub1
subroutine sub2(x)
real, dimension(:):: x
real C
end subrou
当我使用来自BLAS的zgerc子程序编译Fortran代码时,我遇到了一个非常奇怪的问题。基本上,这个子程序用向量y的共轭来计算向量x的外积。更多关于这个函数。我的简单代码如下:
program main
implicit none
integer :: i
complex(8), dimension(10) :: a = [(i, i=0,9)]
complex(8), dimension(10) :: b = [(i, i=0,9)]
complex(8), dimension(10, 10) :: c
c = 0
CALL zge
我在AIX上安装了gcc和gfortran,它们工作得很好。其中,我将它们与一些通过头文件(C中的.h)访问的库一起使用。同样的库也可以用于模块(fortran中的.mod),但是您知道,它们的使用是可选的:如果我注释掉
use mylib
implicit none
从我的fortran源代码来看,一切都很正常。问题是,我不想注释掉implicit none,所以我也必须保留use mylib,否则我会得到一堆
Error: Symbol 'foo' at (1) has no IMPLICIT type
错误。而且,正如你所知道的,.mod文件是依赖于编译器的,所以我不能使
我正在尝试自学Fortran,并且一直在忙于将多个文件链接在一起。在下面的示例中,我一直在一个文件中编写程序,在另一个文件中编写函数,并在我的主程序中使用接口块来引用外部函数。
我正在测试接口块中需要多少信息,并意识到我可以完全删除它。
我的程序:
program test
implicit none
real :: x, y, func
x = 3
y = func(x)
print *, y
end program test
和函数文件:
function func(x)
我很难理解为什么在子例程中声明的变量(i)会出现在包含的子例程中,但是对于导致编译错误的函数(fie),情况并非如此。我寻找一个答案,也试图看看我是否能在Fortran 95标准中找到一些东西,但没有结果。
我编写了一个小示例程序:
program pgm
call a
end
subroutine a
implicit none
integer :: i
double precision :: fie
i = 7
call b
!write(*,*) fie(9)
contains
subroutine b
double precision ::
我是Fortran的新手。请看下面的代码:
c main program
call foo(2)
print*, 2
stop
end
subroutine foo(x)
x = x + 1
return
end
在Fortran的某些实现中,上面的代码会打印一个3,为什么呢?你能给我解释一下吗?
您认为最近的Fortran实现是如何解决这个问题的?
我们非常感谢你的帮助。谢谢。
我刚刚开始使用Fortran,在使用BLAS模块时遇到了(?)在我的节目里。
我正在Ubuntu18.04上工作,我已经安装了(?)LAPACK和BLAS包通过命令sudo apt-get install libblas-dev liblapack-dev。我还从网站下载了LAPACK,并根据安装了它。
我的程序应该使用blas_sparse模块,所以我写了这样的东西:
program example
use blas_sparse
implicit none
! some code ...
end program example
我试图用下面的命令使用example.F90编
我有Fortran90函数 function eg_fun(r) bind(c)
use, intrinsic :: iso_c_binding
implicit none
real(c_double), intent(in) :: r
real(c_double) :: eg_fun
real(c_double), parameter :: PI = acos(-1.d0)
eg_fun = PI * r * r + cos(r)
end function 和我的C程序 #include <stdio.h>
#includ
我在网上做了一些搜索,但是我无法找到如何从linux编译一个简单的C++和Fortran代码。我需要变得复杂,但我只需要知道如何从一个简单的例子开始。
我的C++代码是:
#include <iostream>
using namespace std;
extern int Add( int *, int * );
extern int Multiply( int *, int * );
int main()
{
int a,b,c;
cout << "Enter 2 values: ";
cin >> a &
我有一个程序,它调用子例程,然后子例程再调用一个函数。我被Fortran对函数类型声明的要求弄糊涂了。我已经在函数中声明了类型(即实函数foo(...)),无论我是否在子例程声明部分中声明函数,程序都会正常工作。
我的具体问题是,在子例程中声明函数不会在将来导致意外的行为吗?我也看到了接口块,想知道这是否也是必要的。
更广泛地说,我也感兴趣的是Fortran在“幕后”做了什么,以及为什么声明函数或使用接口块或多或少很重要。
编辑:一些示例代码:
program foo
real :: a,b,c
call bar(a,b,c)
end program foo
subroutine
我在Fortran 90中有以下子程序:
subroutine foo(bar)
use spam ! dimension n is defined in the module spam
implicit none
real*8 bar(n)
....
end subroutine foo
由于数组维度n是在模块spam中定义的,所以在编译C包装函数(由f2py生成)时会出现错误,如
error: ‘n’ undeclared (first use in this function)
因为C包装器函数没有对spam或n的任何引用。
解决这个问题的办法应该是什么?
我目前正
我刚接触Fortran (在C方面更有经验),我正在尝试使用allocate命令为一个值矩阵分配内存。代码是:
module SMS
contains
subroutine readSMS(elem)
real, dimension(:,:), allocatable :: elem
allocate( elem(3792, 3) ) ! this will be a variable later on, for now I've
! hard-coded the number of element
我正在使用调用C函数的Fortran 90代码。此代码经过了良好的测试,并使用英特尔Fortran编译器成功编译。我正在尝试让它与GNU Fortran编译器一起工作。F90代码调用一个C函数,但它没有指定一些参数。调用如下所示:
call c_func_name(1, n, q, , , , p)
这显然适用于ifort,但不适用于gfortran,gfortran失败并显示以下错误
Error: Syntax error in argument list at (1)
其中1位于第一个空白参数后面的逗号。我找不到任何关于这里发生的事情的信息。这是英特尔编译器特定的用于传递伪参数的语法吗?如
我使用英特尔Fortran编译器在Visual Studio 2017中临时运行了一些遗留的Fortran代码(我能够使用调试器逐步通过它),直到它显然无缘无故地停止工作。
在一开始,当我试图运行代码时,我得到了下面的错误。
error #6633: The type of the actual argument differs from the type of the dummy argument.
这个错误在安装后重新启动后消失了,我能够测试代码几个星期,但现在它又回来了。
我想我没有修改任何代码。
我有一个旧的fortran代码,出于各种原因,我正在修改它以提供使用c++的功能。
在此代码中有两个函数,CALC和CALC2。这些函数需要从c++中调用,并且它们相互调用。
CALC的草图:
SUBROUTINE CALC(W,NW,DW,IDMX,JUMP,POINT) bind(C, name="CALC")
use iso_c_binding
C Some statements
IF (LO(36)) CALL CALC2(W,NW,DW,IDMX, .TRUE., 14)
C More statements
END
CALC2的草图:
SUBR