【发布时间】:2017-08-06 06:51:02
【问题描述】:
Fortran 中是否有一个内在函数来计算复数 z 的平方模 |z|^2?
如果没有,是否有比以下更简单或更好的计算方法?
REAL(z, precision_specifier)**2 + AIMAG(z)**2
【问题讨论】:
-
你可以使用
abs(z)**2(见here) -
我认为关键是要避免采取昂贵的 sqrt。
-
这听起来效率很低,因为它会计算一个实数的平方根,然后再次平方。
-
是的,确实如此——如果这是您的应用程序所关心的问题,则可能值得在问题中提及(这可能有助于使某些答案更清晰,因为 cmets 可能是暂时的)。
-
不仅要避免 sqrt,而且在复杂限制范围以外的编译模式下,编译器将扩展代码或调用库函数以避免乘法溢出(您似乎没有担心)。
标签: math fortran arithmetic-expressions