Re: Mathematica bugs?
- To: mathgroup at smc.vnet.net
- Subject: [mg67321] Re: Mathematica bugs?
- From: Peter Pein <petsie at dordos.net>
- Date: Sun, 18 Jun 2006 05:13:13 -0400 (EDT)
- References: <e70f29$rf4$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Yaroslav Bulatov schrieb: > When I run the following line > x = Pi/4; For[i = 0, i < 56, i += 1, x = 2*Abs[x - 1/2]]; N[x] > I get > 3. > > But x should always stay between 0 and 1, why do I get 3? > > Also > x = Pi/4; For[i = 0, i < 50, i += 1, x = 2*Abs[x - 1/2]]; N[Log[x]] > gives me > Indeterminate > > How can I get an indeterminate here? > Hi Yaroslav, each multiplication which 2 is a binary left shift of the multiplicand. For iter56 = Nest[2*Abs[#1 - 1/2] & , Pi/4, 56]; Simplify[iter56] 56593902016227523 - 18014398509481984*Pi you'll need about 56 bit to represent each of the summands: Ceiling[Log[2, Abs /@ List @@ %]] {56, 56} compare this to Log[2, 10]*$MachinePrecision 53. Therefore you get an unreliable result using machine arithmetic: N[iter56] 3. Using multiple prec. arithmetic, you'll get N[iter56, 10] 0.7938724527 Using insufficient precision leads also to: logiter50 = Log[Nest[2*Abs[#1 - 1/2] & , Pi/4, 50]]; Simplify[logiter50] Log[-884279719003555 + 281474976710656*Pi] N[logiter50[[1]]] 0. and therefore N[logiter50] Indeterminate but: N[logiter50, 16] -3.367644345831603 hth, Peter