为什么Gnu Octave有负零?

时间:2010-01-21 14:07:42

标签: math matlab floating-point octave

这是一个奇怪的我很困惑。我最近注意到在Gnu Octave提示符下,可以输入负零,如下所示:

octave:2> abomination = -0

它也记得它:

octave:3> abomination
abomination = -0

为了理智,负零确实等于常规零。但我也注意到这个标志还有一些其他的影响。像这样:

octave:6> 4 * 0
ans = 0
octave:7> 4 * -0
ans = -0
octave:8> 4 / 0
warning: division by zero
ans = Inf
octave:9> 4 / -0
warning: division by zero
ans = -Inf

可以看出,通过某些操作保留了标志。但我的问题是为什么。这似乎是对标准数学的彻底背离,其中零基本上没有符号。有这个有吸引力的数学属性吗?这在某些数学领域是否重要?

仅供参考:Matlab,以八度为模型,没有负零。任何使用它们的尝试都被视为常规零。

编辑: Matlab确实有负零,但它们不会显示在默认输出中。

3 个答案:

答案 0 :(得分:30)

有符号零是IEEE-754格式的一部分,它们的语义完全由这些格式指定。它们变得非常有用,特别是在处理复杂平面切割和复杂平面的转换时(有关更多细节,请参阅W. Kahan关于该主题的许多着作,例如经典的“复杂基本函数的分支切割”,或多Ado about Nothing's Sign Bit“)。

简短版本:负数零通常是数值计算中的一件好事,而试图保护用户免于遇到它的程序通常会对它们造成伤害。 FWIW,MATLAB似乎也使用负零,但由于它使用主机的printf例程打印数字,因此它们在Windows上显示与正零相同。

有关MATLAB中已签名零的更多详细信息,请参阅MATLAB论坛上的this discussion

答案 1 :(得分:9)

IEEE-754浮点数也具有此属性。对于限制和无限可能会派上用场。例如, x →+∞的1 / x 的极限为0,但函数接近轴的正侧, x →-∞函数从负面接近,因此在这种情况下可以给出-0的限制。

答案 2 :(得分:7)

Signed Zero

  

有符号零点回应数学   接近0的分析概念   以下作为片面限制,可能   用x→0-,x→0-或x→表示   ↑0。可以使用符号“-0”   非正式地表示负数   已经四舍五入为零。该   负零的概念也有一些   理论应用   统计力学等   学科。