On Fri, Jul 17, 2026 at 9:52 AM Jakub Jelinek <[email protected]> wrote:

> On Thu, Jul 16, 2026 at 12:23:19PM +0200, Tomasz Kaminski wrote:
> > On Thu, Jul 16, 2026 at 12:04 PM Jonathan Wakely <[email protected]>
> wrote:
> >
> > > On Thu, 09 Jul 2026 at 15:41 +0200, Tomasz Kamiński wrote:
> > > >The piecewise distributions previously always generated an double
> value
> > >
> > > "a double"
>
> I'm seeing
> /home/jakub/src/gcc/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc:81:
> void test_custom() [with RealType = float]: Assertion 'res == expected'
> failed.
> FAIL:
> 26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc
> -std=gnu++20 execution test
> in my last i686-linux bootstrap/regtest.
> I think
>    test_custom<float>();
>
>
> +#ifdef __x86_64__
>
>
>    test_custom<double>();
>
>
> +#endif
>
>
>    test_custom<long double>();
>
>
> is not the right guard, I bet it isn't about non-x86_64, but about excess
> precision, it should be
> +#if __FLT_EVAL_METHOD__ == 0
>    test_custom<float>();
>
>
>    test_custom<double>();
>
>
> +#endif
>    test_custom<long double>();
> (or make sure to use -std=c++20 rather than -std=gnu++20 for the test
> or -fexcess-precision=standard) and make sure that both the test and code
> you are testing is excess precision ready (so, everywhere where it can't
> tolerate excess precision has explicit casts or assignment to temporaries
> of the narrower type).
>
Thanks Jakub. For the time being I will use -fexcess-precision=standard
in these tests, as I think that the difference is caused by the ostream
operators
producing different result when excess precision is enable for decimal
output.
I think this distributions should use hexfloat ouput in first place, but
that was not
the scope of the patch.


>
>         Jakub
>
>

Reply via email to