Gnuplot 精度

Gnuplot 精度

有人知道是否有办法以四倍算术精度运行 gnuplot 吗?例如,当您想要绘制一条线并想要从仅向右变化到第 16 位的值中减去“2.3403800935287029218841060098446498”之类的值时。

非常感谢有关此问题的任何意见。

答案1

如果所有前 16 位数字始终真正匹配,为什么不编写一个 kludge 文本编辑器,将两项中的所有匹配数字转换为 0,然后使用双精度来获取可在输入中使用的差异项。

可能会很快,但不是很通用,而且可能不是您想要的。不知道输入的具体情况。但作为一个例子,在实际文件中保留注释,values.txt):

  • 文件values.txt

    2.3403800935287029218841060098446498
    2.3403800935287055555555555555555555
    
  • 文件junk.csh

    awk 'BEGIN{last="XXX";} \
                       { gsub(/[0-9]/," & "); split($0,a," "); \
                          if (last!~/XXX/) {split(last,b," "); \
                          i=1; minlen=(length(a)<length(b))? length(a):length(b); \
                          while  ((a[i]==b[i])&&(i<minlen)) { if ((a[i]!=".") && (a[i]!="-")){a[i]=0; b[i]=0; }; i++; };}; \
                          last=$0; } \
                     END{ for(i=0; i<length(b); i++) printf("%s",b[i]); printf("\n");    \
                          for(i=0; i<length(a); i++) printf("%s",a[i]); printf("\n"); }' \
               | awk 'BEGIN{last="XXX"} { if (last!="XXX") printf("%38.35f\n",last-$0); last=$0 } '
    
  • 运行为

    $ cat values.txt | source junk.csh
    

相关内容