CN1539102A - 执行除法的方法和装置 - Google Patents

执行除法的方法和装置 Download PDF

Info

Publication number
CN1539102A
CN1539102A CNA028154665A CN02815466A CN1539102A CN 1539102 A CN1539102 A CN 1539102A CN A028154665 A CNA028154665 A CN A028154665A CN 02815466 A CN02815466 A CN 02815466A CN 1539102 A CN1539102 A CN 1539102A
Authority
CN
China
Prior art keywords
divisor
division
question blank
auxiliary
value
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
Application number
CNA028154665A
Other languages
English (en)
Other versions
CN100524199C (zh
Inventor
�ſˡ�ά����
雅克·维瑞拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Oyj
Original Assignee
Nokia Oyj
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nokia Oyj filed Critical Nokia Oyj
Publication of CN1539102A publication Critical patent/CN1539102A/zh
Application granted granted Critical
Publication of CN100524199C publication Critical patent/CN100524199C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2101/00Indexing scheme relating to the type of digital function generated
    • G06F2101/12Reciprocal functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5354Using table lookup, e.g. for digit selection in division by digit recurrence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5356Via reciprocal, i.e. calculate reciprocal only, or calculate reciprocal first and then the quotient from the reciprocal and the numerator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Error Detection And Correction (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及执行除法的方法以及实现该方法的电子装置。在该方法中,辅助除数从存储在该电子装置中的查询表中获取,辅助除数是预先设置的,由整数2的方幂与除数的倒数的乘积得到。利用这个方法,在该电子装置中,通过使被除数与辅助除数相乘来完成除法。在该电子装置中,通过把相乘的结果移位以实现除法结果的对阶,使其表示成期望的形式。

Description

执行除法的方法和装置
技术领域
本发明涉及执行除法的方法以及实现该方法的电子装置。
背景技术
在包括电信技术在内的各种应用中,除法是最基本的算术运算之一。用到除法的典型计算包括矩阵求逆和规格化。
除法通常是使用各种迭代方法完成的。一个例子就是Newton-Raphson算法,该算法利用函数图f(x)的正切,即导数f′(x),通过若干次迭代来求解方程f(x)=0。迭代开始时,选择初始值x0并且将之代入方程 x i + 1 = x i - f ( x i ) f ′ ( x i ) . 一般而言,需要迭代3或4次。实际上,也可以用反复从被除数减去除数直到其差小于除数为止的方法来执行除法。这样,商的整数部分就是做减法的次数。这种方法的一个缺点就是在某些情况下需要的迭代次数太多。还有一个缺点就是不能直接得到商的小数部分。
迭代所用的时间取决于所执行的功能。当执行需要相对耗时较多的功能,例如除法时,速度缓慢就可能成为问题。在电信应用中,例如在进行数字信号处理时,这就尤其是个问题。
现有技术的迭代方法,在定点和浮点处理器中都是适用的。当采用浮点表示法时,表示一个数需要尾数和指数,为二者保留的位数都是固定的;当采用定点表示法时,代表小数部分的位数是由表示法决定的常数。Newton-Raphson算法特别适用于执行浮点数除法,而从被除数减去除数的迭代方法则适用于定点应用。
例如,出于经济上的原因,在包括电信技术在内的许多应用中,通常都把现有技术的迭代算法用在定点处理器中。这其中的缺点是,常常在经过2次甚至3次迭代之后计算结果的精度仍不能提高。这样,取得需要的精度就是问题所在。精确执行除法的方法是存在的,但它们的问题是速度太慢。在处理器中,可以实现用一个时钟周期完成一个除法运算的装置。然而,在实际上,这样一种实施方式会占用处理器或专用集成电路中相当比例的硅面积,也就是说经济上不合理。
将现有技术的迭代解决方案实现为浮点数处理器的方式可以得到良好的精度。然而,在浮点数处理器中进行计算比在定点处理器中需要更多的逻辑。所以浮点数处理器就比定点处理器要慢。用浮点数进行的运算也比用定点数更加复杂。与定点处理器相比,浮点数处理器还有一个缺点,就是在浮点数处理器中执行一个给定的运算,比在定点处理器中需要更多的存储空间。由于例如在数字信号处理时所需的存储空间部分一般都相当大,所以这种方式在经济上是特别不利的。因此,例如ASIC实现或大多数数字信号处理器(DSP)均不支持浮点数实现。
当前技术的迭代算法解决方案一般使用一个查询表(LUT),其中存储期望的数值,从中获取初始值。查询表中的数值具有对应于其位置的地址,利用这个地址可以将数值取到算法所执行的计算中。在处理器中,所使用的查询表需要的存储空间很大,这也是一个经济问题。
以数字信号处理为例,上述当前技术的解决方案引起的实际问题是,如果算法实现不能得到高质量的结果,即精度,那么接收器的性能会不合理地降低。进一步说,当例如把当前技术的迭代解决方案用在数字信号处理时,需要多个一连串的条件结构,带来的问题就是速度慢。
发明内容
本发明的目的是提供一种执行除法的改进方法和执行除法的改进电子装置。本发明的一个方面是如权利要求1所述的方法。本发明的又一个方面是如权利要求13所述的装置。本发明的其它优选实施例在从属权利要求中说明。
本发明的基础是通过被除数与辅助除数的表值相乘来执行除法运算,其中辅助除数是预定值,由整数2的方幂与除数的导数之积产生,并存储于查询表中,然后把相乘结果移位以实现除法结果的对阶(scaling),从而将其表示成期望的格式。
按照本方法,用一些简单和快速的计算运算,例如乘法、加法和减法,来执行除法。依据本发明,使用预制成表的数值执行除法,该数值产生于除数的倒数与2的方幂的乘积。2的方幂的乘和除是容易的,实际上可以用移位完成。在本方法中,除数的倒数被预先计算并存于查询表中,因此期望的除法被转换成为可以执行得更快的乘法、加法、减法和移位,这些运算把结果表示成期望的形式。
本方法的优点是可以在一个计算周期中完成除法,而不需要耗费时间的迭代,使得计算速度快。把除法转换为简单和快速的计算也使本方法更快。本方法只使用了一个查询表,用以从中取得对应于期望除数的辅助除数。由此带来又一个优点,就是不需要多个查询表来存储部分的相除结果,所以需要的存储空间更少。本方法的另外一个优点是其良好的计算精度。本方法的快速和精确在电信应用中是特别有价值的,在那里快速和精确是最重要的。本发明的装置在电信应用中尤其有经济上的优势,因为该解决方案需要的存储空间较少并且容易实现。
本发明的解决方案特别适用于无线***,例如GSM(全球移动通信***)和WCDMA(宽带码分多址)***或其它蜂窝无线***。本方法可应用于多个领域,例如数字处理或通信的无线***。本方法特别可应用于自适应天线或快速自适应滤波器,例如RLS或Kalman滤波器。通常需要用到除法的运算包括例如矩阵求逆和规格化。
附图说明
下面通过参照附图的例子说明本发明的优选实施例,其中:
图1是一个执行除法的优选实施例的流程图;
图2是第二个优选实施例的可选实施例的流程图;
图3示出了一个执行除法的电子装置的例子;
图4示出了一个执行除法的装置的ASIC实现的例子;
图5示出了一个查询表的图表的例子。
具体实施方式
参照图1说明执行除法的方法。按照图1的优选实施例的解决方案的程序打印件在附录1和3中给出。
在图1的优选实施例中,做如下假定:被除数x和除数y都是有符号的8位整数,见附录1,打印件1和附录3,打印件6;期望的结果是Q8格式的16位有符号整数,见附录1,打印件1和附录3,打印件6。然而在本方法中,位数是不受限制的,但是当使用的位数如图1的优选实施例中那样时,表格尺寸和使用的存储器量保持较少。
Q格式是一种16位格式,其中用指定数量的位表示数的整数部分,用指定当量的位表示数的小数部分。在Q格式中,Q之后的参数指出为数的小数部分保留的位数。相应地,为数的整数部分保留的位数是从16中减去上述格式参数的结果。例如,Q13格式意味着有13位保留用于数的小数部分,而16-3=3位保留用于数的整数部分。举例来说,Q8格式是在数字信号处理(DSP)中使用的16位二进制格式。前8位以8位二进制格式表示数的整数部分,后8位以8位形式表示数的小数部分,其中每一位的作用是代表数值2的其索引值(从数值-1开始)次的负方幂。数可以用2的补码表示,这样诸如加法和减法的逻辑就简化了。实际上,几乎所有的处理器或ASIC实现都是用2的补码表示整数。
图1中的优选实施例使用一个查询表,见附录3,打印件3中的举例,其中查询表预先确定的数,即辅助除数,被事先存入表中。表中存储的数,即辅助除数,产生于整数2的方幂2Q(y)与除数y的倒数
Figure A0281546600081
之积,其中Q(y)是由y值所决定的一个整数。
存储于查询表中的辅助除数决定于项 即它们具有
Figure A0281546600083
的形式,其中f表示一个变量为 的函数,y是期望的除数,而Q(y)是y值所决定的一个整数。查询表中的辅助除数也可以具有 的形式,其中f1是函数f的逆函数,y是期望的除数,而Q(y)是y值所决定的一个整数。再进一步,查询表中的辅助除数也可以具有 的形式,其中y是期望的除数,而Q(y)是y值所决定的一个整数。
接下来,可以把 所决定的辅助除数按照一种合适的方式存入查询表,这种方式允许调整表中数的长度和表的尺寸,例如保持这些长度和尺寸在给定的界限之内,或利于后续的计算。在除法的被除数乘以辅助除数并且将除法结果对阶以表示为期望的格式之前,取自查询表的辅助除数可以恢复到基本形式
Figure A0281546600092
例如,若辅助除数表示为
Figure A0281546600093
的形式,那么在将它乘以除法的被除数之前,给它加1。
为了使表中数的长度和表格占用的内存不要增加太多,在当前的示例情况下,表中数的长度被限制为16位。在SW实现中,一个17位的数需要32位的存储器,见附录3,打印件6。在所给出的例子中,通过在表中存储具有形式
Figure A0281546600094
的整数,数的长度被限制为16位,其中y是期望的除法运算的除数,而Q(y)是y值所决定的一个整数。这种安排的优点是可以减少所需内存的数量。
在图1的优选实施例中,选择Q(y),使得当除数y的绝对值小于33时,Q(y)是整数16,(table_Q1=16,见附录3,打印件3)。当除数y的绝对值大于或等于33时,为Q(y)选择整数21,(table_Q2=21见附录3,打印件3)。然而,在本方法中,Q(y)的可能值的数量并不限于两个,其数值可以是任意的,只要Q的值是8位无符号整数(u8,unsigned char,见附录3,打印件6)。在示例情况下,最好这样选择Q(y)的值,使得除数的倒数与2的方幂之积 保持在期望的最小值和最大值(这里,216=65536,二进制形式10000000000000000)之间,没有达到最小值和最大值,并且使得表格的尺寸是最小的。所选择的Q(y)值的好处是,当使用它们时,表格的尺寸和数的长度都保持较小,并且与精确值相比,它们还能得到足够精确的结果,和较小的最大误差。图5给出一个查询表的图表的例子,其中纵轴代表出现在该表中的辅助除数的值,而横轴代表除数y的绝对值。图中的不连续处表示从Q(y)从值16到值21的转换点。
让我们按照图1中的优选实施例来举例执行2个数之间的除法。令被除数x的值为1,除数y的值为2。数1的二进制形式是1,而数2的二进制形式是10。
在方框102中,计算除数和被除数的绝对值。本例中,被除数的绝对值abs_x=1,除数的绝对值abs_y=2。
在方框104中,计算结果的符号。由于本例中被除数x>0,除数y>0,所以结果的符号result_sign=1。
在方框106、108、110中,确定对应于除数绝对值的移位值。在方框106中,检查是否除数y的绝对值abs_y>=33。因为在本例中abs_y=2<33,所以在方框108中,移位值shift=Q(y)-8=table_Q1-8=16-8=8。
在方框112中,从查询表中取出对应于除数y的辅助除数。本例中,辅助除数是inv_table[abs_y-1]=32767,见附录1和附录3,打印件3。
在方框114中,通过用被除数x与列表中的辅助除数的值相乘来执行除法,见附录1。在本例的优选实施例中,以 的形式存储辅助除数,因此整数1被加到取自查询表的辅助除数上。由此得到除数的倒数inv_y,用于与被除数x相乘,见附录1。在本例中,inv_y=1+inv_table[abs_y-1]=1+32767=32768,其二进制表示是1000000000000000。下一步,两个二进制数相乘,即1*1000000000000000,从而得到二进制数1000000000000000。
在方框116中,将结果对阶成为期望的表示格式。通过将2shift-1加到乘积上,然后将其除以2shift,也就是把如此得到的结果右移8位,从而执行算术移位。执行此工作的方法是:把数1左移7位,并将其加到乘积1000000000000000上。换句话说,将2shift-1=28-1=128以二进制形式10000000加到乘积上,得到1000000010000000。把得到的结果进一步右移8位,即把结果除以数2shift=28=256,二进制形式100000000。这就得到无符号形式的除法结果10000000。通过表示成Q8格式的16位有符号整数,结果为0000000010000000,其中前8位是整数部分,而后8位是小数部分。按照Q格式,该结果中的数1表示数2-1=1/2=0.5。
在方框118中,如果有必要,通过将结果乘以数-1来改变其符号。本例中,在方框104中发现结果0000000010000000的符号是+1,因此所得结果的符号不必改变。
在以上所说明的优选实施例中,方框104也可以在执行方框118之前的任何阶段执行。
下面参照图1和2说明第二个优选实施例。第二个优选实施例的程序打印件位于附录2和3中。
在第二个优选实施例中,用于表示除法结果的Q格式被优化。在此实施例中,执行除法以前可以先做一个检查,看被除数和除数是否满足初始条件组。与上面说明的、按照图1的优选实施例相比,图1和2的实施例产生的结果更为精确。然而,图1和2的实施例与图1的实施例相比更慢,而且使用更多的存储空间。
在另外一个优选实施例中,用增加折方框130执行图1的方法。此外也可以执行方框140。如果需要,在第一个优选实施例中也可以执行方框140。
作为一个例子,按照图1和2的第二个优选实施例来执行两个数之间的除法。结果要表示成优化Q格式。令被除数(x)的值为1,除数(y)的值为-128。在二进制格式中,数1是1,数-128是10000000。
在可选的方框140中,可以检查输入值是否符合初始条件。根据例子的优选实施例的初始条件,所输入的数x和y必须不小于-128,并且不大于128,输入的数-128被饱和(saturated)为数-127。数y必须不为零。在本例中,数x符合给出的初始条件,但数y=-128不符合,因此在方框140中它被饱和为数-127,然后处理进入方框102。
在本例的计算中,方框102到114如同在第一个优选实施例中那样执行。这里得到的移位值是13,而被除数与辅助除数的乘积是16384,二进制形式是100000000000000。
为了使程序优化期望的Q格式,在函数调用时,给*Q指定初始值-1。这样,由于在本例中abs_x=1和abs_y=127,所以处理从方框202经过方框204继续到方框206,然后到达方框212,在那里给*Q赋值14。相应地,结果将以Q14格式表示,即保留14位用于小数部分。
在方框218中,计算优化的移位值,本例中该值是13+8-14=7。
在本实施例中,也可以检查Q格式,即查看Q格式是否在允许的范围,即在[0-16]之间,见附录2。
方框116和118如同在第一个优选实施例中那样执行,结果是二进制数10000000。表示成Q14格式,这个数具有形式000010000000,其中前两位(16-14=2)位表示整数部分,而后14位表示小数部分。按照Q14格式,结果中的数1代表数2-7=1/128=0.0078125。
参考图3和4来说明利用该方法执行除法的电子装置。上面说明的执行除法的方法、根据图1的方法的第一优选实施例和根据图1和2的第二优选实施例都可以借助采用图3的解决方案的电子装置来实现。在图3中,电子装置300包括查询表304,其中存储由整数2的方幂与除数的倒数之积产生的预定整数。电子装置300还包括装置302,用于按照图1和2的优选实施例的方框100至120、200至218以及140执行计算操作。
用于实现本方法的电子装置300中包含的装置302通常被实现为处理中执行的软件。电子装置中包含的查询表304通常位于处理器的存储器306中。
用于实现本方法的电子装置300中包含的装置302也可以部分地或全部地用电子器件实现。在电子器件实现中通常用到的技术是ASIC(专用集成电路)技术。在图4中给出了使用ASIC技术实现的应用的例子。在根据图4的ASIC实现中,被除数x的值在方框400中输入,而除数y的值在方框402中输入。在方框404和406中,计算除数和被除数的绝对值。在方框408中,从尺寸为128*16位的存储器中获取y的数值。在方框410中,根据y值计算移位值shift。在方框412中,将x和y相乘,然后在方框414中,根据在方框410中得到的移位值进行对阶。如果必要,根据在方框416中确定的符号在方框418中改变结果的符号,到此执行了期望的除法。
虽然上面参照结合附图的例子对本发明进行了说明,但是,本发明显然并不局限于此,在如所附权利要求所公开的发明构思的范围内,可以通过各种方式对所述例子进行修改。
附录1
  Nokia公司版权所有,2001

   打印件1:i8_div_fast.c

  #include<stdio.h>

  #include<stdlib.h>

  #include″types.h″

  #include″i8_div_fast.h″

  extern u16 i8_inv_table[];/*来自i8_div_table.c*/

  extern u8 table_Q1;

  extern u8 table_Q2;

  /*---------------------------------------------------*/

  i16 i8_div_fast(i8 x,/*被除数*/

           i8 y)/*除数*/

  /*--------------------------------------------------*/
 {

  i16 result;/*返回值*/

  u8 abs_x,abs_y;

 u32 inv_y;

 u8 shift;

  u8 result_sign;
  /*
        <!-- SIPO <DP n="9"> -->
        <dp n="d9"/>
  *x和y的绝对值和相应的移位

  */

  abs_x=abs(x);

  abs_y=abs(y);

  if(abs_y>=33)

      shift=table_Q2-8;

  else

     shift=table_Q1-8;

  /*

  *如果x和y的符号不同,result_sign=-1

  */

  result_sign=1;

  if((x<0&&y>0)||(x>0&&y<0))

      result_sign=-1;

 /*

  *根据table计算1/y,结果为Q8格式

 */

  inv_y=1+i8_inv_table[abs_y-1];/″格式为table_Qx*/

  result=(inv_y*abs_x+(1<<(shift-1)))>>shift;

  /*

  *返回带符号的结果

  */

  if(result_sign==1)
        <!-- SIPO <DP n="10"> -->
        <dp n="d10"/>
       return result;

  else

       return-result;
附录2
  Nokia公司版权所有,2001

  打印件2:i8_div.c

  #include<stdio.h>

  #include<stdlib.h>

  #include″type.h″

  #include″i8_div.h″

 extern u16 i8_inv_table[];/*来自i8_div_table.c*/

  extern u8 table_Q1;

  extern u8 table_Q2;

  /*-------------------------------------*/

  i16 i8_div(i8 x,/*被除数*/

     i8 y,/*除数*/ 

      i8*Q)/*输出的Q格式*/

  /*-------------------------------------*/

  {

  i32 result0;

  i16 result;/*返回值*/

  u8 abs_x,abs_y;
        <!-- SIPO <DP n="11"> -->
        <dp n="d11"/>
  u32 inv_y;

  u8 shift;

  ue result_sign;

  /*

  *检查输入的合法性

  */

  if(y==0)

  {

  #ifdef i8_div_EXIT_ON_ERROR

    fprintf(stderr″i8_div:division by zero\n″);

    exit(EXIT_FAILURE);

  #else

    if(x<=0)

      return 0x8000;

  else

      return 0x7fff;

  #endif

  }

  if(y==-128)/*变-128为-127,仅为避免溢出*/

     y=-127;

  if(x==-128)

     x=-127;

  /*

  *x和y的绝对值和相应的移位

  */
        <!-- SIPO <DP n="12"> -->
        <dp n="d12"/>
  abs_x=abs(x);

  abs_y=abs(y);

  if(abs_y>=33)

     shift=table_Q2-16+8;

  else

     shift=table_Q1-16+8;

  /*

  *如果x和y的符号不同,result_sign=-1

  */

  result_sign=1;

  if((x<0&&y>0)||(x>0&&y<0))

     result_sign=-1;

  /*

  *根据table和初始条件计算1/y

  */

  inv_y=1+i8_inv_table[abs_y-1];/*格式为table_Qx x*/

  result0=inv_y*abs_x;/*从ASIC角度看,这可能是最难的部分*/

  /*

  *如果需要,优化*Q

  */

  if(*Q==-1)/*试图优化*Q*/
        <!-- SIPO <DP n="13"> -->
        <dp n="d13"/>
  {

    if(abs_x<abs_y)

       *Q=15;

    else

    {

       if(abs_x>>1<abs_y)

         *Q=14

       else

       {

         if(abs_x>>2<abs_y)

            *Q=13;

         else

            *Q=8;

       }

    }

  }

  /*

  *检查*Q的合法性

  */

  if(*Q<0||*Q>16)

  {

    fprintf(stderr,″i8_div:illegal value for Q\n″);

    exit(EXIT_FAILURE);

  }

  /*

  *根据*Q将结果对阶
        <!-- SIPO <DP n="14"> -->
        <dp n="d14"/>
  */

  shift=shift+8-*Q;

  result=(result0+(1<<(shift-1)))>>shift;/*结果具有*Q格式*/

  if(result_sign==1)

    return result;

  else

    return-result;

  }
附录3
  Nokia公司版权所有,2001

  打印件3:i8_div_table.c

  #include″types.h″

  u8 table_Q1=16;

  u8 table_Q2=21;

  u16 i8_inv_table[]={

  65535,32767,21844,16383,13106,10922,9361,8191,

  7281,6553,5957,5460,5040,4680,4368,4095,

  3854,3640,3448,3276,3120,2978,2848,2730,

  2620,2520,2426,2340,2259,2184,2113,2047,

  63549,61680,59918,58253,56679,55187,53772,52428,

  51149,49931,48770,47662,46602,45589,44619,43690,

  42798,41942,41120,40329,39568,38835,38129,37448,

  36791,36157,35544,34952,34379,33824,33287,32767,

  32263,31774,31300,30839,30393,29958,29536,29126,
        <!-- SIPO <DP n="15"> -->
        <dp n="d15"/>
 28727,28339,27961,27593,27235,26886,26545,26213,

 25890,25574,25266,24965,24671,24384,24104,23830,

  23563,23301,23045,22794,22549,22309,22074,21844,

  21619,21399,21182,20971,20763,20559,20360,20164,

  19972,19783,19599,19417,19239,19064,18892,18724,

  18558,18395,18235,18078,17923,17771,17622,17475,

  17331,17189,17049,16912,16776,16643,16512,16383};

  Nokia公司版权所有,2001

  打印件4:i8_div.h

  #ifndef_i8_div_h

  #define_i8_div_h

  #include″types.h″

  /*函数原型*/

  i16 i8_div(i8 x,/*被除数*/

              i8 y,/*除数*/

              i8*Q);/*Q-格式,Q∈[-1,16]*/

  #endif

  Nokia公司版权所有,2001

  打印件5:i8_div_fast.h
        <!-- SIPO <DP n="16"> -->
        <dp n="d16"/>
  #ifndef_i8_div_fast_h

  #define i8_div_fast_h

  #include″types.h″

  /*函数原型*/

  i16 i8_div_fast(i8 x,/*被除数*/

                   i8 y);/*除数*/

 #endif

  Nokia公司版权所有,2001

  打印件6:types.h

  #ifndef_types_h

  #define_types_h

  #define HP_UX

  #ifdef HP_UX

  typedef signed char i8;

  typedef signed short int i16;

  typedef signed long i32;

  typedef signed long long i64;

  typedef unsigned char u8;

  typedef unsigned short int u16;
        <!-- SIPO <DP n="17"> -->
        <dp n="d17"/>
  typedef unsigned long u32;

  #endif

  #endif

  Nokia公司版权所有,2001

  打印件7:i8_div_table_gen.m

  %i8_div_gen_table.m

  %针对i8_div.c产生i8_div_table.c

  table_Q1=16;

  table_Q2=21;

  finv_table=(1./[1:128]);%无符号8位

  inv_table(1:32)=2^table_Q1*finv_table(1:32);

  inv_table(33:128)=2^table_Q2*fine_table(33:128);

  inv_table=round(inv_table)-1;

  fid=fopen(′i8_div_table.c′,′w′);

  fprintf(fid,′#include″types.h″\n\n′);

  fprintf(fid,′u8 table_Q1=%i;\n′,table_Q1);

  fprintf(fid,′u8 table_Q2=%i;\n′,table_Q2);

  fprintf(fid,′u16 i8_inv_table[]={\n′)

    for x=1:127

       fprintf(fid,′%5i,′,inv_table(x));

       if(rem(x,8)==0)
        <!-- SIPO <DP n="18"> -->
        <dp n="d18"/>
         fprintf(fid,′\n′);

       end

  end

  fprintf(fid,′%i};\n′,inv_table(128));

  fclose(fid);

Claims (24)

1.一种在电子装置中执行除法的方法,其特征在于:
(112)从电子装置中存储的查询表中获取辅助除数,查询表中辅助除数的值为通过整数2的方幂与除数的倒数的乘积产生的预定数值,并且被存储在查询表中;
(114)该电子装置中,通过将除法的被除数与取自查询表的辅助除数相乘,执行除法;
(116)该电子装置中,通过将相乘的结果移位,对除法的结果进行对阶,以将其表示成期望的形式。
2.如权利要求1中所述的方法,其特征在于,查询表中存储的辅助除数具有 的形式,其中f是函数,y是期望除法运算的除数,而Q(y)是由y值所决定的整数。
3.如权利要求1中所述的方法,其特征在于,查询表中存储的辅助除数具有
Figure A028154660002C2
的形式,其中f1是函数f的逆函数,y是期望除法运算的除数,而Q(y)是由y值所决定的整数。
4.如权利要求1中所述的方法,其特征在于,查询表中存储的辅助除数具有
Figure A028154660002C3
的形式,其中f是函数,y是期望除法运算的除数,而Q(y)是由y值所决定的整数。
5.如权利要求1中所述的方法,其特征在于,查询表中存储的辅助除数具有 的形式,其中f是函数,y是期望除法运算的除数,而Q(y)是由y值所决定的整数。
6.如权利要求2至4中任何一个所述的方法,其特征在于,将取自查询表的辅助除数转换为基本形式 其中在此之后通过将除法的被除数乘以辅助除数来执行除法。
7.如权利要求4中所述的方法,其特征在于,将取自查询表的辅助除数加上数1,其中在此之后通过将除法的被除数乘以所得到的和来执行除法。
8.如上述任一权利要求中所述的方法,其特征在于,当除数y的绝对值小于32时,Q(y)为整数16。
9.如上述任一权利要求中所述的方法,其特征在于,当除数y的绝对值大于或等于33时,Q(y)为整数21。
10.如上述任一权利要求中所述的方法,其特征在于,以Q8格式表示除法的对阶结果。
11.如上述任一权利要求中所述的方法,其特征在于,优化用以表示除法的对阶结果的Q格式。
12.如上述任一权利要求中所述的方法,其特征在于,在除法执行以前检查除数与被除数是否满足方法的初始条件。
13.一种用于执行除法的电子装置,其特征在于,该装置包括:
其中存储辅助除数的查询表(304),辅助除数的值为通过整数2的方幂与除数的倒数的乘积产生的预定值,并且被存储在查询表中;
用于从查询表(304)获取辅助除数的装置(302);
用于通过将除法的被除数与取自查询表的辅助除数相乘来执行除法的装置(302);
用于通过将作为相乘结果而得到的数移位以将其表示为期望形式,从而对除法结果进行对阶的装置(302)。
14.如权利要求13中所述的电子装置,其特征在于,查询表(304)中存储的辅助除数具有 的形式,其中f是函数,y是期望除法运算的除数,而Q(y)是由y值所决定的整数。
15.如权利要求13中所述的电子装置,其特征在于,查询表中存储的辅助除数具有 的形式,其中f1是函数f的逆函数,y是期望除法运算的除数,而Q(y)是由y值所决定的整数。
16.如权利要求13中所述的电子装置,其特征在于,查询表中存储的辅助除数具有 的形式,其中y是期望除法运算的除数,而Q(y)是由y值所决定的整数。
17.如权利要求13中所述的电子装置,其特征在于,查询表中存储的辅助除数具有
Figure A028154660004C1
的形式,其中y是期望除法运算的除数,而Q(y)是由y值所决定的整数。
18.如权利要求14至16中任何一个所述的电子装置,其特征在于,取自查询表的辅助除数被转换成基本形式
Figure A028154660004C2
其中在此之后通过将除法的被除数与辅助除数相乘来执行除法。
19.如权利要求16中所述的电子装置,其特征在于,将取自查询表(304)的辅助除数加上数1,其中在此之后通过将除法的被除数乘以该和来执行除法。
20.如权利要求13至19中任何一个所述的电子装置,其特征在于,当除数y的绝对值小于32时,Q(y)是整数16。
21.如权利要求13至20中任何一个所述的电子装置,其特征在于,当除数y的绝对值大于或等于33时,Q(y)是整数21。
22.如权利要求13至21中任何一个所述的电子装置,其特征在于,以Q8格式表示除法的对阶结果。
23.如权利要求13至22中任何一个所述的电子装置,其特征在于,优化用以表示除法的对阶结果的Q格式。
24.如权利要求13至23中任何一个所述的电子装置,其特征在于,在执行除法以前检查除数与被除数是否满足本方法的初始条件。
CNB028154665A 2001-08-07 2002-08-06 执行除法的方法和装置 Expired - Fee Related CN100524199C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20011610 2001-08-07
FI20011610A FI20011610A0 (fi) 2001-08-07 2001-08-07 Menetelmä ja laite jakolaskun suorittamiseksi

Publications (2)

Publication Number Publication Date
CN1539102A true CN1539102A (zh) 2004-10-20
CN100524199C CN100524199C (zh) 2009-08-05

Family

ID=8561712

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028154665A Expired - Fee Related CN100524199C (zh) 2001-08-07 2002-08-06 执行除法的方法和装置

Country Status (5)

Country Link
US (1) US20040167956A1 (zh)
EP (1) EP1421471A1 (zh)
CN (1) CN100524199C (zh)
FI (1) FI20011610A0 (zh)
WO (1) WO2003014914A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100367191C (zh) * 2005-09-22 2008-02-06 上海广电(集团)有限公司中央研究院 一种快速流水线型除法器
CN102508633A (zh) * 2011-12-02 2012-06-20 四川和芯微电子股份有限公司 除法器逻辑电路及实现除法器逻辑电路的方法
CN103699356A (zh) * 2012-09-27 2014-04-02 任光前 并行除法算法及并行除法计算器
CN104731551A (zh) * 2013-12-23 2015-06-24 浙江大华技术股份有限公司 基于fpga进行除法操作的方法及装置
CN111385578A (zh) * 2018-12-28 2020-07-07 北京图森智途科技有限公司 一种应用于fpga的数据解压缩方法、成像设备和汽车
WO2022088997A1 (zh) * 2020-10-28 2022-05-05 Oppo广东移动通信有限公司 除运算方法及除法器、除法装置、电子设备、存储介质

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NZ524378A (en) * 2003-02-24 2004-12-24 Tait Electronics Ltd Binary shift and subtract divider for phase lock loops
US7167891B2 (en) * 2003-03-21 2007-01-23 Intel Corporation Narrow data path for very high radix division
US7467174B2 (en) * 2004-09-23 2008-12-16 Wisconsin Alumni Research Foundation Processing unit having decimal floating-point divider using Newton-Raphson iteration
US20060179092A1 (en) * 2005-02-10 2006-08-10 Schmookler Martin S System and method for executing fixed point divide operations using a floating point multiply-add pipeline
US7895250B2 (en) * 2005-05-25 2011-02-22 Qualcomm Incorporated Fixed point integer division techniques for AC/DC prediction in video coding devices
FR2895105A1 (fr) * 2005-12-20 2007-06-22 St Microelectronics Sa Procede pour diviser un nombre par une fraction ayant au numerateur un nombre en forme de puissance de 2
EP2375751A1 (en) 2010-04-12 2011-10-12 Panasonic Corporation Complexity reduction of edge-detection based spatial interpolation
KR20120027827A (ko) * 2010-09-13 2012-03-22 한국전자통신연구원 디바이더 및 그것의 동작 방법
US9524143B2 (en) 2014-06-26 2016-12-20 Arm Limited Apparatus and method for efficient division performance
JP2016062404A (ja) * 2014-09-19 2016-04-25 サンケン電気株式会社 演算処理方法及び演算処理装置
WO2018149995A1 (en) * 2017-02-16 2018-08-23 Telefonaktiebolaget Lm Ericsson (Publ) Filter apparatus and methods

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60142738A (ja) * 1983-12-30 1985-07-27 Hitachi Ltd 内挿近似を使用する除算装置
US4991132A (en) * 1987-12-17 1991-02-05 Matsushita Electric Industrial Co., Ltd. Apparatus for executing division by high-speed convergence processing
US4916531A (en) * 1988-03-23 1990-04-10 Data Translation, Inc. Color video processing circuitry
US5020017A (en) * 1989-04-10 1991-05-28 Motorola, Inc. Method and apparatus for obtaining the quotient of two numbers within one clock cycle
JP3199371B2 (ja) * 1990-07-30 2001-08-20 松下電器産業株式会社 丸め装置
US5862059A (en) * 1995-07-19 1999-01-19 National Semiconductor Corporation Table compression using bipartite tables
US5825681A (en) * 1996-01-24 1998-10-20 Alliance Semiconductor Corporation Divider/multiplier circuit having high precision mode
US6282556B1 (en) * 1999-10-08 2001-08-28 Sony Corporation Of Japan High performance pipelined data path for a media processor
JP3598096B2 (ja) * 1999-12-22 2004-12-08 航 尾形 ニュートンラフソン法を用いた演算方式
US7058675B1 (en) * 2000-09-28 2006-06-06 Altera Corporation Apparatus and method for implementing efficient arithmetic circuits in programmable logic devices
US6782405B1 (en) * 2001-06-07 2004-08-24 Southern Methodist University Method and apparatus for performing division and square root functions using a multiplier and a multipartite table
US7130876B2 (en) * 2001-11-30 2006-10-31 General Instrument Corporation Systems and methods for efficient quantization
US7065546B2 (en) * 2002-04-09 2006-06-20 Sony Electronics Inc. Method of performing quantization within a multimedia bitstream utilizing division-free instructions

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100367191C (zh) * 2005-09-22 2008-02-06 上海广电(集团)有限公司中央研究院 一种快速流水线型除法器
CN102508633A (zh) * 2011-12-02 2012-06-20 四川和芯微电子股份有限公司 除法器逻辑电路及实现除法器逻辑电路的方法
CN102508633B (zh) * 2011-12-02 2014-10-22 四川和芯微电子股份有限公司 除法器逻辑电路及实现除法器逻辑电路的方法
CN103699356A (zh) * 2012-09-27 2014-04-02 任光前 并行除法算法及并行除法计算器
CN103699356B (zh) * 2012-09-27 2016-09-21 任光前 一种并行除法计算器
CN104731551A (zh) * 2013-12-23 2015-06-24 浙江大华技术股份有限公司 基于fpga进行除法操作的方法及装置
CN104731551B (zh) * 2013-12-23 2018-02-16 浙江大华技术股份有限公司 基于fpga进行除法操作的方法及装置
CN111385578A (zh) * 2018-12-28 2020-07-07 北京图森智途科技有限公司 一种应用于fpga的数据解压缩方法、成像设备和汽车
WO2022088997A1 (zh) * 2020-10-28 2022-05-05 Oppo广东移动通信有限公司 除运算方法及除法器、除法装置、电子设备、存储介质

Also Published As

Publication number Publication date
EP1421471A1 (en) 2004-05-26
CN100524199C (zh) 2009-08-05
FI20011610A0 (fi) 2001-08-07
US20040167956A1 (en) 2004-08-26
WO2003014914A1 (en) 2003-02-20

Similar Documents

Publication Publication Date Title
CN1539102A (zh) 执行除法的方法和装置
De Dinechin et al. Floating-point exponential functions for DSP-enabled FPGAs
EP0411491A2 (en) Method and apparatus for performing division using a rectangular aspect ratio multiplier
US20230185537A1 (en) Design of high-performance and scalable montgomery modular multiplier circuits
US7711764B2 (en) Pipelined real or complex ALU
CN113608718B (zh) 一种实现素数域大整数模乘计算加速的方法
CN114115803B (zh) 一种基于部分积概率分析的近似浮点乘法器
CN110222305B (zh) 一种基于双曲cordic的对数函数计算***及方法
CN110187866B (zh) 一种基于双曲cordic的对数乘法计算***及方法
EP2254041A1 (en) Cordic operational circuit and method
Murillo et al. A suite of division algorithms for posit arithmetic
CN1833220A (zh) 用于求出整数余数的方法和装置
CN103593159A (zh) 一种高效率高精度除法实现方法及装置
US20040186873A1 (en) Narrow data path for very high radix division
Abdelhamid et al. Applying the residue number system to network inference
US9612800B2 (en) Implementing a square root operation in a computer system
US7225216B1 (en) Method and system for a floating point multiply-accumulator
Mopuri et al. Low-complexity and high-speed architecture design methodology for complex square root
Bajger et al. Low-error, high-speed approximation of the sigmoid function for large FPGA implementations
Walke High sample-rate Givens rotations for recursive least squares
CN115062768A (zh) 一种逻辑资源受限平台的Softmax硬件实现方法及***
Wu et al. A novel modular multiplier for isogeny-based post-quantum cryptography
CN1567178A (zh) 新型乘法器重构算法及电路
EP1089227A2 (en) Interpolation method and apparatus
Kumm et al. Reduced complexity single and multiple constant multiplication in floating point precision

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090805

Termination date: 20110806