我确信答案是显而易见的,但如果不查看源代码我就找不到它。
gnuplot 对浮点数的内部表示是什么?是平台的double
吗?它是否使用自己的内部表示?它可以做任意精度吗?
我确信答案是显而易见的,但如果不查看源代码我就找不到它。
gnuplot 对浮点数的内部表示是什么?是平台的double
吗?它是否使用自己的内部表示?它可以做任意精度吗?
一个快速的谷歌搜索会发现,只要有可能,计算都是以双精度完成的,但是,这里有一点微妙之处。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。