1.一种通过排序分析检测数值程序中高浮点误差的方法,其特征在于,包括:S101,将待测的数值程序f p (x)对应的输入域I init 按照2的指数幂进行区间划分;S102,针对划分后的每个区间i j 随机选择m个点计算第一适应性函数fit1的值,根据n个区间的第一适应性函数fit1的值进行排序并选择值最大的前k个区间;S103,针对前k个区间,在第二适应性函数fit2(x)的指导下使用蒙特卡洛采样算法进行搜索得到k个可能触发高浮点误差的输入;然后基于第三适应性函数fit3(x)计算得到k个可能触发高浮点误差的输入对应的浮点误差,选取值最大的j个浮点误差;S104,针对选取的值最大的j个浮点误差,在第三适应性函数fit3(x)的指导下调用Nelder-Mead算法进行局部搜索得到j个浮点误差位ErrBits,从j个浮点误差位ErrBits中选取值最大的一个浮点误差位ErrBits作为待测数值程序f p (x)的最大浮点误差maxerr,输出最大浮点误差maxerr及其相应的点x max ;步骤S103中第三适应性函数fit3(x)的函数表达式为:fit3(x) = ErrBits{f(x),f p (x)}上式中,f(x)表示基准数学函数,f p (x)表示待测的数值程序,ErrBits{f(x),f p (x)}表示先计算f(x)和f p (x)两个点之间的浮点数数量、再对该浮点数数量取log 2 对数,用于反映出f(x)和f p (x)两点之间浮点误差大小。
2.根据权利要求1所述的通过排序分析检测数值程序中高浮点误差的方法,其特征在于,步骤S101包括:S201,创建空的列表;S202,确定区间[0,2 -1022 ]和[-2 -1022 ,0];S203,针对确定的区间[0,2 -1022 ]和[-2 -1022 ,0],从循环变量i=-1022开始,每次将[2 i ,2 i +1 ]和相应的相反区间加入列表,直到循环变量i=1022,最终划分得到4092个区间。
3. 根据权利要求1所述的通过排序分析检测数值程序中高浮点误差的方法,其特征在于,步骤S102中第一适应性函数fit1的函数表达式为:fit1(X) = SEXP(MAX(f p (X))) - SEXP(MIN(f p (X)))上式中,X表示区间内m个点x 1 ~x m 构成的点集合,f p (X) = {f p (x 1 ), f p (x 2 ), ..., f p (x m )}表示点集合通过待测的数值程序f p (x)计算得到的结果集合,f p (x 1 ), f p (x 2 ), ...,f p (x m )分别为m个点x 1 ~x m 通过待测的数值程序f p (x)计算得到的结果,SEXP返回一个浮点数的有符号指数以用于避免两个浮点数的运算出现浮点异常,MAX为取最大值,MIN为取最小值。
4. 根据权利要求1所述的通过排序分析检测数值程序中高浮点误差的方法,其特征在于,步骤S103中第二适应性函数fit2(x)的函数表达式为:fit2(x) = |x| · |f ′ p (x)| / |f p (x)|上式中,|x| · |f ′ p (x)| / |f p (x)|为待测的数值程序f p (x)的条件数,f p (x)为待测数值程序,x为f p (x)的输入,f ′ p (x)为f p (x)的导数。
5.一种通过排序分析检测数值程序中高浮点误差的系统,其特征在于,包括:划分程序单元,用于将待测的数值程序f p (x)对应的输入域I init 按照2的指数幂进行区间划分;排序程序单元,用于针对划分后的每个区间i j 随机选择m个点计算第一适应性函数fit1的值,根据n个区间的第一适应性函数fit1的值进行排序并选择值最大的前k个区间;搜索程序单元,用于针对前k个区间,在第二适应性函数fit2(x)的指导下使用蒙特卡洛采样算法进行搜索得到k个可能触发高浮点误差的输入;然后基于第三适应性函数fit3(x)计算得到k个可能触发高浮点误差的输入对应的浮点误差,选取值最大的j个浮点误差;针对选取的值最大的j个浮点误差,在第三适应性函数fit3(x)的指导下调用Nelder-Mead算法进行局部搜索得到j个浮点误差位 ErrBits,从j个浮点误差位 ErrBits中选取值最大的一个浮点误差位 ErrBits作为待测数值程序f p (x)的最大浮点误差maxerr,输出最大浮点误差maxerr及其相应的点x max ;所述第三适应性函数fit3(x)的函数表达式为:fit3(x)=ErrBits{f(x),f p (x)}上式中,f(x)表示基准数学函数,f p (x)表示待测的数值程序,ErrBits{f(x),f p (x)}表示先计算f(x)和f p (x)两个点之间的浮点数数量、再对该浮点数数量取log 2 对数,用于反映出f(x)和f p (x)两点之间浮点误差大小。
6. 根据权利要求5所述的通过排序分析检测数值程序中高浮点误差的系统,其特征在于,所述排序程序单元中第一适应性函数fit1的函数表达式为:fit1(X)=SEXP(MAX(f p (X)))-SEXP(MIN(f p (X)))上式中,X表示区间内m个点x 1 ~x m 构成的点集合,f p (X)={f p (x 1 ),f p (x 2 ),...,f p (x m )}表示点集合通过待测的数值程序f p (x)计算得到的结果集合,f p (x 1 ),f p (x 2 ),...,f p (x m )分别为m个点x 1 ~x m 通过待测的数值程序f p (x)计算得到的结果,SEXP返回一个浮点数的有符号指数以用于避免两个浮点数的运算出现浮点异常,MAX为取最大值,MIN为取最小值。
7. 根据权利要求5所述的通过排序分析检测数值程序中高浮点误差的系统,其特征在于,所述搜索程序单元中第二适应性函数fit2(x)的函数表达式为:fit2(x)=|x|·|f ′ p (x)|/|f p (x)|上式中,|x|·|f ′ p (x)|/|f p (x)|为待测的数值程序f p (x)的条件数,f p (x)为待测数值程序,x为f p (x)的输入,f ′ p (x)为f p (x)的导数。
8.一种通过排序分析检测数值程序中高浮点误差的系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~4中任意一项所述通过排序分析检测数值程序中高浮点误差的方法。
9.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序用于被微处理器编程或配置以执行权利要求1~4中任意一项所述通过排序分析检测数值程序中高浮点误差的方法。