Talk:Unum (number format)

Latest comment: 2 days ago by Vincent Lefèvre in topic Not floating point?

Merge

edit

I previously "merged" this content to John Gustafson (scientist), due to the apparent lack of notability to support a standalone article. It's true that the target article doesn't contain most of the detail here, but arguably that level of detail would be out of place there.

Feel free to edit *that* article if you can find a meaningful way to do so; alternatively find sufficient sources to satisfy the notability concerns here! However, recreating the article in its previous form doesn't make sense, so I've reverted again. Oli Filth(talk|contribs) 21:53, 23 June 2015 (UTC)Reply

I agree. This is currently WP:OR, with no hardware implementation and no software implementation under the form of a library (so that it can be tested in usual programming languages). The article was also very subjective and fuzzy; John Gustafson's talk at ARITH 22 did not contain technical information and attendees were not convinced (tests against an implementation would make things more clear). Vincent Lefèvre (talk) 11:27, 24 June 2015 (UTC)Reply
Clearly, both of you lack WP:NPOV on this subject. You have a stake here. Permit me to use this as an example why expertise alone isn't sufficient. (The article itself was too promotional and did need some rewriting, no doubt.)Vvrq (talk) 13:35, 25 June 2015 (UTC)Reply
I can't speak for the other contributor's POV, but my actions were premised on the very clear lack of independent sources demonstrating notability. Find the sources, and then we can talk about article content. Oli Filth(talk|contribs) 21:17, 25 June 2015 (UTC)Reply
Ad "independent sources demonstrating notability": The book's Website https://www.crcpress.com/product/isbn/9781482239867 contains praise by David Jefferson, Gordon Bell, Jack Dongarra, and Ulrich Kulisch. You both know these individuals and their reputation in the field, so that should be sufficient notability. As to WP:NPOV here is evidence for personal involvement http://grouper.ieee.org/groups/1788/email/msg08171.html To conclude: You both are fully aware that there is sufficient evidence to exclude WP:OR and thus you both violate WP:NPOV by suppressing this entry. Your expertise would be very helpful to improve the article, no doubt, but so far you chose a different conduct. Vvrq (talk) 10:33, 26 June 2015 (UTC)Reply
A book written by the inventor is not sufficient. Vincent Lefèvre (talk) 12:34, 26 June 2015 (UTC)Reply
No, because it's in no way independent (very likely, these people were approached by the author/publisher for comment.) Examples of independence would be meaningful peer-review or citations in other papers or books. (FWIW, I *also* believe that the idea to be unsound, but that's a different matter...) Oli Filth(talk|contribs) 15:53, 26 June 2015 (UTC)Reply
Your criterion for independence is overarching - it disqualifies virtually all members of a (scientific) community because "approaching others" is part of what makes a community. You then impose the common scientific evaluation criteria (peer-review) which go far beyond WP criteria. If such a large number of renown experts gives favorable commendations (in written, reliable form), WP criteria are met for an entry. Regardless of its actual technical merit or soundness. Think of it - even Cold fusion has an entry. Vvrq (talk) 18:02, 26 June 2015 (UTC)Reply
Good example. Look at the various references and the bibliography of the Cold fusion article. Vincent Lefèvre (talk) 21:50, 26 June 2015 (UTC)Reply
Let me first state that you misread my remark. It was exclusively about the irrelevance of "technical merit or soundness" for having an entry on WP. And then you ignore the fact that the cold fusion article is very old, it started 17:04, 13 December 2001. What is remarkable however, is that you already read WP:NOR articles about Unums, yet keep silent about it here. Should you have forgotten this, reread your message dated 2015-04-22 http://grouper.ieee.org/groups/1788/email/msg08240.html Vvrq (talk) 07:51, 27 June 2015 (UTC)Reply
This is pretty simple. We could go on debating, or we could lay the matter to rest until sources that fit WP:GNG are found. Oli Filth(talk|contribs) 09:28, 27 June 2015 (UTC)Reply

You're right, it was pretty simple to just wait... Now it's being used by MIT in N-body problem papers: http://arxiv.org/abs/1511.07476 Made the front page of hackaday as an improvement to floating point numbers: http://hackaday.com/2015/10/22/an-improvement-to-floating-point-numbers/ and discussed in a comparison paper by Ulrich Kulisch http://www.math.kit.edu/iwrmm/seite/preprints/media/preprint%20nr.%2015-02.pdf in which he states "Then we consider unum and ubound arithmetic. To a great deal this can be seen as an extension of arithmetic for closed real intervals to open and halfopen real intervals. Essential properties of unum and ubound arithmetic are also derived from the abstract mathematical setting given in chapter 2. Computer executable formulas for the arithmetic operations of ubound arithmetic are derived on the base of pure floating-point arithmetic. These are much simpler, easier to implement and faster to execute than alternatives that would be obtained on the base of the IEEE 754 floating-point arithmetic standard which extends pure floating-point arithmetic by a number of exceptions." Referenced also in an error design paper in Royal Society http://rsif.royalsocietypublishing.org/content/12/110/20150685.abstract QED can we please reverse this merge which never made sense. Davisourus (talk) 08:00, 25 December 2015 (UTC)Reply

The hackaday article is just a presentation of the book, with nothing technical; the comments (some of them very critical) are much more interesting. The reference in the Royal Society article is just a very minor one about NaN, without an alternative solution. BTW, the main idea behind the Unum format was not new: it had already been introduced by Robert Morris in 1971 in his article Tapered Floating Point: A New Floating-Point Representation. Vincent Lefèvre (talk) 15:50, 25 December 2015 (UTC)Reply

Unums are showing up in Julia: https://github.com/tbreloff/Unums.jl https://github.com/REX-Computing/unumjl https://github.com/dpsanders/SimpleUnums.jl 146.115.138.200 (talk) 22:56, 4 January 2016 (UTC)Reply

Critique

edit

Moving discussion in edits to here:

  • 13:18, 10 April 2017‎ Davisourus (talk | contribs)‎ . . (14,862 bytes) (-60)‎ . . (Omitting just the claim that unum does not provide correct answers. W.Kahan could not provide a single example and there have been no concrete counter-examples of this failure. Please discuss in talk if known supported criticism.)
  • 14:46, 10 April 2017‎ Vincent Lefèvre (talk | contribs)‎ . . (14,922 bytes) (+60)‎ . . (Undid revision 774750980 by Davisourus (talk) This can be mathematically proved by using JMM's sequence: u_0 = 2, u_1 = −4, u_{n+1} = 111 − 1130 / u_n + 3000 / (u_n u_{n−1}))

Davisourus: Actually Unums don't provide the wrong answer here. It's discussed and solved correctly on pp 173-176 of The End of Error. For your example, Unums head for the correct answer, 6, and automatically detect when the bound includes the unstable side of the point of convergence, triggering either a stop or an increase in precision. They do this using fewer bits than double-precision interval arithmetic. Detecting unstable convergence requiring greater precision is in fact a correct answer for a low precision calculation. Do you have another example that is 'wrong' or can we remove this misleading and unsupported claim. Davisourus (talk) 01:07, 14 April 2017 (UTC)Reply

Here's a proof that a number system with a bounded size cannot always return an accurate result. Consider the above sequence:
  • u_0 = 2
  • u_1 = −4
  • u_{n+1} = 111 − 1130 / u_n + 3000 / (u_n u_{n−1}))
Since mathematically the set of the values of the sequence is infinite (since it converges to 6 without being equal to 6) and the format size is bounded, there exists a minimal index k such that u_k is not computed exactly. The limit for (u_0,u_1) is 6. The limit for (u_{k−1},u_k) is 100. Now, consider n large. If the starting point is (u_0,u_1), then one expects that u_n is close to 6. But if the starting point is (u_{k−1},u_k), then one expects that u_n is close to 100. So, at least one of them will be inaccurate.
That's for a number system. For alternate systems, there will always be an uncertainty that you cannot track with a bounded format size. For interval arithmetics, one would get an interval that contains [6,100]. If Unums automatically increase the precision, then you can no longer compare them to IEEE 754, whose formats have a fixed size, and the computation time with Unums could be disastrous. Note also that increasing the precision won't solve the issue with the above example; one would need exact computations, thus with unbounded sizes.
Vincent Lefèvre (talk) 11:57, 14 April 2017 (UTC)Reply

Mangled sentence?

edit

The lead section contains the following sentence (or sentence fragment?):

Type III unum also known as posits and valids is the breakthrough type that can serve as a drop and replacement for IEEE 754 floats.

I am having trouble parsing this sentence. "Posits and valids" apparently are alternative names for type III unums (right?), and "drop and replacement" should probably be "drop-in replacement". But what is a breakthrough type? – Tea2min (talk) 11:38, 19 June 2018 (UTC)Reply

I've removed a part of this sentence as it was non-neutral ("breakthrough") and incorrect: many codes and standards depend on IEEE arithmetic, thus Unum cannot be a replacement. Vincent Lefèvre (talk) 21:31, 19 June 2018 (UTC)Reply

What are 'Valids'?

edit

The article mentions 'Valids' but doesn't really define what they are. – Tea2min (talk) 06:21, 28 June 2018 (UTC)Reply

  • Valids are the interval arithmetic version of posits. It is a part of Type III Unum. Gustafson had mentioned valids in his talks but did not officially share the technical details of valids. – Cerlane (talk) 07:09 28 June 2018 (UTC)

So, is a bit used to indicate whether it is a posit vs a valid? Is that part of the regime? Are they just different data types? JimJJewett (talk) 06:36, 4 June 2020 (UTC)Reply

According to https://supercomputingfrontiers.eu/2017/wp-content/uploads/2017/03/2_1100_John-Gustafson.pdf slide 44, a valid consists of a pair of posits: a "start posit" and an "end posit" (this is similar to an inf-sup representation in interval arithmetic). So these are different data types. Vincent Lefèvre (talk) 09:40, 4 June 2020 (UTC)Reply

What are 'Regimes'?

edit

Also, the article mentions "regimes" and it seems this is a vital difference to normal floating point representation. It's never explained what it is and what it solves. -- DarkDust (talk) 06:42, 6 September 2019 (UTC)Reply

"Regime Bits" are best described in this paper http://www.johngustafson.net/pdfs/BeatingFloatingPoint.pdf If you can imagine a 4 digit number where you either start with all 1's and terminate with a 0 or start with all 0's and terminate with a 1 or reach the end of the 4 digits without doing either. Perhaps it was updated after your question but I believe the article answers it with "For a n-bit posit, regime can be of length 2 to (n − 1). The format of regime is such that it is a repetition of a same-sign bit and terminated by a different-sign bit.". 65.126.92.250 (talk) 22:55, 22 January 2020 (UTC)Reply

Is the use of the term 'same-sign' correct - should it not be just 'same', ie "...it is a repetition of the same bit, terminated by the opposite bit." The use of 'sign' here threw me. Note I am not a mathematician, so hesitate to amend the article, in case I am just not au-fait with the proper terminology. Mngerhold (talk) 08:53, 30 September 2022 (UTC)Reply
I agree that this is poorly described. IMHO, this should be "it is a repetition of the same bit, called the sign bit, terminated by the opposite bit". — Vincent Lefèvre (talk) 11:28, 30 September 2022 (UTC)Reply

That says how the regime is represented ... but what is the point of even having a regime? Does it somehow tell you how many of the following bits will be used for the exponent vs the mantissa? Does it have something to do with whatever a quire is? (Note that the author's pdf might answer that, but the wikipedia article certainly doesn't.) Similar questions for quire and type II, except that it isn't clear how they are even represented. — Preceding unsigned comment added by JimJJewett (talkcontribs) 06:35, 4 June 2020 (UTC)Reply

Since the size of the regime can vary, the description of the representation isn't even clear. Vincent Lefèvre (talk) 09:49, 4 June 2020 (UTC)Reply

Not floating point?

edit

We have a gentleman's disagreement about article content, and I would like to informally gather other editor's opinions on it.

In this edit;[1] User:Vincent Lefèvre (Who I respect an usually agree with 100%) appears to be taking the position that if a number is not the kind of Floating-point arithmetic that is described in IEEE 754 (and in ISO C, which is the same standard: see C99#IEEE 754 floating-point support) then it is not floating point but is instead similar to the real floating point.

My position is that since Unum has a significand, an exponent, and a decimal point that floats, and because numerous high-quality sources call it floating point (just go to https://scholar.google.com/ and search on [ Unum "floating point ]) it is floating point. Related:[2]

In my opinion, if we adopt the "Only IEEE 754" definition of "floating point" we will have to change multiple Wikipedia articles such as Z1 (computer) ("The Z1 was the first freely programmable computer in the world which used Boolean logic and binary floating-point numbers"), FPS AP-120B ("it could present two floating point results per cycle"), and MicroVAX ("Two variants of the floating point chips were supported"), and we would have to rename articles such as IBM hexadecimal floating-point. All of these predate IEEE 754. I would have to check, but I am pretty sure that there are currently-shipping DSPs and GPUs that use non-IEEE-754 floating point.

With all due respect, If multiple high quality sources call something "floating point" then so should we. --Guy Macon (talk) 01:27, 7 June 2021 (UTC)Reply

@Guy Macon: In a floating-point format, one has a notion of precision, which does not depend on the value of the number to be represented. This is not the case with Unum (or with tapered floating point), where the precision depends on the order of magnitude of the number to be represented (better formalized by the "regime" field in Type III Unum). So it does not match the usual floating point model, as defined in IEEE 754 and in ISO C, for instance. Note: For ISO C, I am not talking about C99#IEEE 754 floating-point support, but the general model defined in C99-C17 §5.2.4.2.2, followed by any C implementation (not just IEEE 754 ones). I certainly do not wish to restrict to IEEE 754. — Vincent Lefèvre (talk) 01:56, 7 June 2021 (UTC)Reply
Why restrict it at all? Does any reliable source say that the "usual floating point model" is the only floating point model? "Floating point mathematics" is clearly a generic term for any mathmatics that has a floating decimal point. Pinging User:matthiaspaul, who wrote the claim that tapered floating point isn't floating point, but is instead "similar to floating point". --Guy Macon (talk) 03:45, 7 June 2021 (UTC)Reply
When scientific articles talk about floating point, they use the same model as in IEEE 754 (but with a radix that can be other than 2 or 10) or C, AFAIK, with or without subnormals. This is also the model used in Coq. For instance, see Flocq: A Unified Library for Proving Floating-point Algorithms in Coq (there is no maximum exponent here, because this is dedicated to proofs, assuming that overflow does not occur). See also Goldberg's paper What Every Computer Scientist Should Know About Floating-Point Arithmetic (1991) and ISO/IEC 10967 (Language Independent Arithmetic) Part 1. — Vincent Lefèvre (talk) 08:00, 7 June 2021 (UTC)Reply
@Vincent Lefèvre I'm surprised you show such aversion to Posits, but so little convincing arguments against them. Not all "Scientific articles" talk about floating point in teh same way, and many consider Posit and IEEE side-by-side, for example (you don't give any) [The Accuracy and Efficiency of Posit Arithmetic], just a few months after your comment. A statement like "tapered floating point isn't floating point" should be taken with lots of caution, just like "Black swan is no swan". It may hold some truth, but should not be used to impose someone's meaning. Tochinet (talk) 13:14, 30 October 2024 (UTC)Reply
@Tochinet: Wow! It's up to you to bring the arguments (and/or tools to easily test posit arithmetic, such as a C library or a C compiler that would use posit formats for float and double). The article you mention chose applications for which posit arithmetic performs rather well. But it needs 30% more resource (30% additional resource could be used to get a more accurate FP implementation). Concerning applications, you should consider ones that need large and/or small exponent values, and ones that need to provide accurate results (such as accurate summation or accurate math functions). You also need to consider the 64-bit formats (64-bit FP is much more used than 32-bit FP in practice). Concerning the definition of "floating point", this should be based on WP:RS. — Vincent Lefèvre (talk) 11:07, 2 November 2024 (UTC)Reply

Authorization to relicense implementation list

edit

I emailed the author to (re)license the list of implementations on the posithub.org website for Wikipedia, as the implementation section on the article was lame. The following should be cryptographically verifiable as coming from the author's email address:

https://gist.github.com/indolering/d4291cb37a78646bd20d4e13809d136b

Table Misinformation

edit

The table that measures speeds doesn't seem like it can be correct. If pops is what I think it is (popping from the stack) then it should always be listed as pops/s or some other unit of time, because a number of pops wouldn't be a measurement of speed. The last element in the table is measured in operations per second, though, so perhaps I'm misinterpreting how the measurement is being done. Regardless, something is up with both pops and pops/s being considered units of speed. — Preceding unsigned comment added by 98.11.244.90 (talk) 04:40, 28 July 2022 (UTC)Reply

No, after some search I found that "pops" is supposed to mean "posit operations per second" (see the description of this video). But I agree that this is very unclear. And about "pops/s", is the "/s" a typo or does this one mean "popping from the stack per second" (but implementations do not necessarily use a stack)? — Vincent Lefèvre (talk) 07:48, 28 July 2022 (UTC)Reply