Talk:Subnormal number

The diagram is possible to show zero, normals and denormals numbers. Smth like http://ridiculousfish.com/images/float/line_thingy_2.gif or even http://blogs.msdn.com/blogfiles/dwayneneed/WindowsLiveWriter/Funwithfloatingpoint_14F06/image_5.png or like Fig 2.2`a5b (talk) 15:53, 24 November 2010 (UTC)


 * I added a diagram that fits your description --Blacklemon67 (talk) 09:30, 22 April 2015 (UTC)

Talk
Moving (not deleting) this here until some sort of consensus arises (edited to clarify different inputs). Please add signatures, and apologies if I got anything wrong ...

(External link)


 * Laurent de Soras – Denormal numbers in floating point signal processing applications


 * Why is this here? The PDF seems to suggest that subnormals are the same as zero...(!)


 * No, the pdf doesn&#8217;t says that, read it more carefully. Denormals are very small relative to &#8220;normal&#8221; numbers in some applications.  Their existence introduces slowness in the processing, so it may be better to remove or avoid them, the computation accuracy not being impacted. The paper focuses on this issue. (the author)

...

Suggestion: It would be useful (to me, and probably others) to show a few specific examples of denormal and subnormal numbers. From the description "denormal numbers are encoded with a biased exponent of 0, but are interpreted with the value of the smallest allowed exponent, which is one greater (i.e., as if it were encoded as a 1)" I don't think I could tell you how a denormal number is encoded, but with a couple of examples I could probably grasp the concept.

Denormalization barrier
When adding floating point numbers together, it usually makes sense to normalize one of them until it matches the magnitude of the other. Am I understanding this right? Is a subnormal (denormal?) number one that resists normalization? For instance, if the magnitude of one is so far out of range of the other, that it is not possible to shift the bits left (or right) without losing the bits of the other because of the differences in magnitude? For instance, in a minimal floating point system where there are 24 bits in the mantissa, and 8 bits in the exponent, and it is desirable to add a couple numbers together, you usually choose one number or the other based on its exponent, and then start shifting the mantissa one direction or the other (adjusting the exponent each time) until their exponents are equal. I am guessing here because the main article doesn't explain this to me in a way that a non-mathematician would be able to understand it. But if I am going in the right direction a denormalization barrier would be one where it is not desirable to normalize the floating point numbers because it is inherently (or predictively) out of the range of numbers permitted by the equation being entertained.

I am being a little simplistic here because there are other operations besides addition where you would want to normalize numbers. I was just saying addition because that is the easiest one to look at. 198.177.27.28 (talk) 22:33, 5 December 2008 (UTC)


 * When you add two numbers together, floating point or not, there is one exact possible result. If you then convert that into some set of representable numbers you may (or may not) have to apply some rounding or other approximation.  mfc (talk) 16:11, 7 December 2008 (UTC)

K-C-S Format
The article refers to controversies in the "K-C-S format". What does K-C-S stand for (as initials) and what is the format? (i.e. same as IEEE 754 or some preliminary format?) Co149 (talk) 22:13, 12 September 2009 (UTC)

Kahan's site
"See also various papers on William Kahan's web site"? Can this be more specific? There is no reference to denormal numbers on that page and it's too much to ask people to click through to every paper linked from that page and search them individually. 75.25.154.173 (talk) 19:49, 5 March 2010 (UTC)

Which systems use denormal numbers?
The article often says "some systems". It would be very interesting to get specific information about which systems specifically support denormal numbers. And what actually "system" means? A processors? Operating system? What about popular processors sold before and after 2008? What about programs written in Java (which try to behaver identically on all systems)? — Preceding unsigned comment added by 95.49.97.65 (talk) 18:41, 11 May 2012 (UTC)

Image is misleading
The image suggests that you can add the denormal numbers to bridge the zero-gap without losing anything, but this isn't true.

Supposing we have the following 5-bit floating point format: see(1)mm (I'm keeping it small for this example.)

This is how the numbers would be interpreted with and without denormal numbers:

1 11 11 = -3.5 1 11 00 = -2 1 10 00 = -1 1 01 00 = -.5 1 00 11 = -.375 vs -.4375 1 00 10 = -.25 vs -.375 1 00 01 = -.125 vs -.3125 1 00 00 = -0 vs -.25 * 0 00 00 = +0 vs .25 * 0 00 01 = .125 vs .3125 0 00 10 = .25 vs .375 0 00 11 = .375 vs .4375 0 01 00 = .5 0 10 11 = 1.75 0 11 11 = 3.5      * Alternatively, these could be special cased as -0 and +0.

As you can see, it's a trade-off. You lose some range and precision, but you bridge the zero-gap. — Preceding unsigned comment added by 82.139.82.82 (talk) 03:51, 27 August 2015 (UTC)
 * Hi, author of image here. I'm hearing you, and I think it is the caption of the image that is misleading, not the picture itself. You are free to change that as you see fit --Blacklemon67 (talk) 05:20, 8 September 2015 (UTC)

External links modified
Hello fellow Wikipedians,

I have just added archive links to 1 one external link on Denormal number. Please take a moment to review my edit. You may add after the link to keep me from modifying it, if I keep adding bad data, but formatting bugs should be reported instead. Alternatively, you can add to keep me off the page altogether, but should be used as a last resort. I made the following changes:
 * Attempted to fix sourcing for http://phonophunk.com/articles/pentium4-denormalization.php

When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at ).

Cheers.—cyberbot II  Talk to my owner :Online 06:48, 29 March 2016 (UTC)

Example
It would be nice to have an actual example of single point floating numbers which create a denormal value and how DAZ/FTZ affect them. Thanks Kotz (talk) 10:46, 12 December 2016 (UTC)

subnormal

 * The following is a closed discussion of a requested move. Please do not modify it. Subsequent comments should be made in a new section on the talk page. Editors desiring to contest the closing decision should consider a move review after discussing it on the closer's talk page. No further edits should be made to this section. 

It seems that subnormal is now a term used instead of denormal. Which one is preferred? Gah4 (talk) 06:57, 11 May 2018 (UTC)


 * I got redirected here from "Subnormal number". I'd vote to rename this page to "Subnormal number" and have "Denormal number" redirect there. 2620:10D:C090:200:0:0:3:CFE5 (talk) 20:54, 9 January 2020 (UTC)
 * The 1985 version of the IEEE 754 standard uses the word denormal. The 2008 revision of IEEE 754 has it renamed to subnormal. The 2019 revision uses the term subnormal.  — Preceding unsigned comment added by Agnerf (talk • contribs) 11:37, 12 January 2020 (UTC)


 * It's worse than that: "subnormal number" and "denormalized number" are not synonyms. The entire text of this article describes subnormal numbers, being the subset of denormalized numbers that are smaller in magnitude than any normalized number.
 * Denormalized numbers are simply any floating point number where the leading digit of the mantissa is `0`. (Bear in mind that "number" in this context refers to a specific representation, not to the abstract mathematical value.)
 * In terms of computation, denormalized numbers other than subnormal numbers are a historical footnote. Modern FPU registers don't even have a bit for representing the leading `1` of a normalized number, so there is no possible bit-pattern that represents a denormalized-but-not-subnormal number.
 * I learned about "denormalized numbers" in the mid 1980's, and about "subnormal numbers" in the 1990's; "denormal number" hasn't been commonly used for at least 40 years, and it's way past time that this article was renamed.
 * Martin Kealey 09:48, 31 August 2021 (UTC)

Requested move 31 August 2021
Denormal number → Subnormal number – "denormal" is considered obsolete and ambiguous, as per the aforegoing discussion; swap places with the existing "subnormal number" redirection page Martin Kealey (talk) 09:48, 31 August 2021 (UTC) The discussion above is closed. Please do not modify it. Subsequent comments should be made on the appropriate discussion page. No further edits should be made to this discussion.

Rightmost red line in picture
Hi. I am no expert, but shouldn't the rightmost red line be -on- the 4? Between 1 and 2, 4 sections. Betw 2 and 3, 2 sect. Betw 3 and 4, 1 sect. Regards, Richard. Wiekendraak (talk) 09:45, 14 February 2021 (UTC)

My own reply :-), there should be a red line on the 4 as well. Wiekendraak (talk) 08:44, 15 February 2021 (UTC)

≥== Subnormals as a subset of denormals ==

The first sentence of the article says that "subnormal numbers are the subset of denormalized numbers (sometimes called denormals)". Are there denormal numbers that aren't subnormals? I was unable to find anything on that topic, and there are no citations for this particular statement. Xfix (talk) 22:03, 16 September 2023 (UTC)
 * As well as I know, and the discussion above indicates, they just renamed them, so the old denormals are now subnormals, but are the same thing. Gah4 (talk) 05:56, 17 September 2023 (UTC)
 * @Xfix A denormal is any expression of a number where the "point" is not immediately after the leading non-zero digit of the mantissa. The IEEE binary formats can only represent subnormal forms (a 0 before the point) but other formats are not so constrained and can represent other denormal forms. 211.30.189.67 (talk) 07:29, 19 September 2023 (UTC)
 * When I first knew them, it was unnormalized, or unnormalized value. In the general (not only IEEE) case, the radix point can be in different places. IBM HFP has the hexadecimal point to the left of the significant, called the fraction is it is less than one. I don't know that denormal was used before IEEE used it, such that it suggests the IEEE forms. IEEE then allows unnormalized values with the smallest exponent, and called them denormal, before calling them subnormal. There are some without a hidden one, but not that I know called denormal. Maybe denormalized, though. Gah4 (talk) 09:55, 19 September 2023 (UTC)
 * My understanding is:
 * Normal: having a significand in [1…Base)
 * Non-normal: having a significand not in [1…Base)∪{0}
 * Denormal: having a significand in (0…1)
 * Subnormal: a denormal with the lowest possible exponent, or equivalently, a representation of a (small) number that cannot have a normal representation
 * Martin Kealey (talk) 22:01, 19 September 2023 (UTC)
 * The terms used to be normalized and unnormalized. But even more than that, the position of the radix point does not need to be the one(s) you say.
 * VAX floating point has 0 bits before the binary point, and no unnormalized values. IBM hexadecimal floating-point has 0 digits before the hexadecimal point when normalized, and allows for unnormalized values. So, the terms you mention mostly originated in IEEE 754, and so have the meanings that IEEE says that they have. Because normalized binary values always have the MSB 1, it can be omitted. (Hidden one.) That isn't true for other radices. Gah4 (talk) 23:33, 19 September 2023 (UTC)
 * Martin Kealey (talk) 22:01, 19 September 2023 (UTC)
 * The terms used to be normalized and unnormalized. But even more than that, the position of the radix point does not need to be the one(s) you say.
 * VAX floating point has 0 bits before the binary point, and no unnormalized values. IBM hexadecimal floating-point has 0 digits before the hexadecimal point when normalized, and allows for unnormalized values. So, the terms you mention mostly originated in IEEE 754, and so have the meanings that IEEE says that they have. Because normalized binary values always have the MSB 1, it can be omitted. (Hidden one.) That isn't true for other radices. Gah4 (talk) 23:33, 19 September 2023 (UTC)
 * VAX floating point has 0 bits before the binary point, and no unnormalized values. IBM hexadecimal floating-point has 0 digits before the hexadecimal point when normalized, and allows for unnormalized values. So, the terms you mention mostly originated in IEEE 754, and so have the meanings that IEEE says that they have. Because normalized binary values always have the MSB 1, it can be omitted. (Hidden one.) That isn't true for other radices. Gah4 (talk) 23:33, 19 September 2023 (UTC)