4

我确信答案是显而易见的,但如果不查看源代码我就找不到它。

gnuplot 对浮点数的内部表示是什么?是平台的double吗?它是否使用自己的内部表示?它可以做任意精度吗?

4

1 回答 1

3

一个快速的谷歌搜索会发现,只要有可能,计算都是以双精度完成的,但是,这里有一点微妙之处。IEEE 双精度数的范围应该大于1.797e308,但是,如果您尝试给 gnuplot 一个那么大的数字,它会窒息:

gnuplot> plot '-' u 0:($1/2.)
input data ('e' ends) > 1.7976931348623157e+308
input data ('e' ends) > 30
input data ('e' ends) > e
Warning: empty x range [1:1], adjusting to [0.99:1.01]
Warning: empty y range [15:15], adjusting to [14.85:15.15]

现在,如果您显示 gnuplot 的范围变量:

gnuplot> show variables all

你会看到一些有点奇怪的东西:

GPVAL_DATA_X2_MIN = 8.98846567431158e+307
GPVAL_DATA_X2_MAX = -8.98846567431158e+307

用这个数字重复了几次。(请注意,这个数字大致正确):

gnuplot> !python -c 'import sys; print sys.float_info.max/2.'
8.98846567431e+307

**(python的float是系统的双精度)。

现在玩一点:

gnuplot> a = 8.98846567431e+307
gnuplot> a = 8.98846567432e+307
             ^
         undefined value

因此,据推测,gnuplot 的浮点数会达到系统的最大双精度(如果可能)除以 2。

于 2013-01-02T16:37:47.590 回答