gpt4 book ai didi

c - 定义平方根的条件

转载 作者:太空狗 更新时间:2023-10-29 15:54:06 26 4
gpt4 key购买 nike

这个宏用于计算sqrt(x),

#define SQRT(x)     ((x)<=0.0||(x)!=(x)?0.0:sqrt(x))

我不明白在哪种情况下第二个条件 (x)!=(x)可能是真的?

最佳答案

如果 xIEEE 754 Not-a-number (NaN)

(x) != (x) 将为真. IE。对于未定义平方根的参数值,此宏尝试将结果强制为 0.0。 sqrt(3) Linux man page很好地总结了返回值:

RETURN VALUE

On success, these functions return the square root of x.

  • If x is a NaN, a NaN is returned.

  • If x is +0 (-0), +0 (-0) is returned.

  • If x is positive infinity, positive infinity is returned.

  • If x is less than -0, a domain error occurs, and a NaN is returned.

因此,此表达式可确保在第 1 和第 4 种情况下返回 0 而不是 NaN,此外,errno 保持不变,并且不会发生浮点异常。


(顺便说一句,如果您在宏参数中有副作用,那么使用这个奇怪的宏是不安全的,因此最好将其替换为内联函数或类似函数)

关于c - 定义平方根的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50439098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com