在Fortran中投掷NaN的否定指数

mic*_*cah 3 math fortran

非常基本的Fortran问题.以下函数返回NaN,我似乎无法弄清楚原因:

F_diameter = 1. - (2.71828**(-1.0*((-1. / 30.)**1.4)))

我已经喂了2.71而不是使用,exp()但他们都以同样的方式失败了.我注意到当小数部分(-1/30)为负时我只得到一个NaN.积极评估好.

非常感谢

ire*_*ses 10

问题是你正在取一个负数的根,这会给你一个复杂的答案.如果你想象,这更明显

(-1) ** (3/2)
Run Code Online (Sandbox Code Playgroud)

这相当于

(1/sqrt(-1))**3
Run Code Online (Sandbox Code Playgroud)

换句话说,您的小数指数不能简单地对负数进行操作.