我确信答案是显而易见的,但如果不查看来源,我就找不到它。
gnuplot的浮点数的内部表示是什么?它是平台的double
吗?它是否使用自己的内部表示?它可以做任意精度吗?
答案 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。