[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Binary128 - PI and E

On May 11, 2011, at 19:33, Charles Stevens wrote:

The current proposed specification in COBOL for the intrinsic function PI 
under standard-binary arithmetic (which follows the rules for IEEE Std 
754-2008 binary128 format) is the arithmetic expression 
(16,312,081,666,030,376,401,667,486,162,748,272 / (2 ** 112)).  
What I personally like about that is this:  
1)  The dividend is an integer that completely and exactly specifies the 
binary content of the significand field (including the implicit leading bit 
being set)
2)  The divisor is an integer that completely and exactly specifies the 
binary content of the exponent field after bias is applied.
The question is, whether this value is the CLOSEST approximation to PI that 
can be represented in binary128 format, and that basically means "is the last 
digit of the integer correct?".

The most significant bit of π * 2**112 is 2**113. The binary128 format provides 
113 bits for normal numbers (including the implicit bit), so the least 
significant bit it provides in π * 2**112 is 2**1, or 2. So the question is 
would increasing or decreasing the numerator by 2 make the fraction closer to π?

π * 2**112 is 16312081666030376401667486162748272.450266..., so making the 
numerator ...274 or ...270 would make the fraction farther from π.

I do not see why the exponent 112 is attractive, though. The exponent will be 
1, since π is 1.something * 2**1. The biased exponent encoding will be 1 plus 
the bias = 1 + 16383 = 16384. And in π * 2**112, the least significant 
representable bit is 2. I can see how 111 would be attractive, since all the 
integer bits in π * 2**111 would be representable in the significand of a 
binary128 object. Unless I slipped by one somewhere?

On May 11, 2011, at 15:27, William M Klein wrote:

... Can anyone tell me or point me to some place that documents what the 
exact DECIMAL fixed-point value would be for the most accurate values of PI 
and E that can be stored in a binary128 data item

As Thorsten Siebenborn wrote, the exact value of the binary128 number that is 
closest to π is exactly 

Would this just be (for PI) PI with 35 digits to the right of the decimal 

Yes for π but no in general. Suppose you have 35 digits to the right of the 
decimal point in the decimal representation of some number, but you do not know 
what the remaining digits are. The representable floating-point numbers, 
starting with 2 and counting upward, are 2, 2.000...00038,51... (where the "," 
marks the spot between the 35th and 36th digits), 2.000...00077,03..., 
2.000...00115,55..., and so on.

Now, suppose x rounded to 35 decimal places is 2.000...00116. This tells you x 
is between 2.000...00115,5 and 2.000...00116,5. Some of the numbers in that 
interval are below 2.000...00115,55 and some are above it. So knowing x to 35 
decimal places does not give you enough information to know which 128-bit 
floating-point number is closest to x.

Some number theory can be used to find where the representable numbers most 
closely approach decimal values, and that would tell you how many decimal 
digits you need in the worst case. However, I have run out of time for tonight.

(I think that I am correct that any decimal item that can be stored in a 
binary128 item CAN be expressed exactly as a decimal fixed-point number - 
although the reverse is not true)

Yes, every value of a finite non-NaN binary128 is an integer multiple of 
2**-16494 (the value of the least significant bit of a denormal), and 2**-16494 
is an integer multiple of 10**-16494, so every finite non-NaN binary128 can be 
expressed exactly with at most 16494 decimal places (to the right of the 
decimal point).

                                — edp (Eric Postpischil)

Space isn't remote at all. It's only an hour's drive away if your car could go 
straight upwards. — Fred Hoyle

754 | revision | FAQ | references | list archive