Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2014

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Possible bug in Floor function?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg132351] Re: Possible bug in Floor function?
  • From: John Doty <noqsiaerospace at gmail.com>
  • Date: Mon, 17 Feb 2014 23:04:14 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-outx@smc.vnet.net
  • Delivered-to: mathgroup-newsendx@smc.vnet.net
  • References: <20140215090214.8888569D4@smc.vnet.net> <ldpdtt$6oe$1@smc.vnet.net>

The problematic function here is Log. While Log[x,y] with exact numeric arguments will transform to an exact numeric value if possible, in other cases it transforms to Log[y]/Log[x]. But then, nothing short of FullSimplify[] seems to be able to reverse this. So, Floor[] sees Log[100]/Log[10] and cannot reduce it to an exact numerical value. It falls back on interval arithmetic, but that can't work at a point where Floor[] is discontinuous.

Floor[] seems to have no trouble with other hairy expressions that happen to equal integers, for example "((-1)^(1/3) + (-1)^(2/3))/Sqrt[-3]". But a mere Simplify[] reduces that to 1. Perhaps that's where the real bug is. Does Floor[] try Simplify[]? Maybe Simplify[] should be transforming things like Log[100]/Log[10].

On Saturday, February 15, 2014 11:13:49 PM UTC-5, Bob Hanlon wrote:
> It is sometimes better to simplify expressions prior to using numerical
>
> techniques.
>
>
>
>
>
> $Version
>
>
>
>
>
> "9.0 for Mac OS X x86 (64-bit) (January 24, 2013)"
>
>
>
>
>
> Off[Floor::meprec] (* Supressing error messages. This does not change the
>
> results. *)
>
>
>
>
>
> Floor[Log[10, x]] /. x -> 100 //
>
>   FullSimplify // N
>
>
>
>
>
> 2.
>
>
>
>
>
> Floor[Log[10, x] /. x -> 100 //
>
>    FullSimplify] // N
>
>
>
>
>
> 2.
>
>
>
>
>
> Oddly, using PowerExpand results in an integer result despite the use of N
>
>
>
>
>
> Floor[Log[10, x]] /. x -> 100 //
>
>   PowerExpand // N
>
>
>
>
>
> 2
>
>
>
>
>
> Floor[Log[10, x] /. x -> 100 //
>
>    PowerExpand] // N
>
>
>
>
>
> 2
>
>
>
>
>
>
>
> Bob Hanlon
>
>
>
>
>
>
>
>
>
> On Sat, Feb 15, 2014 at 4:02 AM, psycho_dad  wrote:
>
>
>
> > Hi,
>
> >
>
> > I think I may have stumbled upon a possible bug in Floor. Evaluating the
>
> > following gives the correct result:
>
> >
>
> > Floor[Log[10, 100.]]
>
> > 2
>
> >
>
> > Evaluating it with a replacement and //N gives a message and the wrong
>
> > result:
>
> >
>
> > Floor[Log[10, x]] /. x -> 100 // N
>
> >
>
> > Floor::meprec: Internal precision limit $MaxExtraPrecision = 50.` reached
>
> > while evaluating Floor[Log[100]/Log[10]]. >>
>
> >
>
> > 1
>
> >
>
> > I'm on Math 9.0 + Win7, but Math 8 gives the same (wrong) result as well.
>
> >
>
> > Cheers
>
> >
>
> >



  • Prev by Date: Re: Keeping the correct order
  • Next by Date: Minimization problem
  • Previous by thread: Re: Possible bug in Floor function?
  • Next by thread: Re: Possible bug in Floor function?