I am porting some FORTRAN to R in which an Inf triggers an if(). The trigger is infinite on exp(lgamma(OVER)). What is the canonical R style of determining OVER when exp(OVER)== Inf? The code structure that I am porting is best left intact--so I need to query R somehow to the value of OVER that causes exp(lgamma(OVER)) to equal Inf. On my system, exp(lgamma(171)) is about first to equal Inf. I asked similar question a few weeks ago on exp(OVER) and got the answer back as log(.Machine$double.xmax). I now have the lgamma involved. I think that answer is what is OVER such the .Machine$double.xmax = lgamma(OVER), but I am not sure how to invert or solve for OVER Thanks.
"William H. Asquith" <wasquith at austin.rr.com> writes:> I am porting some FORTRAN to R in which an Inf triggers an if(). The > trigger is infinite on exp(lgamma(OVER)). What is the canonical R > style of determining OVER when exp(OVER)== Inf? The code structure > that I am > porting is best left intact--so I need to query R somehow to the value > of OVER that causes exp(lgamma(OVER)) to equal Inf. > > On my system, > exp(lgamma(171)) is about first to equal Inf. > > I asked similar question a few weeks ago on exp(OVER) and got the > answer back as log(.Machine$double.xmax). I now have the lgamma > involved. I think that answer is what is OVER such the > > .Machine$double.xmax = lgamma(OVER),Not quite... (see below)> but I am not sure how to invert or solve for OVER> uniroot(function(x) lgamma(x)-log(.Machine$double.xmax), c(171,172))$root [1] 171.6244 $f.root [1] -1.462051e-07 $iter [1] 3 $estim.prec [1] 6.103516e-05 -- O__ ---- Peter Dalgaard ??ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
On 7/3/05, William H. Asquith <wasquith at austin.rr.com> wrote:> I am porting some FORTRAN to R in which an Inf triggers an if(). The > trigger is infinite on exp(lgamma(OVER)). What is the canonical R > style of determining OVER when exp(OVER)== Inf? The code structure > that I am > porting is best left intact--so I need to query R somehow to the value > of OVER that causes exp(lgamma(OVER)) to equal Inf. > > On my system, > exp(lgamma(171)) is about first to equal Inf. > > I asked similar question a few weeks ago on exp(OVER) and got the > answer back as log(.Machine$double.xmax). I now have the lgamma > involved. I think that answer is what is OVER such the > > .Machine$double.xmax = lgamma(OVER), > > but I am not sure how to invert or solve for OVER >You could just test the result, e.g. result <- exp(lgamma(x)) if (is.finite(result)) ...