On Wed, 8 May 2019, Tejas Joshi wrote:

> Hello.
> I can't figure out from the documentation how to add test cases in the
> testsuite and inspect the results. How can I do that? Although, Taking
> the mentioned conditions under consideration, I have made another
> patch, attached.

This patch still has problems.  You can't assume that all of sig[0] and 
sig[1] are below the 0.5 bit.  You have to allow for the 0.5 bit possibly 
being in any word of the significand, not necessarily the SIGSZ - 1 word, 
meaning you have to loop over all words of the significand.  A word 
completely below the 0.5 bit can just be checked for being 0.  A word 
containing the 0.5 bit needs checking both the bits in that word below the 
0.5 bit, and checking that the 0.5 bit is 1.

REAL_EXP (r) could be bigger than SIGNIFICAND_BITS, so you need to handle 
that case (automatically an integer) rather than computing a spurious very 
large n.

This should illustrate testcases that need adding, to cover the various 
cases of where the 0.5 bit is and where any nonzero bit below it might be 
- my suggestion is to add such tests, make sure they fail with your 
existing patch, and only then fix the implementation to make them pass.  
For some of those tests, you'll need to test long double or _Float128.  
(Use DEF_EXT_LIB_FLOATN_NX_BUILTINS in builtins.def to add the built-in 
function variants such as roundevenf128; existing round-to-integer 
functions already have such variants.)

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to