diff options
author | Louis Dionne <ldionne@apple.com> | 2019-08-20 19:28:26 +0000 |
---|---|---|
committer | Louis Dionne <ldionne@apple.com> | 2019-08-20 19:28:26 +0000 |
commit | c310e5a7ab6c7606f2c9ef0d7b0efae8a5568efe (patch) | |
tree | 2ea517a73c5d691c580e994c19659a65b9a4b491 | |
parent | bc2f425377085133aeeac3ce31c4532138301c23 (diff) | |
download | bcm5719-llvm-c310e5a7ab6c7606f2c9ef0d7b0efae8a5568efe.tar.gz bcm5719-llvm-c310e5a7ab6c7606f2c9ef0d7b0efae8a5568efe.zip |
[libc++] Avoid implicit conversion warning in a <random> 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
-rw-r--r-- | libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp | 39 |
1 files 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 1693aa28971..b5050a57857 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<F, 0>(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<F, 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<F, std::numeric_limits<F>::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<F, std::numeric_limits<F>::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<F, std::numeric_limits<F>::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<F, 0>(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<F, 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<F, std::numeric_limits<F>::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<F, std::numeric_limits<F>::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<F, std::numeric_limits<F>::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; |