首页> 中国专利> 一种超越函数计算方法及装置

一种超越函数计算方法及装置

摘要

本发明提供一种超越函数计算方法及装置,该方法通过获取超越函数的输入值,从超越函数对应的区间‑计算方法映射关系中确定输入值对应的目标计算方法,基于目标计算方法计算在超越函数的自变量为输入值时的值,其中,超越函数对应的区间‑计算方法映射关系中包括至少两个区间,以及各区间与计算方法的映射关系,该至少两个区间属于超越函数的定义域,也就是说,超越函数的定义域包括至少两个区间,针对不同区间,设置了不同的计算方法,从而可以使得各计算方法在其对应的区间上充分展现出优势,降低超越函数的运算时间,降低运算复杂度,提升运算精度。

著录项

  • 公开/公告号CN112749367A

    专利类型发明专利

  • 公开/公告日2021-05-04

    原文格式PDF

  • 申请/专利权人 深圳市国微电子有限公司;

    申请/专利号CN201911056157.5

  • 发明设计人 林涛;阎燕山;刘建新;王文青;

    申请日2019-10-31

  • 分类号G06F17/15(20060101);

  • 代理机构44281 深圳鼎合诚知识产权代理有限公司;

  • 代理人江婷;李发兵

  • 地址 518057 广东省深圳市南山区高新南一道015号国微研发大楼6层

  • 入库时间 2023-06-19 10:51:07

说明书

技术领域

本发明涉及算法应用领域,具体而言,涉及但不限于一种超越函数计算方法及装置。

背景技术

超越函数是指变量之间的关系不能用加、减、乘、除、乘方、开方运算表示的一类特殊的函数,主要包括三角函数、对数函数、指数和对数函数等。超越函数在飞控、导航领域具有重要的应用,其运算速度和运算精度直接关系到飞控、导航的速度和精度。因此,研究和实现高速和高精度的超越函数具有重要的意义。

现有技术中,在计算超越函数时,通常通过某种逼近算法来计算,或者通过迭代算法来实现,但是,这两种计算方法各有缺陷(例如,对于逼近算法,在输入值较大时,存在算法复杂度高和运算时间较长的缺陷;对于迭代算法,在定义域的某些区间计算结果误差较大),从而导致运算结果误差大、运算时间长等问题。

发明内容

本发明提供的超越函数计算方法及装置,主要解决的技术问题是现有超越函数的不同计算方法各有缺陷,从而导致运算结果误差大、运算时间长等问题。

为解决上述技术问题,本发明提供一种超越函数计算方法,包括:

获取超越函数的输入值;

从所述超越函数对应的区间-计算方法映射关系中确定所述输入值对应的目标计算方法,所述超越函数对应的区间-计算方法映射关系中包括至少两个区间,以及各区间与计算方法的映射关系,所述至少两个区间属于所述超越函数的定义域;

基于所述目标计算方法计算在所述超越函数的自变量为所述输入值时的值。

可选的,所述输入值为浮点数。

可选的,基于所述目标计算方法计算在所述超越函数的自变量为所述输入值时的值包括:

基于所述目标计算方法,以定点数的形式计算在所述超越函数的自变量为所述输入值时的值。

可选的,所述超越函数包括以下至少一种:三角函数、对数函数,反三角函数,指数函数。

可选的,所述从所述超越函数对应的区间-计算方法映射关系中确定所述输入值对应的目标计算方法之前,还包括:

将所述超越函数的定义域划分为至少两个区间,并确定各区间对应的计算方法;

基于各所述区间以及其对应的计算方法确定所述超越函数的区间-计算方法映射关系。

可选的,在所述超越函数为反正弦函数时,所述将超越函数的定义域划分为至少两个区间并确定各区间对应的计算方法包括:

将所述反正弦函数的定义域[0,1]划分为至少两个区间并确定各区间对应的计算方法。

可选的,在所述超越函数为反正弦函数时,所述从所述超越函数对应的区间-计算方法映射关系中确定所述输入值对应的目标计算方法包括:

在所述输入值为负数时,基于所述输入值的绝对值从所述超越函数对应的区间-计算方法映射关系中确定对应的目标计算方法;

所述基于所述目标计算方法计算在所述超越函数的自变量为所述输入值时的值包括:

基于所述目标计算方法计算在所述超越函数的自变量为所述输入值的绝对值时的值;

基于自变量为所述输入值的绝对值时所述超越函数的值确定自变量为所述输入值时所述超越函数的值。

可选的,所述将所述反余弦函数的定义域[0,1]划分为至少两个区间并确定各区间对应的计算方法包括:

将[0,1]划分为三个区间;

确定所述三个区间中,取值最小的区间对应的计算方法为逼近算法,取值中间的区间对应的计算方法为迭代算法,取值最大的区间对应的计算方法为间接计算方法,所述间接计算方法为基于反正弦函数计算所述反余弦函数。

可选的,所述迭代算法为双次迭代算法。

进一步地,本发明还提供一种超越函数计算装置,其特征在于,包括:

获取模块,用于获取超越函数的输入值;

确定模块,用于从所述超越函数对应的区间-计算方法映射关系中确定所述输入值对应的目标计算方法,所述超越函数对应的区间-计算方法映射关系中包括至少两个区间,以及各区间与计算方法的映射关系,所述至少两个区间属于所述超越函数的定义域;

计算模块,用于基于所述目标计算方法计算在所述超越函数的自变量为所述输入值时的值。

本发明的有益效果是:

本发明提供一种超越函数计算方法及装置,针对现有超越函数的不同计算方法各有缺陷,从而导致运算结果误差大、运算时间长等缺陷,通过获取超越函数的输入值,从超越函数对应的区间-计算方法映射关系中确定输入值对应的目标计算方法,基于目标计算方法计算在超越函数的自变量为输入值时的值,其中,超越函数对应的区间-计算方法映射关系中包括至少两个区间,以及各区间与计算方法的映射关系,该至少两个区间属于超越函数的定义域,也就是说,本发明中,超越函数的定义域包括至少两个区间,针对不同区间,设置了不同的计算方法,从而可以使得各计算方法在其对应的区间上充分展现出优势,降低超越函数的运算时间,降低运算复杂度,提升运算精度。

本发明其他特征和相应的有益效果在说明书的后面部分进行阐述说明,且应当理解,至少部分有益效果从本发明说明书中的记载变的显而易见。

附图说明

图1为本发明实施例一的超越函数计算方法流程图;

图2为本发明实施例一的区间-计算方法映射关系建立流程图;

图3为本发明实施例一的超越函数计算过程流程图;

图4为本发明实施例二的超越函数计算方法细化流程图;

图5为本发明实施例二的反正弦函数双次迭代过程流程图;

图6为本发明实施例三的超越函数计算装置结构示意图;

图7为本发明实施例三的FPU结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

实施例一:

现有技术中,在计算超越函数时,通常存在两种计算方法,第一种为通过某种逼近算法来计算,第二种为通过迭代算法来计算;但是,不同计算方法在不同区间上存在缺陷,例如,对于第一种计算方法,在输入值较小时,运算速度很快,但是,在输入值较大时,算法复杂度高、运算时间较长;对于第二种计算方法,在某些定义域区间上,计算结果误差较大。为了解决该问题,本实施例提出一种超越函数计算方法,参见图1所示,图1为本实施例提供的超越函数计算方法的基本流程图,该超越函数计算方法包括:

S101、获取超越函数的输入值。

需要说明的是,超越函数是指变量之间的关系不能用加、减、乘、除、乘方、开方运算表示的一类特殊的函数。例如,超越函数可以包括三角函数、对数函数、指数和对数函数等中的至少一种。应当理解的是,三角函数包括正弦函数、余弦函数、正切函数、余切函数、反三角函数等,反三角函数包括反正弦函数(arcsin x),反余弦函数(arccos x),反正切函数(arctan x),反余切函数(arccot x),反正割函数(arcsec x),反余割函数(arccsc x)。

本实施例中,输入值可以是定点数,也可以是浮点数。浮点数可以是32bit单精度浮点数和/或64bit双精度浮点数。

S102、从超越函数对应的区间-计算方法映射关系中确定输入值对应的目标计算方法。

本实施例中,超越函数对应的区间-计算方法映射关系中包括至少两个区间,以及各区间与计算方法的映射关系,需要说明的是,这至少两个区间属于超越函数的定义域。应当理解的是,不同超越函数,其定义域不同,计算方法不同,因此,不同超越函数,其对应的区间-计算方法映射关系不同。其中,计算方法包括但不限于迭代算法、逼近算法等,迭代算法可以基于cordic(Coordinate Rotation Digital Computer,坐标旋转数字计算方法)算法来实现,迭代算法可以是单次迭代算法,也可以是双次迭代算法。

本实施例中,在获取超越函数的输入值后,根据该超越函数对应的区间-计算方法映射关系,从中确定输入值对应的区间,并将该区间对应的计算方法作为目标计算方法。例如,假设超越函数1的区间-计算方法映射关系如下表1所示,表1中,假设输入值为1.5,则目标计算方法为计算方法2。

表1

为了更好的理解本实施例中的超越函数的区间-计算方法映射关系,这里以几个示例进行说明:

示例一:log函数(对数函数)。参见下表2所示,log函数的区间-计算方法映射关系如表2所示,可以将其定义域划分为(2dfe2670,3f800000)、(3f800000,487fffbf)、3f800000(即1)三个区间,对于(2dfe2670,3f800000)、(3f800000,487fffbf)这两个区间,采用cordic算法(即迭代算法),对于3f800000,直接输出结果logx=0。

表2

其中,采用cordic算法计算log函数时,算法的迭代公式如下:

对于i<4,迭代公式为:

其中i≥0,且i为整数。

对于i≥4,迭代公式为:

符号d

示例二:exp函数计算(指数函数)。参见表3所示,exp函数的区间-计算方法映射关系如表3所示,在区间[0,337fffff]和[b3000000,0],采用逼近算法,即泰勒近似的方法,此时,exp(x)=0;在区间(337fffff,414223a4]和区间[c14223a4,b3000000),采用cordic算法。

表3

其中,采用cordic算法计算exp函数时,算法的迭代公式如下:

对于i<4,迭代公式为:

其中i≥0,且i为整数。

对于i≥4,迭代公式为:

符号d

示例三:arctan函数(反正切函数)。参见下表4所示,arctan函数的区间-计算方法映射关系如表4所示,可以将定义域划分为[b9b89ba2,39b89ba2](即[-a,a],其中,a表示接近于0的某个数)、(39b89ba2,4c700518)、(cc700518,b9b89ba2)、[4c700518,Inf],对于[b9b89ba2,39b89ba2],采用逼近算法(即泰勒近似的方法),此时,arctan(x)=x对于区间(39b89ba2,4c700518)和区间(cc700518,b9b89ba2),采用cordic算法,在区间[4c700518,Inf],直接给出计算结果arctan(x)=pi/2。

表4

其中,采用cordic算法计算arctan函数时,算法的迭代公式如下:

其中,i≥0,且i为整数。符号d

本实施例中,在从超越函数对应的区间-计算方法映射关系中确定输入值对应的目标计算方法之前,参见图2所示,还包括:

S201、将超越函数的定义域划分为至少两个区间,并确定各区间对应的计算方法。

需要说明的是,超越函数的定义域为该超越函数的自变量的取值范围。例如,对于反正弦函数,其定义域为[-1,1]。

本实施例中,将超越函数的定义域划分为至少两个区间,并确定各区间对应的计算方法。例如,可以将超越函数的定义域划分为2个区间,或3个区间,或4个区间等。具体的区间数的取值、各区间的取值范围、各区间对应的计算方法均可以根据实际需要灵活设置。例如,区间的划分、各区间对应的计算方法可以基于该超越函数本身的特性以及各计算方法的优缺点来确定。

本实施例中,为了保证计算结果的准确性,可以基于各计算方法在超越函数的各区间的准确性来划分区间,以及确定各区间对应的计算方法。例如,假设对于某一超越函数,其计算方法包括计算方法1和计算方法2,定义域为[0,1],在[0,0.5]区间,采用计算方法1计算超越函数得到的值与标准结果相比,误差较大,采用计算方法2计算超越函数得到的值与标准结果相比,误差较小;在(0.5,1]区间,采用计算方法2计算超越函数得到的值与标准结果相比,误差较大,采用计算方法1计算超越函数得到的值与标准结果相比,误差较小,因此,将定义域划分为[0,0.5]、(0.5,1],区间[0,0.5]对应计算方法1,区间(0.5,1]对应计算方法2。

S202、基于各区间以及其对应的计算方法确定超越函数的区间-计算方法映射关系。

本实施例中,基于S201中确定的各区间以及各区间对应的计算方法确定超越函数的区间-计算方法映射关系。

S103、基于目标计算方法计算在超越函数的自变量为输入值时的值。

本实施例中,在确定目标计算方法后,基于目标计算方法计算在超越函数的自变量为输入值时的值,也即,假设超越函数以f(x)表示,输入值为c,则基于目标计算方法计算f(c)。

本实施例中,若目标计算方法为迭代算法,输入值为浮点数,如前述示例一、二、三中所记载的,可以基于目标计算方法,以定点数的形式计算在超越函数的自变量为输入值时的值。其中,采样定点数,定点位宽和迭代次数可以根据实际需要来确定(例如,可以根据算法仿真结果进行确定),从而保证迭代计算的结果和标准计算的结果误差在预设范围内(例如在1bit范围内)。

本实施例中,对于属性为奇函数或偶函数的超越函数,f(x)与f(-x)之间存在固定关系,因此,可以将其定义域取值为正数的区间划分为至少两个区间,并确定各区间对应的计算方法,这样,在S102中,在输入值在负数时,可以基于该输入值的绝对值从超越函数对应的区间-计算方法映射关系中确定输入值对应的目标计算方法,此时,参见图3所示,基于目标计算方法计算在超越函数的自变量为输入值时的值包括:

S301、基于目标计算方法计算在超越函数的自变量为输入值的绝对值时的值。

假设超越函数的输入值为c,且c为负数,基于目标计算方法计算f(|c|),应当理解的是,|c|为c的绝对值。

S302、基于自变量为输入值的绝对值时超越函数的值确定自变量为输入值时超越函数的值。

若超越函数为奇函数,则f(c)=-f(|c|);若超越函数为偶函数,则f(c)=f(|c|)。

为了更好的理解,这里以超越函数为反正弦函数为例进行说明,将反正弦函数的定义域[0,1]划分为至少两个区间,并确定各区间对应的计算方法,然后建立反正弦函数的区间-计算方法映射关系,在输入值为正数时,则直接基于输入值从反正弦函数的区间-计算方法映射关系中确定目标计算方法,并在S103中直接基于目标计算方法计算自变量为输入值时,反正弦函数的值;在输入值为负数时,则基于输入值的绝对值从反正弦函数的区间-计算方法映射关系中确定目标计算方法,并在S103中,先基于目标计算方法计算自变量为输入值的绝对值时,反正弦函数的值,在基于自变量为输入值的绝对值时反正弦函数的值,确定自变量输入值时,反正弦函数的值。

本实施例提供一种超越函数计算方法,通过获取超越函数的输入值,从超越函数对应的区间-计算方法映射关系中确定输入值对应的目标计算方法,基于目标计算方法计算在超越函数的自变量为输入值时的值,其中,超越函数对应的区间-计算方法映射关系中包括至少两个区间,以及各区间与计算方法的映射关系,该至少两个区间属于超越函数的定义域,也就是说,本实施例中,超越函数的定义域包括至少两个区间,针对不同区间,设置了不同的计算方法,从而可以使得各计算方法在其对应的区间上充分展现出优势,降低超越函数的运算时间,降低运算复杂度,提升运算精度。

实施例二:

为了更好的理解本发明,本实施例结合更加具体的示例进行说明。请参见图4所示,图4为本发明第二实施例提供的超越函数计算方法的细化流程图,该超越函数计算方法包括:

S401、将超越函数的定义域划分为至少两个区间,并为各区间确定对应的计算方法。

本实施例中,在超越函数为奇函数或偶函数时,其定义域关于原点对称,可以将取值为正数的定义域划分为至少两个区间。例如,假设某一超越函数的定义域为[-A,A],则可以将[0,A]划分为至少两个区间,[0,A1],(A1,A],为区间[0,A1]确定计算方法1,为区间(A1,A]确定计算方法2。

S402、基于各区间及各区间对应的计算方法确定超越函数的区间-计算方法映射关系。

基于S201中确定的区间及对应的计算方法确定区间-计算方法映射关系。

S403、获取超越函数的输入值。

本实施例中,输入值为浮点数,当然,在其他实施例中,输入值可以是定点数。

S404、从超越函数对应的区间-计算方法映射关系中确定输入值对应的目标计算方法。

本实施例中,在输入值为正数时,直接从区间-计算方法映射关系中确定输入值所属的区间,将该区间对应的计算方法作为目标计算方法。在输入值为负数时,则从区间-计算方法预设关系中确定该输入值的绝对值所属的区间,将该区间对应的计算方法作为目标计算方法。

S405、基于目标计算方法计算在超越函数的自变量为输入值时的值。

在输入值为正数时,直接基于目标计算方法计算在超越函数的自变量为输入值时的值;在输入值为负数时,则先基于目标计算方法计算在超越函数的自变量为输入值的绝对值时的值,再根据超越函数的奇函数特性或偶函数特性,基于自变量为输入值的绝对值时超越函数的值,确定自变量为输入值时超越函数的值。

本实施例中,在目标计算方法为迭代算法时,例如是基于cordic算法的迭代算法时,可以采用定点数进行运算,其中,采样定点数,定点位宽和迭代次数可以根据实际需要来确定(例如,可以根据算法仿真结果进行确定),从而保证迭代计算的结果和标准计算的结果误差在预设范围内(例如在1bit范围内)。

为了更好的理解本发明,这里以一个示例进行说明。

示例一:假设超越函数为反正弦函数。参见表1所示,表1为反正弦函数的区间-计算方法映射关系表,将反正弦函数的定义域[0,1]划分为3个区间[0,a]、(a,b]、(b,1],取值最小的区间(即区间[0,a])对应的计算方法为逼近算法,取值中间的区间(即区间(a,b])对应的计算方法为迭代算法,取值最大的区间为间接计算方法。

表5

需要说明的是,当输入值x趋向于0时,由arcsin(x)函数曲线可知,当x足够小的时候,其曲线和y=x近似重合,因此当x足够小的时候可以由y=x近似arcsin(x)=x。通过这种方式可以直接得到arcsin(x)的计算结果。因此,在输入值属于区间[0,a]时,采用逼近算法(即泰勒展开算法)计算反正弦函数,a为趋向于0的数。其中,arcsinx泰勒展开的公式如下:

在区间[0,5.589425e-04],对应浮点区间是[0,3a1285fe],通过MATLAB(矩阵实验室)仿真发现,在该区间内arcsin(x)=x成立。故在该定义域区间内直接arcsin(x)=x计算反正炫函数的值,也即a=5.589425e-04=3a1285fe。由于arcsin(x)+arccos(x)=pi/2,因此在该区间内,计算反余弦函数的方法可以是:arccos(x)=pi/2-x

在区间(a,b]时,采用迭代算法计算反正弦函数,其中,迭代算法基于基于cordic算法来实现。本实施例中,可以采用单次迭代算法来计算反正弦函数,单次迭代的cordic算法的基本公式如下:

m=-1表示双曲旋转模式;m=0表示线性旋转模式;m=1表示圆周旋转模式,在这里为了计算方便,可以使用圆周旋转模式计算反正弦函数,即m=1,那么通用公式变为:

实现反正弦的条件是:在矢量模式下,当m=1时,不断地使y

旋转方向的判定为d

经过N次迭代后,计算结果为

式中,c为输入值。

若作如下初始化设置,可得到arcsin的值:

当N趋向于无穷大时,K值收敛且K≈1.646760258。那么初始值

带入初始值后得到:

计算出z

在区间(a,b]时,也可以采用双次迭代算法计算反正弦函数。arcsin(x)双次Cordic迭代过程如图5所示,在(i+1)小于n不成立时,此时,i+1=n,z

算法如下:

其中,sign函数为符号函数,d

在区间(b,1]时,采用间接计算方法计算反正弦函数。对较大的输入值,由于反正弦函数斜率有变化,如果直接使用迭代算法进行计算,那么计算结果不收敛(不收敛表示通过迭代算法计算的arcsin的值和通过MATLAB计算的arcsin的值误差很大),会得到误差很大甚至错误的计算结果,考虑到迭代算法在输入值较大的情况下,计算反余弦是收敛的,那么可以利用反正弦函数和反余弦函数的函数关系,基于反余弦函数计算反正弦函数,也就是说,可以先基于迭代算法计算反余弦函数的值,再基于arccosx=pi/2–arcsinx计算反正弦函数的值。

基于迭代算法计算反余弦函数的值时,可以采用单次迭代cordic算法实现,迭代算法如下:

不断地使y

基于迭代算法计算反余弦函数的值时,也可以采用双次迭代cordic算法实现,arccos(x)双次Cordic迭代算法如下:

由上面arcsin和arccos的双次迭代cordic算法公式可以看出,arcsin和arccos的迭代方式相同,只是在旋转方向d

本实施例提供一种超越函数计算方法,通过获取超越函数的输入值,从超越函数对应的区间-计算方法映射关系中确定输入值对应的目标计算方法,基于目标计算方法计算在超越函数的自变量为输入值时的值,其中,超越函数对应的区间-计算方法映射关系中包括至少两个区间,以及各区间与计算方法的映射关系,该至少两个区间属于超越函数的定义域,也就是说,本实施例中,超越函数的定义域包括至少两个区间,针对不同区间,设置了不同的计算方法,从而可以使得各计算方法在其对应的区间上充分展现出优势,降低超越函数的运算时间,降低运算复杂度,提升运算精度,并且,在计算方法为迭代算法时,采用定点数机械计算,减少了计算过程中精度的损失,进一步提高了运算的精度。

实施例三

本实施例在实施例一和实施例二的基础上,提供一种超越函数计算装置,参见图6所示,超越函数计算装置包括:

获取模块601,用于获取超越函数的输入值;

确定模块602,用于从超越函数对应的区间-计算方法映射关系中确定输入值对应的目标计算方法,超越函数对应的区间-计算方法映射关系中包括至少两个区间,以及各区间与计算方法的映射关系,至少两个区间属于超越函数的定义域;

计算模块603,用于基于目标计算方法计算在超越函数的自变量为输入值时的值。

需要说明的是,超越函数是指变量之间的关系不能用加、减、乘、除、乘方、开方运算表示的一类特殊的函数。例如,超越函数可以包括三角函数、对数函数、指数和对数函数等中的至少一种。应当理解的是,三角函数包括正弦函数、余弦函数、正切函数、余切函数、反三角函数等,反三角函数包括反正弦函数(arcsin x),反余弦函数(arccos x),反正切函数(arctan x),反余切函数(arccot x),反正割函数(arcsec x),反余割函数(arccsc x)。

本实施例中,输入值可以是定点数,也可以是浮点数。

本实施例中,超越函数对应的区间-计算方法映射关系中包括至少两个区间,以及各区间与计算方法的映射关系,需要说明的是,这至少两个区间属于超越函数的定义域。应当理解的是,不同超越函数,其定义域不同,计算方法不同,因此,不同超越函数,其对应的区间-计算方法映射关系不同。其中,计算方法包括但不限于迭代算法、逼近算法等,迭代算法可以基于cordic(Coordinate Rotation Digital Computer,坐标旋转数字计算方法)算法来实现,迭代算法可以是单次迭代算法,也可以是双次迭代算法。

本实施例中,在获取超越函数的输入值后,根据该超越函数对应的区间-计算方法映射关系,从中至少输入值对应的区间,并将该区间对应的计算方法作为目标计算方法。

本实施例中,在从超越函数对应的区间-计算方法映射关系中确定输入值对应的目标计算方法之前,还包括:将超越函数的定义域划分为至少两个区间,并确定各区间对应的计算方法;基于各区间以及其对应的计算方法确定超越函数的区间-计算方法映射关系。需要说明的是,超越函数的定义域为该超越函数的自变量的取值范围。例如,对于反正弦函数,其定义域为[-1,1]。本实施例中,将超越函数的定义域划分为至少两个区间,并确定各区间对应的计算方法。例如,可以将超越函数的定义域划分为2个区间,或3个区间,或4个区间等。具体的区间数的取值、各区间的取值范围、各区间对应的计算方法均可以根据实际需要灵活设置。例如,区间的划分、各区间对应的计算方法可以基于该超越函数本身的特性以及各计算方法的优缺点来确定。本实施例中,为了保证计算结果的准确性,可以基于各计算方法在超越函数的各区间的准确性来划分区间,以及确定各区间对应的计算方法。例如,假设对于某一超越函数,其计算方法包括计算方法1和计算方法2,定义域为[0,1],在[0,0.5]区间,采用计算方法1计算超越函数得到的值与标准结果相比,误差较大,采用计算方法2计算超越函数得到的值与标准结果相比,误差较小;在(0.5,1]区间,采用计算方法2计算超越函数得到的值与标准结果相比,误差较大,采用计算方法1计算超越函数得到的值与标准结果相比,误差较小,因此,将定义域划分为[0,0.5]、(0.5,1],区间[0,0.5]对应计算方法1,区间(0.5,1]对应计算方法2。

本实施例中,若目标计算方法为迭代算法,输入值为浮点数,如前述示例一、二、三中所记载的,可以基于目标计算方法,以定点数的形式计算在超越函数的自变量为输入值时的值。其中,采样定点数,定点位宽和迭代次数可以根据实际需要来确定(例如,可以根据算法仿真结果进行确定),从而保证迭代计算的结果和标准计算的结果误差在预设范围内(例如在1bit范围内)。

本实施例中,对于属性为奇函数或偶函数的超越函数,f(x)与f(-x)之间存在固定关系,因此,可以将其定义域取值为正数的区间划分为至少两个区间,并确定各区间对应的计算方法,这样,在输入值在负数时,可以基于该输入值的绝对值从超越函数对应的区间-计算方法映射关系中确定输入值对应的目标计算方法,此时,基于目标计算方法计算在超越函数的自变量为输入值时的值包括:基于目标计算方法计算在超越函数的自变量为输入值的绝对值时的值,基于自变量为输入值的绝对值时超越函数的值确定自变量为输入值时超越函数的值。例如,假设超越函数的输入值为c,且c为负数,基于目标计算方法计算f(|c|),应当理解的是,|c|为c的绝对值,若超越函数为奇函数,则f(c)=-f(|c|);若超越函数为偶函数,则f(c)=f(|c|)。

本实施例中,上述获取模块、确定模块、计算模块可以由处理器或其他硬件模块来实施。在输入值为浮点数时,获取模块、确定模块、计算模块可以由FPU(Floating PointUnit,浮点运算单元)或其他硬件模块来实现。例如,获取模块可以由协处理器接口cp_if来实现,确定模块和计算模块可以由算法电路来实现,参见图7所示,FPU包括协处理器接口cp_if701、算法电路702,cp_if701接收输入值后,负责指令译码和指令执行,译码出运算操作数、运算使能和舍入模式后,发送给算法电路702,算法电路702基于输入值运算完成之后将运算结果和一些状态信号返回给cp_if701中的寄存器存储起来,然后CPU(CentralProcessing Unit,中央处理器)通过读指令取出运算结果作其他使用。其中,算法电路为超越函数算法电路例如,可以是arcsin函数/arccos函数算法电路。

需要说明的是,实施例一和实施例二中的所有示例均适用于本实施例。

本实施例提供一种超越函数计算装置,通过获取超越函数的输入值,从超越函数对应的区间-计算方法映射关系中确定输入值对应的目标计算方法,基于目标计算方法计算在超越函数的自变量为输入值时的值,其中,超越函数对应的区间-计算方法映射关系中包括至少两个区间,以及各区间与计算方法的映射关系,该至少两个区间属于超越函数的定义域,也就是说,本实施例,超越函数的定义域包括至少两个区间,针对不同区间,设置了不同的计算方法,从而可以使得各计算方法在其对应的区间上充分展现出优势,降低超越函数的运算时间,降低运算复杂度,提升运算精度,并且,采用纯硬件实现超越函数的计算,可以快速得到运算结果,进一步提高了运算的速度。

可见,本领域的技术人员应该明白,上文中所公开方法中的全部或某些步骤、装置中的功能模块/单元可以被实施为软件(可以用计算装置可执行的计算机程序代码来实现)、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。

以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号