相关疑难解决方法(0)

将sqrt(-0.0)定义为-0.0,简化了哪种数值算法?

IEEE 754标准将负零的平方根定义为负零.这种选择很容易合理化,但其他选择(如定义sqrt(-0.0)NaN)也可以合理化,并且更容易在硬件中实现.如果担心程序员会编写if (x >= 0.0) then sqrt(x) else 0.0并被这个表达式判断为何NaNx被评估-0.0,那么sqrt(-0.0)就可以将其定义为+0.0(实际上,对于这个特定的表达式,结果会更加一致).

是否存在特定的数值算法,其中sqrt(-0.0)定义为-0.0简化算法本身的逻辑?

floating-point ieee-754

12
推荐指数
1
解决办法
256
查看次数

sqrt仅在参数为非负时定义

编译好了

#include <math.h>

int main(void) {
    double i = sqrt(9.0);
}
Run Code Online (Sandbox Code Playgroud)

如果我将9.0更改为-9.0,那么我的编译器(GNU C)会给出关于'sqrt'的未定义引用的错误.

我期待sqrt函数返回NaN或异常.C库如何仅为非负参数定义sqrt?

c gcc math.h sqrt

4
推荐指数
1
解决办法
2374
查看次数

标签 统计

c ×1

floating-point ×1

gcc ×1

ieee-754 ×1

math.h ×1

sqrt ×1