[Rd] bug in modulus operator %% (PR#7852)

McGehee, Robert Robert.McGehee at geodecapital.com
Thu May 12 14:41:50 CEST 2005


Could very easily be chipset, but I'm actually running a Pentium 4
myself. Pentium 4 1.9GHz, on a Windows XP Professional Version 2002
Service Professional, Service Pack 1. 

Also of interest,
> 1 %% 0.2
[1] 0.2
> 1 %% 0.25
[1] 0



-----Original Message-----
From: Prof Brian Ripley [mailto:ripley at stats.ox.ac.uk] 
Sent: Thursday, May 12, 2005 3:39 AM
To: r-devel at stat.math.ethz.ch
Subject: RE: [Rd] bug in modulus operator %% (PR#7852)


I've now found a Windows system that does this.  This is also Windows
XP, 
fully patched, and with the same rw2010.  So it may be chip-specific:
the 
one that works is a P4 and the one that does not is a latest Pentium M.

I am not sure that the guarantee on the help page has been supported for
a 
while.  I've altered the code so it is more likely to be.

BTW,

> options(digits=20)
> 1 %% 0.001
[1] 0.0009999999999999792

shows why the original is not a bug in R.


On Thu, 12 May 2005 ripley at stats.ox.ac.uk wrote:

> On Wed, 11 May 2005 Robert.McGehee at geodecapital.com wrote:
>
>> Yes, you are correct. I had only checked one of my platforms. Linux
>> works as you suggest. But for me on Windows,
>>
>>> x <- 1
>>> y <- 0.2
>>> x %/% y
>> [1] 5  ## I get a 4 in Linux
>
> I get 5 on Windows, but
>
>> (x %% y) + y * (x %/% y)
> [1] 1
>
> so is there a problem particular to your Windows runtime?
>
>
>>
>> version
>>         _             =20
>> platform i386-pc-mingw32
>> arch     i386          =20
>> os       mingw32       =20
>> system   i386, mingw32 =20
>> status                 =20
>> major    2             =20
>> minor    1.0           =20
>> year     2005          =20
>> month    04            =20
>> day      18            =20
>> language R             =20
>>
>>
>> -----Original Message-----
>> From: Peter Dalgaard [mailto:p.dalgaard at biostat.ku.dk]=20
>> Sent: Wednesday, May 11, 2005 4:14 PM
>> To: McGehee, Robert
>> Cc: ted.harding at nessie.mcc.ac.uk; Peter Dalgaard;
R-bugs at biostat.ku.dk;
>> kjetil at acelerate.com; r-devel at stat.math.ethz.ch
>> Subject: Re: [Rd] bug in modulus operator %% (PR#7852)
>>
>>
>> "McGehee, Robert" <Robert.McGehee at geodecapital.com> writes:
>>
>>> Yes, but from ?"%%":
>>> "It is guaranteed that 'x =3D=3D (x %% y) + y * (x %/% y)' (up to =
>> rounding
>>> error) ..."
>>> =20
>>> (R 2.1.0)
>>>> x <- 1
>>>> y <- 0.2
>>>> x %% y
>>> [1] 0.2
>>>> (x %% y) + y * (x %/% y)
>>> [1] 1.2
>>> =20
>>> Certainly 1 does not equal 1.2 as the documentation would suggest,
and
>>> these seem like large enough numbers to not be effected by rounding
>>> errors or lack of precision.
>>
>> Now that looks a bit odd, but it isn't universal:
>>
>>> x <- 1
>>> y <- 0.2
>>> x %% y
>> [1] 0.2
>>> x %/% y
>> [1] 4
>>> (x %% y) + y * (x %/% y)
>> [1] 1
>>
>> So what platform was that happening on?


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-devel at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list