Am Sonntag, den 21.09.2014, 15:57 +0200 schrieb Jens Gustedt: > Am Sonntag, den 21.09.2014, 15:45 +0200 schrieb Jens Gustedt: > > Am Sonntag, den 21.09.2014, 14:27 +0100 schrieb Justin Cormack: > > > Hmm, just checked on a non-OSv Musl system and get the same result as > > > you. I also checked on NetBSD and FreeBSD and they give the same > > > result as glibc, so I think there must be a Musl bug. > > > > In __rand48_step there is this line > > > > x = xi[0] | xi[1]<<16 | xi[2]+0ULL<<32; > > > > on arch with 16bit int this would be UB, no? Do we have such archs, > > still? > > Thinking of it, it is UB even on platforms with 32bit if the high > order bit in the unsigned short is set. We then have > > unsigned short --> int --> shifted value inside int --> unsigned long > > So we better shouldn't do that in any case. Changing the code as I indicated early (adding these "casts") seems to fix the problem for me. In fact the problem didn't occur directly with your initial seed, but simply with the default value of the multiplicator "A", which has bit 16 set. I prepare a patch. Jens -- :: INRIA Nancy Grand Est ::: AlGorille ::: ICube/ICPS ::: :: ::::::::::::::: office Strasbourg : +33 368854536 :: :: :::::::::::::::::::::: gsm France : +33 651400183 :: :: ::::::::::::::: gsm international : +49 15737185122 :: :: http://icube-icps.unistra.fr/index.php/Jens_Gustedt ::