我一直在寻找这个问题很长时间,但我无法理解这个问题的含义。
问题:
Write a program in any language to determine how your computer handles graceful
underflow.
我知道溢出条件是这样的:
如果整数可以存储最大值x ,并且如果我们指定值 x + 1 ,则值 x + 1 将被转换到整数可以容纳的最低值。据我所知,下溢恰恰相反。
高性能科学计算/线性代数的观点如何?
我已经阅读了这个link,但我认为这与我上面提到的下溢/溢出相同。优雅的下溢代表什么?
答案 0 :(得分:2)
好的,根据this link中@StoneBird发布的链接特别有帮助。在这里,我用c创建了一个演示相同的程序。
#include <stdio.h>
#include <math.h>
int main(int argc, char **argv)
{
unsigned int s,e,m;
unsigned int* ptr;
float a,temp=0;
a=1;
float min=pow(2,-129);
while(a>min){
temp=a;
a=a/2;
}
printf("Value=%e\n",temp);
ptr=(unsigned int*)&temp;
s = *ptr >> 31;
e = *ptr & 0x7f800000;
e >>= 23;
m = *ptr & 0x07fffff;
printf("sign = %x\n",s);
printf("exponent = %x\n",e);
printf("mantissa = %x\n",m);
return 0;
}
此处 min 变量用于更改最终数字...我使用min = pow(2,-129),pow(2,-128)和pow(2,-130) )看到结果并看到Denormal号码出现。这个维基页面解释了这一切。