An idea on-- Round[Log[2]/Log[4]]

*To*: mathgroup at smc.vnet.net*Subject*: [mg14015] An idea on-- Round[Log[2]/Log[4]]*From*: "Ersek, Ted R" <ErsekTR at navair.navy.mil>*Date*: Wed, 16 Sep 1998 14:11:57 -0400*Sender*: owner-wri-mathgroup at wolfram.com

Recall the recent discussion on Round[Log[2]/Log[4]]. The line below produces a message, and no progress on the problem. In[1]:= Round[Log[2]/Log[4]] $MaxEtraPrecision::meprec: In increasing internal precision while attempting to evaluate Round[Log[2]/Log[4]], the limit $MaxExtraPrecision=49.99 was reached. Increasing the value of $MaxExtraPrecision may help resolve the uncertainty. Out[1]= Round[Log[2]/Log[4]] As others pointed out, we need to use FullSimplify inside of Round to get the desired result. It would be nice if the kernel could figure out when FullSimplify might help and use it, but only in cases where the normal algorithm fails. My definition below for Round does the trick. In[2]:= $UseFullSimplify=True; Unprotect[Round]; Round[expr_]/;$UseFullSimplify:= Block[{$UseFullSimplify,$Messages={}}, Check[ Round[expr], Round[FullSimplify[expr]], $MaxExtraPrecision::meprec ] ]; Protect[Round]; In[3]:= Round[Log[2]/Log[4]] Out[3]= 0 We get the right answer, and FullSimplify is only used when it's needed! The same improvement can be made for Floor, Ceiling and possibly others. Cheers, Ted Ersek