From c310e5a7ab6c7606f2c9ef0d7b0efae8a5568efe Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Tue, 20 Aug 2019 19:28:26 +0000 Subject: [PATCH] [libc++] Avoid implicit conversion warning in a test By stashing the computation of `E::max() - E::min()` in a variable, we avoid the warning introduced in r367497. Note that we use `auto` to avoid having to deduce the type of the computation, which is not a problem since Clang provides `auto` as an extension even in C++03 (and we disable warnings related to using C++11 extensions in the test suite). llvm-svn: 369429 --- .../generate_canonical.pass.cpp | 39 +++++++++------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp b/libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp index 1693aa2..b5050a5 100644 --- a/libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp +++ b/libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp @@ -19,85 +19,78 @@ int main(int, char**) { + typedef std::minstd_rand0 E; + auto range = E::max() - E::min(); + { - typedef std::minstd_rand0 E; typedef float F; E r; F f = std::generate_canonical(r); - assert(f == truncate_fp((16807 - E::min()) / (E::max() - E::min() + F(1)))); + assert(f == truncate_fp((16807 - E::min()) / (range + F(1)))); } { - typedef std::minstd_rand0 E; typedef float F; E r; F f = std::generate_canonical(r); - assert(f == truncate_fp((16807 - E::min()) / (E::max() - E::min() + F(1)))); + assert(f == truncate_fp((16807 - E::min()) / (range + F(1)))); } { - typedef std::minstd_rand0 E; typedef float F; E r; F f = std::generate_canonical::digits - 1>(r); - assert(f == truncate_fp((16807 - E::min()) / (E::max() - E::min() + F(1)))); + assert(f == truncate_fp((16807 - E::min()) / (range + F(1)))); } { - typedef std::minstd_rand0 E; typedef float F; E r; F f = std::generate_canonical::digits>(r); - assert(f == truncate_fp((16807 - E::min()) / (E::max() - E::min() + F(1)))); + assert(f == truncate_fp((16807 - E::min()) / (range + F(1)))); } { - typedef std::minstd_rand0 E; typedef float F; E r; F f = std::generate_canonical::digits + 1>(r); - assert(f == truncate_fp((16807 - E::min()) / (E::max() - E::min() + F(1)))); + assert(f == truncate_fp((16807 - E::min()) / (range + F(1)))); } { - typedef std::minstd_rand0 E; typedef double F; E r; F f = std::generate_canonical(r); - assert(f == truncate_fp((16807 - E::min()) / (E::max() - E::min() + F(1)))); + assert(f == truncate_fp((16807 - E::min()) / (range + F(1)))); } { - typedef std::minstd_rand0 E; typedef double F; E r; F f = std::generate_canonical(r); - assert(f == truncate_fp((16807 - E::min()) / (E::max() - E::min() + F(1)))); + assert(f == truncate_fp((16807 - E::min()) / (range + F(1)))); } { - typedef std::minstd_rand0 E; typedef double F; E r; F f = std::generate_canonical::digits - 1>(r); assert(f == truncate_fp( (16807 - E::min() + - (282475249 - E::min()) * (E::max() - E::min() + F(1))) / - ((E::max() - E::min() + F(1)) * (E::max() - E::min() + F(1))))); + (282475249 - E::min()) * (range + F(1))) / + ((range + F(1)) * (range + F(1))))); } { - typedef std::minstd_rand0 E; typedef double F; E r; F f = std::generate_canonical::digits>(r); assert(f == truncate_fp( (16807 - E::min() + - (282475249 - E::min()) * (E::max() - E::min() + F(1))) / - ((E::max() - E::min() + F(1)) * (E::max() - E::min() + F(1))))); + (282475249 - E::min()) * (range + F(1))) / + ((range + F(1)) * (range + F(1))))); } { - typedef std::minstd_rand0 E; typedef double F; E r; F f = std::generate_canonical::digits + 1>(r); assert(f == truncate_fp( (16807 - E::min() + - (282475249 - E::min()) * (E::max() - E::min() + F(1))) / - ((E::max() - E::min() + F(1)) * (E::max() - E::min() + F(1))))); + (282475249 - E::min()) * (range + F(1))) / + ((range + F(1)) * (range + F(1))))); } return 0; -- 2.7.4