[发明专利]通过排序分析检测数值程序中高浮点误差的方法及系统在审
申请号: | 202211537672.7 | 申请日: | 2022-12-02 |
公开(公告)号: | CN115858239A | 公开(公告)日: | 2023-03-28 |
发明(设计)人: | 易昕;于恒彪;王争;陈立前;苏醒;姜浩;唐滔;彭林;黄春 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | G06F11/14 | 分类号: | G06F11/14 |
代理公司: | 湖南兆弘专利事务所(普通合伙) 43008 | 代理人: | 谭武艺 |
地址: | 410073 湖南*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 通过 排序 分析 检测 数值 程序 中高 浮点 误差 方法 系统 | ||
1.一种通过排序分析检测数值程序中高浮点误差的方法,其特征在于,包括:
S101,将待测的数值程序fp(x)对应的输入域Iinit按照2的指数幂进行区间划分;
S102,针对划分后的每个区间ij随机选择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作为待测数值程序fp(x)的最大浮点误差maxerr,输出最大浮点误差maxerr及其相应的点xmax。
2.根据权利要求1所述的通过排序分析检测数值程序中高浮点误差的方法,其特征在于,步骤S101包括:
S201,创建空的列表;
S202,确定区间[0,2-1022]和[-2-1022,0];
S203,针对确定的区间[0,2-1022]和[-2-1022,0],从循环变量i=-1022开始,每次将[2i,2i+1]和相应的相反区间加入列表,直到循环变量i=1022,最终划分得到4092个区间。
3.根据权利要求1所述的通过排序分析检测数值程序中高浮点误差的方法,其特征在于,步骤S102中第一适应性函数fit1的函数表达式为:
fit1(X)=SEXP(MAX(fp(X)))-SEXP(MIN(fp(X)))
上式中,X表示区间内m个点x1~xm构成的点集合,fp(X)={fp(x1),fp(x2),...,fp(xm)}表示点集合通过待测的数值程序fp(x)计算得到的结果集合,fp(x1),fp(x2),...,fp(xm)分别为m个点x1~xm通过待测的数值程序fp(x)计算得到的结果,SEXP返回一个浮点数的有符号指数以用于避免两个浮点数的运算出现浮点异常,MAX为取最大值,MIN为取最小值。
4.根据权利要求1所述的通过排序分析检测数值程序中高浮点误差的方法,其特征在于,步骤S103中第二适应性函数fit2(x)的函数表达式为:
′
fit2(x)=|x|·|fp(x)|/|fp(x)|
上式中,|x|·|f′p(x)|/|fp(x)|为待测的数值程序fp(x)的条件数,fp(x)为待测数值程序,x为fp(x)的输入,f′p(x)为fp(x)的导数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211537672.7/1.html,转载请声明来源钻瓜专利网。