Talk:Quadruple-precision floating-point format

From Wikipedia, the free encyclopedia
Jump to: navigation, search
WikiProject Computing / CompSci (Rated Start-class, Low-importance)
WikiProject icon This article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 Low  This article has been rated as Low-importance on the project's importance scale.
Taskforce icon
This article is supported by WikiProject Computer science (marked as Low-importance).


I think this article should be moved, since the title is not conform to IEEE 754r, which refers the format as quad or quadruple precision, but never quad precision. Also quad is not really an adjective like single and double. See e.g. the draft on [1]. — Ylai 08:53, 9 January 2006 (UTC)

Good point. So changed. --Jake 21:43, 9 January 2006 (UTC)

1/3 rounds up or down?[edit]

This page on quadruple precision says:

   (1/3 rounds up like double precision, because of the odd number of bits in the significand.)

However the page for double precision says:

   (1/3 rounds down instead of up like single precision, because of the odd number of bits in the significand.)

These statements contradict each other.

It appears this has been cleaned up. -Jake (talk) 04:27, 20 September 2014 (UTC)

Max quad begins with (hex) 7fef or 7ffe?[edit]

I think it should probably be "7ffe" in the first block of four hex digits unless anyone can say why not.

Yes, 7ffe -Jake (talk) 04:27, 20 September 2014 (UTC)

Possible Error in the Example for 1/3[edit]

It appears that an error has crept into the example for 1/3, namely:

1) The examples states that the following bits, presented as hex numbers, denote 1/3:

3ffeh 5555h 5555h 5555h 5555h 5555h 5555h 5555h

2) When expanded into binaly notation this is:

0011b 1111b 1111b 1110b 0101b 0101b 0101b 0101b ....

3) The exponent is (15 bits):

011111111111110b = 16382d, adding the offset of -16383d the value of the exponent is found to be 16382-16383=-1d. And this is what appears wrong to me. It must be -2d. Why? Because, read on...

4) The mantissa is:

0101b 0101b 0101b .... = 1/4d + 1/16d + 1/64d + 1/256d + 1/1024d + 1/4096d ... = 0.333d... When we add the implied 1d the value of the matissa is found to be 1+0.333...=1.333d...

5) Finally we construct the floating-point number as follows:

mantissa * 2^exponent = 1.333... * 2^-1 = 1.333... * 1/2 = 0.666..., which is not 1/3 as the text states it must be. However, if the exponent was -2 then the result would be: mantissa * 2^exponent = 1.333... * 2^-2 = 1.333... * 1/4 = 0.333..., which is the correct result.

6) Bottom line: I think that the example for 1/3 must be:

3ffdh 5555h 5555h 5555h 5555h 5555h 5555h 5555h

Plamka 23:16, 17 September 2007 (UTC)

Plamka is right and unfortunately MAX is also broken. I've changed the values accordingly. -- 19:17, 5 March 2008 (UTC)

Hardware and software support[edit]

Do any hardware or CPUs support quadruple precision floating point already?

Do any programming languages? (talk) 08:00, 9 May 2008 (UTC)

Java does not support quadruples, but you can use BigDecimals instead. C/C++ has 'long double', but that might be interpreted the same as 'double'.
Honnza (talk) 06:41, 22 May 2008 (UTC)
On x86 and x86-64 architectures, most compilers interpret "long double" as 80-bit x87 "extended precision", even when sizeof(long double) is 16 due to padding to align to ABI requirements. --Delirium (talk) 05:35, 8 March 2009 (UTC)
If a current 64 bit CPU did a "quadruple precision" the number would be 256 BIT, unless it follows IEEE 754 standards, which seriously need to be updated which were with the new IEEE 754r which now includes 128 BIT numbers —Preceding unsigned comment added by Trentc (talkcontribs) 20:51, 27 June 2009 (UTC)
Untree, it would be 128 bits of course. I have no idea why you say it will take 256 bits. QUadruple do not mean "4 x native-word size", it is just 4 times more precise than standard floating point (single precision, commonly known in programming as just "float"). Also 80-bit x87 "extended precision", in memory is often stored as 96bits or 128bits, depending of needs, operating system, and other issues (like alligment). — Preceding unsigned comment added by (talk) 03:19, 11 June 2011 (UTC)

In the first paragraph, the article claims that quadruple precision could refer to integers, fixed point numbers, or floating point numbers, but the rest of the article solely discusses floating point numbers. Could somebody rectify this? —Preceding unsigned comment added by (talk) 19:55, 27 October 2008 (UTC)

The IBM z Series supports quad precision. See: this paper, Figure 1. mfc (talk) 11:59, 10 March 2009 (UTC)

IBM hex (base 16) floating point has supported extended (128 bit) precision starting with the 360/85, and all models of S/370 and successors, except that DXR (extended precision divide) was done in software emulation until part way through the ESA/390 years. Newer processors implement binary (IEEE) and decimal (IEEE) floating point, including extended (128 bit) precision. Gah4 (talk) 00:01, 25 October 2011 (UTC)

The VAX had support for 128-bit floats (called h_float) since the 1970s, but it's not IEEE 754-compliant. —Preceding unsigned comment added by (talk) 14:04, 15 September 2010 (UTC)

VAX still supports H-Float, but it is implemented through software emulation on most models, or optional microcode. The VAX 11/730, implemented in microcode through the AMD2900 series bit-slice logic, normally came with H-Float. Gah4 (talk) 00:01, 25 October 2011 (UTC)

Some (all?) PowerPC CPUs supports quadprecision nativly. Also few compilers like Intel Fortran compiler (but few others also) supports quad-precision (not sure if strictly IEEE754, but they do) on x86 and amd64 systems using only double precision numbers with additions of some refinments or software functions. There is also few (about 3), lightwaight and fast libraries for quad and octal precision using 2xdouble (or 4xfloat for old architecture) or 4xdouble, but they do not have only about 90% precision of real quad or octal floating point numbers. One of such libraries is QD and DDFUN90 library. — Preceding unsigned comment added by (talk) 03:16, 11 June 2011 (UTC)

About PowerPC - we can add this information, but can you provide and link to the articles (e.g. magazine articles, IBM's articles, any conference paper, but not a forum or non-IBM wokrer blog) which will explicitly say about hardware support of quad (128-bit) floating point in hardware? `a5b (talk) 14:22, 3 August 2011 (UTC)
I think the anon is confusing compiler support for hardware support. Several PowerPC compilers support a quadruple precision type, but they do so by compiling to a software implementation -- PowerPC hardware only has instructions for single and double precision as far as I know. — Steven G. Johnson (talk) 22:36, 4 August 2011 (UTC)
On PowerPC (Mac OS X and GNU/Linux) the long double C type corresponds to the double-double arithmetic (implemented in software). Vincent Lefèvre (talk) 00:43, 16 February 2012 (UTC)

Link to Multiprecision Computing Toolbox for MATLAB[edit]

A link to Multiprecision Computing Toolbox for MATLAB was added, which is fine since according to this toolbox has specific, optimized support for IEEE quadruple precision (not just generic arbitrary precision). However this is a bit hidden. I think that some reference to this page from the changelog should be given, but I wonder what form it should take (this cannot be a real reference, since the external links appear after the references). Vincent Lefèvre (talk) 17:39, 12 April 2013 (UTC)

Links to specific commercial systems such as this one are not appropriate per WP:ELNO, I removed it again. - MrOllie (talk) 10:04, 17 September 2013 (UTC)