CN108228135A - 一种运算多种超越函数的装置 - Google Patents
一种运算多种超越函数的装置 Download PDFInfo
- Publication number
- CN108228135A CN108228135A CN201611158341.7A CN201611158341A CN108228135A CN 108228135 A CN108228135 A CN 108228135A CN 201611158341 A CN201611158341 A CN 201611158341A CN 108228135 A CN108228135 A CN 108228135A
- Authority
- CN
- China
- Prior art keywords
- pattern information
- numerical value
- function
- equal
- result
- 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.)
- Granted
Links
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
-
- 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
-
- 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/552—Powers or roots, e.g. Pythagorean sums
-
- 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/556—Logarithmic or exponential functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
一种运算多种超越函数的装置及方法,该装置包括:包括:解码器,用于接收输入z=x+iy和函数f(z),并根据函数f(z)确定至少一条运算路径及至少一组数值Fx、Fy、Mx、My及每一组数值对应的模式信息mode;所述至少一条运算路径包括:前处理单元,用于接收其中一组数值Fx、Fy、Mx、My及其对应的模式信息mode,调整该组数值Fx、Fy、Mx、My至运算单元处理的范围数值:Ex、Ey、Lx、Ly,并根据所述调整产生调整值k1,k2,...,k6;运算单元,用于根据数值Ex、Ey、Lx、Ly及模式信息mode进行运算,获得运算结果或以及后处理单元,用于根据所述运算单元的运算结果或及所述调整值k1,k2,...,k6获得修正结果或其中,所述模式信息mode为指数模式或对数模式。
Description
技术领域
本发明涉及计算机计算技术领域,更具体地涉及一种运算多种超越函数的装置。
背景技术
三角函数,指数函数,对数函数等超越函数在科学计算中占有重要的地位,被用于多种算法中。然而,计算它们一般需要较多乘法操作,乘法器的复杂性对小型装置是一个挑战,即便能包括硬件乘法器,速度也不尽如人意。
为了解决这个问题,现今广泛使用的算法之一是CORDIC(Cooridinate RotationDigital Computer,坐标旋转数字计算机),(Volder,Jack E.(1959-03-03).″The CORDICComputing Technique″)。这种算法通过加减、移位运算和查表来实现一个向量基于圆周或双曲线的旋转。CORDIC算法被广泛采用,尤其是在便携式计算器中。
但该算法存在如下技术缺陷:旋转的原始结果比真实的旋转多了一个常量因子,需要乘其倒数将其除去;需要频繁精确判断一些坐标是否大于0。采用普通二进制表示时不会造成困难,但若采用可加速加减法的冗余二进制表示(Redundant Number System)则变困难而将冗余二进制表示的便利抵消掉;装置的模式有4种:圆旋转模式、圆向量模式、双曲旋转模式、双曲向量模式,如果采用流水线需要在每一步都在4种模式中间进行判断,较为繁琐。
发明内容
鉴于现有方案存在的问题,为了克服上述现有技术方案的不足,本发明提出了运算多种超越函数的装置。
根据本发明的一个方面,提供了一种运算多种超越函数的装置,包括:解码器,用于接收输入z=x+iy和函数f(z),并根据函数f(z)确定至少一条运算路径及至少一组数值Fx、Fy、Mx、My及每一组数值对应的模式信息mode;所述至少一条运算路径包括:前处理单元,用于接收其中一组数值Fx、Fy、Mx、My及其对应的模式信息mode,调整该组数值Fx、Fy、Mx、My至运算单元处理的范围数值:Ex、Ey、Lx、Ly,并根据所述调整产生调整值k1,k2,...,k6;运算单元,用于根据数值Ex、Ey、Lx、Ly及模式信息mode进行运算,获得运算结果或以及后处理单元,用于根据所述运算单元的运算结果或及所述调整值k1,k2,...,k6获得修正结果或其中,所述模式信息mode为指数模式或对数模式。
根据本发明的另一个方面,提供了一种运算多种超越函数的方法,包括:解码器接收输入z=x+iy和函数f(z),并根据函数f(z)确定至少一条运算路径及至少一组数值Fx、Fy、Mx、My及每一组数值对应的模式信息mode;所述至少一条运算路径的运算步骤包括:前处理单元接收其中一组数值Fx、Fy、Mx、My及其对应的模式信息mode,调整该组数值Fx、Fy、Mx、My至运算单元处理的范围数值:Ex、Ey、Lx、Ly,并根据所述调整产生调整值k1,k2,...,k6;运算单元根据数值Ex、Ey、Lx、Ly及模式信息mode进行运算,获得运算结果或以及后处理单元根据所述运算单元的运算结果或及所述调整值k1,k2,...,k6获得修正结果或其中,所述模式信息mode为指数模式或对数模式。
从上述技术方案可以看出,本发明具有以下有益效果:
运算采用采用指数和对数作为两种基本模式,较之CORDIC的四种模式运算简单;
采用指数和对数作为基本模式,每一步迭代都精确地按照指数对数关系而非CORDIC中忽略每一步的cos因子,前后处理中就不需要重新乘入这样的因子;
采用指数和对数为基本模式,不需要精确判断有关坐标是否大于0,在判断条件上有所松弛,可以只判断部分位,从而给使用冗余二进制表示提供了方便。
附图说明
图1为一实施例一种运算多种超越函数的装置的结构示意图;
图2为另一实施例一种运算多种超越函数的装置的结构示意图;
图3为又一实施例一种运算多种超越函数的方法的流程图;
图4为再一实施例一种运算多种超越函数的方法的流程图。
具体实施方式
本发明某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本发明的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本发明满足适用的法律要求。
在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不悖离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明一实施例提供了一种运算多种超越函数的装置,运算采用采用指数和对数作为两种基本模式,运算简单,没有常量因子,在判断条件上有所松弛,可以只判断部分位,从而给使用冗余二进制表示提供了方便。
图1为本发明一实施例一种运算多种超越函数的装置的结构示意图,如图1所示,本实施例中的运算多种超越函数的装置包括解码器1、前处理单元2、运算单元3、状态存储器4以及后处理单元5。
其中,解码器1,用于接收输入z=x+iy和函数f(z)、并由z和f得出向前处理单元2提供的一组数值Fx、Fy、Mx、My和模式信息mode进行运算,其中Fx对应指数模式进行运算的实部,Fy对应指数模式进行运算的虚部,Mx对应对数模式进行运算的实部,My对应对数模式进行运算的虚部,模式信息为指数模式或对数模式。
前处理单元2,用于接收输入Fx、Fy、Mx、My、mode并调整它们至运算单元3能直接处理的范围:Ex、Ey、Lx、Ly、mode提供给运算单元3;并保留调整信息k1,k2,...,k6和原输入函数f交由状态储存器4在流水线中储存。
具体的,前处理单元2根据模式信息mode分为指数模式或对数模式。
指数模式对Fx和Fy进行处理。k6由Fy决定:k6为最接近Fy/(π/4)的整数,Ey=Fy-k6(π/4)。若k6是奇数,则将Fx减去ln(2)/2。此后k5由Fx决定:k5为最接近Fx/(2×ln2)的整数,Ex=Fx-k1(2×ln2)。
对数模式对Mx和My进行处理。若Mx小于0则将Mx和My乘以-1并记录k4=-1,否则k4=1。
第一步缩放:k1为使处于1/2和1之间的整数,并计算得将Mx,Y,My,Y取第5位小数近似得到Mx,Y*,My,Y*,
根据Mx,Y*,My,Y*确定辅助变量c,p的值,其中p为复数:
若|My,Y*|<Mx,Y*/2-1/32则c=0,p=1;
若Mx,Y*/2-1/32≤My,Y*≤2Mx,Y*+1/16则c=1,p=1-i;
若-2Mx,Y*-1/16≤My,Y*≤-Mx,Y*/2+1/32则c=7,p=1+i;
若My,Y*>2Mx,Y*+1/16则c=2,p=-i;
若My,Y*<-2Mx,Y*-1/16则c=6,p=i;
将Mx,Y,My,Y乘以p得到(Mx,Y+iMy,Y)p=(Mx,Z+iMy,Z),其中Mx,Z为实部,My,Z为虚部,并决定k3=ln(p);
第二步缩放:k2为使处于1/2和1之间的整数,并计算得
运算单元3接收输入Ex、Ey、Lx、Ly、mode进行复数下指数函数或对数函数运算,在mode=E,即运算为指数模式时,输出为在mode=L,即运算为对数模式时,输出为
指数模式:接收Ex在-0.8298~0.8688间、Ey在-0.7497~0.7497间的输入,Lx、Ly任意。首先建立辅助变量Ax,1、Ay,1,满足Ax,1+iAy,1=2Ex+iEy。记迭代开始的Lx、Ly为Lx,1、Ly,1。
然后由第1步开始,在第n步进行迭代:
Ax,n+1+iAy,n+1=2(Ax,n+iAy,n)-2n+1ln(1+dn2-n)
Lx,n+1+iLy,n+1=(Lx,n+iLy,n)(1+dn2-n)
其中dn是虚实部都选择-1,0或1的复数。dn=dx+idy由如下的规则判定:是Ax,n精确到第3位二进制小数的值、是Ay,n精确到第4位小数的值。处于-1/2至1/4时dx为0,大于等于3/8时dx为1,小于等于-5/8时dx为-1。处于-3/4至3/4时dy为0,大于等于13/16时dy为1,小于等于-13/16时dy为-1。
迭代结果为定义分别为最后一步迭代结果的实部和虚部Lx,m,Ly,m。大致上,以二进制小数表示的精度位数等于迭代次数m,即约等于号两边的差小于等于2-m。
对数模式:接收Lx在0.5至1.3之间,Ly的绝对值小于等于Lx/2的输入,Ex、Ey任意。首先建立辅助变量Bx,1、By,1,满足Bx,1+iBy,1=2(Lx-1+iLy)。记迭代开始的Ex、Ey为Ex,1、Ey,1。
然后由第1步开始,在第n步进行迭代:
Bx,n+1+iBy,n+1=2(Bx,n+iBy,n+dn)-dn(Bx,n+iBy,n)2-n+1
Ex,n+1+iEy,n+1=Ex,n+iEy,n-(1+dn2-n)
其中dn是虚实部都选择-1,0或1的复数,dn=dx+idy由如下的规则判定:是Bx,n精确到第4位二进制小数的值、是By,n精确到第4位小数的值。若非第一步迭代,在-1/2和1/2之间时dx为0,大于等于1/2时dx为-1,小于等于-1/2时dx为1。以同样的方式决定dy。若是第一步迭代,则有以下规则:小于等于-7/16时dx为1,并且此时大于等于6/16时dy为-1,小于等于-6/16时dy为1,其他时候dy为0;大于等于-6/16时dx为0,并且此时大于等于8/16时dy为-1,小于等于-9/16时dy为1,其他时候dy为0。
迭代结果为是定义分别为最后一步迭代结果的实部和虚部Ex,m,Ey,m。大致上,以二进制小数表示的精度位数等于迭代次数m,即约等于号两边的差小于等于2-m。
状态储存器4用于保留调整信息k1,k2,...,k6和原输入函数f,并将其输入至后处理单元5中,起到在前处理单元2和后处理单元5间传递信息的作用。
后处理单元5,接收运算单元3的结果或和原调整信息k1,k2,...,k6。计算将前处理的调整考虑在内的修正结果或
后处理单元5也根据要计算的模式分为指数模式和对数模式。
指数模式:第一步,将乘以第二步,根据k6模8的余数j将因子pj乘以得到
其中,j=0,1,2……,7,p0=1;p1=1+i;p2=i;p3=-1+i;p4=-1;p5=-1-i;p6=-i;p7=1-i;
对数模式:将k1+k2-k3加至若k4为-1则对加或减π使得仍在-π至π之间;若k4为1则不操作,这样得到
运算的循环次数由原输入函数f决定,且每一循环的一组数值Fx、Fy、Mx、My和模式信息mode由z=x+iy和函数f(z)决定,前一循环中后处理单元5的结果或用做后一循环中的一组数值中的Fx、Fy或Mx、My。
若原输入函数f需要多步计算,且并非最后一步则将结果交回解码器1;否则后处理器5已经给出最终正确结果。
本发明又一实施例提供了一种运算多种超越函数的装置,如图2所示,包括解码器1、前处理单元、运算单元、状态存储器、后处理单元以及汇总器6。解码器1,用于接收输入z=x+iy和函数f(z),函数f(z)为sinh,cosh,tanh,arctanh等时,需要至少两条路径进行运算,f(z)=f1(z)+f2(z)。
前处理单元包括第一前处理单元2A和第二前处理单元2B,运算单元包括第一运算单元3A和第二运算单元3B,状态存储器包括第一状态存储器4A和第二状态存储器4B,后处理单元包括第一后处理单元5A和第二后处理单元5B。
第一前处理单元2A和第二前处理单元2B、运算单元包括第一运算单元3A和第二运算单元3B、状态存储器包括第一状态存储器4A和第二状态存储器4B、后处理单元包括第一后处理单元5A和第二后处理单元5B的功能和作用分别与前述实施例中前处理单元2、运算单元3、状态存储器4以及后处理单元5完全相同,在此不再赘述。
第一前处理单元2A、第一运算单元3A、第一状态存储器4A和第一后处理单元5A构成第一运算路径,第二前处理单元2B、第二运算单元3B、第二状态存储器4B和第二后处理单元5B构成第一运算路径。
其中,f1(z)由第一运算路径进行运算,f2(z)由第二运算路径进行运算,解码器1由z和f1得出向前处理单元2A提供的一组数值Fx1、Fy2、Mx1、My1和模式信息mode1进行运算,由z和f2得出向前处理单元2B提供的一组数值Fx2、Fy2、Mx2、My2和模式信息mode2进行运算。
汇总器6,对两条运算路径获得的结果进行汇总处理得到输出(如sinh)。
本实施例尽管描述了应用至少两条路径进行运算的装置,但本实施例的装置也可仅采用一条路径进行运算,此时汇总器6直接输出所采用路径的第一后处理单元5A或第二后处理单元5B得到的最终结果,不进行操作。
本发明又一实施例提供了一种运算多种超越函数的方法,如图3所示,包括以下步骤:
S101:解码器1接收输入z=x+iy和函数f(z)、并由z和f得出向前处理单元2提供的一组数值Fx、Fy、Mx、My和模式信息mode进行运算,其中Fx对应指数模式进行运算的实部,Fy对应指数模式进行运算的虚部,Mx对应对数模式进行运算的实部,My对应对数模式进行运算的虚部,模式信息为指数模式或对数模式;
S102:前处理单元2接收输入Fx、Fy、Mx、My、mode并调整它们至运算单元3能直接处理的范围:Ex、Ey、Lx、Ly、mode提供给运算单元3;并保留调整信息k1,k2,...,k6和原输入函数f交由状态储存器4在流水线中储存。
S103:运算单元3接收输入Ex、Ey、Lx、Ly、mode进行复数下指数函数或对数函数运算,在mode=E,即运算为指数模式时,输出为在mode=L,即运算为对数模式时,输出为
S104:状态储存器4保留调整信息k1,k2,...,k6和原输入函数f,并将其输入至后处理单元5中。
S105:接收运算单元3的结果和原调整信息k1,k2,...,k6,计算将前处理的调整考虑在内的修正结果
运算的循环次数由原输入函数f(z)决定,且每一循环的一组数值Fx、Fy、Mx、My和模式信息mode由z=x+iy和函数f(z)决定,前一循环中后处理单元5的结果或用做后一循环中的一组数值中的Fx、Fy或Mx、My。
若原输入函数f需要多步计算,且并非最后一步则将结果交回解码器1;否则后处理器5已经给出最终正确结果。
本发明再一实施例提供了一种运算多种超越函数的方法,包括以下步骤,如图4所示:
S201:解码器1接收输入z=x+iy和函数f(z)、并由z和f得出向前处理单元2提供的两组数值Fx、Fy、Mx、My和模式信息mode进行运算,具体地,其中f(z)=f1(z)+f2(z),解码器1由z和f1得出向前处理单元2A提供的一组数值Fx1、Fy2、Mx1、My1和模式信息mode1进行运算,由z和f2得出向前处理单元2B提供的一组数值Fx2、Fy2、Mx2、My2和模式信息mode2进行运算。
S202:f1(z)由第一运算路径进行运算,f2(z)由第二运算路径进行运算,每一路径的具体的运算步骤均与上一实施例中的步骤S102-S105相同。
S203:汇总器6对两条运算路径获得的结果进行处理得到输出。
尽管前述实施例中给出了一条或两条运算路径的运算装置及方法,本领域技术人员在面对更加复杂的函数f(z)时可以考虑选用更多的运算路径来进行运算。
以下为几种函数的具体运算:
复数指数:f=exp(z),z=x+iy,解码器1:Fx=x,Fy=y,Mx=1,My=0,mode=指数。运算结果:Mx*+iMy*=exp(x+i*y)。汇总器6:Mx*,My*为最终运算结果,不进行操作
复数对数:f=log(z),z=x+iy,解码器1:Fx=0,Fy=0,Mx=x,My=y,mode=对数.运算结果:Fx*+iFy*=log(x+iy).汇总器6:Fx*,Fy*为最终运算结果,不进行操作。
实数正弦余弦:f=a×cos(x)±b×sin(x),解码器1:Fx=0,Fy=x,Mx=a,My=b,mode=指数。运算结果:Mx*=a×cos(x)-b×sin(x),My*=a×sin(x)+b×cos(x)汇总器6:Mx*,My*为最终运算结果,不进行操作。若只需cos(x)或sin(x)而非它们的线性组合,则令输入为a=1,b=0,有Mx*=cos(x),My*=sin(x)。
实数反正切:f=arctan(b/a)。解码器1:Fx=0,Fy=0,Mx=a,My=b,mode=对数,运算结果:Fx*=1/21n(a2+b2),Fy*=arctan(b/a)。汇总器6:Fy*为最终运算结果,不进行操作。
复数乘法:f=(a+ib)(c+id),需要循环两次:
第一循环:解码器1:Fx=0,Fy=0,Mx=a,My=b,mode=对数,运算结果:Fx*+iFy*=log(a+ib).汇总器6:将Fx*,Fy*交回解码器1。记这一步的Fx*,Fy*分别为e和f;
第二循环:解码器1:Fx=e,Fy=f,Mx=c,My=d,mode=指数。运算结果:Mx*+iMy*=(a+ib)(c+id)。汇总器6:Mx*,My*为最终结果,不进行操作。
复数除法:f=(c+id)/(a+ib),需要循环两次:
第一循环:解码器1:Fx=0,Fy=0,Mx=a,My=b,mode=对数.运算结果:Fx*+iFy*=log(a+ib).汇总器6:将Fx*,Fy*变换符号,即改变正负)后交回解码器1。记这一步的Fx*,Fy*分别为e和f;
第二循环:解码器1:Fx=e,Fy=f,Mx=c,My=d,mode=指数。运算结果:Mx*+iMy*=(c+id)/(a+ib)。汇总器6:Mx*,My*为最终结果,不进行操作。
复数平方根:f=sqrt(a+ib),需要循环两次:
第一循环:解码器1:Fx=0,Fy=0,Mx=a,My=b,mode=对数.运算结果:Fx*+iFy*=log(a+ib).汇总器6:将Fx*,Fy*右移一位(即除以2)后交回解码器1,记这一步得到的Fx*,Fy*分别为e=Fx*/2和f=Fy*/2;
第二循环:解码器1:Fx=e,Fy=f,Mx=1,My=0,mode=指数。运算结果:Mx*+iMy*=sqrt(a+ib)。汇总器6:Mx*,My*为最终结果,不进行操作。
实数平方和的根:f=sqrt(a2+b2),需要循环两次:
第一循环:解码器1:Fx=0,Fy=0,Mx=a,My=b,mode=对数,运算结果:Fx*+iFy*=log(a+ib),汇总器6:仅将Fx*交回解码器1,记这一步的Fx*为e。
第二循环:解码器1:Fx=e,Fy=0,Mx=1,My=0,mode=指数。运算结果:Mx*=sqrt(a2+b2),My*=0。汇总器6:Mx*为最终结果,不进行操作。
复数正弦:f=sin(a+ib),此时需要2条路径:
解码器1:路径1:Fx1=-b,Fy1=a,Mx1=1,My1=0,mode=指数。路径1运算结果:Mx1*+iMy1*=exp(-b+i*a);
路径2:Fx2=b,Fy2=-a,Mx2=1,My2=0,mode=指数。路径2:运算结果:Mx2*+iMy2*=exp(b-ia);汇总器6:
sin(a+ib)=(Mx1*-Mx2*)/2i+(iMy1*-iMy2*)/2i=(My1*-My2*)/2-i(Mx1*-Mx2*)/2.
复数余弦:f=cos(a+ib)此时需要2条路径:
解码器1:路径1:Fx1=-b,Fy1=a,Mx1=1,My1=0,mode=指数。路径1运算结果:Mx1*+iMy1*=exp(-b+ia);
路径2:Fx2=b,Fy2=-a,Mx2=1,My2=0,mode=指数。路径2运算结果:Mx2*+i*My2*=exp(b-ia);
汇总器6:cos(a+ib)=(Mx1*+Mx2*)/2+(iMy1*+iMy2*)/2。
复数双曲正弦:f=sinh(a+ib)此时需要2条路径:
解码器1:路径1:Fx1=a,Fy1=b,Mx1=1,My1=0,mode=指数。路径1运算结果:Mx1*+iMy1*=exp(a+ib);
路径2:Fx2=-a,Fy2=-b,Mx2=1,My2=0,mode=指数。路径2运算结果:Mx2*+iMy2*=exp(-a-ib);
汇总器6:sinh(a+ib)=(Mx1*-Mx2*)/2+(iMy1*-iMy2*)/2。
复数双曲余弦:f=cosh(a+ib)此时需要2条路径:
解码器1:路径1:Fx1=a,Fy1=b,Mx1=1,My1=0,mode=指数。路径1运算结果:Mx1*+iMy1*=exp(a+ib);
路径2:Fx2=-a,Fy2=-b,Mx2=1,My2=0,mode=指数。路径2运算结果:Mx2*+iMy2*=exp(-a-ib);
汇总器6:sinh(a+ib)=(Mx1*+Mx2*)/2+(iMy1*+iMy2*)/2.
复数反双曲正切:f=arctanh(a+ib)此时需要2条路径:
解码器1:路径1:Fx1=0,Fy1=0,Mx1=1+a,My1=b,mode=对数.路径1运算结果:Fx1*+iFy1*=log(1+a+ib)路径2:Fx2=0,Fy2=0,Mx2=1-a,My2=-b,mode=对数,路径2运算结果:Fx2*+iFy2*=log(1-a-ib);
汇总器6:arctanh(a+ib)=(Mx1*-Mx2*)/2+(iMy1*-iMy2*)/2。
此外,还有很多函数可以通过上述指数和对数的组合来完成,本领域普通技术人员可对上述步骤进行简单地更改或替换。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被承载在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种运算多种超越函数的装置,其特征在于,包括:
解码器(1),用于接收输入z=x+iy和函数f(z),并根据函数f(z)确定至少一条运算路径及至少一组数值Fx、Fy、Mx、My及每一组数值对应的模式信息mode;
所述至少一条运算路径包括:
前处理单元(2,2A,2B),用于接收其中一组数值Fx、Fy、Mx、My及其对应的模式信息mode,调整该组数值Fx、Fy、Mx、My至运算单元(3,3A,3B)处理的范围数值:Ex、Ey、Lx、Ly,并根据所述调整产生调整值k1,k2,...,k6;
运算单元(3,3A,3B),用于根据数值Ex、Ey、Lx、Ly及模式信息mode进行运算,获得运算结果或以及
后处理单元(5,5A,5B),用于根据所述运算单元(3,3A,3B)的运算结果或及所述调整值k1,k2,...,k6获得修正结果或
其中,所述模式信息mode为指数模式或对数模式。
2.根据权利要求1所述的装置,其特征在于:
所述模式信息mode为指数模式,所述前处理单元(2,2A,2B)对Fx和Fy进行处理,k6由Fy决定:k6为最接近Fy/(π/4)的整数,Ey=Fy-k6(π/4),若k6是奇数,则将Fx减去ln(2)/2,k5由Fx决定:k5为最接近Fx/(2×ln2)的整数,Ex=Fx-k1(2×ln2)。
3.根据权利要求1所述的装置,其特征在于:
所述模式信息mode为指数模式,所述前处理单元(2,2A,2B)对Mx和My进行处理,若Mx小于0则将Mx和My乘以-1并记录k4=-1,否则k4=1,
第一步缩放:k1为使处于1/2和1之间的整数,并计算得将Mx,Y,My,Y取第5位小数近似得到
根据确定辅助变量c,p的值,其中p为复数:
若则c=0,p=1;
若则c=1,p=1-i;
若则c=7,p=1+i;
若则c=2,p=-i;
若则c=6,p=i;
将Mx,Y,My,Y乘以p得到(Mx,Y+iMy,Y)p=(Mx,Z+iMy,Z),其中Mx,Z为实部,My,Z为虚部,并决定k3=ln(p);
第二步缩放:k2为使处于1/2和1之间的整数,并计算得
4.根据权利要求1所述的装置,其特征在于:
所述模式信息mode为指数模式,所述运算单元(3,3A,3B)接收Ex在-0.8298~0.8688之间、Ey在-0.7497~0.7497之问,Lx、Ly为任意值,首先建立辅助变量Ax,1、Ay,1,满足Ax,1+iAy,1=2Ex+iEy,记迭代开始的Lx、Ly为Lx,1、Ly,1,
然后由第1步开始,在第n步进行迭代:
Ax,n+1+iAy,n+1=2(Ax,n+iAy,n)-2n+1ln(1+dn2-n)
Lx,n+1+iLy,n+1=(Lx,n+iLy,n)(1+dn2-n)
其中dn是虚实部都选择为-1,0或1的复数,dn=dx+idy由如下的规则判定:是Ax,n精确到第3位二进制小数的值、是Ay,n精确到第4位小数的值,处于-1/2至1/4时dx为0,大于等于3/8时dx为1,小于等于-5/8时dx为-1,处于-3/4至3/4时dy为0,大于等于13/16时dy为1,小于等于-13/16时dy为-1,
迭代结果为定义分别为最后一步迭代结果的实部和虚部Lx,m,Ly,m,以二进制小数表示的精度位数等于迭代次数m。
5.根据权利要求1所述的装置,其特征在于:
所述模式信息mode为对数模式,所述运算单元(3,3A,3B)接收Lx在0.5至1.3之间,Ly的绝对值小于等于Lx/2的输入,Ex、Ey为任意值,首先建立辅助变量Bx,1、By,1,满足Bx,1+iBy,1=2(Lx-1+iLy),记迭代开始的Ex、Ey为Ex,1、Ey,1,
然后由第1步开始,在第n步进行迭代:
Bx,n+1+iBy,n+1=2(Bx,n+iBy,n+dn)-dn(Bx,n+iBy,n)2-n+1
Ex,n+1+iEy,n+1=Ex,n+iEy,n-(1+dn2-n)
其中dn是虚实部都选择-1,0或1的复数,dn=dx+idy由如下的规则判定:是Bx,n精确到第4位二进制小数的值、是By,n精确到第4位小数的值,若非第一步迭代,在-1/2和1/2之间时dx为0,大于等于1/2时dx为-1,小于等于-1/2时dx为1,以同样的方式决定dy,若是第一步迭代,则有以下规则:小于等于-7/16时dx为1,并且此时大于等于6/16时dy为-1,小于等于-6/16时dy为1,其他时候dy为0;大于等于-6/16时dx为0,并且此时大于等于8/16时dy为-1,小于等于-9/16时dy为1,其他时候dy为0,
迭代结果为是定义分别为最后一步迭代结果的实部和虚部Ex,m,Ey,m,以二进制小数表示的精度位数等于迭代次数m。
6.根据权利要求1所述的装置,其特征在于:
所述模式信息mode为指数模式,所述后处理单元(5,5A,5B)将乘以根据k6模8的余数j将因子pj乘以得到
其中,j=0,1,2……,7,p0=1;p1=1+i;p2=i;p3=-1+i;p4=-1;p5=-1-i;p6=-i;p7=l-i。
7.根据权利要求1所述的装置,其特征在于:
所述模式信息mode为对数模式,所述后处理单元(5,5A,5B)将k1+k2-k3加至若k4=-1则对加或减π使得仍在-π至π之间;若k4=1则不操作,这样得到
8.根据权利要求1所述的装置,其特征在于,所述装置还包括:
汇总器(6),用于对至少一条运算路径获得的结果进行汇总处理得到输出。
9.根据权利要求1所述的装置,其特征在于,所述至少一运算路径的循环次数由原输入函数f(z)决定,且每一循环的一组数值Fx、Fy、Mx、My和模式信息mode由z=x+iy和函数f(z)决定,前一循环中后处理单元5的结果或用做后一循环中的一组数值中的Fx、Fy或Mx、My。
10.根据权利要求1所述的装置,其特征在于,所述至少一条运算路径还包括:状态存储单元(4,4A,4B),用于存储所述前处理单元(2,2A,2B)产生的调整值k1,k2,...,k6及原输入函数f(z)并提供给所述后处理单元(5,5A,5B)。
11.一种运算多种超越函数的方法,其特征在于:
解码器(1)接收输入z=x+iy和函数f(z),并根据函数f(z)确定至少一条运算路径及至少一组数值Fx、Fy、Mx、My及每一组数值对应的模式信息mode;
所述至少一条运算路径的运算步骤包括:
前处理单元(2,2A,2B)接收其中一组数值Fx、Fy、Mx、My及其对应的模式信息mode,调整该组数值Fx、Fy、Mx、My至运算单元(3,3A,3B)处理的范围数值:Ex、Ey、Lx、Ly,并根据所述调整产生调整值k1,k2,...,k6;
运算单元(3,3A,3B)根据数值Ex、Ey、Lx、Ly及模式信息mode进行运算,获得运算结果或以及
后处理单元(5,5A,5B)根据所述运算单元(3,3A,3B)的运算结果或及所述调整值k1,k2,...,k6获得修正结果或
其中,所述模式信息mode为指数模式或对数模式。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
汇总器(6)对所述至少一条运算路径获得的结果进行汇总处理得到输出。
13.根据权利要求11所述的装置,其特征在于,所述至少一运算路径的循环次数由原输入函数f(z)决定,且每一循环的一组数值Fx、Fy、Mx、My和模式信息mode由z=x+iy和函数f(z)决定,前一循环中后处理单元5的结果或用做后一循环中的一组数值中的Fx、Fy或Mx、My。
14.根据权利要求11所述的装置,其特征在于,所述至少一条运算路径的运算步骤还包括:状态存储单元(4,4A,4B)存储所述前处理单元(2,2A,2B)产生的调整值k1,k2...,k6及原输入函数f(z)并提供给所述后处理单元(5,5A,5B)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611158341.7A CN108228135B (zh) | 2016-12-15 | 2016-12-15 | 一种运算多种超越函数的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611158341.7A CN108228135B (zh) | 2016-12-15 | 2016-12-15 | 一种运算多种超越函数的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108228135A true CN108228135A (zh) | 2018-06-29 |
CN108228135B CN108228135B (zh) | 2021-09-07 |
Family
ID=62650291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611158341.7A Active CN108228135B (zh) | 2016-12-15 | 2016-12-15 | 一种运算多种超越函数的装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228135B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271134A (zh) * | 2018-12-13 | 2019-01-25 | 上海燧原科技有限公司 | 超越函数运算方法及装置、存储介质及电子设备 |
CN109976705A (zh) * | 2019-03-20 | 2019-07-05 | 上海燧原智能科技有限公司 | 浮点格式数据处理装置、数据处理设备及数据处理方法 |
TWI776090B (zh) * | 2018-12-17 | 2022-09-01 | 南韓商三星電子股份有限公司 | 電腦可讀儲存媒體、電腦實施的方法及計算邏輯區段 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1668996A (zh) * | 2002-05-22 | 2005-09-14 | 大木系统公司 | 解大型连续性或离散性最佳化问题的动态方法 |
US20080209185A1 (en) * | 2007-02-28 | 2008-08-28 | Advanced Micro Devices, Inc. | Processor with reconfigurable floating point unit |
CN101630243A (zh) * | 2009-08-14 | 2010-01-20 | 西北工业大学 | 超越函数装置以及用该装置实现超越函数的方法 |
CN102722469A (zh) * | 2012-05-28 | 2012-10-10 | 西安交通大学 | 基于浮点运算单元的基本超越函数运算方法及其协处理器 |
CN104978305A (zh) * | 2014-04-08 | 2015-10-14 | 无锡兰霖网络科技有限公司 | 基于复杂函数公式的统计指标智能计算方法 |
-
2016
- 2016-12-15 CN CN201611158341.7A patent/CN108228135B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1668996A (zh) * | 2002-05-22 | 2005-09-14 | 大木系统公司 | 解大型连续性或离散性最佳化问题的动态方法 |
US20080209185A1 (en) * | 2007-02-28 | 2008-08-28 | Advanced Micro Devices, Inc. | Processor with reconfigurable floating point unit |
CN101630243A (zh) * | 2009-08-14 | 2010-01-20 | 西北工业大学 | 超越函数装置以及用该装置实现超越函数的方法 |
CN102722469A (zh) * | 2012-05-28 | 2012-10-10 | 西安交通大学 | 基于浮点运算单元的基本超越函数运算方法及其协处理器 |
CN104978305A (zh) * | 2014-04-08 | 2015-10-14 | 无锡兰霖网络科技有限公司 | 基于复杂函数公式的统计指标智能计算方法 |
Non-Patent Citations (1)
Title |
---|
黄小康; 杜慧敏; 李涛; 周佳佳: "多核处理器中的超越函数协处理器设计", 《微电子学与计算机》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271134A (zh) * | 2018-12-13 | 2019-01-25 | 上海燧原科技有限公司 | 超越函数运算方法及装置、存储介质及电子设备 |
TWI776090B (zh) * | 2018-12-17 | 2022-09-01 | 南韓商三星電子股份有限公司 | 電腦可讀儲存媒體、電腦實施的方法及計算邏輯區段 |
CN109976705A (zh) * | 2019-03-20 | 2019-07-05 | 上海燧原智能科技有限公司 | 浮点格式数据处理装置、数据处理设备及数据处理方法 |
CN109976705B (zh) * | 2019-03-20 | 2020-06-02 | 上海燧原智能科技有限公司 | 浮点格式数据处理装置、数据处理设备及数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108228135B (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sinai | Probability theory: an introductory course | |
CN107077416A (zh) | 用于以选择性舍入模式进行向量处理的装置和方法 | |
CN104520807B (zh) | 用于具有指数按比例缩放的浮点融合乘法加法的微架构 | |
Berg | Introduction to the operational calculus | |
CN107273090A (zh) | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 | |
CN108228135A (zh) | 一种运算多种超越函数的装置 | |
CN105468331A (zh) | 独立的浮点转换单元 | |
CN107797962A (zh) | 基于神经网络的计算阵列 | |
CN107819569A (zh) | 登录信息的加密方法及终端设备 | |
CN103677738A (zh) | 基于混合模式cordic算法的低延时基本超越函数实现方法及装置 | |
US10649730B2 (en) | Normalization of a product on a datapath | |
CN103914276A (zh) | 利用浮点架构的定点除法电路 | |
CN105988973B (zh) | 快速傅里叶变换/快速傅里叶变换的方法和电路 | |
CN111984227B (zh) | 一种针对复数平方根的近似计算装置及方法 | |
CN104375802A (zh) | 一种乘除法器及运算方法 | |
CN107305485A (zh) | 一种用于执行多个浮点数相加的装置及方法 | |
CN109284083A (zh) | 一种乘法运算装置及方法 | |
CN106250098A (zh) | 用于在执行浮点运算时控制舍入的装置及方法 | |
CN105022961A (zh) | 一种计算机数据的保护方法及装置 | |
CN111443893A (zh) | 一种基于cordic算法的n次根计算装置及方法 | |
CN108733349A (zh) | 一种基于定点数的三角函数运算电路 | |
Isupov et al. | A modular-positional computation technique for multiple-precision floating-point arithmetic | |
CN114556373A (zh) | 用于大规模并行神经推理引擎的多模式低精度内积计算电路 | |
KR102399200B1 (ko) | 연상 메모리 내의 장비트 가산 및 장비트 승산을 위한 시스템 및 방법 | |
CN101295237A (zh) | 求商和余数的高速除法器 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |