我试图从源代码安装R包,但收到错误:
* installing *source* package ‘mclust’ ...
** package ‘mclust’ successfully unpacked and MD5 sums checked
** libs
gfortran-4.8 -fPIC -g -O2 -c mclust.f -o mclust.o
gfortran-4.8 -fPIC -g -O2 -c mclustaddson.f -o mclustaddson.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o mclust.so mclust.o mclustaddson.o -L/Library/Frameworks/R.framework/Resources/lib -lRlapack -L/Library/Frameworks/R.framework/Resources/lib -lRblas -L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2 -lgfortran -lquadmath -lm -L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2 -lgfortran -lquadmath -lm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
ld: warning: directory not found for option '-L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2'
ld: warning: directory not found for option …Run Code Online (Sandbox Code Playgroud) 我正在Fortran中编写一个新代码,并且在使用可分配数组或指针数组之间犹豫不决.我在某处读到可分配数组比指针数组有明显优势:
1)效率更高,因为它们在内存中总是连续的
2)没有内存泄漏是可能的
有人能证实吗?你建议使用哪一个?在这两种备选方案之间的代码执行速度方面有什么结果?
arrays fortran pointers memory-management dynamic-memory-allocation
为什么COBOL必须缩进,因为在每个源文件中都有额外的间距?
考虑这段代码(注意额外的空格):
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY 'Hello, world'.
STOP RUN.
Run Code Online (Sandbox Code Playgroud)
在Fortran代码中可以看到类似的格式:
program hello
print *, "Hello World!"
end program hello
Run Code Online (Sandbox Code Playgroud)
但为什么COBOL和Fortran需要这个空白?什么原因?
我试图在gfortran中使用四倍精度,但似乎real*16不起作用.经过一些钓鱼后,我发现它可以实现为real*10.是real*10 实际上四倍精度?
如何测试代码的精度?是否有标准的简单算法来测试精度?例如,当我想弄清楚计算机零是什么时,我继续除以2.0直到达到0.0.跟踪值让我知道计算机何时'认为'我的非零数字为零 - 给我计算机零.
有没有一种很好的方法可以用我所描述的算法来计算精度?
现代Fortran中是否有可能使用向量来索引多维数组?也就是说,给予,
integer, dimension(3) :: index = [4,6,9]
double precision, dimension(10,10,10) :: data
Run Code Online (Sandbox Code Playgroud)
是否有data(4,6,9)比写作更好(更一般)的访问方式data(index(1), index(2), index(3))?不必硬编码data数组的等级就好了.
(天真我想写,data(index)但当然这实际上意味着不同的东西 - 子集"聚集" - 要求data自己成为排名第一的阵列.)
对于它的价值,这基本上与JavaScript中的索引数组的多维索引相同,但在Fortran中.不幸的是,那里的聪明答案不适用于预定义的数组排名.
根据 http://gallery.rcpp.org/articles/r-function-from-c++,Rcpp 允许用户从C++调用R函数.Fortran中有类似的东西,以便人们可以在Fortran代码中调用R函数吗?
我的程序正在运行,虽然3D阵列,标签"群",它发现,然后做一些检查,看看是否有临近簇具有比目前更高的集群的标签.还有第二个数组保存了"正确的"群集标签.如果它发现正确标记了第n个相邻簇,则将该元素分配给0,否则将其分配给正确的标签(例如,如果第n个站点具有标签2,并且邻居标记为3,则第3个元素为labelArray设置为2).老实说,我有充分的理由这样做!
我想要的只是能够分配动态的第n个元素labelArray.我已经看过可分配的数组并将事物声明为,labelArray(*)但我并不是真的理解这些,尽管在网上搜索和StackOverflow.
因此,任何帮助这样做都会很棒.
我正在使用Ubuntu 10.04并尝试编译一些使用gfortran的代码.在某些时候,Makefile会:
-L. -lgfortran
Run Code Online (Sandbox Code Playgroud)
我得到了错误
/usr/bin/ld: cannot find -lgfortran
Run Code Online (Sandbox Code Playgroud)
虽然安装了:
ldconfig -p | grep fortran
libgfortran.so.3 (libc6,x86-64) => /usr/lib/libgfortran.so.3
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
PS:Makefile:
## FLAGS
CC:= gcc
C++:= g++
CFLAGS:= -c -O -Dintel -g
FC:= gfortran
FFLAGS:= -c -O -cpp -g
LD:= g++
LDFLAGS:= -O
WETTER_CGAL_FLAGS:= -g
#WETTER-Data
WETTER_cgal: weather.cpp surface_alg.h $(WETTER_CGAL_OBJECTS) WATT_interface.h data.cpp
$(C++) $(WETTER_CGAL_FLAGS) -c weather.cpp -frounding-math
$(C++) -c data.cpp -frounding-math
$(LD) $(WETTER_CGAL_OBJECTS) weather.o data.o -o WETTER_cgal -L. -lgfortran -lgmp -lCGAL -frounding-math -fp-model
Run Code Online (Sandbox Code Playgroud) 我正在努力学习使用函数.我有以下代码:
program main
implicit none
write(*,*) test(4)
end program
integer function test(n)
implicit none
integer, intent(in) :: n
integer :: i, ans
ans=1
do i=1,n
ans=ans*i
enddo
test=ans
end function test
Run Code Online (Sandbox Code Playgroud)
当我编译(使用gfortran 4.1.2)时,我收到以下错误:
In file test.f90:4
write(*,*) test(4)
1
Error: Function 'test' at (1) has no IMPLICIT type
Run Code Online (Sandbox Code Playgroud) 在Fortran中是否可以查询我所在的函数或子例程的名称?即,我应该代替'???' 让它在屏幕上打印'my_subroutine'?
subroutine my_subroutine()
write(*,*) ???
end subroutine my_subroutine
Run Code Online (Sandbox Code Playgroud)
我试图找到一种方法来实现自定义调试器/分析器,只使用文本编辑器的搜索和替换机制.以编程方式查询我在代码中的位置会很有帮助.