From bhh at xs4all.nl  Wed May 24 14:08:03 2017
From: bhh at xs4all.nl (Berend Hasselman)
Date: Wed, 24 May 2017 14:08:03 +0200
Subject: [Rd] precision of do_arith() in arithmetic.c
In-Reply-To: <CAPtC_u3aBjF-A98_iRpw9xrf14uq14YpA9tj9iBzHG887B8baQ@mail.gmail.com>
References: <CAPtC_u3aBjF-A98_iRpw9xrf14uq14YpA9tj9iBzHG887B8baQ@mail.gmail.com>
Message-ID: <6620A708-0A09-4C25-BBDB-A3101CEC6716@xs4all.nl>


> On 24 May 2017, at 04:24, M Kim <mkim0710 at gmail.com> wrote:
> 
> To the R development team:
> 
> First of all, thank you so much for maintaining wonderful R software.
> 
> Perhaps, Dr. Ahn has just reported an error on the wilcox.test() function,
> and suggesting that an error may arise from abs() and rank().
> 
> 
> I just had a quick check that the problem may come from the precision of
> the results of arithmetic functions.
> 
> 
> 87.7-89.1+1.4
> # > 87.7-89.1+1.4
> # [1] 8.437695e-15
> 

R FAQ 7.31.
See https://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f

Berend

> I checked that do_arith() in arithmetic.c is using double type (8 byte) for
> PLUSOP, MINUSOP, TIMESOP, DIVOP etc.
> 
> https://github.com/wch/r-source/blob/f68b30e3b5479d84adbff516d48d4722a574dc82/src/main/arithmetic.c
> 
> 
> I have two thoughts:
> 
> (1) in the rank() function, we may round at less than 14 decimal places by
> default?
> 
> (2) using long double type (10 byte) instead of double type (8 byte) by
> default in the arithmetic function could be helpful for preventing
> embarassment?
> 
> Perhaps, R may provide the arithmetic function with various variable types,
> if some application needs.
> 
> 
> Thanks.
> 
> Min-hyung
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] precision of do_arith() in arithmetic.c
Berend Hasselman