[random] failure of random_test on Red Hat Linux 2.6.9 ia64

Boost.Random library test random_test fails on linux_ia64_gcc: see <http://tinyurl.com/32hqlu> . It fails with the similar errors on Sandia-pathscale: see <http://tinyurl.com/2va9tz>. Both platforms are Red Hat Linux 2.6.9 ia64: . linux_ia64_gcc is Red Hat Linux 2.6.9-42.EL . Sandia-pathscale is Red Hat Enterprise Linux 2.6.9-34.0.2.ELsmp The test does NOT fail on Sandia-gcc-64 which is a Red Hat Enterprise Linux 2.6.18-8.el5. x.cpp below is a reduced reproducer. It passes on every platform I tried it on, including Debian GNU/Linux ia64, except Red Hat Linux 2.6.9-42.EL. On the latter, it fails for long double which is how the original test random_test fails on linux_ia64_gcc. On the platforms where it passes it outputs: *** testing float *** g = 1.353399e+00 g2 = 1.353399e+00 *** passed *** *** testing double *** g = 1.353399e+00 g2 = 1.353399e+00 *** passed *** *** testing long double *** g = 1.353399e+00 g2 = 1.353399e+00 *** passed *** On Red Hat Linux 2.6.9-42.EL it outputs: *** testing float *** g = 1.353399e+00 g2 = 1.353399e+00 *** passed *** *** testing double *** g = 1.353399e+00 g2 = 1.353399e+00 *** passed *** *** testing long double *** g = nan g2 = 1.000000e+00 *** failed *** The comment in explicit-failures-markup.xml for random_test for intel-linux-9.0 toolset says: Reported to Intel as issue 409291, and confirmed as a problem. Probably this relates to a specific Linux-Kernal or GLibC version." I'm wondering: is this problem specific to a Linux Red Hat 2.6.9 ia64 Kernal or GLibC version on this platform? Thanks, Boris x.cpp ----- #include <cmath> #include <stdio.h> #include <boost/random.hpp> template<class URNG, class Dist> void instantiate_dist(URNG& urng, const Dist& dist) { boost::variate_generator<URNG, Dist> gen(urng, dist); boost::variate_generator<URNG&, Dist> genref(urng, dist); long double g = gen(); long double g2 = genref(); printf("g = %Le g2 = %Le\n", g, g2); if ( std::abs(g - g2) < 1e-6 ) puts("*** passed ***"); else puts("*** failed ***"); } template<class T> void test() { boost::rand48 urng; urng.seed(); instantiate_dist(urng, boost::triangle_distribution<T>(1, 1.5, 7)); } int main() { puts("*** testing float ***"); test<float>(); puts("*** testing double ***"); test<double>(); puts("*** testing long double ***"); test<long double>(); }

Boris Gubenko wrote:
The comment in explicit-failures-markup.xml for random_test for intel-linux-9.0 toolset says:
Reported to Intel as issue 409291, and confirmed as a problem. Probably this relates to a specific Linux-Kernal or GLibC version."
I'm wondering: is this problem specific to a Linux Red Hat 2.6.9 ia64 Kernal or GLibC version on this platform?
It turns out to be a compiler issue: the test succeeds on this Red Hat machine when compiled with gcc 4.2.1 instead of 3.4.6. It is consistent with the fact that, as I mentioned in the previous mail, the test succeeds on Sandia-gcc-64, a Red Hat system using gcc 4.2.1 and gcc 4.1.1. I cannot switch to latest gcc on this machine yet, so, I'd like to mark this test expected failure for "gcc-3.4.6_linux_ia64" toolset. Any objections? Thanks, Boris ----- Original Message ----- From: "Boris Gubenko" <Boris.Gubenko@hp.com> To: <boost@lists.boost.org> Cc: "Boris Gubenko" <Boris.Gubenko@hp.com> Sent: Wednesday, January 09, 2008 3:24 PM Subject: [boost] [random] failure of random_test on Red Hat Linux 2.6.9 ia64
Boost.Random library test random_test fails on linux_ia64_gcc: see <http://tinyurl.com/32hqlu> . It fails with the similar errors on Sandia-pathscale: see <http://tinyurl.com/2va9tz>.
Both platforms are Red Hat Linux 2.6.9 ia64:
. linux_ia64_gcc is Red Hat Linux 2.6.9-42.EL . Sandia-pathscale is Red Hat Enterprise Linux 2.6.9-34.0.2.ELsmp
The test does NOT fail on Sandia-gcc-64 which is a Red Hat Enterprise Linux 2.6.18-8.el5.
x.cpp below is a reduced reproducer. It passes on every platform I tried it on, including Debian GNU/Linux ia64, except Red Hat Linux 2.6.9-42.EL. On the latter, it fails for long double which is how the original test random_test fails on linux_ia64_gcc.
On the platforms where it passes it outputs:
*** testing float *** g = 1.353399e+00 g2 = 1.353399e+00 *** passed *** *** testing double *** g = 1.353399e+00 g2 = 1.353399e+00 *** passed *** *** testing long double *** g = 1.353399e+00 g2 = 1.353399e+00 *** passed ***
On Red Hat Linux 2.6.9-42.EL it outputs:
*** testing float *** g = 1.353399e+00 g2 = 1.353399e+00 *** passed *** *** testing double *** g = 1.353399e+00 g2 = 1.353399e+00 *** passed *** *** testing long double *** g = nan g2 = 1.000000e+00 *** failed ***
The comment in explicit-failures-markup.xml for random_test for intel-linux-9.0 toolset says:
Reported to Intel as issue 409291, and confirmed as a problem. Probably this relates to a specific Linux-Kernal or GLibC version."
I'm wondering: is this problem specific to a Linux Red Hat 2.6.9 ia64 Kernal or GLibC version on this platform?
Thanks, Boris
x.cpp ----- #include <cmath> #include <stdio.h> #include <boost/random.hpp>
template<class URNG, class Dist> void instantiate_dist(URNG& urng, const Dist& dist) { boost::variate_generator<URNG, Dist> gen(urng, dist); boost::variate_generator<URNG&, Dist> genref(urng, dist); long double g = gen(); long double g2 = genref(); printf("g = %Le g2 = %Le\n", g, g2); if ( std::abs(g - g2) < 1e-6 ) puts("*** passed ***"); else puts("*** failed ***"); }
template<class T> void test() { boost::rand48 urng; urng.seed(); instantiate_dist(urng, boost::triangle_distribution<T>(1, 1.5, 7)); }
int main() { puts("*** testing float ***"); test<float>(); puts("*** testing double ***"); test<double>(); puts("*** testing long double ***"); test<long double>(); }
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
participants (1)
-
Boris Gubenko