CN111831257A - 一种用于计算正弦或余弦函数的实现方法及装置 - Google Patents
一种用于计算正弦或余弦函数的实现方法及装置 Download PDFInfo
- Publication number
- CN111831257A CN111831257A CN202010607527.6A CN202010607527A CN111831257A CN 111831257 A CN111831257 A CN 111831257A CN 202010607527 A CN202010607527 A CN 202010607527A CN 111831257 A CN111831257 A CN 111831257A
- Authority
- CN
- China
- Prior art keywords
- result
- constant
- mapped
- range
- sine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/548—Trigonometric functions; Co-ordinate transformations
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
一种用于计算正弦或余弦函数的实现方法及装置,该方法包括:步骤S1:将输入数映射到[0,π/4]的范围内,并获取内部运算的函数类型和结果的正负符号;步骤S2:根据步骤S1映射到[0,π/4]的范围内的数获取常数结果和最近的估计点;步骤S3:获取对应的正弦或余弦函数的估计值,即多项式计算所需的系数;步骤S4:获取步骤S1中映射到[0,π/4]范围内的数到最近估计点的距离;步骤S5:利用估计值和映射到[0,π/4]范围内的数到最近估计点的距离完成多项式运算;步骤S6:对映射到[0,π/4]范围内的数以及常数结果和多项式运算的结果进行选择,进行规整化及舍入处理后输出。该装置用来实现上述方法。本发明具有原理简单、精度高、耗费硬件资源不大、低计算延时、系数占用存储空间相对较小等优点。
Description
技术领域
本发明主要涉及到技术领域,特指一种用于计算正弦或余弦函数的实现方法及装置。
背景技术
正弦函数和余弦函数是科学技术和工程应用中的重要组成部分。相较于基本初等函数而言,其具有实现相对复杂、计算延时大、实现方法繁多等特点。而要获得高精度的满足IEEE-754标准的单精度浮点数输出结果,其代价相对更高。传统技术中,主要实现方法包括:坐标旋转法(CORDIC:Cordinate Rotation Digital Computer),查表法以及多项式逼近法。一般而言,由于坐标旋转法收敛较慢,要达到较高精度,需要很多次迭代,速度慢,计算延时较高;查表法虽然快速,但随着对结果精度要求的提高,其所需表空间呈几何倍数增长;而多项式逼近法,收敛较快,能在低计算延时条件下输出高精度结果。
对于多项式逼近法,为了减少迭代次数的同时增加结果精度,一般会提前设定估计点,对结果进行预测与估计。输入值与估计点之间的距离越近,则估计点的估计结果与理想的精确结果越接近,则越能在更少的迭代次数下获得更高精度的结果。结果的估计值一般以系数表的形式存储在相应的电路或器件中。
这类方法存在的主要问题有:
(1)在可忽略常数π的误差对结果的影响的输入范围内,使用一般的多项式逼近的方法,进行正弦或余弦函数的运算过程中,对于IEEE-754标准的单精度浮点数表示的输出,难以达到理想的精度要求(即最大误差小于或等于单精度浮点数尾数的最后一位所表示的1个单位大小)。
(2)在可忽略常数π的误差对结果的影响的输入范围内,要保证输出结果达到理想精度,使用一般的多项式逼近的方法进行正弦或余弦函数的运算,所需的系数表空间极大。
(3)在进行正弦或余弦函数的运算过程中,由于所计算的多项式中项式的正负符号交替出现导致的输出数值的波动,以及处于相邻两个估计点中间的相邻两个输入数使用不同的估计结果进行多项式运算而导致的输出数值的波动,导致难以保证其输出结果的单调性与原函数一致。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、精度高、耗费硬件资源不大、低计算延时、系数占用存储空间相对较小的用于计算正弦或余弦函数的实现方法及装置。
为解决上述技术问题,本发明采用以下技术方案:
一种用于计算正弦或余弦函数的实现方法,其步骤包括:
步骤S1:将输入数映射到[0,π/4]的范围内,并获取内部运算的函数类型和结果的正负符号;
步骤S2:根据步骤S1映射到[0,π/4]的范围内的数获取常数结果和最近的估计点;
步骤S3:根据内部运算的函数类型和最近的估计点获取对应的正弦或余弦函数的估计值,即多项式计算所需的系数;
步骤S4:获取步骤S1中映射到[0,π/4]范围内的数到最近估计点的距离;
步骤S5:利用估计值和映射到[0,π/4]范围内的数到最近估计点的距离完成多项式运算;
步骤S6:对映射到[0,π/4]范围内的数以及常数结果和多项式运算的结果进行选择,并对选中数据进行规整化及舍入处理,然后输出最终结果。
作为本发明方法的进一步改进:所述步骤S1的具体实施步骤为:
步骤S101:若输入数的绝对值处于[0,π/4]内,则取输入的函数类型标识为内部运算的函数类型,并根据输入数的符号与函数类型标识获取最终结果的符号;
步骤S102:否则,将输入数据根据正弦或余弦函数的周期性和对称性,映射到[0,π/2]内,并获取结果正负符号;
步骤S103:根据三角正弦或余弦函数的变换原理,根据所求正弦或余弦函数的类型,将数据进一步映射到[0,π/4],并获取内部运算的函数类型标识,其映射方程式为sin x=cos(π/2-x)或者cos x=sin(π/2-x);将数进一步映射到[0,π/4]的范围内,并获得内部运算的函数类型标识,以0标识正弦运算,1标识余弦运算。
作为本发明方法的进一步改进:所述步骤S2的具体实施步骤为:
步骤S201:根据已映射到[0,π/4]的数的部分数位,获取最近的估计点;
步骤S202:根据已映射到[0,π/4]的数,获取常数结果。若映射后的数等于特定的几个常数,则将用于标识常数结果有效的数位置1,表示存在有效常数结果输出;有效常数结果的存在,主要用于消除在相邻两个估计点正中间的极窄数域范围内,因系数值突变带来的结果数值的波动;对于步骤(1)中映射到[0,π/4]范围的结果,若其正好等于π/4,则直接给予常数结果。
作为本发明方法的进一步改进:所述步骤S3中,以最近的估计点的部分数位和步骤S1中获得的内部运算的函数类型标识作为索引,完成系数的查找。
作为本发明方法的进一步改进:所述步骤S4中,对映射到[0,π/4]范围内的数和最近估计点做加法运算,获取结果;对步骤S1中映射到[0,π/4]内的数和最近估计点进行加法运算,获得两者之间的距离;步骤S4中的两个数据阶码具备一致性,无需进行对阶,直接尾数相加,然后根据尾数的前导0的个数调整阶码。
作为本发明方法的进一步改进:所述步骤S5中,根据输入变量以及相关系数,完成多项式运算,其中多项式形式如下:
Y=C0+(C1+C2×D)×D (2)
其中C0,C1,C2表示系数,D为步骤S4中所得的映射到[0,π/4]范围内的数到最近估计点的距离值;其中D可以为正数或者负数,由计算D值的两个数在数轴上的相对位置决定;系数C0,C1,C2可以相同或只存在符号位的不同或只相差一个常数倍,这个常数倍通过移位来完成计算。
作为本发明方法的进一步改进:所述步骤S6的步骤包括:
步骤S601:若检测到常数结果的输入,则选择常数结果作为选中数;即:若常数结果的有效标识符为1,则常数结果为选中数;
步骤S602:否则,当步骤S1中映射到[0,π/4]范围内的数小于或等于设定阈值且内部运算的函数类型为正弦函数时,选取输入映射[0,π/4]范围内的数为选中数;
步骤S603:否则选取多项式计算的结果为选中数;
步骤S604:利用步骤S1中获得的结果的正负号给选中数赋予正确的符号位;
步骤S605:对选中数进行舍入和规格化处理,获得符合IEEE-754标准的单精度浮点数输出。
作为本发明方法的进一步改进:在进行舍入处理时,使用向偶数舍入的方法对结果的尾数进行舍入操作;存在最高位进位时,对阶码进行加1操作。
本发明进一步提供一种用于计算正弦或余弦函数的装置,其包括:
预处理模块,包括完成将输入数映射到[0,π/4]的压缩映射电路单元,一个加法单元,一个译码单元,一个常数选择电路;
系数查找表,采用非挥发性存储装置,用于存储估计点对应的估计值,即多项式计算所用的系数值;
运算模块,包括两个乘加运算单元以及相关的左移位单元,用于完成多项式运算;
结果选择模块,包括一个加法单元、常数结果有效标志位检测单元、基本选择电路;当常数结果有效标志位检测单元检测到有效标志位为1时,直接选择输出常数结果;所述加法单元对输入的压缩映射到[0,π/4]数与设定阈值进行比较,当输入的压缩映射到[0,π/4]数小于设定阈值且内部运算的函数类型标识为正弦函数时,输出预处理模块中输出的压缩映射到[0,π/4]数;在结果选择模块中,当不选择输出常数结果和压缩映射到[0,π/4]内的数时,则选择多项式计算所得的结果进行输出;
规格化处理模块,包括一个译码单元和一个左移位单元;
舍入处理模块,包括一个加法器,三个比较单元。
作为本发明装置的进一步改进:在所述预处理模块中,两个常数乘法单元用以辅助完成输入数到[0,π/4]的压缩映射;加法单元用以完成压缩映射后的输出值到最近的估计点的距离的计算;译码单元是一个二级译码器,用以完成压缩映射的输出值的阶码和尾数的部分数位到系数索引值的译码,并获取最近的估计点;常数选择电路包括多路选择器,用于根据完成压缩映射后的值选择常数结果进行输出。
与现有技术相比,本发明的优点在于:
1、本发明的用于计算正弦或余弦函数的实现方法及装置,将数据映射到[0,π/4]内进行操作,并对映射到[0,π/4]范围内的接近于0的数在内部进行正弦函数运算过程中不经计算而直接作为结果输出的方式,以及在同一估计点进行内部正弦函数和余弦函数的多项式运算的过程中对系数的复用,以使在保证结果精度的前提下,有效减少了系数表空间的大小。
2、本发明的用于计算正弦或余弦函数的实现方法及装置,通过对相邻估计点间距离的灵活设置,并对映射到[0,π/4]范围内的接近于0的数在内部进行正弦函数运算过程中不经计算而直接作为结果输出,以保证在可忽略常数π的误差的输入范围内,输出结果精度可达到IEEE-754标准的单精度浮点数的理想精度(即最大误差小于或等于单精度浮点数尾数的最后一位所表示的1个单位大小)。
3、本发明的用于计算正弦或余弦函数的实现方法及装置,通过对运算模块中的乘法和加法单元的输入输出数据的位宽进行微调,对部分系数位宽进行微调,以及对在输入映射到[0,π/4]范围内之后等于某几个常数的数直接赋予常数结果,以保证在不影响输出结果精度的前提下,输出结果的单调性与原函数保持一致。
4、本发明的用于计算正弦或余弦函数的实现方法及装置,在保证结果精度的前提下,在关键路径上包含1个压缩映射操作、1个二级译码操作、1个系数查找操作、2个乘法操作、2个加法操作、1个结果选择操作、1个规格化处理操作,符合低延时的应用要求。
附图说明
图1是本发明方法的流程示意图。
图2是本发明装置在具体应用实例中的结构原理示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
需要强调是,本发明所探讨的正弦或余弦函数的计算,是基于计算机或芯片处理端的内容,即如何通过硬件技术的手段来实现高精度正弦或余弦函数的计算,同时还能够保证在硬件性能上的优化,在硬件开销上的减小,在硬件平台条件下精度的提高。换言之,本发明内容中所探讨的正弦或余弦函数的计算并不是单纯的计算,而是基于硬件平台的计算。这从本发明要解决技术问题就可以一目了然,单纯从计算而言,并不会产生如上所说的各种技术问题,这些技术问题的出现是基于在一个硬件平台下来进行正弦或余弦函数的计算才会产生的技术问题。
如图1所示,本发明的一种用于计算正弦或余弦函数的实现方法,步骤为:
步骤S1:将输入数映射到[0,π/4]的范围内,并获取内部运算的函数类型和结果的正负符号;
步骤S2:根据步骤S1映射到[0,π/4]的范围内的数获取常数结果和最近的估计点;
步骤S3:根据内部运算的函数类型和最近的估计点获取对应的正弦或余弦函数的估计值,即多项式计算所需的系数;
步骤S4:获取步骤S1中映射到[0,π/4]范围内的数到最近估计点的距离;
步骤S5:利用估计值和映射到[0,π/4]范围内的数到最近估计点的距离完成多项式运算;
步骤S6:对映射到[0,π/4]范围内的数以及常数结果和多项式运算的结果进行选择,并对选中数据进行规整化及舍入处理,然后输出最终结果。
在具体应用实例中,所述步骤S1的具体实施步骤为:
步骤S101:若输入数的绝对值处于[0,π/4]内,则取输入的函数类型标识为内部运算的函数类型,并根据输入数的符号与函数类型标识获取最终结果的符号;
步骤S102:否则,将输入数据根据正弦或余弦函数的周期性和对称性,映射到[0,π/2]内,并获取结果正负符号;
步骤S103:根据三角正弦或余弦函数的变换原理,根据所求正弦或余弦函数的类型,将数据进一步映射到[0,π/4],并获取内部运算的函数类型标识,其映射方程式为sin x=cos(π/2-x)或者cos x=sin(π/2-x)。将数进一步映射到[0,π/4]的范围内,并获得内部运算的函数类型标识,以0标识正弦运算,1标识余弦运算。
在具体应用实例中,所述步骤S2的具体实施步骤为:
步骤S201:根据已映射到[0,π/4]的数的部分数位,获取最近的估计点;
步骤S202:根据已映射到[0,π/4]的数,获取常数结果。若映射后的数等于特定的几个常数,则将用于标识常数结果有效的数位置1,表示存在有效常数结果输出;有效常数结果的存在,主要用于消除在相邻两个估计点正中间的极窄数域范围内,因系数值突变带来的结果数值的波动;对于步骤(1)中映射到[0,π/4]范围的结果,若其正好等于π/4,则直接给予常数结果。
其中,本实施例进一步对估计点的进行定义:
(a)估计点都处于[0,π/4]范围内;
(b)估计点并不是均匀分布的;
(c)当估计点越接近于0,根据对应正弦函数的单精度浮点数的输出数的阶码,对相邻两个估计点之间的距离进行缩减,以使结果满足精度要求;
(d)余弦函数运算使用与正弦函数运算相同的估计点;
(e)相邻两个估计点之间的距离,存在一个最小值,即在有限范围内的估计值的数量有限,也即对应系数表的大小有限;
(f)相邻估计点之间距离的最小值可以根据实际设计进行一定的上下浮动;
(g)当映射到[0,π/4]的数到相邻两个估计点的距离相同时,取数轴右侧的估计点为最近的估计点。
在具体应用实例中,本实施例所述常数结果的获取包括:
(a)位于相邻两个估计点正中间一段极窄区域内的数,因为最近的估计点的选择不同而引起结果数值的波动;
(b)对这样引起结果数值波动的在输入映射到[0,π/4]内之后等于某几个常数的数,直接赋予常数结果输出。
在具体应用实例中,所述步骤S3中包括:以最近的估计点的部分数位和步骤S1中获得的内部运算的函数类型标识作为索引,完成系数的查找。
其中,本实施例进一步对所述系数定义:
(a)系数表中存储的系数为估计点对应的正弦或余弦函数的函数值或对应函数值的常数倍;
(b)对于正/余弦函数的计算,系数表中的系数根据需要,可以复用,以进一步减少系数表;
即某些系数既可以用于内部的正弦函数的运算,也可以用于内部的余弦函数的运算。
在具体应用实例中,所述步骤S4的具体为:对映射到[0,π/4]范围内的数和最近估计点做加法运算,获取结果。对步骤S1中映射到[0,π/4]内的数和最近估计点进行加法运算,获得两者之间的距离。步骤S4中的两个数据阶码具备一致性,无需进行对阶,直接尾数相加,然后根据尾数的前导0的个数调整阶码即可。
在具体应用实例中,所述步骤S5的具体为:根据输入变量以及相关系数,完成多项式运算。其中,多项式形式如下:
Y=C0+(C1+C2×D)×D (3)
其中C0,C1,C2表示系数,D为步骤S4中所得的映射到[0,π/4]范围内的数到最近估计点的距离值。
其中D可以为正数或者负数,由计算D值的两个数在数轴上的相对位置决定。
其中系数C0,C1,C2可以相同或只存在符号位的不同或只相差一个常数倍,这个常数倍可以通过移位来完成计算。
其中系数C0,C1,C2对应不同的函数运算,可以复用。比如其中用于正弦运算的系数C0在进行余弦运算时,可以作为系数C1参与运算,二者之间可能只相差一个符号位或者常数倍,这个常数倍可以通过移位完成运算。
又比如,其中系数C0和C2之间只相差一个常数倍,可以通过移位加的操作来完成这个常数倍的运算。
进一步上述公式(1)所示多项式运算进一步说明如下:由于多项式运算中系数的正负号可能交替出现,导致结果数值的不稳定,需要在达到所要求精度的前提下,对部分乘法和加法的结果精度进行调整。
在不影响精度的前提下,由于多项式系数的正负符号交替出现带来的结果数值的波动,需要对部分乘法单元及加法单元的输入输出位宽进行微调,以消除这种数值的波动,保证结果的单调性。
比如在不影响结果精度的基础上,调节乘法单元#2的一个输入位宽与乘法单元#1的一个输入位宽相同,调节乘法单元#2的另一个输入位宽比乘法单元#1的另一个输入位宽多12位,与此同时,调节加法器的相应输入输出信号位宽和乘法器#1的相应输出信号位宽。
在具体应用实例中,所述步骤S6的具体步骤包括:
步骤S601:若检测到常数结果的输入,则选择常数结果作为选中数;即:若常数结果的有效标识符为1,则常数结果为选中数;
步骤S602:否则,当步骤S1中映射到[0,π/4]范围内的数小于或等于设定阈值且内部运算的函数类型为正弦函数时,选取输入映射[0,π/4]范围内的数为选中数;
步骤S603:否则选取多项式计算的结果为选中数;
步骤S604:利用步骤S1中获得的结果的正负号给选中数赋予正确的符号位;
步骤S605:对选中数进行舍入和规格化处理,获得符合IEEE-754标准的单精度浮点数输出。
在进行舍入处理时,此步骤使用向偶数舍入的方法对结果的尾数进行舍入操作;存在最高位进位时,对阶码进行加1操作。
在具体应用实例中,本发明方法中的所述的部分步骤可以根据需要并行或者交换顺序执行,比如步骤(4)可以和步骤(2)(3)并行执行或者放到步骤(2)之前执行。
如图2所示,为了完成本发明的上述方法,本发明进一步提供一种用于计算正弦或余弦函数的装置,其包括:
预处理模块,包括完成将输入数映射到[0,π/4]的压缩映射电路单元,一个加法单元,一个译码单元,一个常数选择电路。
系数查找表,采用非挥发性存储装置,用于存储估计点对应的估计值,即多项式计算所用的系数值。
运算模块,包括两个乘加运算单元以及相关的左移位单元,用于完成多项式运算。即包括乘法单元#1、乘法单元#2、和加法单元#1、加法单元#2。
结果选择模块,包括一个加法单元、常数结果有效标志位检测单元、基本选择电路。
规格化处理模块,包括一个译码单元和一个左移位单元。
舍入处理模块,包括一个加法器,三个比较单元。
在具体应用实例中,本发明的装置中所述预处理模块的输出包括:系数索引值,完成压缩映射后的输出值到最近的估计点的距离,完成压缩映射后的输出值,结果的正负号,根据完成压缩映射后的输出值获得的对应常数值,内部运算的函数类型标识。
所述预处理模块的输入包括:所需计算的正弦或余弦函数的函数类型标识以及符合IEEE-754标准的单精度浮点数。
在所述预处理模块中,两个常数乘法单元用以辅助完成输入数到[0,π/4]的压缩映射。加法单元用以完成压缩映射后的输出值到最近的估计点的距离的计算。译码单元是一个二级译码器,用以完成压缩映射的输出值的阶码和尾数的部分数位到系数索引值的译码,并获取最近的估计点。常数选择电路包括多路选择器,用于根据完成压缩映射后的值选择常数结果进行输出。
在具体应用实例中,所述系数查找表为非挥发性存储装置,用于存储估计点对应的估计值,即多项式计算所用的系数值。所述系数查找表所需表空间大小不大于256×64bit。
在具体应用实例中,所述运算模块包括两个乘加运算单元,用于完成多项式运算。
所述多项式形式如下:
Y=C0+(C1+C2×D)×D
其中C0,C1,C2表示系数,D为步骤(4)中所得的映射到[0,π/4]范围内的数到最近估计点的距离值。
所述运算模块,在保证结果精确度的前提下,需要乘法器#2的输出输出信号的位宽进行调整,比如使乘法单元#2的其中一个输入信号位宽与乘法单元#1的输入位宽相同,乘法器#2的另一个输入信号位宽比乘法单元#1的另一个输入信号位宽大12位,同时相对应对加法器#1的输入输出信号位宽进行调整,以在保证结果精度的前提下,消除因在多项式运算过程中系数正负号交替出现而引起的结果数值的波动。
比如在所示多项式形式的运算中,括号内的运算使用乘法器#1加法器#1完成,括号外的运算使用乘法器#2加法器#2完成。为了消除结果数值的波动,可在不影响结果精度的基础上,调节乘法单元#2的一个输入位宽与乘法单元#1的一个输入位宽相同,调节乘法单元#2的另一个输入位宽比乘法单元#1的另一个输入位宽多12位,与此同时,调节加法器的相应输入输出信号位宽和乘法器#1的相应输出信号位宽。
在具体应用实例中,所述结果选择模块中,当常数结果有效标志位检测单元检测到有效标志位为1时,直接选择输出常数结果。所述结果选择模块中,使用加法单元对输入的压缩映射到[0,π/4]数与设定阈值进行比较,当输入的压缩映射到[0,π/4]数小于设定阈值且内部运算的函数类型标识为正弦函数时,输出预处理模块中输出的压缩映射到[0,π/4]数。在结果选择模块中,当不选择输出常数结果和压缩映射到[0,π/4]内的数时,则选择多项式计算所得的结果进行输出。
由上可知,本发明的装置在关键路径上包含1个压缩映射操作、1个二级译码操作、1个系数查找操作、2个乘法操作、2个加法操作、1个结果选择操作、1个规格化处理操作,符合低延时的应用要求。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (10)
1.一种用于计算正弦或余弦函数的实现方法,其特征在于,步骤包括:
步骤S1:将输入数映射到[0,π/4]的范围内,并获取内部运算的函数类型和结果的正负符号;
步骤S2:根据步骤S1映射到[0,π/4]的范围内的数获取常数结果和最近的估计点;
步骤S3:根据内部运算的函数类型和最近的估计点获取对应的正弦或余弦函数的估计值,即多项式计算所需的系数;
步骤S4:获取步骤S1中映射到[0,π/4]范围内的数到最近估计点的距离;
步骤S5:利用估计值和映射到[0,π/4]范围内的数到最近估计点的距离完成多项式运算;
步骤S6:对映射到[0,π/4]范围内的数以及常数结果和多项式运算的结果进行选择,并对选中数据进行规整化及舍入处理,然后输出最终结果。
2.根据权利要求1所述的用于计算正弦或余弦函数的实现方法,其特征在于,所述步骤S1的具体实施步骤为:
步骤S101:若输入数的绝对值处于[0,π/4]内,则取输入的函数类型标识为内部运算的函数类型,并根据输入数的符号与函数类型标识获取最终结果的符号;
步骤S102:否则,将输入数据根据正弦或余弦函数的周期性和对称性,映射到[0,π/2]内,并获取结果正负符号;
步骤S103:根据三角正弦或余弦函数的变换原理,根据所求正弦或余弦函数的类型,将数据进一步映射到[0,π/4],并获取内部运算的函数类型标识,其映射方程式为sinx=cos(π/2-x)或者cosx=sin(π/2-x);将数进一步映射到[0,π/4]的范围内,并获得内部运算的函数类型标识,以0标识正弦运算,1标识余弦运算。
3.根据权利要求1所述的用于计算正弦或余弦函数的实现方法,其特征在于,所述步骤S2的具体实施步骤为:
步骤S201:根据已映射到[0,π/4]的数的部分数位,获取最近的估计点;
步骤S202:根据已映射到[0,π/4]的数,获取常数结果。若映射后的数等于特定的几个常数,则将用于标识常数结果有效的数位置1,表示存在有效常数结果输出;有效常数结果的存在,主要用于消除在相邻两个估计点正中间的极窄数域范围内,因系数值突变带来的结果数值的波动;对于步骤(1)中映射到[0,π/4]范围的结果,若其正好等于π/4,则直接给予常数结果。
4.根据权利要求1所述的用于计算正弦或余弦函数的实现方法,其特征在于,所述步骤S3中,以最近的估计点的部分数位和步骤S1中获得的内部运算的函数类型标识作为索引,完成系数的查找。
5.根据权利要求1所述的用于计算正弦或余弦函数的实现方法,其特征在于,所述步骤S4中,对映射到[0,π/4]范围内的数和最近估计点做加法运算,获取结果;对步骤S1中映射到[0,π/4]内的数和最近估计点进行加法运算,获得两者之间的距离;步骤S4中的两个数据阶码具备一致性,无需进行对阶,直接尾数相加,然后根据尾数的前导0的个数调整阶码。
6.根据权利要求1所述的用于计算正弦或余弦函数的实现方法,其特征在于,所述步骤S5中,根据输入变量以及相关系数,完成多项式运算,其中多项式形式如下:
Y=C0+(C1+C2×D)×D (1)
其中C0,C1,C2表示系数,D为步骤S4中所得的映射到[0,π/4]范围内的数到最近估计点的距离值;其中D可以为正数或者负数,由计算D值的两个数在数轴上的相对位置决定;系数C0,C1,C2可以相同或只存在符号位的不同或只相差一个常数倍,这个常数倍通过移位来完成计算。
7.根据权利要求1所述的用于计算正弦或余弦函数的实现方法,其特征在于,所述步骤S6的步骤包括:
步骤S601:若检测到常数结果的输入,则选择常数结果作为选中数;即:若常数结果的有效标识符为1,则常数结果为选中数;
步骤S602:否则,当步骤S1中映射到[0,π/4]范围内的数小于或等于设定阈值且内部运算的函数类型为正弦函数时,选取输入映射[0,π/4]范围内的数为选中数;
步骤S603:否则选取多项式计算的结果为选中数;
步骤S604:利用步骤S1中获得的结果的正负号给选中数赋予正确的符号位;
步骤S605:对选中数进行舍入和规格化处理,获得符合IEEE-754标准的单精度浮点数输出。
8.根据权利要求7所述的用于计算正弦或余弦函数的实现方法,其特征在于,在进行舍入处理时,使用向偶数舍入的方法对结果的尾数进行舍入操作;存在最高位进位时,对阶码进行加1操作。
9.一种用于计算正弦或余弦函数的装置,其特征在于,包括:
预处理模块,包括完成将输入数映射到[0,π/4]的压缩映射电路单元,一个加法单元,一个译码单元,一个常数选择电路;
系数查找表,采用非挥发性存储装置,用于存储估计点对应的估计值,即多项式计算所用的系数值;
运算模块,包括两个乘加运算单元以及相关的左移位单元,用于完成多项式运算;
结果选择模块,包括一个加法单元、常数结果有效标志位检测单元、基本选择电路;当常数结果有效标志位检测单元检测到有效标志位为1时,直接选择输出常数结果;所述加法单元对输入的压缩映射到[0,π/4]数与设定阈值进行比较,当输入的压缩映射到[0,π/4]数小于设定阈值且内部运算的函数类型标识为正弦函数时,输出预处理模块中输出的压缩映射到[0,π/4]数;在结果选择模块中,当不选择输出常数结果和压缩映射到[0,π/4]内的数时,则选择多项式计算所得的结果进行输出;
规格化处理模块,包括一个译码单元和一个左移位单元;
舍入处理模块,包括一个加法器,三个比较单元。
10.根据权利要求9所述的用于计算正弦或余弦函数的装置,其特征在于,在所述预处理模块中,两个常数乘法单元用以辅助完成输入数到[0,π/4]的压缩映射;加法单元用以完成压缩映射后的输出值到最近的估计点的距离的计算;译码单元是一个二级译码器,用以完成压缩映射的输出值的阶码和尾数的部分数位到系数索引值的译码,并获取最近的估计点;常数选择电路包括多路选择器,用于根据完成压缩映射后的值选择常数结果进行输出。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010607527.6A CN111831257A (zh) | 2020-06-29 | 2020-06-29 | 一种用于计算正弦或余弦函数的实现方法及装置 |
PCT/CN2021/101216 WO2022001722A1 (zh) | 2020-06-29 | 2021-06-21 | 一种用于计算正弦或余弦函数的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010607527.6A CN111831257A (zh) | 2020-06-29 | 2020-06-29 | 一种用于计算正弦或余弦函数的实现方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111831257A true CN111831257A (zh) | 2020-10-27 |
Family
ID=72899627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010607527.6A Pending CN111831257A (zh) | 2020-06-29 | 2020-06-29 | 一种用于计算正弦或余弦函数的实现方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111831257A (zh) |
WO (1) | WO2022001722A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022001722A1 (zh) * | 2020-06-29 | 2022-01-06 | 湖南毂梁微电子有限公司 | 一种用于计算正弦或余弦函数的实现方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116720554B (zh) * | 2023-08-11 | 2023-11-14 | 南京师范大学 | 一种基于fpga技术的多段线性拟合的神经元电路实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001209525A (ja) * | 2000-01-28 | 2001-08-03 | Matsushita Electric Ind Co Ltd | 三角関数生成装置 |
CN104536720A (zh) * | 2014-12-22 | 2015-04-22 | 浙江中控研究院有限公司 | 基于fpga的待测角三角函数值的测算方法及*** |
US20180217814A1 (en) * | 2017-02-02 | 2018-08-02 | Vivante Corporation | Systems And Methods For Computing Mathematical Functions |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2953940B1 (fr) * | 2009-12-16 | 2012-02-03 | Thales Sa | Procede de geo-referencement d'une zone imagee |
CN111831257A (zh) * | 2020-06-29 | 2020-10-27 | 湖南毂梁微电子有限公司 | 一种用于计算正弦或余弦函数的实现方法及装置 |
-
2020
- 2020-06-29 CN CN202010607527.6A patent/CN111831257A/zh active Pending
-
2021
- 2021-06-21 WO PCT/CN2021/101216 patent/WO2022001722A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001209525A (ja) * | 2000-01-28 | 2001-08-03 | Matsushita Electric Ind Co Ltd | 三角関数生成装置 |
CN104536720A (zh) * | 2014-12-22 | 2015-04-22 | 浙江中控研究院有限公司 | 基于fpga的待测角三角函数值的测算方法及*** |
US20180217814A1 (en) * | 2017-02-02 | 2018-08-02 | Vivante Corporation | Systems And Methods For Computing Mathematical Functions |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022001722A1 (zh) * | 2020-06-29 | 2022-01-06 | 湖南毂梁微电子有限公司 | 一种用于计算正弦或余弦函数的实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2022001722A1 (zh) | 2022-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106202890B (zh) | 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置 | |
US10656913B2 (en) | Enhanced low precision binary floating-point formatting | |
CN107305485B (zh) | 一种用于执行多个浮点数相加的装置及方法 | |
CN107273090A (zh) | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 | |
CN104520807A (zh) | 用于具有指数按比例缩放的浮点融合乘法加法的微架构 | |
US8788561B2 (en) | Arithmetic circuit, arithmetic processing apparatus and method of controlling arithmetic circuit | |
US8903881B2 (en) | Arithmetic circuit, arithmetic processing apparatus and method of controlling arithmetic circuit | |
CN101685383A (zh) | 计算器、基于直接对阶的自由精度浮点数的运算电路 | |
CN111831257A (zh) | 一种用于计算正弦或余弦函数的实现方法及装置 | |
US20120011185A1 (en) | Rounding unit for decimal floating-point division | |
WO2022052625A1 (zh) | 一种定点与浮点转换器、处理器、方法以及存储介质 | |
CN112241291A (zh) | 用于指数函数实施的浮点单元 | |
CN110187866B (zh) | 一种基于双曲cordic的对数乘法计算***及方法 | |
US7921144B2 (en) | Fast correctly-rounding floating-point conversion | |
US6182100B1 (en) | Method and system for performing a logarithmic estimation within a data processing system | |
CN116643718A (zh) | 一种流水线结构的浮点融合乘加装置、方法及处理器 | |
CN107423026B (zh) | 一种正余弦函数计算的实现方法及装置 | |
US20010025293A1 (en) | Divider | |
Murillo et al. | A suite of division algorithms for posit arithmetic | |
US20180203669A1 (en) | Digit recurrence division | |
US9720648B2 (en) | Optimized structure for hexadecimal and binary multiplier array | |
CN108153513B (zh) | 前导零预测 | |
CN107015783B (zh) | 一种浮点角度压缩实现方法及装置 | |
CN114860193A (zh) | 一种用于计算Power函数的硬件运算电路及数据处理方法 | |
US20120259903A1 (en) | Arithmetic circuit, arithmetic processing apparatus and method of controlling arithmetic circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201027 |