[random] lagged_fibonacci607 with Intel compiler for Linux v10 produces negative output values

Dear boosters, Has anyone else noticed that lagged_fibonacci607 produces negative random numbers when compiled with the Intel C++ compiler for Linux v10.0 using Pentium4 processor specific optimizations? As far as I understand, the random numbers generated by lagged_fibonacci607 should be within the interval [0,1). GCC and the Intel compiler with less aggressive optimizations generate values within that range. This is probably a bug in the Intel compiler, but if anyone has a workaround please let me know. Rgds, Mikko

On 17 Jul 2007, at 14:58, Mikko Vainio wrote:
Dear boosters,
Has anyone else noticed that lagged_fibonacci607 produces negative random numbers when compiled with the Intel C++ compiler for Linux v10.0 using Pentium4 processor specific optimizations? As far as I understand, the random numbers generated by lagged_fibonacci607 should be within the interval [0,1). GCC and the Intel compiler with less aggressive optimizations generate values within that range.
This is probably a bug in the Intel compiler, but if anyone has a workaround please let me know.
Can you see it just with the default seed? Which compiler options do you use? Matthias

Matthias Troyer wrote:
On 17 Jul 2007, at 14:58, Mikko Vainio wrote:
Dear boosters,
Has anyone else noticed that lagged_fibonacci607 produces negative random numbers when compiled with the Intel C++ compiler for Linux v10.0 using Pentium4 processor specific optimizations? As far as I understand, the random numbers generated by lagged_fibonacci607 should be within the interval [0,1). GCC and the Intel compiler with less aggressive optimizations generate values within that range.
This is probably a bug in the Intel compiler, but if anyone has a workaround please let me know.
Can you see it just with the default seed? Which compiler options do you use?
Matthias
Yes. Based on little experimenting I'd say it occurs with any seed. The error occurs when any SSE optimizations are turned on: icpc -O2 -msse .... Below is a short program used for the testing on a 2GHz Core Duo T2500 running Fedora 7. /Mikko --------[scissors]-------------------------- #include <iostream> #include <vector> #include <boost/random/lagged_fibonacci.hpp> using namespace std; int main( int argc, char* argv[] ) { boost::lagged_fibonacci607 fibo; fibo.seed( 34597245 ); unsigned int nErrors = 0; double rndom; for( size_t j = 0; j < 10000; ++j ) { rndom = fibo(); if( 1. < rndom || 0. > rndom ) ++nErrors; } cout << "errors = " << nErrors << endl; return 0; }
participants (2)
-
Matthias Troyer
-
Mikko Vainio