最近在撰写《计算机的错误计算》系列内容。其中用到三种在线工具,分别是大语言模型、在线运行软件以及 ISRealsoft 在线软件。
系列主要介绍各种软硬件关于数值计算的误差或错误计算。比如,各种数学库 math 中涉及的函数的误差,或算术表达式,或循环迭代程序的结果中含有的错误数字个数。
要讨论上述内容,那么需要两个步骤:首先,寻到一些可能出错的点;其次,对它们进行编程、运行、验证。其中,第一个步骤是寻找文献中提供的案例或构造新的案例(当然是符合要求的案例,比如 IEEE 754-2019中包含的函数,并且自变量是在其定义域范围内);而第二步不妨依靠三种工具。
下面举例说明三种工具的使用场景。
对于正切函数 计算机有三种类型的错误计算:当自变量为大数、 附近数以及 附近数时,各种软硬件的输出会出现错误。下面案例将展示第三种类型的错误计算。
例1. 已知 计算
(1)不妨在 Fortran 语言下计算,并且不妨使用讯飞星火大语言模型生成相应代码:
program tan_calculationimplicit nonereal :: x, resultx = 80.110613result = tan(x)print *, result
end program tan_calculation
(2)然后在 在线运行Fortran - JSON中文网 中运行上述代码,则输出正数 586639.062 .
(3)再在ISRealsoft 中输入 tan(80.110613),那么它会输出9位的正确结果 -0.299885798e7 .
这样,通过比较上述两个输出结果,知,Fortran编译器输出了错误结果。
点评:
(1)在撰写《计算机的错误计算》系列内容时,虽然每一个案例均是简单的,但是,为了尽可能地说明问题,一般尽量在不同的环境下展示。比如,不同的语言或不同的库等,既有C语言、C++、Java,也有Python,甚至Go语言、Rust、Maple、Php等。这样,就出现一个问题:对于个别语言,其语法本人并不是很熟悉,同时,电脑中也未必安装有每一种编程环境。因此,有时,需要利用大语言模型获得代码,再用在线计算网站获得结果。于是,这二个工具帮助本人极大地提高了撰写效率。
(2)在十年前,若要查看一个算式的正确结果,那么有下面几种方法。第一种,用Gmp等编程多精度代码,运行后比较结果。第二种,用 Maple 软件计算,也是先算出高精度的结果,然后显示所要精度的值。第三种,是用 Mathematica的符号计算,这时需要将小数换成分数。不管以上哪一种方法,均不仅繁琐,还不能保证结果正确(举例其中一个共同缺点:计算时均要设置参数,若参数错误,结果就错误;而参数如何设置,没有理论支撑)。
ISRealsoft 是误差可控的一款软件。它基于数值(浮点)计算,在所有中间计算中均考虑了误差。它需要的,仅是用户告知要保留的有效位数。因此,相比前面的三种方法,利用 ISRealsoft 获得正确结果,那是秒秒钟的事,因为它不需要人工干预。所以,ISRealsoft 同样帮助作者极大地提高了撰写效率。
(3)未来,若能将大模型、在线运行、ISRealsoft 整合在一起,去掉人工干预或只有极少的干预,那么效率就更高了。