站内搜索: 

关于我们

《数学大世界》杂志简介 简介信息: 《数学大世界》是经国家新闻出版总署批准,创刊于1994年。为了进一步深化新课程改革,促进学术交流、促进数学专业教育人才的快速成长,《数学大世界》杂志社将隆重推出以面向大、中、小学教师和教科研人员为主要读者对象的教学辅导刊物,为广大数学爱好者提供一个相互促进、共同探究的交流平台。 《数学大世界》为月刊,国内刊号...>>更多

2021年8月刊

您的位置:首页 > 2021年8月刊

数学函数库测试平台
信息来源:《数学大世界》杂志社官方网站 发表时间: 2021/9/25 阅读数:221

数学函数库测试平台

为了解决上述问题,本文深入研究浮点数的生成规则,摒弃测试数据全浮点域穷举(数据昼大,实际应用中无法实现)及均匀随机(浮点数的实际覆盖率低)的方法,设计实现了一种新的可应用于实际的符合浮点数设计规则的IEEE-754规范数生成方法,提出了基千IEEE-754标准的全浮点域指数分布数据集生成方法,确保了测试数据集的有效性,提高了浮点数的覆盖率计算机中的浮点数一般严格以IEEE-754标准形式出现,将所有可在数轴上精确表示的数表示出来,可以发现:离零点越近,数越密集,可表示的两个浮点数之间的距离就越小;离零点越远,数越稀疏,可表示的两个浮点数之间的距离也就越大,如图2所示.

假设针对某一函数在REGION区间内测试,在一般的测试方法中,倾向千在此区间内均匀生成测试数据,即,所生成的测试数据在此区间的分布呈均匀分布,如图2坐标轴上带有向上箭头的数这:种生成数据集的方法简单,但没有考虑到浮点数的分布,在浮点数密集区域的浮点数覆盖率低,可能导致浮点运算的测试结果与真实情况不符

为了避免这一现象,从生成浮点数基本原理出发,将浮点测试数据集的生成方法也分为3个部分:符号位、指数和尾数在待测区间内,针对IEEE-754标准中的指数的异同,将测试数据集划分为不同的区域在每个指数相同的区域中再产生0.5~1之间的N个尾数,将产生的尾数与对应的指数构成测试数据集.其生成规则:(1)符号位,根据测试区间,判断测试数据的正负属性;(2)指数部分,覆盖测试区间内所有浮点数的指数,(3)尾数部分,针对每一个指数值,产生N0.5~1之间的均匀分布的随机数.具体到图2所示测试情况,测试集符号位为1,指数部分包括3种不同的指数,在不同指数域内部再均匀生成3个尾数,构成完整的测试集(图中坐标轴上带有向下箭头的数).

这样,从指数相同的子区域来看,区域内部呈均匀分布,但是从整个测试区间来看,测试数据集呈指数分布.这种分布与IEEE-754的浮点数理论分布保持一致.这意味着,数轴区间上的浮点数越密集,按照此规则所生成的测试数据也就越多;数轴区间上的浮点数越稀疏,生成的测试数据越少,有效避免了测试用例在数值极小和极大情况下不平均的情况同时,由千引起函数跳转的参数通常以浮点数指数进行区分(指数部分通常就决定了数的数量级和整数部分),测试区间内浮点指数的全覆盖,即,最大限度地保证了测试浮点数的覆盖率.

在尾数生成过程中,生成区间选择0.5~1而不是O~l,这是由浮点数表示规则决定的.在IEEE-754规范中,浮点数需要规格化表示,而规格化的浮点数要求尾数的绝对值应大千或等千0.5为了使单独生成的指数和尾数可以直接组合成规格化的浮点数,避免规格化过程中尾数移位对指数的影响,将尾数生成区间限定在0.5~1.

现有测试方法的均匀分布数据集通常采用将测试区间分成均匀的N等份的方法生成测试数据集,相比较而言,本文测试数据集在生成过程中考虑到了浮点数的具体分布状况,将生成过程分成符号位、指数及尾数等3部分实现,更加适应浮点函数测试的需要.

上述3个部分构成完整的测试数据集,保证了测试集的完整性(包括IEEE-754规范数、IEEE-754特殊数及函数特征值)和有效性,为下一步测试做好了充分的数据准备.

3测试方法

3.1基干多精度库MPFR的精度测试方法

•实数realI能够用浮点数2精确表示,此时,ULP的值为其到两侧浮点数1或者浮点数3的距离,

•实数real2在数轴上处于浮点数2和浮点数3之间,其ULP值即为浮点数2和浮点数3之差,同时,real

2根据IEEE-754舍入方式表示为两个数中的一个.

360 百度 中国知网 全网目录