       Re: Loss of precision when using Simplify

• To: mathgroup at smc.vnet.net
• Subject: [mg36958] Re: [mg36925] Loss of precision when using Simplify
• From: Andrzej Kozlowski <andrzej at platon.c.u-tokyo.ac.jp>
• Date: Thu, 3 Oct 2002 00:16:45 -0400 (EDT)
• Sender: owner-wri-mathgroup at wolfram.com

```Dear Carl

You have discovered what is perhaps a bug but maybe something even mor
einteresting . However, I think you stopped your investigation a little
prematurely. Here is a function that just computes the coefficient of
x in your Simplified expression for various values of n:

CW[n_] := Coefficient[Simplify[1.001`17 + Sum[(x[i] - 1.001`17)/2^i,
{i, \
n}]], x]

Now lets try CW for the first 100 values of n:

In:=
Table[CW[n], {n, 100}]

Out=
{1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2,
0.5`12.3085, 0.5`12.0074, 0.5`11.7064, 0.5`11.4054,
0.5`11.1043, 0.5`10.8033, 0.5`10.5023, 0.5`10.2012,
0.5`9.9002, 0.5`9.5992, 0.5`9.2982, 0.5`8.9971,
0.5`8.6961, 0.5`8.3951, 0.5`8.094, 0.5`7.793, 0.5`7.492,
0.5`7.1909, 0.5`6.8899, 0.5`6.5889, 0.5`6.2879,
0.5`5.9868, 0.5`5.6858, 0.5`5.3848, 0.5`5.0837,
0.5`4.7827, 0.5`4.4817, 0.5`4.1806, 0.5`3.8796,
0.5`3.5786, 0.5`3.2776, 0.5`2.9765, 0.5`2.6755,
0.5`2.3745, 0.5`2.3745, 0.5`1.7724, 0.5`1.7724,
0.5`1.1703, 0.5`1.1703, 0.5`0.5683, 0``0.1423, 0``0.1423,
0``0.1423, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2,
1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2,
1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2,
1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2, 1/2,
1/2, 1/2, 1/2}

In:= Map[Length,Split[#]]

Out=
{12,43,45}

This is indeed curious.The problem seems to occur for values between 13
and 55 and then go away (for good???)  At first I thought it maybe in
some fascinating way related to some properties of the integer n, but
now I am not sure. It certainly worth a careful examination. I hope
whoever discovers the cause of this will let us know.

Andrzej

Andrzej Kozlowski
Yokohama, Japan
http://www.mimuw.edu.pl/~akoz/
http://platon.c.u-tokyo.ac.jp/andrzej/

On Wednesday, October 2, 2002, at 04:32 PM, Carl K. Woll wrote:

> To Technical Support and the Mathematica User community,
>
> I'm writing to report what I consider to be a bug. First, I want to
> show a
> simplified example of the problem. Consider the following expression:
>
> expr=0.22 + x + (3*(-0.16+ x))/4 + (9*(0.546 + x))/16;
>
> When simplified I expected to get some real number plus
> x+3x/4+9x/16, but instead I get the following:
>
> Simplify[expr]
> 0.407125 + x + 0.75 x + 0.5625 x
>
> As you can see, for some reason Mathematica converted the fractions
> 3/4 and
> 9/16 to real machine numbers. I consider this to be a bug.
>
> Now, for an example more representative of the situation that I've been
> coming across.
>
> expr12 = 1.001`17 + Sum[(x[i] - 1.001`17)/2^i, {i, 12}];
> expr13 = 1.001`17 + Sum[(x[i] - 1.001`17)/2^i, {i, 13}];
> expr55 = 1.001`17 + Sum[(x[i] - 1.001`17)/2^i, {i, 55}];
>
> As you can see, I have replaced the real numbers by extended precision
> numbers. The simplified example above demonstrates that the problem
> exists
> when using machine numbers. Now, we'll see what happens when we use
> arbitrary precision numbers. First, let's simplify the expression with
> 12
> terms.
>
> Simplify[expr12]
> (1.0010000000000 + 2048 x + 1024 x + 512 x + 256 x + 128
> x +
>
>     64 x + 32 x + 16 x + 8 x + 4 x + 2 x + x)
> / 4096
>
> As you can see, a sum with 12 terms upon simplification has
> coefficients
> which are still integers as they should be. However, increasing the
> number
> of terms to 13 yields
>
> Simplify[expr13]
> 0.0001221923828125 + 0.500000000000 x + 0.250000000000 x +
>
>   0.1250000000000 x + 0.0625000000000 x + 0.0312500000000 x +
>
>   0.01562500000000 x + 0.00781250000000 x + 0.00390625000000
> x +
>
>   0.001953125000000 x + 0.000976562500000 x + 0.000488281250000
> x
> +
>
>   0.000244140625000 x + 0.0001220703125000 x
>
> Now, all of the coefficients are converted to real numbers,
> replicating the
> bug from the simplified example. Finally, let's see what happens when
> we
> have 55 terms. Rather than putting the resulting expression here, I
> will
> just leave it at the end of the post. The result though is somewhat
> surprising. Each of the coefficients of the x[i] are again real
> numbers, but
> now their precision is only 0! The proper result of course is the sum
> of
> some real number (with a precision close to 0 due to numerical
> cancellation)
> and an expression consisting of rational numbers multiplied by x[i].
> The
> loss of precision of the coefficients of the x[i] is precisely what
> occurred
> to me. Of course, in this simple example, simply using Expand instead
> of
> Simplify produces the expected result, and is my workaround. I hope you
> agree with me that this is a bug, and one that Wolfram needs to
> correct.
>
> Carl Woll
> Physics Dept
> U of Washington
>
> Simplify[expr55]
>      -16                            -1             -1             -1
> 0. 10    + 0. x + 0. x + 0. 10   x + 0. 10   x + 0. 10
> x +
>
>        -2             -2             -2             -3             -3
>   0. 10   x + 0. 10   x + 0. 10   x + 0. 10   x + 0. 10
> x
> +
>
>        -3              -3              -4              -4
> -4
>   0. 10   x + 0. 10   x + 0. 10   x + 0. 10   x + 0. 10
> x +
>
>        -5              -5              -5              -6
> -6
>   0. 10   x + 0. 10   x + 0. 10   x + 0. 10   x + 0. 10
> x +
>
>        -6              -6              -7              -7
> -7
>   0. 10   x + 0. 10   x + 0. 10   x + 0. 10   x + 0. 10
> x +
>
>        -8              -8              -8              -9
> -9
>   0. 10   x + 0. 10   x + 0. 10   x + 0. 10   x + 0. 10
> x +
>
>        -9              -9              -10              -10
>   0. 10   x + 0. 10   x + 0. 10    x + 0. 10    x +
>
>        -10              -11              -11              -11
>   0. 10    x + 0. 10    x + 0. 10    x + 0. 10    x +
>
>        -12              -12              -12              -12
>   0. 10    x + 0. 10    x + 0. 10    x + 0. 10    x +
>
>        -13              -13              -13              -14
>   0. 10    x + 0. 10    x + 0. 10    x + 0. 10    x +
>
>        -14              -14              -15              -15
>   0. 10    x + 0. 10    x + 0. 10    x + 0. 10    x +
>
>        -15              -15              -16              -16
>     -
> 16
>   0. 10    x + 0. 10    x + 0. 10    x + 0. 10    x +
> 0. 10
> x
>
>
>
>
>
>
>

```

• Prev by Date: Re: RE: final results: creating adjacency matrices
• Next by Date: Re: Loss of precision when using Simplify
• Previous by thread: Re: Loss of precision when using Simplify
• Next by thread: Re: Loss of precision when using Simplify