浮点乘法溢出

时间:2019-02-25 03:19:59

标签: c algorithm floating-point precision multiplication

对于浮点乘法,我有以下规则。

我的问题是如何知道E超出范围时知道它的溢出?

我知道,如果对结果进行归一化,我们可以应用E = exp-偏差;如果对结果进行归一化,则E = 1-偏差。基于exp,我知道它是经过归一化或反归一化的,所以我可以计算E的最大值,但是在这种情况下,我还没有exp,我还不能计算E的范围,所以我怎么知道溢出是否发生?

1 个答案:

答案 0 :(得分:1)

如果您不知道任何事情的最大范围,那么您将不知道它是否会/不会溢出(或导致下溢)。

但是:

  • 如果您假设输出与输入/ s具有相同的范围,则可以假设某些内容不会溢出。例如,考虑“ E1 + E2 = 10 +(-1)= 9”,因为9在10到-1之间,因此它不会溢出。

  • 对于诸如作业和uni作业之类的事情,每当缺少必要的信息时,您都可以假设自己喜欢的东西并陈述您的假设(例如,“ 我假设这是IEEE双浮点,其中指数字段是8位,偏差为128,因此范围为-128至+127 “);然后声称如果您的假设正确,则指数将/不会溢出。

  • 对于真实软件,您可以找出范围是什么(例如,通过选中float.h)。