什么是gnuplot的浮点数的内部表示?

时间:2012-12-27 09:11:15

标签: gnuplot floating-point-precision

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

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

1 个答案:

答案 0 :(得分:2)

快速谷歌搜索将会发现,只要有可能,计算就会以双精度进行,但是,这里有一点太过分了。 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。