[Haskell-cafe] Optimization flag changing result of code execution

Roman Cheplyaka roma at ro-che.info
Sat Mar 16 09:58:50 CET 2013


Perhaps the problem is in withSystemRandom, which uses unsafePerformIO?

Does the problem persist if you seed your program with some predefined
seed?

Roman

* Azeem -ul-Hasan <azeeem at live.com> [2013-03-16 13:46:54+0500]
> 
> Hi Carter,
> 
>      Thank you for your help, but I can confirm that this is not due to floating point errors. My own hunch is that it is due to the way I am using random number generation from System.Random.MWC. To check it I wrote a version of mkNetwork function using random number generation from System.Random and it works fine with optimizations turned on. So any ideas why optimizations are messing with System.Random.MWC?
> 
> Azeem
> From: carter.schonwald at gmail.com
> Date: Fri, 15 Mar 2013 17:09:36 -0400
> Subject: Re: [Haskell-cafe] Optimization flag changing result of code execution
> To: azeeem at live.com
> CC: haskell-cafe at haskell.org
> 
> Hey Azeem,have you tried running the same calculation using rationals? Theres some subtleties to writing numerically stable code using floats and doubles, where simple optimizations change the orders of operations in ways that *significantly* change the result. In this case it looks like you're averaging the averages, which i *believe* can get pretty nasty in terms of numerical precision.  Rationals would be a bit slower, but you could then sort out which number is more correct.
> 
> 
> 
> On Fri, Mar 15, 2013 at 4:07 PM, Azeem -ul-Hasan <azeeem at live.com> wrote:
> 
> 
> 
> 
> 
> I was trying to solve a computational problem form James P Sethna's book Statistical Mechanics: Entropy, Order Parameters, and Complexity[1]. The problem is on page 19 of the pdf linked and is titled Six degrees of separation. For it I came up with this code: http://hpaste.org/84114
> 
> 
>  
> It runs fine when compiled with -O0 and consistently yields an answer around 10, but with -O1 and -O2 it consistently gives an answer around 25. Can somebody explain what is happening here?
> 
> 
> 
> [1] http://pages.physics.cornell.edu/~sethna/StatMech/EntropyOrderParametersComplexity.pdf
> 
> 
> 
> Azeem
> 
>  		 	   		  
> 
> _______________________________________________
> 
> Haskell-Cafe mailing list
> 
> Haskell-Cafe at haskell.org
> 
> http://www.haskell.org/mailman/listinfo/haskell-cafe
> 
> 
> 
>  		 	   		  

> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe




More information about the Haskell-Cafe mailing list