问题标签 [fortran95]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
44458 浏览

fortran - 在 Fortran 90/95 中是否有检查 Infinite 和 NaN 的标准方法?

我一直在尝试找到一种符合标准的方法来检查 Fortran 90/95 中的 Infinite 和 NaN 值,但事实证明它比我想象的要难。

  • 我尝试使用 IEEE 754 中描述的二进制表示手动创建 Inf 和 NaN 变量,但我发现没有这样的功能。
  • 我知道ieee_arithmeticFortran 2003 中的内在模块具有ieee_is_nan()ieee_is_finite()内在功能。但是,并非所有编译器都支持它(尤其是 gfortran 4.9 版)。

在开始时定义无穷大和 NaN对我pinf = 1. / 0来说nan = 0. / 0似乎很骇人听闻,恕我直言,可能会引发一些构建问题 - 例如,如果某些编译器在编译时检查这一点,则必须提供一个特殊标志。

有没有一种方法可以在标准 Fortran 90/95 中实现?

isnan()

0 投票
2 回答
306 浏览

arrays - Fortran 95 - 在模块之间传输数组

我在模块和主程序之间传输数组时遇到问题。该模块和主程序使用gfortran编译得非常好。但是,在执行 .exe 文件时,windows 会遇到问题,必须关闭。这似乎仅在数组大小未知(并且必须分配其大小)时发生。我已经包含一小段代码来说明问题:

它是如何工作 的:用户被要求输入一个整数'i',它定义了方阵的大小。这个整数被传递给模块函数,该函数创建矩阵并将其返回给主程序。然后将矩阵打印到屏幕上。

一个文件中的主程序:

和模块在一个单独的文件中:

谢谢你们的帮助!

0 投票
2 回答
6248 浏览

fortran95 - Fortran:如何将类型变量传递给子例程

我想在子例程(或函数)中计算派生数据类型。我将如何在子例程参数中引用变量?

到目前为止,我可以通过引用整个对象,然后在子例程中引用变量来实现我的目标。有没有办法在子例程参数中只引用变量 myObj%var ?

0 投票
1 回答
177 浏览

fortran95 - 这段fortran是什么意思?

我试图通过 fortran 中的一个小算法(不幸的是,我不是 fortran 程序员)但我需要了解它在做什么:在这里,

a1,a2,a3是向量(每个三个元素,实值,表示 3d 空间中的向量) s是单位整数(可以是 1 或 -1 交替)并且i,j,k是整数,而omega(我需要了解它是如何到达的)是浮点数值,所以也是alat。现在上面发生了什么?尤其是iperm =1,3 部分,这是一个正在创建的向量吗?起初我认为 iperm 可能是一些花哨的函数/例程或迭代器,但经过一番搜索后,我认为事实并非如此,iprm 的目的是什么?" " 和 " "iperm 之间是否有一些循环?doenddo

0 投票
1 回答
2350 浏览

arrays - 矩阵行和列似乎在 Fortran 中被倒置打印

我对 Fortran 95 中的二维数组(即矩阵)有一个简单的问题。据我所知,数学将矩阵内部的一个元素定义为 Aij,其中 i 代表它的行,j 代表它的列。好吧,如果我简单地编码write(*,*) Matrix,结果的行和列是倒置的!采取以下示例代码:

通过使用上面的循环(修复一行,然后打印其中的每一列),我得到了我期望的结果:

现在通过使用最后一条语句write(*,"(3(I1,1X))") P,我得到:

我在这里做错了吗?

0 投票
2 回答
333 浏览

module - FORTRAN 95:是否可以在不共享源代码的情况下共享模块?

我希望能够共享 FORTRAN 95 模块而不共享其源代码。是否可以这样做(也许通过共享 .MOD 文件)?如果这是相关的,我在 Plato 上使用 Silverfrost FTN95 编译器。到目前为止,我只能通过使用外部模块的源代码来完成这项工作。这是一个例子:


文件:module_test.f95


文件:main_program.f95


那么,有人可以在没有我的文件 module_test.f95 或include "module_test.f95"主代码行的情况下使用我的模块 TEST 吗?

非常感谢!

0 投票
1 回答
233 浏览

fortran - 尝试在 FORTRAN 中编写一个简单的语句会输出 @@ 而不是数字。

我有一个程序,它接受三个数字并计算这三个数字是否形成一个三角形。如果是这样,它会打印三个边和周长。然而,由于某种原因,在打印周长时,它没有说Perimeter= 3(例如),而是说Perimeter= @@. 知道什么会导致这种情况吗?这是我第一次尝试使用 Fortran,所以我有点迷茫。

0 投票
1 回答
297 浏览

fortran - Fortran 95 中的长整数会导致“错误:整数对于同类而言太大”

我收到一条编译 Fortran 95 程序的错误消息:

该程序看起来像 test_SELECT_REAL_KIND.f90:

如果我删除错误行,程序的输出看起来很完美:

那么为什么我会得到这个错误呢?你能在你的机器上试一试,然后给我一些关于错误的背景信息吗?那会很好!

0 投票
2 回答
789 浏览

fortran - fortran 95 自行四舍五入

我决定学习 fortran95 语言(原因并不重要)。然而,作为一个初学者,我遇到了一个我真的无法解释的奇怪问题,因此我需要帮助。

我有插入排序算法:

还有主程序(摘录):

第一条write语句打印出来

为什么数字略有变化?fortran95默认不使用IEEE754标准吗?

但是假设我可以忍受轻微的改变;第二write条语句打印出来

为什么数字被四舍五入?这真的让我很烦,格式化“写”语句没有任何好处,谷歌搜索也没有真正帮助。我想互联网上关于 fortran 的东西并不像 C 那样多。我是一个体面的 C 程序员,所以任何与它的相似之处都值得赞赏。谢谢你的帮助!

0 投票
2 回答
1594 浏览

fortran - 具有重载赋值的嵌套派生类型

我有一个派生类型 ( wrapper),其中包含另一个派生类型 ( over)。对于后者,赋值运算符已被重载。由于派生类型的分配是按默认组件进行的,我希望分配两个实例会在某些时候wrapper调用重载分配。over但是,使用下面的程序,似乎并非如此。wrapper仅当我还为包含实例之间的显式赋值而重载赋值时才调用重载赋值over(通过取消注释代码行)。为什么?我觉得这有点违反直觉。有什么办法可以避免包装类型的重载?