有人知道是否有办法以四倍算术精度运行 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