Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29277 Discussions

Generation of random normal deviates on large scale computers

JohnNichols
Valued Contributor III
557 Views

Many years ago, I got a copy of the original Muller paper for Normal Deviates from Princeton. They dug it out of a filing box and sent me a photocopy. 

I have seen this paper referenced in other papers, but as the original was in a box and I could not find copies online, it suggests the author's copied the reference, bad karma to not read the original. 

Here is a PDF of the original so it is at least once place on the web.  I will send a copy to Princeton. 

When I do the Monte Carlo for the Plastic Analysis, I check the normal deviates and throw an exception if the results are not normal, this happens more frequently than one would think.  You cannot use these methods without checking every single time.  

I know it could be in MKL, but the important people are here. 

0 Kudos
1 Reply
jimdempseyatthecove
Honored Contributor III
442 Views

John, this may be a case of the compiler optimizing for speed (e.g. not protecting ()'s).

IOW you are adding/subtracting relatively very small magnitudes with relatively very large magnitudes, and dropping significant digits in the process.

 

You might try adding /fp:precise

 

That failing, or in addition to, try changing your REAL variables (and parameters) to REAL(16)

 

Jim Dempsey

0 Kudos
Reply