As one of the approximately 30 names on the 1985 IEEE 754 standard, I
should be first to comment about representations. However, a quite
large fraction of the computers I've owned or used were decimal beasts.
This doesn't remove all the issues, of course, but some of these
input-output conversions would be avoided. I rather doubt we'll ever
see an R version for decimal arithmetic, since there'd be a lot of
awkwardness with comparing with the usual version, and a lot of the test
comparisons would likely fail. On the other hand, it might serve as a
reminder that IEEE arithmetic, while a great step in computation, is not
the only possibility and does not eliminate all the difficulties with
finite precision arithmetic.

Best, JN




On 2019-01-17 11:52 a.m., peter dalgaard wrote:
> 
> 
>> On 17 Jan 2019, at 15:56 , POLWART, Calum (COUNTY DURHAM AND DARLINGTON NHS 
>> FOUNDATION TRUST) via R-help <r-help@r-project.org> wrote:
>>
>> Well I get the issue with finite precision. As in SQRT(2) * SQRT(2) is not 2.
> 
> As Jeff indicates, you also need to get that just like 3rds and 7ths cannot 
> be represented exactly in base 10, 5ths and 10ths cannot be represented 
> exactly in base 2 (only powers of 1/2 and their multiples can).
> 
> Specifically, 1.4 decimal is 1.0110011001100.... binary
> 
> -pd
> 
>>
>> What surprised me was that seq(1.4, 2.1, by=0.001) starts at 
>> 1.3999999999999999 and not 1.4!
>>
>>
>> -----Original Message-----
>> From: PIKAL Petr [mailto:petr.pi...@precheza.cz]
>> Sent: 17 January 2019 14:30
>> To: POLWART, Calum (COUNTY DURHAM AND DARLINGTON NHS FOUNDATION TRUST); Ben 
>> Tupper
>> Cc: r-help@r-project.org
>> Subject: RE: [R] I can't get seq to behave how I think it should
>>
>> Hi
>>
>> It is not seq problem, it is floating point numbers representation in finit 
>> precision problem. Ben pointed to it and you could learn about it from FAQ 
>> 7.31.
>>
>> Cheers
>> Petr
>>
>>> -----Original Message-----
>>> From: POLWART, Calum (COUNTY DURHAM AND DARLINGTON NHS FOUNDATION
>>> TRUST) <calum.polw...@nhs.net>
>>> Sent: Thursday, January 17, 2019 2:56 PM
>>> To: PIKAL Petr <petr.pi...@precheza.cz>; Ben Tupper
>>> <btup...@bigelow.org>
>>> Cc: r-help@r-project.org
>>> Subject: RE: [R] I can't get seq to behave how I think it should
>>>
>>> Thanks guys.
>>>
>>> I've used Petr's method and its working for me.
>>>
>>> If the data had been from a calculation I'd have rounded it... just
>>> didn't expect seq to break it!
>>>
>>> C
>>>
>>> -----Original Message-----
>>> From: PIKAL Petr [mailto:petr.pi...@precheza.cz]
>>> Sent: 17 January 2019 13:53
>>> To: Ben Tupper; POLWART, Calum (COUNTY DURHAM AND DARLINGTON NHS
>>> FOUNDATION TRUST)
>>> Cc: r-help@r-project.org
>>> Subject: RE: [R] I can't get seq to behave how I think it should
>>>
>>> Hi
>>>
>>> Or you could use rounding.
>>> which(round(lut, 3)==1.8)
>>> [1] 401
>>>
>>> Cheers
>>> Petr
>>>
>>>> -----Original Message-----
>>>> From: R-help <r-help-boun...@r-project.org> On Behalf Of Ben Tupper
>>>> Sent: Thursday, January 17, 2019 2:43 PM
>>>> To: POLWART, Calum (COUNTY DURHAM AND DARLINGTON NHS
>>> FOUNDATION TRUST)
>>>> <calum.polw...@nhs.net>
>>>> Cc: r-help@r-project.org
>>>> Subject: Re: [R] I can't get seq to behave how I think it should
>>>>
>>>> Hi,
>>>>
>>>> This looks like a floating point reality bump - see
>>>>
>>>> https://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-thin
>>>> k- these-numbers-are-equal_003f
>>>> <https://cran.r-project.org/doc/FAQ/R-
>>>> FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f>
>>>>
>>>> You can use other methods to finding your row - I would opt for
>>>> findInterval()
>>>>
>>>>> lut = seq(1.4, 2.1, by=0.001)
>>>>> findInterval(1.8, lut)
>>>> [1] 401
>>>>
>>>> findInterval() uses a rapid search to find the index in the look up
>>>> table (lut) that is just less than  or equal to the search value (in
>>>> your example
>>> 1.8).
>>>>
>>>> Cheers,
>>>> Ben
>>>>
>>>>> On Jan 17, 2019, at 8:33 AM, POLWART, Calum (COUNTY DURHAM AND
>>>> DARLINGTON NHS FOUNDATION TRUST) via R-help <r-help@r-project.org>
>>>> wrote:
>>>>>
>>>>> I am using seq with the expression seq(1.4, 2.1, by=0.001) to
>>>>> create a sequence of references from 1.4 to 2.1 in 0.001
>>>>> increments.  They appear to be created correctly.  They have a
>>>>> related pair of data which for the purposes of this we will call
>>>>> val.  I'm interested in the content on the row with seq = 1.8. But
>>>>> I can't seem to get it returned.  I can get other values but not
>>>>> 1.8!  yet looking at row
>>>>> 401 there is nothing to indicate an issue
>>>>>
>>>>>> a = 1.4
>>>>>> b = 2.1
>>>>>> seq = seq(a, b, by=0.001)
>>>>>> val = ceiling(seq * 50)
>>>>>> s=data.frame(seq, val)
>>>>>> s$val[seq==1.799]
>>>>> [1] 90
>>>>>> s$val[s$seq==1.8]
>>>>> numeric(0)
>>>>>> s$val[seq==1.8]
>>>>> numeric(0)
>>>>>> s$val[s$seq==1.800]
>>>>> numeric(0)
>>>>>> s$val[s$seq==1.801]
>>>>> [1] 91
>>>>>> head(s[s$seq>1.798,])
>>>>>     seq val
>>>>> 400 1.799  90
>>>>> 401 1.800  90
>>>>> 402 1.801  91
>>>>> 403 1.802  91
>>>>> 404 1.803  91
>>>>> 405 1.804  91
>>>>>
>>>>>
>>>>> Can anyone explain what's going on here and how I would correctly
>>>>> find the
>>>> content of row 401 by using an expression to equal the seq column?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>> *******************************************************************
>>>> ***
>>>>> **********************************************
>>>>>
>>>>> This message may contain confidential information. If
>>>>> ...{{dropped:25}}
>>>>
>>>> ______________________________________________
>>>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>> Osobní údaje: Informace o zpracování a ochraně osobních údajů
>>> obchodních partnerů PRECHEZA a.s. jsou zveřejněny na:
>>> https://www.precheza.cz/zasady- ochrany-osobnich-udaju/ | Information
>>> about processing and protection of business partner’s personal data are 
>>> available on website:
>>> https://www.precheza.cz/en/personal-data-protection-principles/
>>> Důvěrnost: Tento e-mail a jakékoliv k němu připojené dokumenty jsou
>>> důvěrné a podléhají tomuto právně závaznému prohláąení o vyloučení 
>>> odpovědnosti:
>>> https://www.precheza.cz/01-dovetek/ | This email and any documents
>>> attached to it may be confidential and are subject to the legally
>>> binding
>>> disclaimer: https://www.precheza.cz/en/01-disclaimer/
>>>
>>>
>>>
>>> *******************************************************************
>>> *************************************************
>>>
>>> This message may contain confidential information. If you are not the
>>> intended recipient please inform the sender that you have received the
>>> message in error before deleting it.
>>> Please do not disclose, copy or distribute information in this e-mail
>>> or take any action in relation to its contents. To do so is strictly
>>> prohibited and may be unlawful. Thank you for your co-operation.
>>>
>>> NHSmail is the secure email and directory service available for all
>>> NHS staff in England and Scotland. NHSmail is approved for exchanging
>>> patient data and other sensitive information with NHSmail and other 
>>> accredited email services.
>>>
>>> For more information and to find out how you can switch,
>>> https://portal.nhs.net/help/joiningnhsmail
>>
>> Osobní údaje: Informace o zpracování a ochraně osobních údajů obchodních 
>> partnerů PRECHEZA a.s. jsou zveřejněny na: 
>> https://www.precheza.cz/zasady-ochrany-osobnich-udaju/ | Information about 
>> processing and protection of business partner’s personal data are available 
>> on website: https://www.precheza.cz/en/personal-data-protection-principles/
>> Důvěrnost: Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné 
>> a podléhají tomuto právně závaznému prohláąení o vyloučení odpovědnosti: 
>> https://www.precheza.cz/01-dovetek/ | This email and any documents attached 
>> to it may be confidential and are subject to the legally binding disclaimer: 
>> https://www.precheza.cz/en/01-disclaimer/
>>
>>
>>
>> ********************************************************************************************************************
>>
>> This message may contain confidential information. If you are not the 
>> intended recipient please inform the
>> sender that you have received the message in error before deleting it.
>> Please do not disclose, copy or distribute information in this e-mail or 
>> take any action in relation to its contents. To do so is strictly prohibited 
>> and may be unlawful. Thank you for your co-operation.
>>
>> NHSmail is the secure email and directory service available for all NHS 
>> staff in England and Scotland. NHSmail is approved for exchanging patient 
>> data and other sensitive information with NHSmail and other accredited email 
>> services.
>>
>> For more information and to find out how you can switch, 
>> https://portal.nhs.net/help/joiningnhsmail
>>
>> ______________________________________________
>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
  • ... POLWART, Calum (COUNTY DURHAM AND DARLINGTON NHS FOUNDATION TRUST) via R-help
    • ... Ben Tupper
      • ... PIKAL Petr
        • ... POLWART, Calum (COUNTY DURHAM AND DARLINGTON NHS FOUNDATION TRUST) via R-help
          • ... PIKAL Petr
            • ... POLWART, Calum (COUNTY DURHAM AND DARLINGTON NHS FOUNDATION TRUST) via R-help
              • ... Jeff Newmiller
              • ... peter dalgaard
                • ... ProfJCNash
        • ... Martin Maechler

Reply via email to