> Are there any tricks I can use to get a real result > for exp( ln(a) ) - exp( ln(0.1) + ln(b) ), either in logarithm or > exponential form?
log.a <- 1347 log.b <- 1351 f0 <- function(log.a, log.b) exp(log.a) - exp(log(0.1) + log.b) will not work because f0(1347,1351) is too big to represent as a double precision number (abs(result)>10^308)). If you are satisfied with computing log(result) you can do it with some helper function: addOnLogScale <- function (e1, e2) { # log(exp(e1) + exp(e2)) small <- pmin(e1, e2) big <- pmax(e1, e2) log1p(exp(small - big)) + big } subtractOnLogScale <- function (e1, e2) { # log(abs(exp(e1) - exp(e2))) small <- pmin(e1, e2) big <- pmax(e1, e2) structure(log1p(-exp(small - big)) + big, isPositive = e1 > e2) } as f1 <- function(log.a, log.b) { # log(abs(exp(log.a) - exp( log(0.1) + log.b))), avoiding overflow subtractOnLogScale( log.a, log(0.1) + log.b ) } E.g., > f0(7,3) [1] 1094.625 > exp(f1(7,3)) [1] 1094.625 attr(,"isPositive") [1] TRUE With your log.a and log.b we get > f1(1347, 1351) [1] 1348.495 attr(,"isPositive") [1] FALSE You can use the Rmpfr package to compute the results to any desired precision. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf > Of francesca casalino > Sent: Monday, February 04, 2013 8:00 AM > To: r-help@r-project.org > Subject: Re: [R] Exponentiate very large numbers > > I am sorry I have confused you, the logs are all base e: > > ln(a) = 1347 > ln(b) = 1351 > > And I am trying to solve this expression: > > exp( ln(a) ) - exp( ln(0.1) + ln(b) ) > > > Thank you. > > 2013/2/4 francesca casalino <francy.casal...@gmail.com>: > > Dear R experts, > > > > I have the logarithms of 2 values: > > > > log(a) = 1347 > > log(b) = 1351 > > > > And I am trying to solve this expression: > > > > exp( ln(a) ) - exp( ln(0.1) + ln(b) ) > > > > But of course every time I try to exponentiate the log(a) or log(b) > > values I get Inf. Are there any tricks I can use to get a real result > > for exp( ln(a) ) - exp( ln(0.1) + ln(b) ), either in logarithm or > > exponential form? > > > > > > Thank you very much for the help > > ______________________________________________ > R-help@r-project.org mailing list > 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 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.