May 25, 2005
Compiling the following with and without -O gives different results (using 0.125
on linux)

:import std.stdio;
:
:void main()
:{
:  static cdouble[] params = [1,3,5];
:
:  cdouble[] sums = new cdouble[3];
:  sums[] = 0;
:
:  foreach(cdouble d; params)
:    {
:      cdouble prod = d;
:      for(int i; i<2; i++)
:	{
:	  sums[i] += prod;
:	  prod *= d;
:	}
:      sums[2] += prod;
:    }
:  writefln(sums[0], " ", sums[1], " ", sums[2]);
:}

$ dmd run.d && run
9+0i 35+0i 153+0i (correct)

$ dmd -O run.d && run
9.0i 0+0i 0+0i (incorrect)

Nick


June 01, 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Nick schrieb am Wed, 25 May 2005 18:14:47 +0000 (UTC):
> Compiling the following with and without -O gives different results (using 0.125
> on linux)
>
>:import std.stdio;
>:
>:void main()
>:{
>:  static cdouble[] params = [1,3,5];
>:
>:  cdouble[] sums = new cdouble[3];
>:  sums[] = 0;
>:
>:  foreach(cdouble d; params)
>:    {
>:      cdouble prod = d;
>:      for(int i; i<2; i++)
>:	{
>:	  sums[i] += prod;
>:	  prod *= d;
>:	}
>:      sums[2] += prod;
>:    }
>:  writefln(sums[0], " ", sums[1], " ", sums[2]);
>:}
>
> $ dmd run.d && run
> 9+0i 35+0i 153+0i (correct)
>
> $ dmd -O run.d && run
> 9.0i 0+0i 0+0i (incorrect)
>
> Nick
>
>

Added to DStress as http://dstress.kuehne.cn/run/c/cdouble_01_A.d http://dstress.kuehne.cn/run/c/cdouble_01_B.d http://dstress.kuehne.cn/run/c/cfloat_02_A.d http://dstress.kuehne.cn/run/c/cfloat_02_B.d http://dstress.kuehne.cn/run/c/creal_26_A.d http://dstress.kuehne.cn/run/c/creal_26_B.d

Thomas



-----BEGIN PGP SIGNATURE-----

iD8DBQFCnc6D3w+/yD4P9tIRAqvTAJ9VSpmpRLDRCp8wnJDfzW2aG2NnagCgs7E6
IF4LLFkJ0I7yQOw3kHDQYCM=
=sRM0
-----END PGP SIGNATURE-----