草庐IT

c++ - Fortran 与 C++,如今 Fortran 在数值分析中是否仍然具有优势?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭5年前。Improvethisquestion随着C++编译器(尤其是intel编译器)的快速发展,以及在C/C++代码中直接应用SIMD函数的能力,Fortran在数值计算领域是否仍然具有真正的优势?我来自应用数学背景,我的工作涉及大量数值分析、计算、优化等,并具有严格定义的性能要求。我对Fortran几乎一无所知,我在C/CUDA/matlab方面有一些经验(如果您一开始就认为后者是一门计算机语言),而且我的日常任务涉及分析非常大

io - 使用英特尔 Fortran 编译器避免列表导向输出中的换行符

我注意到Fortran中的列表导向输出write(*,*)的结果是依赖于编译器的。确实,用代码:programonereal(8),dimension(5)::r1doi=1,5r1(i)=sqrt(i*10.0)enddowrite(*,*)(r1(i),i=1,5)endprogramoneintel编译器ifort给出标准输出,被换行符打破:3.162277698516854.472136020660405.477225303649906.324555397033697.07106781005859而gfortran给出了等效的一行结果:3.16227766016837954.4

floating-point - 如何用前导零填充 Fortran 浮点输出?

我有一些float需要从Fortran程序中输出。假设最大数字可能是999.9999,它们都是非负数。我需要在所有小于100的数字前面补零。例如,如果我有25.6893782、245.354567和1.2345678,我需要以类似的形式将它们打印出来025.6894245.3546001.2346我该怎么做?例如,如果我知道所有的数字都在10到99之间,那么使用T编辑描述符会相当容易。但我无法提前知道这一点。 最佳答案 这对我有用real::areal然后write(*,'(i3.3,f0.6)')int(areal),areal-

formatting - 抑制 Fortran 95 写入语句中的换行符

我想在fortran中写入标准输出而不添加换行符。也就是说,我想做这样的事情:a='somestringand'b='someotherstring'write(*,101)a...write(*,102)b...101format(a,...)102format(a)是否可以使用某种格式语句来抑制101中的换行符,使得代码在同一输出行上输出“somestringandsomeotherstring”?请注意,将两个write语句分开很重要,因为中间的代码实际上用于生成第二个字符串。 最佳答案 您可以使用advance='no'选项

io - Fortran 将我的输出添加到星号 - 为什么?

我很难理解Fortran中的格式化语句。不格式化我的输出,这就是我所做的(在循环中,所以这会发生几次):write(*,*)t*1E9t这里是real*8。输出正是我所期望的——增量为0.1,有一些舍入误差:0.00000000000000000.100000000000000010.200000000000000010.299999999999999990.400000000000000020.500000000000000000.599999999999999980.699999999999999960.799999999999999930.899999999999999910.9

file-io - 将数据按列写入文件(Fortran)

我需要在Fortran90中将一些数据写入文件。我应该如何使用WRITE(*,*)input将值分组到columns中?WRITE每次调用后总是放一个newline,这就是问题所在。代码示例:open(unit=4,file='generated_trajectories1.dat',form='formatted')dotime_nr=0,Nwrite(4,*)dble(time_nr)*dt,initial_traj(time_nr)enddo现在的重点是将其写在单独的列中。 最佳答案 您可以使用隐含的DO循环将值写入单个记录。

file-io - 将数据按列写入文件(Fortran)

我需要在Fortran90中将一些数据写入文件。我应该如何使用WRITE(*,*)input将值分组到columns中?WRITE每次调用后总是放一个newline,这就是问题所在。代码示例:open(unit=4,file='generated_trajectories1.dat',form='formatted')dotime_nr=0,Nwrite(4,*)dble(time_nr)*dt,initial_traj(time_nr)enddo现在的重点是将其写在单独的列中。 最佳答案 您可以使用隐含的DO循环将值写入单个记录。

formatting - 取决于变量的输出格式字符串

我希望将Fortran写入语句格式化为依赖于某个变量。例如,我可以这样写:write(*,'(3f15.3,3f9.2)')x,y,z,(var(i),i=1,nvari)其中nvari=3。但是,如果在某些情况下,我实际上有4个变量(即nvari=4)。我想写这样的东西:write(*,'(3f15.3,nvari(f9.2))')x,y,z,(var(i),i=1,nvari)现在,nvari可以是任何东西,并且输出将按我喜欢的方式工作。我怎样才能做出这样的事情? 最佳答案 如果您使用的是Intelfortran,它有一个专有的

formatting - 取决于变量的输出格式字符串

我希望将Fortran写入语句格式化为依赖于某个变量。例如,我可以这样写:write(*,'(3f15.3,3f9.2)')x,y,z,(var(i),i=1,nvari)其中nvari=3。但是,如果在某些情况下,我实际上有4个变量(即nvari=4)。我想写这样的东西:write(*,'(3f15.3,nvari(f9.2))')x,y,z,(var(i),i=1,nvari)现在,nvari可以是任何东西,并且输出将按我喜欢的方式工作。我怎样才能做出这样的事情? 最佳答案 如果您使用的是Intelfortran,它有一个专有的

Fortran语言在线代码运行编译工具推荐

Fortran语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入Fortran语言代码,点击运行,可在线编译运行Fortran语言,Fortran语言代码在线运行调试,Fortran语言在线编译,可快速在线测试您的Fortran语言代码,在线编译Fortran语言代码发现是否存在错误,如果代码测试通过,将会输出编译后的结果。该在线工具由IT宝库提供,在线工具后端由众多Docker镜像组成,包含在线编译工具、在线数据库、在线前端实用工具。在线编译工具支持Java、C++、C、Python、C#、PHP等37种开发语言在线运行/执行/调试测试。在线数据库支持MSSQLServer、MySQL