Numerical accuracy in floating point math is a much broader discussion than R, but [1] seems to summarize it reasonably well. There are whole courses on this topic at university.
[1] http://www.johndcook.com/blog/2010/06/07/math-library-functions-that-seem-unnecessary/ -- Sent from my phone. Please excuse my brevity. On December 12, 2016 9:26:17 AM PST, John Sorkin <jsor...@grecc.umaryland.edu> wrote: >David, > >I did read the help page. All it says is >log1p(x) computes log(1+x) accurately also for |x| << 1 (and less >accurately when x is approximately -1). >This gives me pause. Does it mean that log(x) does not give accurate >results? If log1p gives more accurate values than log, why is the log >function not written to use the more accurate computation performed by >log1p. I don't believe I can look directly at the code for log and >log1p, so I need to rely on the kindness of others to explain the >differences between the computations performed by the functions. I >guess >the test I ran, log1p(0.000001)/log(0.000001+1), did not have enough >precision to demonstrate a difference between the two functions. >John > > > >John David Sorkin M.D., Ph.D. >Professor of Medicine >Chief, Biostatistics and Informatics >University of Maryland School of Medicine Division of Gerontology and >Geriatric Medicine >Baltimore VA Medical Center >10 North Greene Street >GRECC (BT/18/GR) >Baltimore, MD 21201-1524 >(Phone) 410-605-7119 >(Fax) 410-605-7913 (Please call phone number above prior to faxing) >>>> David Winsemius <dwinsem...@comcast.net> 12/12/16 12:05 PM >>> > >> On Dec 12, 2016, at 8:53 AM, John Sorkin ><jsor...@grecc.umaryland.edu> >wrote: >> >> At the risk of being flamed . . . >> What is the difference between log1p(x) and log(x+1)? >> The two methods appear to give the same results: >>> log1p(0.000001)/log(0.000001+1) >> [1] 1 >> John > >Read the help page more carefully. > >-- >David. >> >> >> John David Sorkin M.D., Ph.D. >> Professor of Medicine >> Chief, Biostatistics and Informatics >> University of Maryland School of Medicine Division of Gerontology and >> Geriatric Medicine >> Baltimore VA Medical Center >> 10 North Greene Street >> GRECC (BT/18/GR) >> Baltimore, MD 21201-1524 >> (Phone) 410-605-7119 >> (Fax) 410-605-7913 (Please call phone number above prior to faxing) >>>>> William Dunlap via R-help <r-help@r-project.org> 12/12/16 11:38 AM >>>>> >> log1p(x), in the base package computes log(1+x) accurately for small >x >> (and >> large). >> >> E.g., >>> options(digits=16) >>> base::log1p(1e-14) >> [1] 9.99999999999995e-15 >>> base::log1p(1e-14) - base::log(1+1e-14) >> [1] 7.992778373591124e-18 >>> as.numeric(log(Rmpfr::mpfr(1,precBits=1000) + Rmpfr::mpfr(1e-14, >> precBits=1000))) - log1p(1e-14) >> [1] 0 >> >> >> Bill Dunlap >> TIBCO Software >> wdunlap tibco.com >> >> On Mon, Dec 12, 2016 at 8:23 AM, Faradj Koliev <farad...@gmail.com> >> wrote: >> >>> Hi all, >>> >>> How do I perform log(x+1) in R? >>> >>> log1p_trans() from the package ”scales" doesn’t seem to work for me. >>> >>> Best, >>> Faradj >>> ______________________________________________ >>> 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. >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> 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. >> Confidentiality Statement: >> This email message, including any attachments, is for the sole use of >> the intended recipient(s) and may contain confidential and privileged >> information. Any unauthorized use, disclosure or distribution is >> prohibited. If you are not the intended recipient, please contact the >> sender by reply email and destroy all copies of the original message. > >> ______________________________________________ >> 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. > >David Winsemius >the intended recipient(s) and may contain confidential and privileged >information. Any unauthorized use, disclosure or distribution is >prohibited. If you are not the intended recipient, please contact the >sender by reply email and destroy all copies of the original message. >______________________________________________ >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.