CN115291834B - N进制浮点加法运算系统与方法 - Google Patents

N进制浮点加法运算系统与方法 Download PDF

Info

Publication number
CN115291834B
CN115291834B CN202210793145.6A CN202210793145A CN115291834B CN 115291834 B CN115291834 B CN 115291834B CN 202210793145 A CN202210793145 A CN 202210793145A CN 115291834 B CN115291834 B CN 115291834B
Authority
CN
China
Prior art keywords
value
storage unit
extra precision
extra
ary
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.)
Active
Application number
CN202210793145.6A
Other languages
English (en)
Other versions
CN115291834A (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.)
East China Normal University
Original Assignee
East China Normal University
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 East China Normal University filed Critical East China Normal University
Priority to CN202210793145.6A priority Critical patent/CN115291834B/zh
Publication of CN115291834A publication Critical patent/CN115291834A/zh
Application granted granted Critical
Publication of CN115291834B publication Critical patent/CN115291834B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Nonlinear Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种N进制浮点加法运算系统与方法,其系统包括:额外精度存储单元,用来存储运算过程中额外的精度;浮点转换单元,用来将操作数转换成N进制形式;加法器,执行加法运算。其运算方法是,首先,用额外精度存储单元设置一个额外的存储与计算精度m;然后,参与运算的N进制操作数,其尾数部分要额外地多保留m位有效数字;在运算时,若损失k位数字,则若m≥k,则令额外精度存储单元中的值减少至少k,否则若k>m,则重新设置额外精度存储单元的值至少为k并从头开始计算。操作数的额外精度是自动变化的,即其尾数长度是自动地、动态变化的。其最终结果是正确的、准确的、精确的以及误差可控的。

Description

N进制浮点加法运算系统与方法
技术领域
本发明涉及到计算机技术领域,尤其是一种N进制浮点加法运算系统与方法。
背景技术
作为自动控制、人脸识别以及生成正弦波的技术等,已知有以下的共性技术。例如,首先测得一系列数据;然后对这些数据进行处理,即规格化;再对这些规格化后的数据进行四则运算。并且,四则运算得到的数据又会参与到规格化与计算的过程中,以至于循环迭代许多次直到某次的结果满足某个终止条件,这个过程才会终止。而四则运算中的乘除运算也是由大量的加减运算构成。
根据浮点运算的国际标准IEEE 754(https://ieeexplore.ieee.org/documejt/4610935),计算机对数据的规格化是在二进制下进行,并且较为普遍的一般有两种方式,一种是单精度下的规格化,另一种是双精度下的规格化。单精度,也即float,一般在计算机中占用存储4字节,也即32位,其中,1位是符号位,8位是指数位,23位是有效数字位。双精度,也即double,在计算机中占用存储8字节,共64位,其中1位符号位,11位指数位,52位有效数字位。比如,十进制数0.15625规格化成单精度数后,从高位到低位的二进制数为00111110001000000000000000000000(https://www.zhihu.com/questioj/26022206):
上面sign部分表示符号位,exponent部分表示8位的指数位,fraction部分表示23位的尾数部分。
但是,对于很多十进制数来说,当转换成二进制数后,会有表示误差。比如,0.1,不论是单精度还是双精度,甚至是高精度,均具有表示误差。这样,浮点运算的最基本运算:和与差的运算,具有不稳定性,即其结果的误差不可控。从而对严重依赖计算的自动控制、人脸识别等系统产生潜在的威胁或对严重依赖计算的正弦波生成误差较大的正弦波等。
针对该计算不稳定问题,2016年,《中国科学:信息科学》在第6期刊登了关于可信软件ISReal的文章(http://scis.scichija.com/cj/2016/N112015-00061.pdf)。文中提出了基于小数位数的一种存储与计算范式。它不是基于有效位数。即在计算过程中,它关注的是保留多少位小数,而不是多少位有效数字。比如,对于1234.5678+1020来说,若保留3位有效数字,则结果为1.00*1020,而若保留3位小数,则是1.00000000000000001234568*1020。这样,一般来说,在计算机内存中,后者占用更多的二进制位。另外,它是一种递归范式。因此,相比于IEEE 754的有效位数范式,这种小数位数计算范式具有一个缺点:占用资源与较低的效率。
发明内容
本发明的目的在于克服现有技术的缺点和不足,兼顾效率与精度,提供一种计算效率既高、计算结果又可靠的存储与计算技术。即,在有效位数模式下,通过计算过程中动态地自动调整存储与计算精度,而使得加减运算的计算结果误差可控。
为解决上述技术问题,本发明采用以下技术方案:
一种N进制浮点加法运算系统,其特点是,包括一个额外精度存储单元、一个浮点转换单元以及一个加法器。其功能在于,对于一个加减运算表达式与一个正整数j,经过该运算系统处理后,会获得一个含有至少位正确有效数字的N进制数,即对应十进制数含有的正确有效数字个数至少是j位,其中/>是一个函数,表示取不小于x的最小整数,x是该函数的自变量。
所述额外精度存储单元,用来存储运算与转换过程中额外的精度或有效位数,该额外的精度或有效位数值是动态变化的。所述浮点转换单元,将操作数转换成N进制数,其尾数长度位数不小于其中m为额外精度存储单元中的值。所述加法器,执行加法运算;相加时,若有相减相消现象,则重新设置额外精度存储单元中的值的大小。
一种基于上述系统的N进制浮点加法运算方法,其特点是,给定一个包含若干加减运算的表达式与非负整数j,在执行加减运算时,首先,用一个非负整数设置一个额外的存储与计算精度,比如,设该非负整数为m,并用额外精度存储单元存放该m;然后,参与运算的N进制操作数,其尾数部分要额外地至少多保留m位有效数字,即其尾数长度不小于另外,在运算时,若发生“相减相消”,损失k位数字,则若m≥k,则令额外精度存储单元中的值减少至少k,至多m;否则若k>m,则重新设置额外精度存储单元的值至少为k,并从头开始计算。
上述方法可以概括为如下步骤:
步骤1:设置额外精度存储单元的值为任意一个非负整数;
步骤2:从第一个运算开始,依次对所有加法运算,均依次执行下列步骤;
步骤2.1:运算的操作数若不是“尾数长度不小于的N进制数”,则将其转换成尾数长度不小于/>的N进制数,其中m为额外精度存储单元中的值,/>表示取不小于x的最小整数。
步骤2.2:进行下述位数损失判断操作:
(1)两个操作数是一正一负并有相同的指数。
(2)设两个数的两个尾数分别为a1a2a3…与b1b2b3…。存在一个正整数k,使得ai=bi,1≤i≤k;并且ak+1≠bk+1。即两个尾数从最高位起,有连续的k位数字是两两对应相等。
若满足上述两个条件,则执行下述两个之一:
a)若额外精度存储单元中的值小于k,则返回步骤1重新开始计算,并重新设置步骤1中额外精度存储单元中的值至少为k,即可以为k,k+1,k+2等之一;
b)否则,若额外精度存储单元中的值不小于k,则将额外精度存储单元中的值减少至少k,至多额外精度存储单元中的值;
步骤2.3;执行加法运算;
步骤3;计算完毕。
上述步骤2.2中的具体内容可以改成如下内容:
(1)两个操作数是一正一负。
(2)两个操作数的指数大小相差1,并存在一个正整数k,使得具有性质:指数大的操作数的高位前k+1位构成的N进制数比指数小的操作数的高位前k位构成的N进制数大1,而对于k+1不具有上述性质,即,下述不成立:指数大的操作数的高位前k+2位构成的N进制数比指数小的操作数的高位前k+1位构成的N进制数大1.
若满足上述(1)与(2),则执行下述两个之一:
a)若额外精度存储单元中的值小于k,则返回步骤1重新开始计算,并重新设置步骤1中额外精度存储单元中的值至少为k,即可以为k,k+1,k+2等之一;
b)否则,若额外精度存储单元中的值不小于k,则将额外精度存储单元中的值减少至少k,至多额外精度存储单元中的值;
另外,上述步骤2.2、步骤2.3也可以改成如下内容:
步骤2.2;执行加法运算。
步骤2.3:若发生相减相消,损失k位有效数字,则执行下述两个之一:
a)若额外精度存储单元中的值小于k,则返回步骤1重新开始计算,并重新设置步骤1中额外精度存储单元中的值至少为k,即可以为k,k+1,k+2等之一;
b)否则,若额外精度存储单元中的值不小于k,则将额外精度存储单元中的值减少至少k,至多额外精度存储单元中的值。
基于以上方法,本发明还提出一种计算设备,其特征在于,包括:存储器和处理器;所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如以上任一项所述的方法。
基于以上方法,本发明还提出一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如上之任一项所述的方法。
本发明的有益效果
利用本发明展示的N进制浮点加法运算系统与方法,可以有效提高浮点数的和与差的结果的精度,可以有效控制浮点加减运算的误差,即浮点数的加减运算是稳定的。这样,可以减小或去除运算的不稳定性对严重依赖浮点计算的自动控制、人脸识别等系统的一个潜在威胁。
附图说明
图1为N进制浮点加法运算系统简图;
图2为N进制数的表示形式;
图3为两个数相加时发生位数损失的状态图;
图4为本发明运算方法的流程图。
具体实施方式
以下结合附图及实施例对本发明做详细描述。
参阅图1,为N进制浮点加法运算系统简图。它包括一个额外精度存储单元、一个浮点转换单元以及一个加法器。其中浮点转换单元在处理数据时,需要额外地提高精度,即额外地多转换若干位,这个额外精度数字由额外精度存储单元提供。处理得到的N进制数再传输给加法器。加法器在进行加法运算时,若损失有效位数,则会改变额外精度存储单元中的值。这里,加法器既要处理两数相加,也要处理两数相减。其功能在于,对于由加号与减号以及数值构成的算式,与正整数j,经过该系统运行处理后,会获得一个含有至少位正确有效数字的N进制数,该数若转换成十进制数,则含有至少j位正确有效数字,其中/>是一个函数,表示取不小于x的最小整数,x是该函数的自变量。
参阅图2,为N进制数的表示形式。一个N进制数在内存中由2部分组成:尾数部分与其余部分。其中后者可以包括符号部分、指数部分。前者,即尾数部分,其至少包含位N进制有效数字,其中m为额外精度存储单元中的值;后者,符号部分与指数部分的位数分别用n1与n2表示。本发明中,一个主要特征是尾数部分的长度是动态变化的。对于其它部分,本发明不做限制:比如,符号位与指数位可以调换顺序,规格化时指数可以统一加某个数等。实践中,存放尾数的空间长度有时大于所需位数,比如,7在单精度下,由于其对应二进制数111仅包括3位数字,所以规格化后,其尾数在内存中没有占满整个23位的尾数空间。这时,不需要的空间就可以用其它数字填满,比如,单精度下填0。同样,本发明中,根据实际情况,尾数部分的空间大小可能要大于/>位,并且采用不同的填充方案。但是,这些并不影响本发明的新颖性、创造性以及实用性。综上,本图为理论简图,不同的规格化方案会有不完全一致的图。但是基本框架是相同的、一致的,并且最终取得的效果是相同的、不变的。
参阅图3,为两个符号相反的N进制数a与N进制数b相加时发生相减相消,即位数损失的状态图。假设它们的尾数部分的高位有k位相同有效数字,则若计算它们的和,则会损失k位N进制有效数字。其主要特征是当两个符号不同的数相加或两个相同符号的数相减后,会损失有效位数。比如,执行运算后,尾数自身前面有k位数字变为0。除过图上标出的情形外,还有一种情形是两个尾数的高位部分相差1,比如,十进制中,1000-999也会损失位数,二进制中,由于高位1000与111相差1,所以10001011与1111001相减时,会损失3位数字。
参阅图4,为运算方法的流程图。首先,给额外精度存储单元赋一个非负整数值,不妨用m表示该额外精度存储单元中的值。然后依次处理每个运算:先将每个运算的操作数转换成长度为位的N进制数;然后执行加法运算,在执行前或执行后,可以检查是否可能发生相减相消,若发生,则再判断是否损失的位数大于m,若大于,则重新给额外精度存储单元赋一个更大的值,并从头开始计算,否则若不大于,则减小额外精度存储单元中的值,并转下一个运算,若当前运算没有发生相减相消,则转下一个运算。若执行完所有运算,则获得正确结果,退出计算。另外,在计算过程中,k代表损失的位数,若k为0,则表示没有损失有效数字。
相减相消,损失有效数字
相减相消是指两个符号不同的数相加或两个符号相同的数相减时,由于前面高位的数字相同,所以导致前面的数字“变为0”,从而“消失”了。比如,12346789–12335678=11111。它们本来是8位数,由于前面3位数字相同,都是“123”,因此,变成“000”,消失了,结果只剩下5位数。这样,上述运算损失3位有效数字或有效位数。再比如,1000345-999234=1111,也损失3位数字。
加减运算表达式
加减运算表达式是指由加法符号、减法符号以及数值并括号等组成的算式。比如,123.56+555.888-777.6+12或(777-sin(44))-log(5.9)。对于一些函数或运算,比如sin(44)与log(5.9),则假设可以获得它们任意精度的值。
加法运算
文中所述“相加”一般也包括“相减”。即加法运算既包括对两个数进行相加的操作也包括对两个数进行相减的操作。
有效数字,有效位数
对一个非0数来说,其有效数字是指从第1个非0数字开始的每位数字;而有效位数,是其有效数字的个数。比如,十进制下,0.00123、123、-0.123*10-3均有3位有效数字:1、2、3,这时其有效位数为3。另外,有时,为了方便,将后面的0省略。比如,已知一个有效位数为5位的数0.0023400,则也可能简写为0.00234。反过来,对于0.00234,可以说其有效位数为3位或以上,比如,可以说,其有10位有效数字,这时,是指0.002340000000。同样,二进制下,0.011001、11001、-11001、0.11001*2-1均有有效数字1、1、0、0、1,即有效位数为5位。同样,0.011001也可看作有8位有效数字,这时,指的是0.011001000。同样,对于N进制数来说,也具有一样的定义。
函数
是一个函数,表示取不小于x的最小整数,x是该函数的自变量。比如,/>等于2,/>也等于2.
实施例
本发明的特点在于计算过程中的“可变精度”与计算结果的“可靠性”。其中,可变精度体现在两方面:一是不同于传统主流方法的单精度或双精度等“固定”位数的内存表示,本发明采用可变精度的内存表示;一是系统会自动动态调整该精度。另外,计算是基于有效位数模式。
实施例1.在人脸识别等人工智能领域中,均会涉及到激活函数的计算。比如(https://hellozhaozhejg.github.io/z_post/深度学习-各种激活函数深入解析/),有tanh函数与ELU函数:
而对于上面两个函数的计算,若用现有主流计算技术计算,则可能产生较大误差:比如不妨取x=0.0000009,则单精度下tanh函数的值为:tanh(x)=0.00000092387196648502。其中运行环境是Microsoft Visual Studio 2010,程序只有2行语句:
float x=0.0000009;
printf("%20.20f\n",(exp(x)-exp(-x))/(exp(x)+exp(-x)));
事实上,正确值是0.000000899999999999757…。这样,按照现有主流计算技术算出的结果最多只有1位正确有效数字。
不难验证,单精度下,Visual Studio 2010环境下,exp(x)与exp(-x)的输出均是正确的:它们均有8位正确有效数字。因此,上述错误计算本质上是由浮点数的表示误差与计算模式不正确导致。因此,就目前来说,不论是现有的硬件系统设备,还是计算方法,均有缺陷。
下面介绍利用本发明,如何获得tanh(x)在二进制下包含位正确有效数字的值,从而获得tanh(x)十进制下包含8位正确有效数字的结果。
首先将tanh(x)写成:tanh(x)=(y1+y3)/(y1+y2),其中,y1=ex,y2=e-x,y3=-y2.并且假设对于y1、y2、y3的计算以及两数相除,在二进制下,均可以获得它们任意精度的值,即可以获得其任意位正确的有效数字。下面令N=2,即展示在二进制下的处理过程。
第一步,转换成二进制数。其特点:具有不同于传统主流方法的内存表示。
预先设置额外精度存储单元的值为十进制数34.这时计算时每位数要多保留34位二进制位.即共存储27+34=61位二进制位。含有61位二进制位的y1为
含有61位二进制位的y2与y3为
其中y2是正数,而y3是负数。
若不妨第1位用0表示非负数,1表示负数,并省略61位的首位,则如下分别为y1、y2、y3在内存中的一种二进制表示方式:
其中最左边第1位为符号位,然后接着有省略号的为指数部分,剩下的为60位尾数部分。在实践中,每次分配的内存位数可能与实际需要的位数并不相等,即分配的位数可能多于实际需要的。这时,实际表示方式会与上述表示形式有所不同。比如,也许将多余的部分放在了尾数区域,这时,在尾数的高位部分或低位部分可能填充一些无关数字,比如0.另外,也可能不省略尾数部分的首位。
第二步,执行加减运算。其特点:异于主流计算技术,本发明要考虑有效位数的损失。
(1)对y1+y3的处理.
由于y1与y3具有不同的符号位,因此需要对两数执行相减操作,结果为y4:
这时可知损失了19位二进制位。或者,不用执行相减操作,而直接通过查看它们的指数与尾数部分前面的数字,也可知会损失约19位数字。这就像在十进制中,100000.123-99999.089会损失4或5位有效数字一样:相对于被减数是5位,相对于减数是4位。
(2)修改额外精度存储单元的值
修改额外精度存储单元的值为34-19=15.
(3)对y1+y2的处理
由于y1与y2均保留有61位的二进制尾数,因此它们相加后至少也有61位的尾数。当然,也可以只保留27+15=42位,用y5来表示:
y5=10.0000000000000000000000000000000000000001.
这时,其指数或整数部分为2。
(4)对y4/y5的处理
由假设可得出y4/y5包含42位的结果y6:
这样,获得了包含27位正确有效数字的二进制数值。y6对应的十进制数为如下y7:
y7=0.00000089999999999964240549044092176700360141694545745849609375。
若对y7进行四舍五入,则成十进制数字y8:y8=0.00000090000000;若对y7进行截断,只保留前8位有效数字,则为y9=0.00000089999999。
这样,利用本发明的系统与方法,获得了完全正确的结果。
实施例1的介绍到此为止。结束。
其实,对于现有技术来说,即使是简单的运算,有时也会出现错误结果。比如,(1234+1030)-1030,显然,其值为1234。可是,在主流Microsoft Visual Studio 2010环境下,若执行下列语句进行计算:
printf("%lf",((double)1234+(double)10e30)-(double)10e30);
则返回结果为0。
为了更加清楚地阐述本发明的计算原理,再给出以下示例,并a,b,c均取较为小的值。
实施例2.给定算术表达式(a+b)–c。其中a=0.123456,b=678900,c=678900。现在用本发明涉及的系统及方法计算其值,取N=2,结果保留位二进制数字,其对应十进制数具有5位正确有效数字。
步骤1:为了提高计算效率,令额外精度存储单元的值为0,即假设在计算过程中不会发生“相减相消”。这时,分别将a与b变为位的二进制数a1与b1:
a1=0.00011111100110101100与b1=1.0100101101111110*1019
步骤2:通过加法器计算它们的和,即a1+b1的值(同样保留17位),为d1:
d1=1.0100101101111110*1019
步骤3:将c=678900变为17位的二进制数c1=1.0100101101111110*1019
步骤4:通过加法器计算d1与c1的差,结果用f1来表示,则f1=0。
步骤5:由f1=0知,发生了相减相消,损失了17位二进制有效数字。而17>0,所以需要从头开始计算并且设额外精度存储单元的值为17。因此,接下来重复以上计算步骤,但是每个输入数据在转换时,其二进制位由原来的17位变成了17+17=34位。
需要说明的是,步骤4中,也可以不通过计算,而通过直接比较来发现会损失17位数字。
步骤6:分别将a与b变为34位的二进制数,记为a2与b2:
a2=0.0001111110011010110011111111101001111
与b2=1.010010110111111010000000000000000*1019
步骤7:通过加法器计算它们的和,即a2+b2的值(同样保留34位),记为d2:
d2=1.010010110111111010000011111100110*1019
步骤8:将c变为34位的二进制数,记为c2:
c2=1.010010110111111010000000000000000*1019
步骤9:通过加法器计算它们的差,即d2–c2的值,记为f2,则f2=0.00011111100110。由于相减时损失了23位有效数字,而23>17,因此,需要重新设置额外精度存储单元的值,不妨为40,这时,取有效位数为17+40=57位,进行第3次计算。同样在这一步,也可以通过观察,获得数字23。
步骤10:通过浮点转换单元,分别将a与b变为57位的二进制数,记为a3与b3:
a3=0.000111111001101011001111111110100111111010110110101111110100
与b3=1.01001011011111101000000000000000000000000000000000000000*1019
步骤11:通过加法器计算它们的和,即a3+b3的值(同样保留57位),记为d3:
d3=1.01001011011111101000001111110011010110011111111101001111*1019
步骤12:将c变为57位的二进制数,记为c3:
c3=1.01001011011111101000000000000000000000000000000000000000*1019
步骤13:通过加法器计算它们的差,即d3–c3的值,记为f3:
f3=1.111110011010110011111111101001111*10-4。这时,相减时损失了23位二进制数字,而23小于40,所以结果仍然可信。事实上,它仍保留有34位二进制有效数字。
这样,计算获得了超过17位正确二进制数字的二进制结果,其对应十进制数结果也具有超过5位的正确有效数字。
到此,实施例2计算完毕。

Claims (6)

1.一种N进制浮点加法运算系统,其特征在于,包括一个额外精度存储单元、一个浮点转换单元以及一个加法器,对于一个加减运算表达式与一个正整数j,经过该运算系统处理后,会获得一个含有至少位正确有效数字的N进制数,其中/>是一个函数,表示取不小于x的最小整数,x是该函数的自变量;
所述额外精度存储单元,用来存储运算与转换过程中额外的精度或有效位数,该精度或有效位数是动态变化的;
所述浮点转换单元,将操作数转换成N进制数,其尾数长度位数不小于位,其中m为额外精度存储单元中的值;
所述加法器,执行加法运算;相加时,若有相减相消现象,则重新设置额外精度存储单元中的值。
2.一种基于权利要求1所述系统实施N进制浮点加法运算方法,其特征在于,包括下列步骤:
步骤1:设置额外精度存储单元的值为任意一个非负整数;
步骤2:从第一个运算开始,依次对所有加法运算,均依次执行下列步骤;
步骤2.1:运算的操作数若不是“尾数长度不小于的N进制数”,则将其转换成“尾数长度不小于/>的N进制数”,其中m为额外精度存储单元中的值,/>表示取不小于x的最小整数;
步骤2.2:进行下述位数损失判断操作:
(1)两个操作数是一正一负并有相同的指数;
(2)设两个数的尾数分别为a1a2a3…与b1b2b3…;存在一个正整数k,使得ai=bi,1≤i≤k,并且ak+1≠bk+1;即两个尾数从最高位起,有连续的k对数字是两两对应相等;
若(1)与(2)同时成立,则执行下述两个之一:
a)若额外精度存储单元中的值小于k,则返回步骤1重新开始计算,并重新设置步骤1中额外精度存储单元中的值至少为k;
b)否则,若额外精度存储单元中的值不小于k,则将额外精度存储单元中的值减少至少k,至多额外精度存储单元中的值;
步骤2.3;执行加法运算;
步骤3;计算完毕。
3.一种基于权利要求1所述系统实施N进制浮点加法运算方法,其特征在于,包括下列步骤:
步骤1:设置额外精度存储单元的值为任意一个非负整数;
步骤2:从第一个运算开始,依次对所有加法运算,均依次执行下列步骤:
步骤2.1:运算的操作数若不是“尾数长度不小于的N进制数”,则将其转换成“尾数长度不小于/>的N进制数”,其中m为额外精度存储单元中的值,/>表示取不小于x的最小整数;
步骤2.2:进行下述位数损失判断操作:
(1)两个操作数是一正一负;
(2)两个操作数的指数大小相差1,并存在一个正整数k,使得具有性质:指数大的操作数的高位前k+1位构成的N进制数比指数小的操作数的高位前k位构成的N进制数大1,而对于k+1不具有上述性质,即,下述不成立:指数大的操作数的高位前k+2位构成的N进制数比指数小的操作数的高位前k+1位构成的N进制数大1;
若(1)与(2)同时成立,则执行下述两个之一:
a)若额外精度存储单元中的值小于k,则返回步骤1重新开始计算,并重新设置步骤1中额外精度存储单元中的值至少为k;
b)否则,若额外精度存储单元中的值不小于k,则将额外精度存储单元中的值减少至少k,至多额外精度存储单元中的值;
步骤2.3;执行加法运算;
步骤3;计算完毕。
4.一种基于权利要求1所述系统实施N进制浮点加法运算方法,其特征在于,包括下列步骤:
步骤1:设置额外精度存储单元的值为任意一个非负整数;
步骤2:从第一个运算开始,依次对所有加法运算,均依次执行下列步骤:
步骤2.1:运算的操作数若不是“尾数长度不小于的N进制数”,则将其转换成“尾数长度不小于/>的N进制数”,其中m为额外精度存储单元中的值,/>表示取不小于x的最小整数;
步骤2.2:执行加法运算;
步骤2.3:若发生相减相消,损失k位有效数字,则执行下述两个之一:
a)若额外精度存储单元中的值小于k,则返回步骤1重新开始计算,并重新设置步骤1中额外精度存储单元中的值至少为k;
b)否则,若额外精度存储单元中的值不小于k,则将额外精度存储单元中的值减少至少k,至多额外精度存储单元中的值;
步骤3;计算完毕。
5.一种计算设备,其特征在于,包括:存储器和处理器;
所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如权利要求2-4之任一项所述的方法。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求2-4之任一项所述的方法。
CN202210793145.6A 2022-07-07 2022-07-07 N进制浮点加法运算系统与方法 Active CN115291834B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210793145.6A CN115291834B (zh) 2022-07-07 2022-07-07 N进制浮点加法运算系统与方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210793145.6A CN115291834B (zh) 2022-07-07 2022-07-07 N进制浮点加法运算系统与方法

Publications (2)

Publication Number Publication Date
CN115291834A CN115291834A (zh) 2022-11-04
CN115291834B true CN115291834B (zh) 2023-08-22

Family

ID=83821906

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210793145.6A Active CN115291834B (zh) 2022-07-07 2022-07-07 N进制浮点加法运算系统与方法

Country Status (1)

Country Link
CN (1) CN115291834B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101685383A (zh) * 2008-09-28 2010-03-31 杨高祥 计算器、基于直接对阶的自由精度浮点数的运算电路
CN103019647A (zh) * 2012-11-28 2013-04-03 中国人民解放军国防科学技术大学 具有浮点精度保持功能的浮点累加/累减运算方法
CN107291419A (zh) * 2017-05-05 2017-10-24 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法
CN107305485A (zh) * 2016-04-25 2017-10-31 北京中科寒武纪科技有限公司 一种用于执行多个浮点数相加的装置及方法
CN107451658A (zh) * 2017-07-24 2017-12-08 杭州菲数科技有限公司 浮点运算定点化方法及系统
CN110888623A (zh) * 2019-11-25 2020-03-17 集美大学 数据转换方法、乘法器、加法器、终端设备及存储介质
CN111104091A (zh) * 2019-12-12 2020-05-05 北京科技大学 一种动态浮点误差分析中精度特定计算的检测和转换方法
CN111813371A (zh) * 2020-07-28 2020-10-23 上海赛昉科技有限公司 数字信号处理的浮点除法运算方法、系统及可读介质
CN112527239A (zh) * 2021-02-10 2021-03-19 北京微核芯科技有限公司 一种浮点数据处理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8443029B2 (en) * 2007-03-01 2013-05-14 International Business Machines Corporation Round for reround mode in a decimal floating point instruction

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101685383A (zh) * 2008-09-28 2010-03-31 杨高祥 计算器、基于直接对阶的自由精度浮点数的运算电路
CN103019647A (zh) * 2012-11-28 2013-04-03 中国人民解放军国防科学技术大学 具有浮点精度保持功能的浮点累加/累减运算方法
CN107305485A (zh) * 2016-04-25 2017-10-31 北京中科寒武纪科技有限公司 一种用于执行多个浮点数相加的装置及方法
CN107291419A (zh) * 2017-05-05 2017-10-24 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法
CN107451658A (zh) * 2017-07-24 2017-12-08 杭州菲数科技有限公司 浮点运算定点化方法及系统
CN110888623A (zh) * 2019-11-25 2020-03-17 集美大学 数据转换方法、乘法器、加法器、终端设备及存储介质
CN111104091A (zh) * 2019-12-12 2020-05-05 北京科技大学 一种动态浮点误差分析中精度特定计算的检测和转换方法
CN111813371A (zh) * 2020-07-28 2020-10-23 上海赛昉科技有限公司 数字信号处理的浮点除法运算方法、系统及可读介质
CN112527239A (zh) * 2021-02-10 2021-03-19 北京微核芯科技有限公司 一种浮点数据处理方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
64位双精度矩阵分解的优化和硬件实现;邱俊豪 等;合肥工业大学学报(自然科学版);第第44卷卷(第第12期期);第1640-1645页 *

Also Published As

Publication number Publication date
CN115291834A (zh) 2022-11-04

Similar Documents

Publication Publication Date Title
CN107077416B (zh) 用于以选择性舍入模式进行向量处理的装置和方法
CN106990937B (zh) 一种浮点数处理装置和处理方法
CN115934030B (zh) 算数逻辑单元、浮点数乘法计算的方法及设备
US8745111B2 (en) Methods and apparatuses for converting floating point representations
US6138135A (en) Propagating NaNs during high precision calculations using lesser precision hardware
US5671170A (en) Method and apparatus for correctly rounding results of division and square root computations
US7395297B2 (en) Floating point system that represents status flag information within a floating point operand
KR20060067874A (ko) 제산 및 제곱근 연산 유닛
CN108196822A (zh) 一种双精度浮点开方运算的方法及系统
US11620105B2 (en) Hybrid floating point representation for deep learning acceleration
CN111813371B (zh) 数字信号处理的浮点除法运算方法、系统及可读介质
CN112835551B (zh) 用于处理单元的数据处理方法、电子设备和计算机可读存储介质
US11909421B2 (en) Multiplication and accumulation (MAC) operator
CN115291834B (zh) N进制浮点加法运算系统与方法
US20230244442A1 (en) Normalizer and multiplication and accumulation (mac) operator including the normalizer
US20140136820A1 (en) Recycling Error Bits in Floating Point Units
JP6919539B2 (ja) 演算処理装置および演算処理装置の制御方法
CN115268832A (zh) 浮点数取整的方法、装置以及电子设备
JP2020098469A (ja) 演算処理装置および演算処理装置の制御方法
US9128759B2 (en) Decimal multi-precision overflow and tininess detection
US5661674A (en) Divide to integer
JP2517064B2 (ja) 非正規化数の処理方式
CN109298848A (zh) 双模式浮点除法平方根的电路
CN115965048A (zh) 数据处理装置、数据处理方法和电子设备
CN117216466A (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