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 > > > > > >
- References:
- Possible bug in Floor function?
- From: psycho_dad <s.nesseris@gmail.com>
- Possible bug in Floor function?