- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我得到了一些要编译的遗留代码。不幸的是,我只能访问 f95 编译器并且对 Fortran 的了解为 0。一些模块已编译,但其他模块出现此错误:
错误:(1) 不支持旧式类型声明 REAL*16
我的计划是至少尝试修复此错误,然后看看还会发生什么。所以这是我的 2 个问题。
我为 Fortran 75 编写的代码与 Fortran 95 编译器兼容的可能性有多大? (在/usr/bin 中,我的编译器是 f95 - 所以我假设它是 Fortran 95)
如何解决我遇到的这个错误?我尝试用谷歌搜索它,但找不到清晰明了的答案。
最佳答案
您看到的错误是由于 Fortran 90 之前很常见但从未成为标准的旧声明样式造成的。因此,编译器不接受(形式上不正确的)代码。
在 Fortran 90 之前的过去,只有两种类型的实数:REAL
和 DOUBLE PRECISION
。这些类型依赖于平台,但大多数编译器现在将它们映射到 IEEE754 formats binary32 和 binary64。
但是,一些机器提供不同的格式,通常具有更高的精度。为了使 Fortran 代码可以访问它们,发明了 REAL*n
类型,其中 n
是一组依赖于编译器的值的整数文字。这种语法从来都不是标准的,所以如果不阅读它的文档,你就无法确定它对给定编译器意味着什么。
在现实世界中,大多数未被要求严格符合标准的编译器(带有一些选项,如 -std=f95
)将至少识别 REAL*4
和 REAL*8
,将它们映射到前面提到的二进制 32/64 格式,但其他一切都完全依赖于平台。对于 x86 387 FPU 使用的 80 位算法,您的编译器可能具有 REAL*10
类型,或者对于 x86 387 FPU 使用的 REAL*16
类型一些 128 位 float 学。但是,需要强调的是,由于语法不是标准的,因此该类型的含义可能因编译器而异。
最后,在 Fortran 90 中,一种引用不同种类实数和整数类型的方法成为标准。新语法是 REAL(n)
或 REAL(kind=n)
并且受所有符合标准的编译器支持。然而,n 的值仍然依赖于编译器,但该标准提供了三种方法来获得特定的、可重复的结果:
SELECTED_REAL_KIND
函数,它允许您向系统查询 n 的值,以指定您是否需要具有特定精度和范围要求的实数类型。通常,您所做的是请求它一次并将结果存储在一个 INTEGER, PARAMETER
变量中,您在声明相关的实际变量时使用该变量。例如,您可以像这样声明一个精度至少为 15 位(十进制)且指数范围至少为 100 的类型:
INTEGER, PARAMETER :: rk = SELECTED_REAL_KIND(15, 100)
REAL(rk) :: v
ISO_C_BINDING
模块包含一系列常量,旨在为您提供保证等同于同一编译器系列的 C 类型的类型(例如 gfortran 的 gcc, icc 用于 ifort 等)。它们被称为 C_FLOAT
、C_DOUBLE
和 C_LONG_DOUBLE
。因此,您可以将等效于 C double
的变量声明为 REAL(C_DOUBLE)::d
。ISO_FORTRAN_ENV
模块包含一系列不同的常量 REAL32
、REAL64
和 REAL128
这将为您提供适当宽度的浮点类型 - 如果某些平台不支持其中一种类型,则常量将为负数。因此,您可以将 128 位 float 声明为 REAL(real128)::q
。关于fortran - 错误 : Old-style type declaration REAL*16 not supported,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43810421/
我在决定是将我的应用程序归类为“实时”还是“接近实时”,或者甚至是其他类别时遇到了麻烦。 该软件会立即接收从源生成的数据,然后根据某些规则,在满足某些条件时发出警报。它采用每 30 秒检查一次最近 3
我的 c 编译器有问题当编译一个简单的hello world时,用户时间是>>>实时的。 这里是两台机器之间的时间比较。 需要注意的是,机器没有执行任何其他任务,其他操作运行得很快(甚至是其他编译器)
虽然我用 C 实现了很多项目,但我对操作系统完全陌生。我在探索板 (STM32) 上尝试了实时 linux,并得到了 LED 闪烁的正确结果,但我并没有真正理解整个过程,因为我只是按照步骤操作,无法在
我的问题是,“可以使用 select type block 来区分 real::realInput 和 real::realArrayInput(:) ?”很清楚 select type 可以如何用于
通过 fortran-iso-c-binding,我可以连接 C 函数并获取类似类型的变量 real(c_float) integer(c_int) 但在程序的其余部分我想使用基本类型(仅仅是因为我不
我正在编写一个应用程序,在某个 block 中我需要对实数取幂大约 3*500*500 次。当我使用 exp(y*log(x)) 算法时,程序明显滞后。如果我使用另一种基于处理数据类型的算法,速度会快
我目前在 science linux 6 下使用 gfortran 4.4.7 编译器。我需要用 128 位声明变量。我无法更改操作系统希望在science linux 6下能做一些事情。 最佳答案
当我在 .NET 中将进程的优先级设置为实时时: Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;
我正在使用 Accelerate Framework 在 iOS 中实现基于加速度计的 FFT,但我仍然有点困惑的是这一部分: /* The output signal is now in a spl
用 f(x::Real) 定义函数有什么区别吗?和 f{T <: Real}(x::T) ? @code_warntype给出相同的输出 function f(x::Real) x^2 end
所以我看到了these two questions on twitter . 1.real 是语法错误,而 1 .real 不是? >>> 1.real File "", line 1 1
我有这个简单的代码,它使用 DGEMM 例程进行矩阵乘法 program check implicit none real(8),dimension(2,2)::A,B,C A(1,1)=
如标题所示,我使用了 Media Foundation WavSink 示例,该示例将音频流解码为 PCM 并转储到文件。 我的应用程序是将此流定向到 FMOD 音频引擎,该引擎以实时速率使用 PCM
1) 独占时间是在方法中花费的时间2) 包含时间是在方法中花费的时间加上在任何被调用函数中花费的时间3)我们称调用方法为“ parent ”,称方法为“子”。引用链接:Click here 这里的问题
我正在尝试使用 PS3 Eye 实时执行到达时间差。由于它内置了4个麦克风阵列,我成功地将阵列重新排列成方形阵列,并使用MATLAB对信号进行互相关,得到了一个相对准确的TDOA算法。然而,到目前为止
我开始改进一些旧的 R 代码,发现下一个函数是 deprecated : real创建指定长度的 double 向量。向量的每个元素都等于 0。 as.real试图将其参数强制为 double 类型。
因此,得出以下结论:实时异常检测的定义是什么? 我正在研究异常检测领域,在许多论文中,该方法被定义为实时,而在许多其他论文中,它简称为异常检测。 我碰巧发现,纠正我是否我错了,大多数所谓的实时方法实际
查看所有现有的操作转换框架示例,它们似乎都解决了将更改转换为纯文本文档的问题。 OT 框架如何用于更复杂的对象? 我想开发一个实时便签样式的应用程序,人们可以在其中共同创建便签,更改他们的位置和文本值
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以使为on-topic。 4
我有大量的点数据流(二维)(每秒数千个)。在这张 map 上,我有几个固定的多边形(几十到几百个)。 我想实时确定(在相当强大的笔记本电脑上几毫秒的数量级)它所在的多边形(多边形可以相交)的每个点。我
我是一名优秀的程序员,十分优秀!