首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >fortran中指数函数的DEXP或EXP?

fortran中指数函数的DEXP或EXP?
EN

Stack Overflow用户
提问于 2010-01-12 09:36:17
回答 3查看 36.3K关注 0票数 15

我有两个非常简短的问题:

我刚读到DEXP()EXP()的古体。这是否意味着不应该再使用它?我一直认为DEXP()是相当于EXP()的双精度。

指数函数的范围是多少?它依赖于编译器吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-28 11:57:01

问题1:

在现代的Fortran中,使用泛型函数(如EXP() )总是比使用过时的类型特定的等价物(如DEXP() )更好。

在Fortran的旧版本中(在FORTRAN 77之前),每种数据类型都需要一个不同的函数。因此,如果需要指数函数,则需要:单精度数字的EXP(),双精度数字的DEXP(),复数的CEXP()。Fortran现在有了函数重载,所以一个函数可以用于任何标准类型。

问题2。

原则上,指数的可能范围可以取决于处理器和编译器。然而,大多数现代处理器和编译器将使用IEEE标准。

如果需要,可以在声明变量时指定所需的变量范围。要使用的函数是SELECTED_REAL_KIND([P,R])

例如,假设您要确保x的类型是十进制精度至少为10位,十进制指数范围至少为100。

代码语言:javascript
复制
INTEGER, PARAMETER :: mytype = SELECTED_REAL_KIND(10, 100)
REAL(KIND=mytype) :: x

有关更多信息:仁爱

在实践中,如果您正在编写一个要求给定精度的程序,并且该程序可以在异国或旧系统上运行,那么以这种方式定义您的类型是一个非常好的主意。这里显示了一些常见的定义:实精度

票数 21
EN

Stack Overflow用户

发布于 2010-01-12 11:22:52

"exp“是一个泛型函数,它返回与其参数相同的类型--实数或复杂的精度。应该优先使用它而不是旧的表单"dexp“,因为使用"exp”编译器将自动返回正确的类型。通用名称是在Fortran 77中添加的。

票数 3
EN

Stack Overflow用户

发布于 2010-01-12 11:43:42

你问题的第2部分的答案是指数函数的范围是所有正数的集合。在Fortran术语中,这意味着所有实数的集合都大于0。是的,根据Fortran标准,编译器依赖于编译,但实际上,如果您认为它是所有正数IEEE浮点数的集合,那么在实践中不会发生多大的错误,只要您想要的是单精度或双精度。但是,为了严格起见,您需要熟悉编译器所支持的实数的种类,这些实数几乎肯定包括IEEE f-p数字,但也可能包括其他的实数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2047922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档