通过排序分析检测数值程序中高浮点误差的方法及系统

文档序号:33647754发布日期:2023-03-29 05:29阅读:来源:国知局

技术特征:
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
。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个点x1~x
m
构成的点集合,f
p
(x)={f
p
(x1),f
p
(x2),...,f
p
(x
m
)}表示点集合通过待测的数值程序f
p
(x)计算得到的结果集合,f
p
(x1),f
p
(x2),...,f
p
(x
m
)分别为m个点x1~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.根据权利要求1所述的通过排序分析检测数值程序中高浮点误差的方法,其特征在于,步骤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)两个点之间的浮点数数量、再对该浮点数数量取log2对数,用于反映出f(x)和f
p
(x)两点之间浮点误差大小。6.一种通过排序分析检测数值程序中高浮点误差的系统,其特征在于,包括:划分程序单元,用于将待测的数值程序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
。7.根据权利要求6所述的通过排序分析检测数值程序中高浮点误差的系统,其特征在于,所述排序程序单元中第一适应性函数fit1的函数表达式为:fit1(x)=sexp(max(f
p
(x)))-sexp(min(f
p
(x)))上式中,x表示区间内m个点x1~x
m
构成的点集合,f
p
(x)={f
p
(x1),f
p
(x2),...,f
p
(x
m
)}表示点集合通过待测的数值程序f
p
(x)计算得到的结果集合,f
p
(x1),f
p
(x2),...,f
p
(x
m
)分别为m个点x1~x
m
通过待测的数值程序f
p
(x)计算得到的结果,sexp返回一个浮点数的有符号指数以用于避免两个浮点数的运算出现浮点异常,max为取最大值,min为取最小值。8.根据权利要求6所述的通过排序分析检测数值程序中高浮点误差的系统,其特征在于,所述搜索程序单元中第二适应性函数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)的导数;所述搜索程序单元中第三适应性函数fit3(x)的函数表达式为:fit3(x)=errbits{f(x),f
p
(x)}上式中,f(x)表示基准数学函数,f
p
(x)表示待测的数值程序,errbits{f(x),f
p
(x)}表示先计算f(x)和fp(x)两个点之间的浮点数数量、再对该浮点数数量取log2对数,用于反映出f(x)和f
p
(x)两点之间浮点误差大小。9.一种通过排序分析检测数值程序中高浮点误差的系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~5中任意一项所述通过排序分析检测数值程序中高浮点误差的方法。10.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序用于被微处理器编程或配置以执行权利要求1~5中任意一项所述通过排序分析检测数值程序中高浮点误差的方法。

技术总结
本发明公开了一种通过排序分析检测数值程序中高浮点误差的方法及系统,本发明方法包括将待测的数值程序对应的输入域进行区间划分;针对每个区间随机选择多个点计算适应性函数的值并选择值最大的前k个区间;针对前k个区间,基于适应性函数的指导下使用蒙特卡洛采样算法进行搜索k个输入,基于适应性函数计算对应的浮点误差并选取值最大的j个浮点误差,在适应性函数的指导下调用Nelder-Mead算法进行局部搜索最终结果。本发明基于提出的搜索指导函数对每个被划分的区间进行全面、有效的筛选从而得到最有可能触发高浮点误差的几个区间,在确保高浮点误差检测正确性的基础上极大的提升了性能,能够快速减少搜索空间以加速搜索过程。过程。过程。


技术研发人员:易昕 于恒彪 王争 陈立前 苏醒 姜浩 唐滔 彭林 黄春
受保护的技术使用者:中国人民解放军国防科技大学
技术研发日:2022.12.02
技术公布日:2023/3/28
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1