Denormalised may be IEEE complient, but can introduce a huge performance
hit.
On one benchamrk code I worked on porting to IA64, the code ran 15 times
faster (!) once I had switched off denormalised numbers in the compiler.
This was since every time one occurred, an interrupt was passed to the Linux
kernel.
Yours,
Daniel.
--------------------------------------------------------------
Dr. Dan Kidger, Quadrics Ltd. [log in to unmask]
One Bridewell St., Bristol, BS1 2AA, UK 0117 915 5505
----------------------- www.quadrics.com --------------------
-----Original Message-----
From: robin [mailto:[log in to unmask]]
Sent: 11 June 2003 16:52
To: [log in to unmask]
Subject: Re: denormalised number??
> Date: Tue, 10 Jun 2003 15:05:13 -0500
> From: Harry R Millwater <[log in to unmask]>
> One of our compilers has a compiler option that says:
>
> disables IEEE gradual underflow, producing zero instead of a
denormalised
> number.
>
> Can someone explain what is a "denormalised number"? I've never seen that
> terminology before.
A normalized floating-point number is one in which the most-significant
bit of the mantissa is zero (IEEE).
A denormalized number is one in which the most-significant bit
of the mantissa is zero. The mantissa of such a number may have
fewer significant bits than a normalized number.
When a number underflows slightly (the value is about 10**(-4000)),
the value can be accommodated by retaining a zero exponent,
and leaving the mantissa in an un-normalized state. In this case,
the mantissa is held with fewer significant bits.
In an extreme case, the mantissa would have only one significant
bit.
In other words, in this case the value is virtually useless.
Some folks prefer that the value be replaced by zero when
underflow occurs.
(Note that in the case of single precision, underflow occurs at around
10**(-300)).
|