summaryrefslogtreecommitdiff
path: root/test/std/numerics
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2016-07-23 20:47:26 +0000
committerDimitry Andric <dim@FreeBSD.org>2016-07-23 20:47:26 +0000
commit51072bd6bf79ef2bc6a922079bff57c31c1effbc (patch)
tree91a2effbc9e6f80bdbbf9eb70e06c51ad0867ea0 /test/std/numerics
parentbb5e33f003797b67974a8893f7f2930fc51b8210 (diff)
Notes
Diffstat (limited to 'test/std/numerics')
-rw-r--r--test/std/numerics/c.math/cmath.pass.cpp75
-rw-r--r--test/std/numerics/c.math/cmath_isinf.pass.cpp30
-rw-r--r--test/std/numerics/c.math/cmath_isnan.pass.cpp30
-rw-r--r--test/std/numerics/cfenv/cfenv.syn/cfenv.pass.cpp2
-rw-r--r--test/std/numerics/cfenv/version.pass.cpp22
-rw-r--r--test/std/numerics/complex.number/cases.h2
-rw-r--r--test/std/numerics/complex.number/cmplx.over/imag.pass.cpp4
-rw-r--r--test/std/numerics/complex.number/cmplx.over/real.pass.cpp4
-rw-r--r--test/std/numerics/complex.number/complex.literals/literals.pass.cpp8
-rw-r--r--test/std/numerics/complex.number/complex.literals/literals1.fail.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.literals/literals1.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.literals/literals2.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.member.ops/plus_equal_complex.pass.cpp2
-rw-r--r--test/std/numerics/complex.number/complex.member.ops/times_equal_complex.pass.cpp2
-rw-r--r--test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp16
-rw-r--r--test/std/numerics/complex.number/complex.ops/complex_times_complex.pass.cpp16
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/acos.pass.cpp50
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/acosh.pass.cpp44
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/asin.pass.cpp50
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/asinh.pass.cpp48
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/atan.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/atanh.pass.cpp58
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/cos.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/cosh.pass.cpp36
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/exp.pass.cpp36
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/log.pass.cpp44
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/log10.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/pow_complex_complex.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/pow_complex_scalar.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/pow_scalar_complex.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/sin.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/sinh.pass.cpp42
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/sqrt.pass.cpp30
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/tan.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.transcendentals/tanh.pass.cpp30
-rw-r--r--test/std/numerics/complex.number/complex.value.ops/abs.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.value.ops/arg.pass.cpp46
-rw-r--r--test/std/numerics/complex.number/complex.value.ops/norm.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.value.ops/polar.pass.cpp6
-rw-r--r--test/std/numerics/complex.number/complex.value.ops/proj.pass.cpp16
-rw-r--r--test/std/numerics/complex.number/version.pass.cpp20
-rw-r--r--test/std/numerics/numarray/template.valarray/valarray.unary/not.pass.cpp2
-rw-r--r--test/std/numerics/numarray/version.pass.cpp20
-rw-r--r--test/std/numerics/numeric.ops/version.pass.cpp20
-rw-r--r--test/std/numerics/rand/rand.device/ctor.pass.cpp43
-rw-r--r--test/std/numerics/rand/rand.device/eval.pass.cpp6
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval.pass.cpp12
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval_param.pass.cpp12
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.pass.cpp880
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval_param.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval.pass.cpp482
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval_param.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval.pass.cpp478
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval_param.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval_param.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval.pass.cpp422
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval_param.pass.cpp431
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval.pass.cpp6
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval_param.pass.cpp6
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval_param.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval_param.pass.cpp6
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval.pass.cpp314
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval_param.pass.cpp322
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval_param.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval_param.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval_param.pass.cpp18
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval.pass.cpp1235
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval_param.pass.cpp7
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval.pass.cpp583
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval_param.pass.cpp10
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval.pass.cpp60
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval_param.pass.cpp6
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval.pass.cpp66
-rw-r--r--test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval_param.pass.cpp6
-rw-r--r--test/std/numerics/rand/rand.synopsis/version.pass.cpp20
82 files changed, 3355 insertions, 3205 deletions
diff --git a/test/std/numerics/c.math/cmath.pass.cpp b/test/std/numerics/c.math/cmath.pass.cpp
index 0b0d86288737..7161bd37e3e2 100644
--- a/test/std/numerics/c.math/cmath.pass.cpp
+++ b/test/std/numerics/c.math/cmath.pass.cpp
@@ -9,13 +9,11 @@
// <cmath>
-// NOTE: isinf and isnan are tested separately because they are expected to fail
-// on linux. We don't want their expected failure to hide other failures in this file.
-
#include <cmath>
#include <type_traits>
#include <cassert>
+#include "test_macros.h"
#include "hexfloat.h"
// convertible to int/float/double/etc
@@ -79,6 +77,7 @@ Ambiguous fma(Ambiguous, Ambiguous, Ambiguous){ return Ambiguous(); }
Ambiguous fmax(Ambiguous, Ambiguous){ return Ambiguous(); }
Ambiguous fmin(Ambiguous, Ambiguous){ return Ambiguous(); }
Ambiguous hypot(Ambiguous, Ambiguous){ return Ambiguous(); }
+Ambiguous hypot(Ambiguous, Ambiguous, Ambiguous){ return Ambiguous(); }
Ambiguous ilogb(Ambiguous){ return Ambiguous(); }
Ambiguous lgamma(Ambiguous){ return Ambiguous(); }
Ambiguous llrint(Ambiguous){ return Ambiguous(); }
@@ -631,6 +630,29 @@ void test_isgreaterequal()
assert(std::isgreaterequal(-1.0, 0.F) == false);
}
+void test_isinf()
+{
+#ifdef isinf
+#error isinf defined
+#endif
+ static_assert((std::is_same<decltype(std::isinf((float)0)), bool>::value), "");
+
+ typedef decltype(std::isinf((double)0)) DoubleRetType;
+#ifndef __linux__
+ static_assert((std::is_same<DoubleRetType, bool>::value), "");
+#else
+ // GLIBC < 2.26 defines 'isinf(double)' with a return type of 'int' in
+ // all C++ dialects. The test should tolerate this.
+ // See: https://sourceware.org/bugzilla/show_bug.cgi?id=19439
+ static_assert((std::is_same<DoubleRetType, bool>::value
+ || std::is_same<DoubleRetType, int>::value), "");
+#endif
+
+ static_assert((std::is_same<decltype(std::isinf(0)), bool>::value), "");
+ static_assert((std::is_same<decltype(std::isinf((long double)0)), bool>::value), "");
+ assert(std::isinf(-1.0) == false);
+}
+
void test_isless()
{
#ifdef isless
@@ -688,6 +710,29 @@ void test_islessgreater()
assert(std::islessgreater(-1.0, 0.F) == true);
}
+void test_isnan()
+{
+#ifdef isnan
+#error isnan defined
+#endif
+ static_assert((std::is_same<decltype(std::isnan((float)0)), bool>::value), "");
+
+ typedef decltype(std::isnan((double)0)) DoubleRetType;
+#ifndef __linux__
+ static_assert((std::is_same<DoubleRetType, bool>::value), "");
+#else
+ // GLIBC < 2.26 defines 'isnan(double)' with a return type of 'int' in
+ // all C++ dialects. The test should tolerate this.
+ // See: https://sourceware.org/bugzilla/show_bug.cgi?id=19439
+ static_assert((std::is_same<DoubleRetType, bool>::value
+ || std::is_same<DoubleRetType, int>::value), "");
+#endif
+
+ static_assert((std::is_same<decltype(std::isnan(0)), bool>::value), "");
+ static_assert((std::is_same<decltype(std::isnan((long double)0)), bool>::value), "");
+ assert(std::isnan(-1.0) == false);
+}
+
void test_isunordered()
{
#ifdef isunordered
@@ -1010,6 +1055,28 @@ void test_hypot()
static_assert((std::is_same<decltype(std::hypot((int)0, (int)0)), double>::value), "");
static_assert((std::is_same<decltype(hypot(Ambiguous(), Ambiguous())), Ambiguous>::value), "");
assert(std::hypot(3,4) == 5);
+
+#if TEST_STD_VER > 14
+ static_assert((std::is_same<decltype(std::hypot((float)0, (float)0, (float)0)), float>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (bool)0, (float)0)), double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (unsigned short)0, (double)0)), double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (int)0, (long double)0)), long double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (unsigned int)0)), double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (double)0, (long)0)), double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (long double)0, (unsigned long)0)), long double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (int)0, (long long)0)), double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (int)0, (unsigned long long)0)), double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (double)0, (double)0)), double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (long double)0, (long double)0)), long double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (float)0, (double)0)), double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (float)0, (long double)0)), long double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((float)0, (double)0, (long double)0)), long double>::value), "");
+ static_assert((std::is_same<decltype(std::hypot((int)0, (int)0, (int)0)), double>::value), "");
+ static_assert((std::is_same<decltype(hypot(Ambiguous(), Ambiguous(), Ambiguous())), Ambiguous>::value), "");
+
+ assert(std::hypot(2,3,6) == 7);
+ assert(std::hypot(1,4,8) == 9);
+#endif
}
void test_ilogb()
@@ -1443,9 +1510,11 @@ int main()
test_isnormal();
test_isgreater();
test_isgreaterequal();
+ test_isinf();
test_isless();
test_islessequal();
test_islessgreater();
+ test_isnan();
test_isunordered();
test_acosh();
test_asinh();
diff --git a/test/std/numerics/c.math/cmath_isinf.pass.cpp b/test/std/numerics/c.math/cmath_isinf.pass.cpp
deleted file mode 100644
index 6cde04d9bc86..000000000000
--- a/test/std/numerics/c.math/cmath_isinf.pass.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <cmath>
-
-// isinf
-
-// XFAIL: linux
-
-#include <cmath>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
-#ifdef isinf
-#error isinf defined
-#endif
- static_assert((std::is_same<decltype(std::isinf((float)0)), bool>::value), "");
- static_assert((std::is_same<decltype(std::isinf((double)0)), bool>::value), "");
- static_assert((std::is_same<decltype(std::isinf(0)), bool>::value), "");
- static_assert((std::is_same<decltype(std::isinf((long double)0)), bool>::value), "");
- assert(std::isinf(-1.0) == false);
-} \ No newline at end of file
diff --git a/test/std/numerics/c.math/cmath_isnan.pass.cpp b/test/std/numerics/c.math/cmath_isnan.pass.cpp
deleted file mode 100644
index 7b33b9647052..000000000000
--- a/test/std/numerics/c.math/cmath_isnan.pass.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <cmath>
-
-// isnan
-
-// XFAIL: linux
-
-#include <cmath>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
-#ifdef isnan
-#error isnan defined
-#endif
- static_assert((std::is_same<decltype(std::isnan((float)0)), bool>::value), "");
- static_assert((std::is_same<decltype(std::isnan((double)0)), bool>::value), "");
- static_assert((std::is_same<decltype(std::isnan(0)), bool>::value), "");
- static_assert((std::is_same<decltype(std::isnan((long double)0)), bool>::value), "");
- assert(std::isnan(-1.0) == false);
-}
diff --git a/test/std/numerics/cfenv/cfenv.syn/cfenv.pass.cpp b/test/std/numerics/cfenv/cfenv.syn/cfenv.pass.cpp
index fcf075a36e1a..f2bf6433ceb4 100644
--- a/test/std/numerics/cfenv/cfenv.syn/cfenv.pass.cpp
+++ b/test/std/numerics/cfenv/cfenv.syn/cfenv.pass.cpp
@@ -62,6 +62,8 @@ int main()
{
std::fenv_t fenv;
std::fexcept_t fex;
+ ((void)fenv); // Prevent unused warning
+ ((void)fex); // Prevent unused warning
static_assert((std::is_same<decltype(std::feclearexcept(0)), int>::value), "");
static_assert((std::is_same<decltype(std::fegetexceptflag(&fex, 0)), int>::value), "");
static_assert((std::is_same<decltype(std::feraiseexcept(0)), int>::value), "");
diff --git a/test/std/numerics/cfenv/version.pass.cpp b/test/std/numerics/cfenv/version.pass.cpp
deleted file mode 100644
index 727d5bdf3994..000000000000
--- a/test/std/numerics/cfenv/version.pass.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// UNSUPPORTED: newlib
-
-// <cfenv>
-
-#include <cfenv>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}
diff --git a/test/std/numerics/complex.number/cases.h b/test/std/numerics/complex.number/cases.h
index cd6bd165a9d1..a2f85d11ca4d 100644
--- a/test/std/numerics/complex.number/cases.h
+++ b/test/std/numerics/complex.number/cases.h
@@ -17,7 +17,7 @@
#include <complex>
#include <cassert>
-std::complex<double> x[] =
+const std::complex<double> testcases[] =
{
std::complex<double>( 1.e-6, 1.e-6),
std::complex<double>(-1.e-6, 1.e-6),
diff --git a/test/std/numerics/complex.number/cmplx.over/imag.pass.cpp b/test/std/numerics/complex.number/cmplx.over/imag.pass.cpp
index 30c95c3c88d9..7decea877fbd 100644
--- a/test/std/numerics/complex.number/cmplx.over/imag.pass.cpp
+++ b/test/std/numerics/complex.number/cmplx.over/imag.pass.cpp
@@ -30,7 +30,7 @@ test(typename std::enable_if<std::is_integral<T>::value>::type* = 0)
static_assert(std::imag(val) == 0, "");
constexpr std::complex<T> t{val, val};
static_assert(t.imag() == x, "" );
-#endif
+#endif
}
template <class T, int x>
@@ -44,7 +44,7 @@ test(typename std::enable_if<!std::is_integral<T>::value>::type* = 0)
static_assert(std::imag(val) == 0, "");
constexpr std::complex<T> t{val, val};
static_assert(t.imag() == x, "" );
-#endif
+#endif
}
template <class T>
diff --git a/test/std/numerics/complex.number/cmplx.over/real.pass.cpp b/test/std/numerics/complex.number/cmplx.over/real.pass.cpp
index a5a4a35b13ca..491b35890c0c 100644
--- a/test/std/numerics/complex.number/cmplx.over/real.pass.cpp
+++ b/test/std/numerics/complex.number/cmplx.over/real.pass.cpp
@@ -30,7 +30,7 @@ test(typename std::enable_if<std::is_integral<T>::value>::type* = 0)
static_assert(std::real(val) == val, "");
constexpr std::complex<T> t{val, val};
static_assert(t.real() == x, "" );
-#endif
+#endif
}
template <class T, int x>
@@ -44,7 +44,7 @@ test(typename std::enable_if<!std::is_integral<T>::value>::type* = 0)
static_assert(std::real(val) == val, "");
constexpr std::complex<T> t{val, val};
static_assert(t.real() == x, "" );
-#endif
+#endif
}
template <class T>
diff --git a/test/std/numerics/complex.number/complex.literals/literals.pass.cpp b/test/std/numerics/complex.number/complex.literals/literals.pass.cpp
index 45b59914e7f8..a2e53629f97d 100644
--- a/test/std/numerics/complex.number/complex.literals/literals.pass.cpp
+++ b/test/std/numerics/complex.number/complex.literals/literals.pass.cpp
@@ -7,6 +7,7 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03, c++11
// <chrono>
#include <complex>
@@ -15,7 +16,6 @@
int main()
{
-#if _LIBCPP_STD_VER > 11
using namespace std::literals::complex_literals;
// Make sure the types are right
@@ -25,14 +25,14 @@ int main()
static_assert ( std::is_same<decltype( 3i ), std::complex<double>>::value, "" );
static_assert ( std::is_same<decltype( 3.0if ), std::complex<float>>::value, "" );
static_assert ( std::is_same<decltype( 3if ), std::complex<float>>::value, "" );
-
+
{
std::complex<long double> c1 = 3.0il;
assert ( c1 == std::complex<long double>(0, 3.0));
auto c2 = 3il;
assert ( c1 == c2 );
}
-
+
{
std::complex<double> c1 = 3.0i;
assert ( c1 == std::complex<double>(0, 3.0));
@@ -46,6 +46,4 @@ int main()
auto c2 = 3if;
assert ( c1 == c2 );
}
-
-#endif
}
diff --git a/test/std/numerics/complex.number/complex.literals/literals1.fail.cpp b/test/std/numerics/complex.number/complex.literals/literals1.fail.cpp
index 0f31d595566c..67e0fa131fd0 100644
--- a/test/std/numerics/complex.number/complex.literals/literals1.fail.cpp
+++ b/test/std/numerics/complex.number/complex.literals/literals1.fail.cpp
@@ -7,14 +7,12 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: c++98, c++03, c++11
#include <complex>
#include <cassert>
int main()
{
-#if _LIBCPP_STD_VER > 11
std::complex<float> foo = 1.0if; // should fail w/conversion operator not found
-#else
-#error
-#endif
}
diff --git a/test/std/numerics/complex.number/complex.literals/literals1.pass.cpp b/test/std/numerics/complex.number/complex.literals/literals1.pass.cpp
index 46903bbd565d..09a6f270f759 100644
--- a/test/std/numerics/complex.number/complex.literals/literals1.pass.cpp
+++ b/test/std/numerics/complex.number/complex.literals/literals1.pass.cpp
@@ -7,6 +7,7 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03, c++11
// <chrono>
#include <complex>
@@ -15,7 +16,6 @@
int main()
{
-#if _LIBCPP_STD_VER > 11
using namespace std::literals;
{
@@ -24,7 +24,7 @@ int main()
auto c2 = 3il;
assert ( c1 == c2 );
}
-
+
{
std::complex<double> c1 = 3.0i;
assert ( c1 == std::complex<double>(0, 3.0));
@@ -38,6 +38,4 @@ int main()
auto c2 = 3if;
assert ( c1 == c2 );
}
-
-#endif
}
diff --git a/test/std/numerics/complex.number/complex.literals/literals2.pass.cpp b/test/std/numerics/complex.number/complex.literals/literals2.pass.cpp
index 8bd8acd981bc..d11530d7803a 100644
--- a/test/std/numerics/complex.number/complex.literals/literals2.pass.cpp
+++ b/test/std/numerics/complex.number/complex.literals/literals2.pass.cpp
@@ -7,6 +7,7 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03, c++11
// <chrono>
#include <complex>
@@ -15,7 +16,6 @@
int main()
{
-#if _LIBCPP_STD_VER > 11
using namespace std;
{
@@ -24,7 +24,7 @@ int main()
auto c2 = 3il;
assert ( c1 == c2 );
}
-
+
{
std::complex<double> c1 = 3.0i;
assert ( c1 == std::complex<double>(0, 3.0));
@@ -38,6 +38,4 @@ int main()
auto c2 = 3if;
assert ( c1 == c2 );
}
-
-#endif
}
diff --git a/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp b/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp
index cb285117b15d..b4200fc81d40 100644
--- a/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp
+++ b/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp
@@ -28,7 +28,7 @@ test()
c /= c2;
assert(c.real() == 1);
assert(c.imag() == 0);
-
+
std::complex<T> c3;
c3 = c;
@@ -36,13 +36,13 @@ test()
c3 /= ic;
assert(c3.real() == 0.5);
assert(c3.imag() == -0.5);
-
+
c3 = c;
std::complex<float> fc (1,1);
c3 /= fc;
assert(c3.real() == 0.5);
assert(c3.imag() == -0.5);
-
+
}
int main()
diff --git a/test/std/numerics/complex.number/complex.member.ops/plus_equal_complex.pass.cpp b/test/std/numerics/complex.number/complex.member.ops/plus_equal_complex.pass.cpp
index 8c16f4ced2cd..9b222b8a1d3c 100644
--- a/test/std/numerics/complex.number/complex.member.ops/plus_equal_complex.pass.cpp
+++ b/test/std/numerics/complex.number/complex.member.ops/plus_equal_complex.pass.cpp
@@ -36,7 +36,7 @@ test()
c3 += ic;
assert(c3.real() == 4);
assert(c3.imag() == 6);
-
+
c3 = c;
std::complex<float> fc (1,1);
c3 += fc;
diff --git a/test/std/numerics/complex.number/complex.member.ops/times_equal_complex.pass.cpp b/test/std/numerics/complex.number/complex.member.ops/times_equal_complex.pass.cpp
index 84d6e591306e..98b7197cb272 100644
--- a/test/std/numerics/complex.number/complex.member.ops/times_equal_complex.pass.cpp
+++ b/test/std/numerics/complex.number/complex.member.ops/times_equal_complex.pass.cpp
@@ -36,7 +36,7 @@ test()
c3 *= ic;
assert(c3.real() == -11.5);
assert(c3.imag() == 3.5);
-
+
c3 = c;
std::complex<float> fc (1,1);
c3 *= fc;
diff --git a/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp b/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp
index 86119678aa70..8d4712eece78 100644
--- a/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp
+++ b/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp
@@ -37,16 +37,16 @@ test()
void test_edges()
{
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
for (unsigned j = 0; j < N; ++j)
{
- std::complex<double> r = x[i] / x[j];
- switch (classify(x[i]))
+ std::complex<double> r = testcases[i] / testcases[j];
+ switch (classify(testcases[i]))
{
case zero:
- switch (classify(x[j]))
+ switch (classify(testcases[j]))
{
case zero:
assert(classify(r) == NaN);
@@ -66,7 +66,7 @@ void test_edges()
}
break;
case non_zero:
- switch (classify(x[j]))
+ switch (classify(testcases[j]))
{
case zero:
assert(classify(r) == inf);
@@ -86,7 +86,7 @@ void test_edges()
}
break;
case inf:
- switch (classify(x[j]))
+ switch (classify(testcases[j]))
{
case zero:
assert(classify(r) == inf);
@@ -106,7 +106,7 @@ void test_edges()
}
break;
case NaN:
- switch (classify(x[j]))
+ switch (classify(testcases[j]))
{
case zero:
assert(classify(r) == NaN);
@@ -126,7 +126,7 @@ void test_edges()
}
break;
case non_zero_nan:
- switch (classify(x[j]))
+ switch (classify(testcases[j]))
{
case zero:
assert(classify(r) == inf);
diff --git a/test/std/numerics/complex.number/complex.ops/complex_times_complex.pass.cpp b/test/std/numerics/complex.number/complex.ops/complex_times_complex.pass.cpp
index 565eaa5657cd..8ead5bfb627a 100644
--- a/test/std/numerics/complex.number/complex.ops/complex_times_complex.pass.cpp
+++ b/test/std/numerics/complex.number/complex.ops/complex_times_complex.pass.cpp
@@ -39,16 +39,16 @@ test()
void test_edges()
{
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
for (unsigned j = 0; j < N; ++j)
{
- std::complex<double> r = x[i] * x[j];
- switch (classify(x[i]))
+ std::complex<double> r = testcases[i] * testcases[j];
+ switch (classify(testcases[i]))
{
case zero:
- switch (classify(x[j]))
+ switch (classify(testcases[j]))
{
case zero:
assert(classify(r) == zero);
@@ -68,7 +68,7 @@ void test_edges()
}
break;
case non_zero:
- switch (classify(x[j]))
+ switch (classify(testcases[j]))
{
case zero:
assert(classify(r) == zero);
@@ -88,7 +88,7 @@ void test_edges()
}
break;
case inf:
- switch (classify(x[j]))
+ switch (classify(testcases[j]))
{
case zero:
assert(classify(r) == NaN);
@@ -108,7 +108,7 @@ void test_edges()
}
break;
case NaN:
- switch (classify(x[j]))
+ switch (classify(testcases[j]))
{
case zero:
assert(classify(r) == NaN);
@@ -128,7 +128,7 @@ void test_edges()
}
break;
case non_zero_nan:
- switch (classify(x[j]))
+ switch (classify(testcases[j]))
{
case zero:
assert(classify(r) == NaN);
diff --git a/test/std/numerics/complex.number/complex.transcendentals/acos.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/acos.pass.cpp
index f8ee306d7544..1b0cca0d5f69 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/acos.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/acos.pass.cpp
@@ -36,94 +36,94 @@ void test_edges()
{
typedef std::complex<double> C;
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = acos(x[i]);
- if (x[i].real() == 0 && x[i].imag() == 0)
+ std::complex<double> r = acos(testcases[i]);
+ if (testcases[i].real() == 0 && testcases[i].imag() == 0)
{
is_about(r.real(), pi/2);
assert(r.imag() == 0);
- assert(std::signbit(x[i].imag()) != std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) != std::signbit(r.imag()));
}
- else if (x[i].real() == 0 && std::isnan(x[i].imag()))
+ else if (testcases[i].real() == 0 && std::isnan(testcases[i].imag()))
{
is_about(r.real(), pi/2);
assert(std::isnan(r.imag()));
}
- else if (std::isfinite(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
is_about(r.real(), pi/2);
assert(std::isinf(r.imag()));
- assert(std::signbit(x[i].imag()) != std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) != std::signbit(r.imag()));
}
- else if (std::isfinite(x[i].real()) && x[i].real() != 0 && std::isnan(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && testcases[i].real() != 0 && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() < 0 && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() < 0 && std::isfinite(testcases[i].imag()))
{
is_about(r.real(), pi);
assert(std::isinf(r.imag()));
- assert(std::signbit(x[i].imag()) != std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) != std::signbit(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() > 0 && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() > 0 && std::isfinite(testcases[i].imag()))
{
assert(r.real() == 0);
assert(!std::signbit(r.real()));
assert(std::isinf(r.imag()));
- assert(std::signbit(x[i].imag()) != std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) != std::signbit(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() < 0 && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() < 0 && std::isinf(testcases[i].imag()))
{
is_about(r.real(), 0.75 * pi);
assert(std::isinf(r.imag()));
- assert(std::signbit(x[i].imag()) != std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) != std::signbit(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() > 0 && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() > 0 && std::isinf(testcases[i].imag()))
{
is_about(r.real(), 0.25 * pi);
assert(std::isinf(r.imag()));
- assert(std::signbit(x[i].imag()) != std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) != std::signbit(r.imag()));
}
- else if (std::isinf(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isinf(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isinf(r.imag()));
- assert(std::signbit(x[i].imag()) != std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) != std::signbit(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (!std::signbit(x[i].real()) && !std::signbit(x[i].imag()))
+ else if (!std::signbit(testcases[i].real()) && !std::signbit(testcases[i].imag()))
{
assert(!std::signbit(r.real()));
assert( std::signbit(r.imag()));
}
- else if (std::signbit(x[i].real()) && !std::signbit(x[i].imag()))
+ else if (std::signbit(testcases[i].real()) && !std::signbit(testcases[i].imag()))
{
assert(!std::signbit(r.real()));
assert( std::signbit(r.imag()));
}
- else if (std::signbit(x[i].real()) && std::signbit(x[i].imag()))
+ else if (std::signbit(testcases[i].real()) && std::signbit(testcases[i].imag()))
{
assert(!std::signbit(r.real()));
assert(!std::signbit(r.imag()));
}
- else if (!std::signbit(x[i].real()) && std::signbit(x[i].imag()))
+ else if (!std::signbit(testcases[i].real()) && std::signbit(testcases[i].imag()))
{
assert(!std::signbit(r.real()));
assert(!std::signbit(r.imag()));
diff --git a/test/std/numerics/complex.number/complex.transcendentals/acosh.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/acosh.pass.cpp
index 88a5c798424d..f1aece20e6cf 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/acosh.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/acosh.pass.cpp
@@ -36,91 +36,91 @@ void test_edges()
{
typedef std::complex<double> C;
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = acosh(x[i]);
- if (x[i].real() == 0 && x[i].imag() == 0)
+ std::complex<double> r = acosh(testcases[i]);
+ if (testcases[i].real() == 0 && testcases[i].imag() == 0)
{
assert(!std::signbit(r.real()));
- if (std::signbit(x[i].imag()))
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -pi/2);
else
is_about(r.imag(), pi/2);
}
- else if (x[i].real() == 1 && x[i].imag() == 0)
+ else if (testcases[i].real() == 1 && testcases[i].imag() == 0)
{
assert(r.real() == 0);
assert(!std::signbit(r.real()));
assert(r.imag() == 0);
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isfinite(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
- if (std::signbit(x[i].imag()))
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -pi/2);
else
is_about(r.imag(), pi/2);
}
- else if (std::isfinite(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() < 0 && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() < 0 && std::isfinite(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
- if (std::signbit(x[i].imag()))
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -pi);
else
is_about(r.imag(), pi);
}
- else if (std::isinf(x[i].real()) && x[i].real() > 0 && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() > 0 && std::isfinite(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
assert(r.imag() == 0);
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() < 0 && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() < 0 && std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
- if (std::signbit(x[i].imag()))
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -0.75 * pi);
else
is_about(r.imag(), 0.75 * pi);
}
- else if (std::isinf(x[i].real()) && x[i].real() > 0 && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() > 0 && std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
- if (std::signbit(x[i].imag()))
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -0.25 * pi);
else
is_about(r.imag(), 0.25 * pi);
}
- else if (std::isinf(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
@@ -128,7 +128,7 @@ void test_edges()
else
{
assert(!std::signbit(r.real()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
}
}
diff --git a/test/std/numerics/complex.number/complex.transcendentals/asin.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/asin.pass.cpp
index c743be6488c6..cf6f7869bd1a 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/asin.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/asin.pass.cpp
@@ -36,77 +36,77 @@ void test_edges()
{
typedef std::complex<double> C;
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = asin(x[i]);
- if (x[i].real() == 0 && x[i].imag() == 0)
+ std::complex<double> r = asin(testcases[i]);
+ if (testcases[i].real() == 0 && testcases[i].imag() == 0)
{
- assert(std::signbit(r.real()) == std::signbit(x[i].real()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.real()) == std::signbit(testcases[i].real()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isfinite(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(r.real() == 0);
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
assert(std::isinf(r.imag()));
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if ( x[i].real() == 0 && std::isnan(x[i].imag()))
+ else if ( testcases[i].real() == 0 && std::isnan(testcases[i].imag()))
{
assert(r.real() == 0);
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isfinite(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
- if (x[i].real() > 0)
+ if (testcases[i].real() > 0)
is_about(r.real(), pi/2);
else
is_about(r.real(), - pi/2);
assert(std::isinf(r.imag()));
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (std::isinf(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
- if (std::signbit(x[i].real()))
+ if (std::signbit(testcases[i].real()))
is_about(r.real(), -pi/4);
else
is_about(r.real(), pi/4);
assert(std::isinf(r.imag()));
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (std::isinf(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isinf(r.imag()));
- assert(std::signbit(x[i].real()) != std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].real()) != std::signbit(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isinf(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
else
{
- assert(std::signbit(r.real()) == std::signbit(x[i].real()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.real()) == std::signbit(testcases[i].real()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
}
}
diff --git a/test/std/numerics/complex.number/complex.transcendentals/asinh.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/asinh.pass.cpp
index 027bc6a98a99..011f9d6b4f2e 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/asinh.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/asinh.pass.cpp
@@ -36,76 +36,76 @@ void test_edges()
{
typedef std::complex<double> C;
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = asinh(x[i]);
- if (x[i].real() == 0 && x[i].imag() == 0)
+ std::complex<double> r = asinh(testcases[i]);
+ if (testcases[i].real() == 0 && testcases[i].imag() == 0)
{
- assert(std::signbit(r.real()) == std::signbit(x[i].real()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.real()) == std::signbit(testcases[i].real()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isfinite(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
- if (std::signbit(x[i].imag()))
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -pi/2);
else
is_about(r.imag(), pi/2);
}
- else if (std::isfinite(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(std::isinf(r.real()));
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
assert(r.imag() == 0);
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (std::isinf(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
- if (std::signbit(x[i].imag()))
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -pi/4);
else
is_about(r.imag(), pi/4);
}
- else if (std::isinf(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isinf(r.real()));
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && x[i].imag() == 0)
+ else if (std::isnan(testcases[i].real()) && testcases[i].imag() == 0)
{
assert(std::isnan(r.real()));
assert(r.imag() == 0);
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
else
{
- assert(std::signbit(r.real()) == std::signbit(x[i].real()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.real()) == std::signbit(testcases[i].real()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
}
}
diff --git a/test/std/numerics/complex.number/complex.transcendentals/atan.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/atan.pass.cpp
index 69bc95240141..8cc71f7bff27 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/atan.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/atan.pass.cpp
@@ -35,11 +35,11 @@ test()
void test_edges()
{
typedef std::complex<double> C;
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = atan(x[i]);
- std::complex<double> t1(-imag(x[i]), real(x[i]));
+ std::complex<double> r = atan(testcases[i]);
+ std::complex<double> t1(-imag(testcases[i]), real(testcases[i]));
std::complex<double> t2 = atanh(t1);
std::complex<double> z(imag(t2), -real(t2));
if (std::isnan(real(r)))
diff --git a/test/std/numerics/complex.number/complex.transcendentals/atanh.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/atanh.pass.cpp
index b821109b751b..6dc6034ca3c6 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/atanh.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/atanh.pass.cpp
@@ -36,89 +36,89 @@ void test_edges()
{
typedef std::complex<double> C;
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = atanh(x[i]);
- if (x[i].real() == 0 && x[i].imag() == 0)
+ std::complex<double> r = atanh(testcases[i]);
+ if (testcases[i].real() == 0 && testcases[i].imag() == 0)
{
- assert(std::signbit(r.real()) == std::signbit(x[i].real()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.real()) == std::signbit(testcases[i].real()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if ( x[i].real() == 0 && std::isnan(x[i].imag()))
+ else if ( testcases[i].real() == 0 && std::isnan(testcases[i].imag()))
{
assert(r.real() == 0);
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::abs(x[i].real()) == 1 && x[i].imag() == 0)
+ else if (std::abs(testcases[i].real()) == 1 && testcases[i].imag() == 0)
{
assert(std::isinf(r.real()));
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
assert(r.imag() == 0);
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (std::isfinite(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(r.real() == 0);
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
- if (x[i].imag() > 0)
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
+ if (testcases[i].imag() > 0)
is_about(r.imag(), pi/2);
else
is_about(r.imag(), -pi/2);
}
- else if (std::isfinite(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(r.real() == 0);
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
- if (std::signbit(x[i].imag()))
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -pi/2);
else
is_about(r.imag(), pi/2);
}
- else if (std::isinf(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(r.real() == 0);
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
- if (std::signbit(x[i].imag()))
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -pi/2);
else
is_about(r.imag(), pi/2);
}
- else if (std::isinf(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(r.real() == 0);
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(r.real() == 0);
- assert(std::signbit(x[i].real()) == std::signbit(r.real()));
- if (std::signbit(x[i].imag()))
+ assert(std::signbit(testcases[i].real()) == std::signbit(r.real()));
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -pi/2);
else
is_about(r.imag(), pi/2);
}
- else if (std::isnan(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
else
{
- assert(std::signbit(r.real()) == std::signbit(x[i].real()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.real()) == std::signbit(testcases[i].real()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
}
}
diff --git a/test/std/numerics/complex.number/complex.transcendentals/cos.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/cos.pass.cpp
index f25c967cb1a7..e09163a7057d 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/cos.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/cos.pass.cpp
@@ -36,11 +36,11 @@ void test_edges()
{
typedef std::complex<double> C;
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = cos(x[i]);
- std::complex<double> t1(-imag(x[i]), real(x[i]));
+ std::complex<double> r = cos(testcases[i]);
+ std::complex<double> t1(-imag(testcases[i]), real(testcases[i]));
std::complex<double> z = cosh(t1);
if (std::isnan(real(r)))
assert(std::isnan(real(z)));
diff --git a/test/std/numerics/complex.number/complex.transcendentals/cosh.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/cosh.pass.cpp
index acf4746389c8..0fd9cf79bcbf 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/cosh.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/cosh.pass.cpp
@@ -36,72 +36,72 @@ void test_edges()
{
typedef std::complex<double> C;
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = cosh(x[i]);
- if (x[i].real() == 0 && x[i].imag() == 0)
+ std::complex<double> r = cosh(testcases[i]);
+ if (testcases[i].real() == 0 && testcases[i].imag() == 0)
{
assert(r.real() == 1);
assert(r.imag() == 0);
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (x[i].real() == 0 && std::isinf(x[i].imag()))
+ else if (testcases[i].real() == 0 && std::isinf(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(r.imag() == 0);
}
- else if (x[i].real() == 0 && std::isnan(x[i].imag()))
+ else if (testcases[i].real() == 0 && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(r.imag() == 0);
}
- else if (std::isfinite(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isfinite(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].imag() == 0)
+ else if (std::isinf(testcases[i].real()) && testcases[i].imag() == 0)
{
assert(std::isinf(r.real()));
assert(!std::signbit(r.real()));
assert(r.imag() == 0);
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isinf(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(std::isinf(r.real()));
- assert(std::signbit(r.real()) == std::signbit(cos(x[i].imag())));
+ assert(std::signbit(r.real()) == std::signbit(cos(testcases[i].imag())));
assert(std::isinf(r.imag()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].real() * sin(x[i].imag())));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].real() * sin(testcases[i].imag())));
}
- else if (std::isinf(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && x[i].imag() == 0)
+ else if (std::isnan(testcases[i].real()) && testcases[i].imag() == 0)
{
assert(std::isnan(r.real()));
assert(r.imag() == 0);
}
- else if (std::isnan(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
diff --git a/test/std/numerics/complex.number/complex.transcendentals/exp.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/exp.pass.cpp
index e8b507572f1b..31317816fae0 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/exp.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/exp.pass.cpp
@@ -34,73 +34,73 @@ test()
void test_edges()
{
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = exp(x[i]);
- if (x[i].real() == 0 && x[i].imag() == 0)
+ std::complex<double> r = exp(testcases[i]);
+ if (testcases[i].real() == 0 && testcases[i].imag() == 0)
{
assert(r.real() == 1.0);
assert(r.imag() == 0);
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (std::isfinite(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isfinite(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() > 0 && x[i].imag() == 0)
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() > 0 && testcases[i].imag() == 0)
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
assert(r.imag() == 0);
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() < 0 && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() < 0 && std::isinf(testcases[i].imag()))
{
assert(r.real() == 0);
assert(r.imag() == 0);
}
- else if (std::isinf(x[i].real()) && x[i].real() > 0 && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() > 0 && std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() < 0 && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() < 0 && std::isnan(testcases[i].imag()))
{
assert(r.real() == 0);
assert(r.imag() == 0);
}
- else if (std::isinf(x[i].real()) && x[i].real() > 0 && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() > 0 && std::isnan(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && x[i].imag() == 0)
+ else if (std::isnan(testcases[i].real()) && testcases[i].imag() == 0)
{
assert(std::isnan(r.real()));
assert(r.imag() == 0);
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (std::isnan(x[i].real()) && x[i].imag() != 0)
+ else if (std::isnan(testcases[i].real()) && testcases[i].imag() != 0)
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isfinite(x[i].imag()) && std::abs(x[i].imag()) <= 1)
+ else if (std::isfinite(testcases[i].imag()) && std::abs(testcases[i].imag()) <= 1)
{
assert(!std::signbit(r.real()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
}
}
diff --git a/test/std/numerics/complex.number/complex.transcendentals/log.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/log.pass.cpp
index 800b92474bf0..589b5969950d 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/log.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/log.pass.cpp
@@ -35,17 +35,17 @@ test()
void test_edges()
{
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = log(x[i]);
- if (x[i].real() == 0 && x[i].imag() == 0)
+ std::complex<double> r = log(testcases[i]);
+ if (testcases[i].real() == 0 && testcases[i].imag() == 0)
{
- if (std::signbit(x[i].real()))
+ if (std::signbit(testcases[i].real()))
{
assert(std::isinf(r.real()));
assert(r.real() < 0);
- if (std::signbit(x[i].imag()))
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -pi);
else
is_about(r.imag(), pi);
@@ -55,24 +55,24 @@ void test_edges()
assert(std::isinf(r.real()));
assert(r.real() < 0);
assert(r.imag() == 0);
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
}
- else if (std::isfinite(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
- if (x[i].imag() > 0)
+ if (testcases[i].imag() > 0)
is_about(r.imag(), pi/2);
else
is_about(r.imag(), -pi/2);
}
- else if (std::isfinite(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() < 0 && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() < 0 && std::isfinite(testcases[i].imag()))
{
assert(std::isinf(r.real()) && r.real() > 0);
if (r.imag() > 0)
@@ -80,44 +80,44 @@ void test_edges()
else
is_about(r.imag(), -pi);
}
- else if (std::isinf(x[i].real()) && x[i].real() > 0 && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() > 0 && std::isfinite(testcases[i].imag()))
{
assert(std::isinf(r.real()) && r.real() > 0);
assert(r.imag() == 0);
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (x[i].real() == 1 && x[i].imag() == 0)
+ else if (testcases[i].real() == 1 && testcases[i].imag() == 0)
{
assert(r.real() == 0);
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (x[i].real() == 0 && x[i].imag() == 1)
+ else if (testcases[i].real() == 0 && testcases[i].imag() == 1)
{
assert(r.real() == 0);
is_about(r.imag(), pi/2);
}
- else if (x[i].real() == -1 && x[i].imag() == 0)
+ else if (testcases[i].real() == -1 && testcases[i].imag() == 0)
{
assert(r.real() == 0);
- if (std::signbit(x[i].imag()))
+ if (std::signbit(testcases[i].imag()))
is_about(r.imag(), -pi);
else
is_about(r.imag(), pi);
}
- else if (x[i].real() == 0 && x[i].imag() == -1)
+ else if (testcases[i].real() == 0 && testcases[i].imag() == -1)
{
assert(r.real() == 0);
is_about(r.imag(), -pi/2);
}
- else if (std::isfinite(x[i].real()) && std::isfinite(x[i].imag()) && abs(x[i]) < 1)
+ else if (std::isfinite(testcases[i].real()) && std::isfinite(testcases[i].imag()) && abs(testcases[i]) < 1)
{
assert( std::signbit(r.real()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isfinite(x[i].real()) && std::isfinite(x[i].imag()) && abs(x[i]) > 1)
+ else if (std::isfinite(testcases[i].real()) && std::isfinite(testcases[i].imag()) && abs(testcases[i]) > 1)
{
assert(!std::signbit(r.real()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
}
}
diff --git a/test/std/numerics/complex.number/complex.transcendentals/log10.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/log10.pass.cpp
index ba03ebf8ad28..58286904ae25 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/log10.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/log10.pass.cpp
@@ -35,11 +35,11 @@ test()
void test_edges()
{
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = log10(x[i]);
- std::complex<double> z = log(x[i])/std::log(10);
+ std::complex<double> r = log10(testcases[i]);
+ std::complex<double> z = log(testcases[i])/std::log(10);
if (std::isnan(real(r)))
assert(std::isnan(real(z)));
else
diff --git a/test/std/numerics/complex.number/complex.transcendentals/pow_complex_complex.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/pow_complex_complex.pass.cpp
index 258193d257a8..157246947cfe 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/pow_complex_complex.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/pow_complex_complex.pass.cpp
@@ -37,13 +37,13 @@ test()
void test_edges()
{
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
for (unsigned j = 0; j < N; ++j)
{
- std::complex<double> r = pow(x[i], x[j]);
- std::complex<double> z = exp(x[j] * log(x[i]));
+ std::complex<double> r = pow(testcases[i], testcases[j]);
+ std::complex<double> z = exp(testcases[j] * log(testcases[i]));
if (std::isnan(real(r)))
assert(std::isnan(real(z)));
else
diff --git a/test/std/numerics/complex.number/complex.transcendentals/pow_complex_scalar.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/pow_complex_scalar.pass.cpp
index 03bd10d465d1..0752ea59f554 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/pow_complex_scalar.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/pow_complex_scalar.pass.cpp
@@ -37,13 +37,13 @@ test()
void test_edges()
{
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
for (unsigned j = 0; j < N; ++j)
{
- std::complex<double> r = pow(x[i], real(x[j]));
- std::complex<double> z = exp(std::complex<double>(real(x[j])) * log(x[i]));
+ std::complex<double> r = pow(testcases[i], real(testcases[j]));
+ std::complex<double> z = exp(std::complex<double>(real(testcases[j])) * log(testcases[i]));
if (std::isnan(real(r)))
assert(std::isnan(real(z)));
else
diff --git a/test/std/numerics/complex.number/complex.transcendentals/pow_scalar_complex.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/pow_scalar_complex.pass.cpp
index a48498cea92c..aedeec8caacc 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/pow_scalar_complex.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/pow_scalar_complex.pass.cpp
@@ -37,13 +37,13 @@ test()
void test_edges()
{
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
for (unsigned j = 0; j < N; ++j)
{
- std::complex<double> r = pow(real(x[i]), x[j]);
- std::complex<double> z = exp(x[j] * log(std::complex<double>(real(x[i]))));
+ std::complex<double> r = pow(real(testcases[i]), testcases[j]);
+ std::complex<double> z = exp(testcases[j] * log(std::complex<double>(real(testcases[i]))));
if (std::isnan(real(r)))
assert(std::isnan(real(z)));
else
diff --git a/test/std/numerics/complex.number/complex.transcendentals/sin.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/sin.pass.cpp
index 068222a27373..e1b98ecd0677 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/sin.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/sin.pass.cpp
@@ -36,11 +36,11 @@ void test_edges()
{
typedef std::complex<double> C;
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = sin(x[i]);
- std::complex<double> t1(-imag(x[i]), real(x[i]));
+ std::complex<double> r = sin(testcases[i]);
+ std::complex<double> t1(-imag(testcases[i]), real(testcases[i]));
std::complex<double> t2 = sinh(t1);
std::complex<double> z(imag(t2), -real(t2));
if (std::isnan(real(r)))
diff --git a/test/std/numerics/complex.number/complex.transcendentals/sinh.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/sinh.pass.cpp
index dcd30e48dff5..20f2e71b140a 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/sinh.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/sinh.pass.cpp
@@ -36,73 +36,73 @@ void test_edges()
{
typedef std::complex<double> C;
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = sinh(x[i]);
- if (x[i].real() == 0 && x[i].imag() == 0)
+ std::complex<double> r = sinh(testcases[i]);
+ if (testcases[i].real() == 0 && testcases[i].imag() == 0)
{
assert(r.real() == 0);
- assert(std::signbit(r.real()) == std::signbit(x[i].real()));
+ assert(std::signbit(r.real()) == std::signbit(testcases[i].real()));
assert(r.imag() == 0);
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (x[i].real() == 0 && std::isinf(x[i].imag()))
+ else if (testcases[i].real() == 0 && std::isinf(testcases[i].imag()))
{
assert(r.real() == 0);
assert(std::isnan(r.imag()));
}
- else if (std::isfinite(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (x[i].real() == 0 && std::isnan(x[i].imag()))
+ else if (testcases[i].real() == 0 && std::isnan(testcases[i].imag()))
{
assert(r.real() == 0);
assert(std::isnan(r.imag()));
}
- else if (std::isfinite(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].imag() == 0)
+ else if (std::isinf(testcases[i].real()) && testcases[i].imag() == 0)
{
assert(std::isinf(r.real()));
- assert(std::signbit(r.real()) == std::signbit(x[i].real()));
+ assert(std::signbit(r.real()) == std::signbit(testcases[i].real()));
assert(r.imag() == 0);
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isinf(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(std::isinf(r.real()));
- assert(std::signbit(r.real()) == std::signbit(x[i].real() * cos(x[i].imag())));
+ assert(std::signbit(r.real()) == std::signbit(testcases[i].real() * cos(testcases[i].imag())));
assert(std::isinf(r.imag()));
- assert(std::signbit(r.imag()) == std::signbit(sin(x[i].imag())));
+ assert(std::signbit(r.imag()) == std::signbit(sin(testcases[i].imag())));
}
- else if (std::isinf(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && x[i].imag() == 0)
+ else if (std::isnan(testcases[i].real()) && testcases[i].imag() == 0)
{
assert(std::isnan(r.real()));
assert(r.imag() == 0);
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isnan(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
diff --git a/test/std/numerics/complex.number/complex.transcendentals/sqrt.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/sqrt.pass.cpp
index 69309d2b9ab1..d3273179a6da 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/sqrt.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/sqrt.pass.cpp
@@ -36,58 +36,58 @@ test()
void test_edges()
{
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = sqrt(x[i]);
- if (x[i].real() == 0 && x[i].imag() == 0)
+ std::complex<double> r = sqrt(testcases[i]);
+ if (testcases[i].real() == 0 && testcases[i].imag() == 0)
{
assert(!std::signbit(r.real()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
assert(std::isinf(r.imag()));
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isfinite(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() < 0 && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() < 0 && std::isfinite(testcases[i].imag()))
{
assert(r.real() == 0);
assert(!std::signbit(r.real()));
assert(std::isinf(r.imag()));
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() > 0 && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() > 0 && std::isfinite(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
assert(r.imag() == 0);
- assert(std::signbit(x[i].imag()) == std::signbit(r.imag()));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() < 0 && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() < 0 && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isinf(r.imag()));
}
- else if (std::isinf(x[i].real()) && x[i].real() > 0 && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && testcases[i].real() > 0 && std::isnan(testcases[i].imag()))
{
assert(std::isinf(r.real()));
assert(r.real() > 0);
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && (std::isfinite(x[i].imag()) || std::isnan(x[i].imag())))
+ else if (std::isnan(testcases[i].real()) && (std::isfinite(testcases[i].imag()) || std::isnan(testcases[i].imag())))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::signbit(x[i].imag()))
+ else if (std::signbit(testcases[i].imag()))
{
assert(!std::signbit(r.real()));
assert(std::signbit(r.imag()));
diff --git a/test/std/numerics/complex.number/complex.transcendentals/tan.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/tan.pass.cpp
index 881427600686..041a7814d033 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/tan.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/tan.pass.cpp
@@ -37,11 +37,11 @@ void test_edges()
{
typedef std::complex<double> C;
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = tan(x[i]);
- std::complex<double> t1(-imag(x[i]), real(x[i]));
+ std::complex<double> r = tan(testcases[i]);
+ std::complex<double> t1(-imag(testcases[i]), real(testcases[i]));
std::complex<double> t2 = tanh(t1);
std::complex<double> z(imag(t2), -real(t2));
if (std::isnan(real(r)))
diff --git a/test/std/numerics/complex.number/complex.transcendentals/tanh.pass.cpp b/test/std/numerics/complex.number/complex.transcendentals/tanh.pass.cpp
index 907c0e64dba9..9a2276a8b753 100644
--- a/test/std/numerics/complex.number/complex.transcendentals/tanh.pass.cpp
+++ b/test/std/numerics/complex.number/complex.transcendentals/tanh.pass.cpp
@@ -36,55 +36,55 @@ void test_edges()
{
typedef std::complex<double> C;
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = tanh(x[i]);
- if (x[i].real() == 0 && x[i].imag() == 0)
+ std::complex<double> r = tanh(testcases[i]);
+ if (testcases[i].real() == 0 && testcases[i].imag() == 0)
{
assert(r.real() == 0);
- assert(std::signbit(r.real()) == std::signbit(x[i].real()));
+ assert(std::signbit(r.real()) == std::signbit(testcases[i].real()));
assert(r.imag() == 0);
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isfinite(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isfinite(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isfinite(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isinf(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(r.real() == 1);
assert(r.imag() == 0);
- assert(std::signbit(r.imag()) == std::signbit(sin(2*x[i].imag())));
+ assert(std::signbit(r.imag()) == std::signbit(sin(2*testcases[i].imag())));
}
- else if (std::isinf(x[i].real()) && std::isinf(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
assert(r.real() == 1);
assert(r.imag() == 0);
}
- else if (std::isinf(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isinf(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(r.real() == 1);
assert(r.imag() == 0);
}
- else if (std::isnan(x[i].real()) && x[i].imag() == 0)
+ else if (std::isnan(testcases[i].real()) && testcases[i].imag() == 0)
{
assert(std::isnan(r.real()));
assert(r.imag() == 0);
- assert(std::signbit(r.imag()) == std::signbit(x[i].imag()));
+ assert(std::signbit(r.imag()) == std::signbit(testcases[i].imag()));
}
- else if (std::isnan(x[i].real()) && std::isfinite(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isfinite(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
}
- else if (std::isnan(x[i].real()) && std::isnan(x[i].imag()))
+ else if (std::isnan(testcases[i].real()) && std::isnan(testcases[i].imag()))
{
assert(std::isnan(r.real()));
assert(std::isnan(r.imag()));
diff --git a/test/std/numerics/complex.number/complex.value.ops/abs.pass.cpp b/test/std/numerics/complex.number/complex.value.ops/abs.pass.cpp
index 5d841d6ee9f1..7a0e3bd70072 100644
--- a/test/std/numerics/complex.number/complex.value.ops/abs.pass.cpp
+++ b/test/std/numerics/complex.number/complex.value.ops/abs.pass.cpp
@@ -28,11 +28,11 @@ test()
void test_edges()
{
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- double r = abs(x[i]);
- switch (classify(x[i]))
+ double r = abs(testcases[i]);
+ switch (classify(testcases[i]))
{
case zero:
assert(r == 0);
diff --git a/test/std/numerics/complex.number/complex.value.ops/arg.pass.cpp b/test/std/numerics/complex.number/complex.value.ops/arg.pass.cpp
index a7da456b979c..78f2781b76e2 100644
--- a/test/std/numerics/complex.number/complex.value.ops/arg.pass.cpp
+++ b/test/std/numerics/complex.number/complex.value.ops/arg.pass.cpp
@@ -29,42 +29,42 @@ test()
void test_edges()
{
const double pi = std::atan2(+0., -0.);
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- double r = arg(x[i]);
- if (std::isnan(x[i].real()) || std::isnan(x[i].imag()))
+ double r = arg(testcases[i]);
+ if (std::isnan(testcases[i].real()) || std::isnan(testcases[i].imag()))
assert(std::isnan(r));
else
{
- switch (classify(x[i]))
+ switch (classify(testcases[i]))
{
case zero:
- if (std::signbit(x[i].real()))
+ if (std::signbit(testcases[i].real()))
{
- if (std::signbit(x[i].imag()))
+ if (std::signbit(testcases[i].imag()))
is_about(r, -pi);
else
is_about(r, pi);
}
else
{
- assert(std::signbit(x[i].imag()) == std::signbit(r));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r));
}
break;
case non_zero:
- if (x[i].real() == 0)
+ if (testcases[i].real() == 0)
{
- if (x[i].imag() < 0)
+ if (testcases[i].imag() < 0)
is_about(r, -pi/2);
else
is_about(r, pi/2);
}
- else if (x[i].imag() == 0)
+ else if (testcases[i].imag() == 0)
{
- if (x[i].real() < 0)
+ if (testcases[i].real() < 0)
{
- if (std::signbit(x[i].imag()))
+ if (std::signbit(testcases[i].imag()))
is_about(r, -pi);
else
is_about(r, pi);
@@ -72,37 +72,37 @@ void test_edges()
else
{
assert(r == 0);
- assert(std::signbit(x[i].imag()) == std::signbit(r));
+ assert(std::signbit(testcases[i].imag()) == std::signbit(r));
}
}
- else if (x[i].imag() > 0)
+ else if (testcases[i].imag() > 0)
assert(r > 0);
else
assert(r < 0);
break;
case inf:
- if (std::isinf(x[i].real()) && std::isinf(x[i].imag()))
+ if (std::isinf(testcases[i].real()) && std::isinf(testcases[i].imag()))
{
- if (x[i].real() < 0)
+ if (testcases[i].real() < 0)
{
- if (x[i].imag() > 0)
+ if (testcases[i].imag() > 0)
is_about(r, 0.75 * pi);
else
is_about(r, -0.75 * pi);
}
else
{
- if (x[i].imag() > 0)
+ if (testcases[i].imag() > 0)
is_about(r, 0.25 * pi);
else
is_about(r, -0.25 * pi);
}
}
- else if (std::isinf(x[i].real()))
+ else if (std::isinf(testcases[i].real()))
{
- if (x[i].real() < 0)
+ if (testcases[i].real() < 0)
{
- if (std::signbit(x[i].imag()))
+ if (std::signbit(testcases[i].imag()))
is_about(r, -pi);
else
is_about(r, pi);
@@ -110,12 +110,12 @@ void test_edges()
else
{
assert(r == 0);
- assert(std::signbit(r) == std::signbit(x[i].imag()));
+ assert(std::signbit(r) == std::signbit(testcases[i].imag()));
}
}
else
{
- if (x[i].imag() < 0)
+ if (testcases[i].imag() < 0)
is_about(r, -pi/2);
else
is_about(r, pi/2);
diff --git a/test/std/numerics/complex.number/complex.value.ops/norm.pass.cpp b/test/std/numerics/complex.number/complex.value.ops/norm.pass.cpp
index 48f774e8e1c9..da7ad14bedce 100644
--- a/test/std/numerics/complex.number/complex.value.ops/norm.pass.cpp
+++ b/test/std/numerics/complex.number/complex.value.ops/norm.pass.cpp
@@ -28,11 +28,11 @@ test()
void test_edges()
{
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- double r = norm(x[i]);
- switch (classify(x[i]))
+ double r = norm(testcases[i]);
+ switch (classify(testcases[i]))
{
case zero:
assert(r == 0);
diff --git a/test/std/numerics/complex.number/complex.value.ops/polar.pass.cpp b/test/std/numerics/complex.number/complex.value.ops/polar.pass.cpp
index a8747bd7c83b..5e6cb0d523c2 100644
--- a/test/std/numerics/complex.number/complex.value.ops/polar.pass.cpp
+++ b/test/std/numerics/complex.number/complex.value.ops/polar.pass.cpp
@@ -46,11 +46,11 @@ test()
void test_edges()
{
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- double r = real(x[i]);
- double theta = imag(x[i]);
+ double r = real(testcases[i]);
+ double theta = imag(testcases[i]);
std::complex<double> z = std::polar(r, theta);
switch (classify(r))
{
diff --git a/test/std/numerics/complex.number/complex.value.ops/proj.pass.cpp b/test/std/numerics/complex.number/complex.value.ops/proj.pass.cpp
index 10bf7f8576f6..1a7e0c53f3d3 100644
--- a/test/std/numerics/complex.number/complex.value.ops/proj.pass.cpp
+++ b/test/std/numerics/complex.number/complex.value.ops/proj.pass.cpp
@@ -37,26 +37,26 @@ test()
void test_edges()
{
- const unsigned N = sizeof(x) / sizeof(x[0]);
+ const unsigned N = sizeof(testcases) / sizeof(testcases[0]);
for (unsigned i = 0; i < N; ++i)
{
- std::complex<double> r = proj(x[i]);
- switch (classify(x[i]))
+ std::complex<double> r = proj(testcases[i]);
+ switch (classify(testcases[i]))
{
case zero:
case non_zero:
- assert(r == x[i]);
- assert(std::signbit(real(r)) == std::signbit(real(x[i])));
- assert(std::signbit(imag(r)) == std::signbit(imag(x[i])));
+ assert(r == testcases[i]);
+ assert(std::signbit(real(r)) == std::signbit(real(testcases[i])));
+ assert(std::signbit(imag(r)) == std::signbit(imag(testcases[i])));
break;
case inf:
assert(std::isinf(real(r)) && real(r) > 0);
assert(imag(r) == 0);
- assert(std::signbit(imag(r)) == std::signbit(imag(x[i])));
+ assert(std::signbit(imag(r)) == std::signbit(imag(testcases[i])));
break;
case NaN:
case non_zero_nan:
- assert(classify(r) == classify(x[i]));
+ assert(classify(r) == classify(testcases[i]));
break;
}
}
diff --git a/test/std/numerics/complex.number/version.pass.cpp b/test/std/numerics/complex.number/version.pass.cpp
deleted file mode 100644
index 316cfec739a9..000000000000
--- a/test/std/numerics/complex.number/version.pass.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <complex>
-
-#include <complex>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}
diff --git a/test/std/numerics/numarray/template.valarray/valarray.unary/not.pass.cpp b/test/std/numerics/numarray/template.valarray/valarray.unary/not.pass.cpp
index 0b792c68fb94..306ea0c18470 100644
--- a/test/std/numerics/numarray/template.valarray/valarray.unary/not.pass.cpp
+++ b/test/std/numerics/numarray/template.valarray/valarray.unary/not.pass.cpp
@@ -36,6 +36,6 @@ int main()
std::valarray<bool> v2 = !(v + v);
assert(v2.size() == v.size());
for (int i = 0; i < v2.size(); ++i)
- assert(v2[i] == !2*v[i]);
+ assert(v2[i] == !(2 * v[i]));
}
}
diff --git a/test/std/numerics/numarray/version.pass.cpp b/test/std/numerics/numarray/version.pass.cpp
deleted file mode 100644
index 85457d4329ec..000000000000
--- a/test/std/numerics/numarray/version.pass.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <valarray>
-
-#include <valarray>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}
diff --git a/test/std/numerics/numeric.ops/version.pass.cpp b/test/std/numerics/numeric.ops/version.pass.cpp
deleted file mode 100644
index fb6e0a1063ce..000000000000
--- a/test/std/numerics/numeric.ops/version.pass.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <numeric>
-
-#include <numeric>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}
diff --git a/test/std/numerics/rand/rand.device/ctor.pass.cpp b/test/std/numerics/rand/rand.device/ctor.pass.cpp
index dfeccc81e30e..8c45bb19a0a6 100644
--- a/test/std/numerics/rand/rand.device/ctor.pass.cpp
+++ b/test/std/numerics/rand/rand.device/ctor.pass.cpp
@@ -22,7 +22,13 @@
#include <random>
#include <system_error>
#include <cassert>
+
+#if !defined(_WIN32)
#include <unistd.h>
+#endif
+
+#include "test_macros.h"
+
bool is_valid_random_device(const std::string &token) {
#if defined(_LIBCPP_USING_DEV_RANDOM)
@@ -40,33 +46,20 @@ void check_random_device_valid(const std::string &token) {
void check_random_device_invalid(const std::string &token) {
try {
std::random_device r(token);
- assert(false);
- } catch (const std::system_error &e) {
+ LIBCPP_ASSERT(false);
+ } catch (const std::system_error&) {
}
}
-int main() {
- { std::random_device r; }
+int main() {
{
- int ec;
- ec = close(STDIN_FILENO);
- assert(!ec);
- ec = close(STDOUT_FILENO);
- assert(!ec);
- ec = close(STDERR_FILENO);
- assert(!ec);
std::random_device r;
}
-
{
std::string token = "wrong file";
- if (is_valid_random_device(token))
- check_random_device_valid(token);
- else
- check_random_device_invalid(token);
+ check_random_device_invalid(token);
}
-
{
std::string token = "/dev/urandom";
if (is_valid_random_device(token))
@@ -74,7 +67,6 @@ int main() {
else
check_random_device_invalid(token);
}
-
{
std::string token = "/dev/random";
if (is_valid_random_device(token))
@@ -82,4 +74,19 @@ int main() {
else
check_random_device_invalid(token);
}
+#if !defined(_WIN32)
+// Test that random_device(const string&) properly handles getting
+// a file descriptor with the value '0'. Do this by closing the standard
+// streams so that the descriptor '0' is available.
+ {
+ int ec;
+ ec = close(STDIN_FILENO);
+ assert(!ec);
+ ec = close(STDOUT_FILENO);
+ assert(!ec);
+ ec = close(STDERR_FILENO);
+ assert(!ec);
+ std::random_device r;
+ }
+#endif // !defined(_WIN32)
}
diff --git a/test/std/numerics/rand/rand.device/eval.pass.cpp b/test/std/numerics/rand/rand.device/eval.pass.cpp
index ed5361fbde75..eabcc201e068 100644
--- a/test/std/numerics/rand/rand.device/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.device/eval.pass.cpp
@@ -17,6 +17,8 @@
#include <random>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
{
@@ -28,9 +30,9 @@ int main()
{
std::random_device r("/dev/null");
r();
- assert(false);
+ LIBCPP_ASSERT(false);
}
- catch (const std::system_error& e)
+ catch (const std::system_error&)
{
}
}
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval.pass.cpp
index f071e8507478..b267c2477e91 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval.pass.cpp
@@ -44,10 +44,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -80,10 +80,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval_param.pass.cpp
index e03fb57f380c..f96df82304f0 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval_param.pass.cpp
@@ -46,10 +46,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -84,10 +84,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.pass.cpp
index 43c6b546bdb2..88004ba4a741 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.pass.cpp
@@ -29,447 +29,491 @@ sqr(T x)
return x * x;
}
-int main()
+void
+test1()
{
+ typedef std::binomial_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ D d(5, .75);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::binomial_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- D d(5, .75);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.t() * d.p();
- double x_var = x_mean*(1-d.p());
- double x_skew = (1-2*d.p()) / std::sqrt(x_var);
- double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.04);
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(30, .03125);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.t() * d.p();
- double x_var = x_mean*(1-d.p());
- double x_skew = (1-2*d.p()) / std::sqrt(x_var);
- double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.t() * d.p();
+ double x_var = x_mean*(1-d.p());
+ double x_skew = (1-2*d.p()) / std::sqrt(x_var);
+ double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.04);
+}
+
+void
+test2()
+{
+ typedef std::binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(30, .03125);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(40, .25);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.t() * d.p();
- double x_var = x_mean*(1-d.p());
- double x_skew = (1-2*d.p()) / std::sqrt(x_var);
- double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.03);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.3);
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(40, 0);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- // In this case:
- // skew computes to 0./0. == nan
- // kurtosis computes to 0./0. == nan
- // x_skew == inf
- // x_kurtosis == inf
- // These tests are commented out because UBSan warns about division by 0
-// skew /= u.size() * dev * var;
-// kurtosis /= u.size() * var * var;
-// kurtosis -= 3;
- double x_mean = d.t() * d.p();
- double x_var = x_mean*(1-d.p());
-// double x_skew = (1-2*d.p()) / std::sqrt(x_var);
-// double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
- assert(mean == x_mean);
- assert(var == x_var);
-// assert(skew == x_skew);
-// assert(kurtosis == x_kurtosis);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.t() * d.p();
+ double x_var = x_mean*(1-d.p());
+ double x_skew = (1-2*d.p()) / std::sqrt(x_var);
+ double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+void
+test3()
+{
+ typedef std::binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(40, .25);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(40, 1);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- // In this case:
- // skew computes to 0./0. == nan
- // kurtosis computes to 0./0. == nan
- // x_skew == -inf
- // x_kurtosis == inf
- // These tests are commented out because UBSan warns about division by 0
-// skew /= u.size() * dev * var;
-// kurtosis /= u.size() * var * var;
-// kurtosis -= 3;
- double x_mean = d.t() * d.p();
- double x_var = x_mean*(1-d.p());
-// double x_skew = (1-2*d.p()) / std::sqrt(x_var);
-// double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
- assert(mean == x_mean);
- assert(var == x_var);
-// assert(skew == x_skew);
-// assert(kurtosis == x_kurtosis);
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(400, 0.5);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.t() * d.p();
- double x_var = x_mean*(1-d.p());
- double x_skew = (1-2*d.p()) / std::sqrt(x_var);
- double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs(kurtosis - x_kurtosis) < 0.01);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.t() * d.p();
+ double x_var = x_mean*(1-d.p());
+ double x_skew = (1-2*d.p()) / std::sqrt(x_var);
+ double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.03);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.3);
+}
+
+void
+test4()
+{
+ typedef std::binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(40, 0);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(1, 0.5);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.t() * d.p();
- double x_var = x_mean*(1-d.p());
- double x_skew = (1-2*d.p()) / std::sqrt(x_var);
- double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- const int N = 100000;
- std::mt19937 gen1;
- std::mt19937 gen2;
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ // In this case:
+ // skew computes to 0./0. == nan
+ // kurtosis computes to 0./0. == nan
+ // x_skew == inf
+ // x_kurtosis == inf
+ // These tests are commented out because UBSan warns about division by 0
+// skew /= u.size() * dev * var;
+// kurtosis /= u.size() * var * var;
+// kurtosis -= 3;
+ double x_mean = d.t() * d.p();
+ double x_var = x_mean*(1-d.p());
+// double x_skew = (1-2*d.p()) / std::sqrt(x_var);
+// double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
+ assert(mean == x_mean);
+ assert(var == x_var);
+// assert(skew == x_skew);
+// assert(kurtosis == x_kurtosis);
+}
- std::binomial_distribution<> dist1(5, 0.1);
- std::binomial_distribution<unsigned> dist2(5, 0.1);
+void
+test5()
+{
+ typedef std::binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(40, 1);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ // In this case:
+ // skew computes to 0./0. == nan
+ // kurtosis computes to 0./0. == nan
+ // x_skew == -inf
+ // x_kurtosis == inf
+ // These tests are commented out because UBSan warns about division by 0
+// skew /= u.size() * dev * var;
+// kurtosis /= u.size() * var * var;
+// kurtosis -= 3;
+ double x_mean = d.t() * d.p();
+ double x_var = x_mean*(1-d.p());
+// double x_skew = (1-2*d.p()) / std::sqrt(x_var);
+// double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
+ assert(mean == x_mean);
+ assert(var == x_var);
+// assert(skew == x_skew);
+// assert(kurtosis == x_kurtosis);
+}
- for(int i = 0; i < N; ++i)
- assert(dist1(gen1) == dist2(gen2));
+void
+test6()
+{
+ typedef std::binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(400, 0.5);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(0, 0.005);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- // In this case:
- // skew computes to 0./0. == nan
- // kurtosis computes to 0./0. == nan
- // x_skew == inf
- // x_kurtosis == inf
- // These tests are commented out because UBSan warns about division by 0
-// skew /= u.size() * dev * var;
-// kurtosis /= u.size() * var * var;
-// kurtosis -= 3;
- double x_mean = d.t() * d.p();
- double x_var = x_mean*(1-d.p());
-// double x_skew = (1-2*d.p()) / std::sqrt(x_var);
-// double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
- assert(mean == x_mean);
- assert(var == x_var);
-// assert(skew == x_skew);
-// assert(kurtosis == x_kurtosis);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.t() * d.p();
+ double x_var = x_mean*(1-d.p());
+ double x_skew = (1-2*d.p()) / std::sqrt(x_var);
+ double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs(kurtosis - x_kurtosis) < 0.01);
+}
+
+void
+test7()
+{
+ typedef std::binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(1, 0.5);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(0, 0);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- // In this case:
- // skew computes to 0./0. == nan
- // kurtosis computes to 0./0. == nan
- // x_skew == inf
- // x_kurtosis == inf
- // These tests are commented out because UBSan warns about division by 0
-// skew /= u.size() * dev * var;
-// kurtosis /= u.size() * var * var;
-// kurtosis -= 3;
- double x_mean = d.t() * d.p();
- double x_var = x_mean*(1-d.p());
-// double x_skew = (1-2*d.p()) / std::sqrt(x_var);
-// double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
- assert(mean == x_mean);
- assert(var == x_var);
-// assert(skew == x_skew);
-// assert(kurtosis == x_kurtosis);
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(0, 1);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- // In this case:
- // skew computes to 0./0. == nan
- // kurtosis computes to 0./0. == nan
- // x_skew == -inf
- // x_kurtosis == inf
- // These tests are commented out because UBSan warns about division by 0
-// skew /= u.size() * dev * var;
-// kurtosis /= u.size() * var * var;
-// kurtosis -= 3;
- double x_mean = d.t() * d.p();
- double x_var = x_mean*(1-d.p());
-// double x_skew = (1-2*d.p()) / std::sqrt(x_var);
-// double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
- assert(mean == x_mean);
- assert(var == x_var);
-// assert(skew == x_skew);
-// assert(kurtosis == x_kurtosis);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.t() * d.p();
+ double x_var = x_mean*(1-d.p());
+ double x_skew = (1-2*d.p()) / std::sqrt(x_var);
+ double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+void
+test8()
+{
+ const int N = 100000;
+ std::mt19937 gen1;
+ std::mt19937 gen2;
+
+ std::binomial_distribution<> dist1(5, 0.1);
+ std::binomial_distribution<unsigned> dist2(5, 0.1);
+
+ for(int i = 0; i < N; ++i)
+ assert(dist1(gen1) == dist2(gen2));
+}
+
+void
+test9()
+{
+ typedef std::binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(0, 0.005);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ // In this case:
+ // skew computes to 0./0. == nan
+ // kurtosis computes to 0./0. == nan
+ // x_skew == inf
+ // x_kurtosis == inf
+ // These tests are commented out because UBSan warns about division by 0
+// skew /= u.size() * dev * var;
+// kurtosis /= u.size() * var * var;
+// kurtosis -= 3;
+ double x_mean = d.t() * d.p();
+ double x_var = x_mean*(1-d.p());
+// double x_skew = (1-2*d.p()) / std::sqrt(x_var);
+// double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
+ assert(mean == x_mean);
+ assert(var == x_var);
+// assert(skew == x_skew);
+// assert(kurtosis == x_kurtosis);
+}
+
+void
+test10()
+{
+ typedef std::binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(0, 0);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ // In this case:
+ // skew computes to 0./0. == nan
+ // kurtosis computes to 0./0. == nan
+ // x_skew == inf
+ // x_kurtosis == inf
+ // These tests are commented out because UBSan warns about division by 0
+// skew /= u.size() * dev * var;
+// kurtosis /= u.size() * var * var;
+// kurtosis -= 3;
+ double x_mean = d.t() * d.p();
+ double x_var = x_mean*(1-d.p());
+// double x_skew = (1-2*d.p()) / std::sqrt(x_var);
+// double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
+ assert(mean == x_mean);
+ assert(var == x_var);
+// assert(skew == x_skew);
+// assert(kurtosis == x_kurtosis);
+}
+
+void
+test11()
+{
+ typedef std::binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(0, 1);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ // In this case:
+ // skew computes to 0./0. == nan
+ // kurtosis computes to 0./0. == nan
+ // x_skew == -inf
+ // x_kurtosis == inf
+ // These tests are commented out because UBSan warns about division by 0
+// skew /= u.size() * dev * var;
+// kurtosis /= u.size() * var * var;
+// kurtosis -= 3;
+ double x_mean = d.t() * d.p();
+ double x_var = x_mean*(1-d.p());
+// double x_skew = (1-2*d.p()) / std::sqrt(x_var);
+// double x_kurtosis = (1-6*d.p()*(1-d.p())) / x_var;
+ assert(mean == x_mean);
+ assert(var == x_var);
+// assert(skew == x_skew);
+// assert(kurtosis == x_kurtosis);
+}
+
+int main()
+{
+ test1();
+ test2();
+ test3();
+ test4();
+ test5();
+ test6();
+ test7();
+ test8();
+ test9();
+ test10();
+ test11();
}
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval_param.pass.cpp
index 1aa66ed57ad1..092a69778513 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval_param.pass.cpp
@@ -53,10 +53,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -95,10 +95,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -137,10 +137,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval.pass.cpp
index a8ef221e3b67..4e9f9d3c044d 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval.pass.cpp
@@ -29,246 +29,270 @@ sqr(T x)
return x * x;
}
-int main()
+void
+test1()
+{
+ typedef std::geometric_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(.03125);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
+ double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+void
+test2()
+{
+ typedef std::geometric_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(0.05);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
+ double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.03);
+}
+
+void
+test3()
+{
+ typedef std::geometric_distribution<> D;
+ typedef std::minstd_rand G;
+ G g;
+ D d(.25);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
+ double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.02);
+}
+
+void
+test4()
{
+ typedef std::geometric_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(0.5);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::geometric_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(.03125);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
- double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::geometric_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(0.05);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
- double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.03);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
+ double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.02);
+}
+
+void
+test5()
+{
+ typedef std::geometric_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(0.75);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::geometric_distribution<> D;
- typedef std::minstd_rand G;
- G g;
- D d(.25);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
- double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.02);
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::geometric_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(0.5);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
- double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.02);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
+ double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.02);
+}
+
+void
+test6()
+{
+ typedef std::geometric_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(0.96875);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::geometric_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(0.75);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
- double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.02);
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::geometric_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(0.96875);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
- double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.02);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt((1 - d.p()));
+ double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p());
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.02);
+}
+
+int main()
+{
+ test1();
+ test2();
+ test3();
+ test4();
+ test5();
+ test6();
}
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval_param.pass.cpp
index 91dea8aa1337..c451f0130904 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval_param.pass.cpp
@@ -53,10 +53,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -95,10 +95,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -137,10 +137,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval.pass.cpp
index 853161e9f9b7..929e6e7e6c3b 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval.pass.cpp
@@ -29,244 +29,268 @@ sqr(T x)
return x * x;
}
-int main()
+void
+test1()
+{
+ typedef std::negative_binomial_distribution<> D;
+ typedef std::minstd_rand G;
+ G g;
+ D d(5, .25);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.k() * (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
+ double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.02);
+}
+
+void
+test2()
+{
+ typedef std::negative_binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(30, .03125);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.k() * (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
+ double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+void
+test3()
+{
+ typedef std::negative_binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(40, .25);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.k() * (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
+ double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.03);
+}
+
+void
+test4()
{
+ typedef std::negative_binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(40, 1);
+ const int N = 1000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::negative_binomial_distribution<> D;
- typedef std::minstd_rand G;
- G g;
- D d(5, .25);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.k() * (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
- double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.02);
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::negative_binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(30, .03125);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.k() * (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
- double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.k() * (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
+ double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
+ assert(mean == x_mean);
+ assert(var == x_var);
+}
+
+void
+test5()
+{
+ typedef std::negative_binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(400, 0.5);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::negative_binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(40, .25);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.k() * (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
- double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.03);
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::negative_binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(40, 1);
- const int N = 1000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.k() * (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
- double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
- assert(mean == x_mean);
- assert(var == x_var);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.k() * (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
+ double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.04);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.05);
+}
+
+void
+test6()
+{
+ typedef std::negative_binomial_distribution<> D;
+ typedef std::mt19937 G;
+ G g;
+ D d(1, 0.05);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::negative_binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(400, 0.5);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.k() * (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
- double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.04);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.05);
+ D::result_type v = d(g);
+ assert(d.min() <= v && v <= d.max());
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(),
+ double(0)) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::negative_binomial_distribution<> D;
- typedef std::mt19937 G;
- G g;
- D d(1, 0.05);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v <= d.max());
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(),
- double(0)) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.k() * (1 - d.p()) / d.p();
- double x_var = x_mean / d.p();
- double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
- double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.03);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.k() * (1 - d.p()) / d.p();
+ double x_var = x_mean / d.p();
+ double x_skew = (2 - d.p()) / std::sqrt(d.k() * (1 - d.p()));
+ double x_kurtosis = 6. / d.k() + sqr(d.p()) / (d.k() * (1 - d.p()));
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.03);
+}
+
+int main()
+{
+ test1();
+ test2();
+ test3();
+ test4();
+ test5();
+ test6();
}
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval_param.pass.cpp
index f2f2a07879e2..2710061a1a05 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval_param.pass.cpp
@@ -53,10 +53,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -95,10 +95,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -137,10 +137,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval.pass.cpp
index 6fbdd93f8ffd..f6bc3c73993c 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval.pass.cpp
@@ -51,10 +51,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -91,10 +91,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -131,10 +131,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval_param.pass.cpp
index 548848d19f3e..fd52a0488979 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval_param.pass.cpp
@@ -52,10 +52,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -93,10 +93,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -134,10 +134,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval.pass.cpp
index 9b111cced8a8..2ad6784cd878 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval.pass.cpp
@@ -29,216 +29,236 @@ sqr(T x)
return x * x;
}
-int main()
+void
+test1()
+{
+ typedef std::lognormal_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(-1./8192, 0.015625);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(v > 0);
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = std::exp(d.m() + sqr(d.s())/2);
+ double x_var = (std::exp(sqr(d.s())) - 1) * std::exp(2*d.m() + sqr(d.s()));
+ double x_skew = (std::exp(sqr(d.s())) + 2) *
+ std::sqrt((std::exp(sqr(d.s())) - 1));
+ double x_kurtosis = std::exp(4*sqr(d.s())) + 2*std::exp(3*sqr(d.s())) +
+ 3*std::exp(2*sqr(d.s())) - 6;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.05);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.25);
+}
+
+void
+test2()
{
+ typedef std::lognormal_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(-1./32, 0.25);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::lognormal_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(-1./8192, 0.015625);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(v > 0);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = std::exp(d.m() + sqr(d.s())/2);
- double x_var = (std::exp(sqr(d.s())) - 1) * std::exp(2*d.m() + sqr(d.s()));
- double x_skew = (std::exp(sqr(d.s())) + 2) *
- std::sqrt((std::exp(sqr(d.s())) - 1));
- double x_kurtosis = std::exp(4*sqr(d.s())) + 2*std::exp(3*sqr(d.s())) +
- 3*std::exp(2*sqr(d.s())) - 6;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.05);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.25);
+ D::result_type v = d(g);
+ assert(v > 0);
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::lognormal_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(-1./32, 0.25);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(v > 0);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = std::exp(d.m() + sqr(d.s())/2);
- double x_var = (std::exp(sqr(d.s())) - 1) * std::exp(2*d.m() + sqr(d.s()));
- double x_skew = (std::exp(sqr(d.s())) + 2) *
- std::sqrt((std::exp(sqr(d.s())) - 1));
- double x_kurtosis = std::exp(4*sqr(d.s())) + 2*std::exp(3*sqr(d.s())) +
- 3*std::exp(2*sqr(d.s())) - 6;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.03);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = std::exp(d.m() + sqr(d.s())/2);
+ double x_var = (std::exp(sqr(d.s())) - 1) * std::exp(2*d.m() + sqr(d.s()));
+ double x_skew = (std::exp(sqr(d.s())) + 2) *
+ std::sqrt((std::exp(sqr(d.s())) - 1));
+ double x_kurtosis = std::exp(4*sqr(d.s())) + 2*std::exp(3*sqr(d.s())) +
+ 3*std::exp(2*sqr(d.s())) - 6;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.03);
+}
+
+void
+test3()
+{
+ typedef std::lognormal_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(-1./8, 0.5);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::lognormal_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(-1./8, 0.5);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(v > 0);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = std::exp(d.m() + sqr(d.s())/2);
- double x_var = (std::exp(sqr(d.s())) - 1) * std::exp(2*d.m() + sqr(d.s()));
- double x_skew = (std::exp(sqr(d.s())) + 2) *
- std::sqrt((std::exp(sqr(d.s())) - 1));
- double x_kurtosis = std::exp(4*sqr(d.s())) + 2*std::exp(3*sqr(d.s())) +
- 3*std::exp(2*sqr(d.s())) - 6;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.02);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.05);
+ D::result_type v = d(g);
+ assert(v > 0);
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::lognormal_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d;
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(v > 0);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = std::exp(d.m() + sqr(d.s())/2);
- double x_var = (std::exp(sqr(d.s())) - 1) * std::exp(2*d.m() + sqr(d.s()));
- double x_skew = (std::exp(sqr(d.s())) + 2) *
- std::sqrt((std::exp(sqr(d.s())) - 1));
- double x_kurtosis = std::exp(4*sqr(d.s())) + 2*std::exp(3*sqr(d.s())) +
- 3*std::exp(2*sqr(d.s())) - 6;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.02);
- assert(std::abs((skew - x_skew) / x_skew) < 0.08);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.4);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = std::exp(d.m() + sqr(d.s())/2);
+ double x_var = (std::exp(sqr(d.s())) - 1) * std::exp(2*d.m() + sqr(d.s()));
+ double x_skew = (std::exp(sqr(d.s())) + 2) *
+ std::sqrt((std::exp(sqr(d.s())) - 1));
+ double x_kurtosis = std::exp(4*sqr(d.s())) + 2*std::exp(3*sqr(d.s())) +
+ 3*std::exp(2*sqr(d.s())) - 6;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.02);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.05);
+}
+
+void
+test4()
+{
+ typedef std::lognormal_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d;
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::lognormal_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(-0.78125, 1.25);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(v > 0);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = std::exp(d.m() + sqr(d.s())/2);
- double x_var = (std::exp(sqr(d.s())) - 1) * std::exp(2*d.m() + sqr(d.s()));
- double x_skew = (std::exp(sqr(d.s())) + 2) *
- std::sqrt((std::exp(sqr(d.s())) - 1));
- double x_kurtosis = std::exp(4*sqr(d.s())) + 2*std::exp(3*sqr(d.s())) +
- 3*std::exp(2*sqr(d.s())) - 6;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.04);
- assert(std::abs((skew - x_skew) / x_skew) < 0.2);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.7);
+ D::result_type v = d(g);
+ assert(v > 0);
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = std::exp(d.m() + sqr(d.s())/2);
+ double x_var = (std::exp(sqr(d.s())) - 1) * std::exp(2*d.m() + sqr(d.s()));
+ double x_skew = (std::exp(sqr(d.s())) + 2) *
+ std::sqrt((std::exp(sqr(d.s())) - 1));
+ double x_kurtosis = std::exp(4*sqr(d.s())) + 2*std::exp(3*sqr(d.s())) +
+ 3*std::exp(2*sqr(d.s())) - 6;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.02);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.08);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.4);
+}
+
+void
+test5()
+{
+ typedef std::lognormal_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(-0.78125, 1.25);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(v > 0);
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = std::exp(d.m() + sqr(d.s())/2);
+ double x_var = (std::exp(sqr(d.s())) - 1) * std::exp(2*d.m() + sqr(d.s()));
+ double x_skew = (std::exp(sqr(d.s())) + 2) *
+ std::sqrt((std::exp(sqr(d.s())) - 1));
+ double x_kurtosis = std::exp(4*sqr(d.s())) + 2*std::exp(3*sqr(d.s())) +
+ 3*std::exp(2*sqr(d.s())) - 6;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.04);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.2);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.7);
+}
+
+int main()
+{
+ test1();
+ test2();
+ test3();
+ test4();
+ test5();
}
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval_param.pass.cpp
index 283403ea1a0d..8f397fcab096 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval_param.pass.cpp
@@ -29,222 +29,241 @@ sqr(T x)
return x * x;
}
-int main()
+void
+test1()
{
+ typedef std::lognormal_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d;
+ P p(-1./8192, 0.015625);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g, p);
+ assert(v > 0);
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = std::exp(p.m() + sqr(p.s())/2);
+ double x_var = (std::exp(sqr(p.s())) - 1) * std::exp(2*p.m() + sqr(p.s()));
+ double x_skew = (std::exp(sqr(p.s())) + 2) *
+ std::sqrt((std::exp(sqr(p.s())) - 1));
+ double x_kurtosis = std::exp(4*sqr(p.s())) + 2*std::exp(3*sqr(p.s())) +
+ 3*std::exp(2*sqr(p.s())) - 6;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.05);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.25);
+}
+
+void
+test2()
+{
+ typedef std::lognormal_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d;
+ P p(-1./32, 0.25);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g, p);
+ assert(v > 0);
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = std::exp(p.m() + sqr(p.s())/2);
+ double x_var = (std::exp(sqr(p.s())) - 1) * std::exp(2*p.m() + sqr(p.s()));
+ double x_skew = (std::exp(sqr(p.s())) + 2) *
+ std::sqrt((std::exp(sqr(p.s())) - 1));
+ double x_kurtosis = std::exp(4*sqr(p.s())) + 2*std::exp(3*sqr(p.s())) +
+ 3*std::exp(2*sqr(p.s())) - 6;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.03);
+}
+void
+test3()
+{
+ typedef std::lognormal_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d;
+ P p(-1./8, 0.5);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::lognormal_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d;
- P p(-1./8192, 0.015625);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g, p);
- assert(v > 0);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = std::exp(p.m() + sqr(p.s())/2);
- double x_var = (std::exp(sqr(p.s())) - 1) * std::exp(2*p.m() + sqr(p.s()));
- double x_skew = (std::exp(sqr(p.s())) + 2) *
- std::sqrt((std::exp(sqr(p.s())) - 1));
- double x_kurtosis = std::exp(4*sqr(p.s())) + 2*std::exp(3*sqr(p.s())) +
- 3*std::exp(2*sqr(p.s())) - 6;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.05);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.25);
+ D::result_type v = d(g, p);
+ assert(v > 0);
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::lognormal_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d;
- P p(-1./32, 0.25);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g, p);
- assert(v > 0);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = std::exp(p.m() + sqr(p.s())/2);
- double x_var = (std::exp(sqr(p.s())) - 1) * std::exp(2*p.m() + sqr(p.s()));
- double x_skew = (std::exp(sqr(p.s())) + 2) *
- std::sqrt((std::exp(sqr(p.s())) - 1));
- double x_kurtosis = std::exp(4*sqr(p.s())) + 2*std::exp(3*sqr(p.s())) +
- 3*std::exp(2*sqr(p.s())) - 6;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.03);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = std::exp(p.m() + sqr(p.s())/2);
+ double x_var = (std::exp(sqr(p.s())) - 1) * std::exp(2*p.m() + sqr(p.s()));
+ double x_skew = (std::exp(sqr(p.s())) + 2) *
+ std::sqrt((std::exp(sqr(p.s())) - 1));
+ double x_kurtosis = std::exp(4*sqr(p.s())) + 2*std::exp(3*sqr(p.s())) +
+ 3*std::exp(2*sqr(p.s())) - 6;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.02);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.05);
+}
+
+void
+test4()
+{
+ typedef std::lognormal_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(3, 4);
+ P p;
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::lognormal_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d;
- P p(-1./8, 0.5);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g, p);
- assert(v > 0);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = std::exp(p.m() + sqr(p.s())/2);
- double x_var = (std::exp(sqr(p.s())) - 1) * std::exp(2*p.m() + sqr(p.s()));
- double x_skew = (std::exp(sqr(p.s())) + 2) *
- std::sqrt((std::exp(sqr(p.s())) - 1));
- double x_kurtosis = std::exp(4*sqr(p.s())) + 2*std::exp(3*sqr(p.s())) +
- 3*std::exp(2*sqr(p.s())) - 6;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.02);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.05);
+ D::result_type v = d(g, p);
+ assert(v > 0);
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::lognormal_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(3, 4);
- P p;
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g, p);
- assert(v > 0);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = std::exp(p.m() + sqr(p.s())/2);
- double x_var = (std::exp(sqr(p.s())) - 1) * std::exp(2*p.m() + sqr(p.s()));
- double x_skew = (std::exp(sqr(p.s())) + 2) *
- std::sqrt((std::exp(sqr(p.s())) - 1));
- double x_kurtosis = std::exp(4*sqr(p.s())) + 2*std::exp(3*sqr(p.s())) +
- 3*std::exp(2*sqr(p.s())) - 6;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.02);
- assert(std::abs((skew - x_skew) / x_skew) < 0.08);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.4);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = std::exp(p.m() + sqr(p.s())/2);
+ double x_var = (std::exp(sqr(p.s())) - 1) * std::exp(2*p.m() + sqr(p.s()));
+ double x_skew = (std::exp(sqr(p.s())) + 2) *
+ std::sqrt((std::exp(sqr(p.s())) - 1));
+ double x_kurtosis = std::exp(4*sqr(p.s())) + 2*std::exp(3*sqr(p.s())) +
+ 3*std::exp(2*sqr(p.s())) - 6;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.02);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.08);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.4);
+}
+
+void
+test5()
+{
+ typedef std::lognormal_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d;
+ P p(-0.78125, 1.25);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::lognormal_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d;
- P p(-0.78125, 1.25);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g, p);
- assert(v > 0);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = std::exp(p.m() + sqr(p.s())/2);
- double x_var = (std::exp(sqr(p.s())) - 1) * std::exp(2*p.m() + sqr(p.s()));
- double x_skew = (std::exp(sqr(p.s())) + 2) *
- std::sqrt((std::exp(sqr(p.s())) - 1));
- double x_kurtosis = std::exp(4*sqr(p.s())) + 2*std::exp(3*sqr(p.s())) +
- 3*std::exp(2*sqr(p.s())) - 6;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.04);
- assert(std::abs((skew - x_skew) / x_skew) < 0.2);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.7);
+ D::result_type v = d(g, p);
+ assert(v > 0);
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = std::exp(p.m() + sqr(p.s())/2);
+ double x_var = (std::exp(sqr(p.s())) - 1) * std::exp(2*p.m() + sqr(p.s()));
+ double x_skew = (std::exp(sqr(p.s())) + 2) *
+ std::sqrt((std::exp(sqr(p.s())) - 1));
+ double x_kurtosis = std::exp(4*sqr(p.s())) + 2*std::exp(3*sqr(p.s())) +
+ 3*std::exp(2*sqr(p.s())) - 6;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.04);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.2);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.7);
+}
+
+int main()
+{
+ test1();
+ test2();
+ test3();
+ test4();
+ test5();
}
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval.pass.cpp
index 95d0272dbc32..69f786397711 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval.pass.cpp
@@ -47,10 +47,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval_param.pass.cpp
index 20c3a44f13e1..af9c547cb7f9 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval_param.pass.cpp
@@ -48,10 +48,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval.pass.cpp
index ef6b37e9f9cc..9210e8a8d350 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval.pass.cpp
@@ -47,10 +47,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -83,10 +83,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -119,10 +119,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval_param.pass.cpp
index 70bc29e3ad13..93053f0a36b7 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval_param.pass.cpp
@@ -48,10 +48,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -85,10 +85,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -122,10 +122,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval.pass.cpp
index b2fe52676e7e..42965b0e6ab2 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval.pass.cpp
@@ -51,10 +51,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -91,10 +91,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -131,10 +131,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval_param.pass.cpp
index 9879e63a33e9..e7de18fdb434 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval_param.pass.cpp
@@ -52,10 +52,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval.pass.cpp
index 6390acef8941..3f1b331889e5 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval.pass.cpp
@@ -29,162 +29,178 @@ sqr(T x)
return x * x;
}
-int main()
+void
+test1()
+{
+ typedef std::extreme_value_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(0.5, 2);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.a() + d.b() * 0.577215665;
+ double x_var = sqr(d.b()) * 1.644934067;
+ double x_skew = 1.139547;
+ double x_kurtosis = 12./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+void
+test2()
+{
+ typedef std::extreme_value_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(1, 2);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.a() + d.b() * 0.577215665;
+ double x_var = sqr(d.b()) * 1.644934067;
+ double x_skew = 1.139547;
+ double x_kurtosis = 12./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+void
+test3()
{
+ typedef std::extreme_value_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(1.5, 3);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::extreme_value_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(0.5, 2);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.a() + d.b() * 0.577215665;
- double x_var = sqr(d.b()) * 1.644934067;
- double x_skew = 1.139547;
- double x_kurtosis = 12./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ D::result_type v = d(g);
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::extreme_value_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(1, 2);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.a() + d.b() * 0.577215665;
- double x_var = sqr(d.b()) * 1.644934067;
- double x_skew = 1.139547;
- double x_kurtosis = 12./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.a() + d.b() * 0.577215665;
+ double x_var = sqr(d.b()) * 1.644934067;
+ double x_skew = 1.139547;
+ double x_kurtosis = 12./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+void
+test4()
+{
+ typedef std::extreme_value_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(3, 4);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::extreme_value_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(1.5, 3);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.a() + d.b() * 0.577215665;
- double x_var = sqr(d.b()) * 1.644934067;
- double x_skew = 1.139547;
- double x_kurtosis = 12./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ D::result_type v = d(g);
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::extreme_value_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(3, 4);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = d.a() + d.b() * 0.577215665;
- double x_var = sqr(d.b()) * 1.644934067;
- double x_skew = 1.139547;
- double x_kurtosis = 12./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = d.a() + d.b() * 0.577215665;
+ double x_var = sqr(d.b()) * 1.644934067;
+ double x_skew = 1.139547;
+ double x_kurtosis = 12./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+int main()
+{
+ test1();
+ test2();
+ test3();
+ test4();
}
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval_param.pass.cpp
index 6152cce8f4f8..21bf774228f8 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval_param.pass.cpp
@@ -29,166 +29,182 @@ sqr(T x)
return x * x;
}
-int main()
+void
+test1()
+{
+ typedef std::extreme_value_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(-0.5, 1);
+ P p(0.5, 2);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g, p);
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = p.a() + p.b() * 0.577215665;
+ double x_var = sqr(p.b()) * 1.644934067;
+ double x_skew = 1.139547;
+ double x_kurtosis = 12./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+void
+test2()
+{
+ typedef std::extreme_value_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(-0.5, 1);
+ P p(1, 2);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g, p);
+ u.push_back(v);
+ }
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
+ {
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
+ }
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = p.a() + p.b() * 0.577215665;
+ double x_var = sqr(p.b()) * 1.644934067;
+ double x_skew = 1.139547;
+ double x_kurtosis = 12./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+void
+test3()
{
+ typedef std::extreme_value_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(-0.5, 1);
+ P p(1.5, 3);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::extreme_value_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(-0.5, 1);
- P p(0.5, 2);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g, p);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = p.a() + p.b() * 0.577215665;
- double x_var = sqr(p.b()) * 1.644934067;
- double x_skew = 1.139547;
- double x_kurtosis = 12./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ D::result_type v = d(g, p);
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::extreme_value_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(-0.5, 1);
- P p(1, 2);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g, p);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = p.a() + p.b() * 0.577215665;
- double x_var = sqr(p.b()) * 1.644934067;
- double x_skew = 1.139547;
- double x_kurtosis = 12./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = p.a() + p.b() * 0.577215665;
+ double x_var = sqr(p.b()) * 1.644934067;
+ double x_skew = 1.139547;
+ double x_kurtosis = 12./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+void
+test4()
+{
+ typedef std::extreme_value_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937 G;
+ G g;
+ D d(-0.5, 1);
+ P p(3, 4);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::extreme_value_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(-0.5, 1);
- P p(1.5, 3);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g, p);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = p.a() + p.b() * 0.577215665;
- double x_var = sqr(p.b()) * 1.644934067;
- double x_skew = 1.139547;
- double x_kurtosis = 12./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ D::result_type v = d(g, p);
+ u.push_back(v);
}
+ double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (int i = 0; i < u.size(); ++i)
{
- typedef std::extreme_value_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937 G;
- G g;
- D d(-0.5, 1);
- P p(3, 4);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g, p);
- u.push_back(v);
- }
- double mean = std::accumulate(u.begin(), u.end(), 0.0) / u.size();
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (int i = 0; i < u.size(); ++i)
- {
- double d = (u[i] - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= u.size();
- double dev = std::sqrt(var);
- skew /= u.size() * dev * var;
- kurtosis /= u.size() * var * var;
- kurtosis -= 3;
- double x_mean = p.a() + p.b() * 0.577215665;
- double x_var = sqr(p.b()) * 1.644934067;
- double x_skew = 1.139547;
- double x_kurtosis = 12./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs((skew - x_skew) / x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= u.size();
+ double dev = std::sqrt(var);
+ skew /= u.size() * dev * var;
+ kurtosis /= u.size() * var * var;
+ kurtosis -= 3;
+ double x_mean = p.a() + p.b() * 0.577215665;
+ double x_var = sqr(p.b()) * 1.644934067;
+ double x_skew = 1.139547;
+ double x_kurtosis = 12./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs((skew - x_skew) / x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+}
+
+int main()
+{
+ test1();
+ test2();
+ test3();
+ test4();
}
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval.pass.cpp
index 7c26cc8a1c47..7c23630ed1e1 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval.pass.cpp
@@ -51,10 +51,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -91,10 +91,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -131,10 +131,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval_param.pass.cpp
index 8ed39df819d7..54a89b6b3f40 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval_param.pass.cpp
@@ -52,10 +52,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -93,10 +93,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -134,10 +134,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval.pass.cpp
index f5598978bf0a..a475624a58a8 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval.pass.cpp
@@ -50,10 +50,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -89,10 +89,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -128,10 +128,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval_param.pass.cpp
index c3bbdeb0ed6c..d24fbd9f9cf5 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval_param.pass.cpp
@@ -52,10 +52,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -93,10 +93,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -134,10 +134,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval.pass.cpp
index e414932dc870..cfec8c0d81e1 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval.pass.cpp
@@ -51,10 +51,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -95,10 +95,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -139,10 +139,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval_param.pass.cpp
index 6da705eb26c7..a19654dbd575 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval_param.pass.cpp
@@ -52,10 +52,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -97,10 +97,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -142,10 +142,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval.pass.cpp
index 5d14b3612b2e..3111912ec29c 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval.pass.cpp
@@ -20,6 +20,7 @@
#include <vector>
#include <iterator>
#include <numeric>
+#include <algorithm> // for sort
#include <cassert>
template <class T>
@@ -30,666 +31,710 @@ sqr(T x)
return x*x;
}
-int main()
+void
+test1()
{
+ typedef std::piecewise_constant_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16, 17};
+ double p[] = {25, 62.5, 12.5};
+ const size_t Np = sizeof(p) / sizeof(p[0]);
+ D d(b, b+Np+1, p);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::piecewise_constant_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16, 17};
- double p[] = {25, 62.5, 12.5};
- const size_t Np = sizeof(p) / sizeof(p[0]);
- D d(b, b+Np+1, p);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::vector<double> prob(std::begin(p), std::end(p));
- double s = std::accumulate(prob.begin(), prob.end(), 0.0);
- for (int i = 0; i < prob.size(); ++i)
- prob[i] /= s;
- std::sort(u.begin(), u.end());
- for (int i = 0; i < Np; ++i)
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::vector<double> prob(std::begin(p), std::end(p));
+ double s = std::accumulate(prob.begin(), prob.end(), 0.0);
+ for (int i = 0; i < prob.size(); ++i)
+ prob[i] /= s;
+ std::sort(u.begin(), u.end());
+ for (int i = 0; i < Np; ++i)
+ {
+ typedef std::vector<D::result_type>::iterator I;
+ I lb = std::lower_bound(u.begin(), u.end(), b[i]);
+ I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
+ const size_t Ni = ub - lb;
+ if (prob[i] == 0)
+ assert(Ni == 0);
+ else
{
- typedef std::vector<D::result_type>::iterator I;
- I lb = std::lower_bound(u.begin(), u.end(), b[i]);
- I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
- const size_t Ni = ub - lb;
- if (prob[i] == 0)
- assert(Ni == 0);
- else
+ assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
+ double mean = std::accumulate(lb, ub, 0.0) / Ni;
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (I j = lb; j != ub; ++j)
{
- assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
- double mean = std::accumulate(lb, ub, 0.0) / Ni;
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (I j = lb; j != ub; ++j)
- {
- double d = (*j - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= Ni;
- double dev = std::sqrt(var);
- skew /= Ni * dev * var;
- kurtosis /= Ni * var * var;
- kurtosis -= 3;
- double x_mean = (b[i+1] + b[i]) / 2;
- double x_var = sqr(b[i+1] - b[i]) / 12;
- double x_skew = 0;
- double x_kurtosis = -6./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= Ni;
+ double dev = std::sqrt(var);
+ skew /= Ni * dev * var;
+ kurtosis /= Ni * var * var;
+ kurtosis -= 3;
+ double x_mean = (b[i+1] + b[i]) / 2;
+ double x_var = sqr(b[i+1] - b[i]) / 12;
+ double x_skew = 0;
+ double x_kurtosis = -6./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
}
}
+}
+
+void
+test2()
+{
+ typedef std::piecewise_constant_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16, 17};
+ double p[] = {0, 62.5, 12.5};
+ const size_t Np = sizeof(p) / sizeof(p[0]);
+ D d(b, b+Np+1, p);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::piecewise_constant_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16, 17};
- double p[] = {0, 62.5, 12.5};
- const size_t Np = sizeof(p) / sizeof(p[0]);
- D d(b, b+Np+1, p);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::vector<double> prob(std::begin(p), std::end(p));
- double s = std::accumulate(prob.begin(), prob.end(), 0.0);
- for (int i = 0; i < prob.size(); ++i)
- prob[i] /= s;
- std::sort(u.begin(), u.end());
- for (int i = 0; i < Np; ++i)
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::vector<double> prob(std::begin(p), std::end(p));
+ double s = std::accumulate(prob.begin(), prob.end(), 0.0);
+ for (int i = 0; i < prob.size(); ++i)
+ prob[i] /= s;
+ std::sort(u.begin(), u.end());
+ for (int i = 0; i < Np; ++i)
+ {
+ typedef std::vector<D::result_type>::iterator I;
+ I lb = std::lower_bound(u.begin(), u.end(), b[i]);
+ I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
+ const size_t Ni = ub - lb;
+ if (prob[i] == 0)
+ assert(Ni == 0);
+ else
{
- typedef std::vector<D::result_type>::iterator I;
- I lb = std::lower_bound(u.begin(), u.end(), b[i]);
- I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
- const size_t Ni = ub - lb;
- if (prob[i] == 0)
- assert(Ni == 0);
- else
+ assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
+ double mean = std::accumulate(lb, ub, 0.0) / Ni;
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (I j = lb; j != ub; ++j)
{
- assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
- double mean = std::accumulate(lb, ub, 0.0) / Ni;
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (I j = lb; j != ub; ++j)
- {
- double d = (*j - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= Ni;
- double dev = std::sqrt(var);
- skew /= Ni * dev * var;
- kurtosis /= Ni * var * var;
- kurtosis -= 3;
- double x_mean = (b[i+1] + b[i]) / 2;
- double x_var = sqr(b[i+1] - b[i]) / 12;
- double x_skew = 0;
- double x_kurtosis = -6./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= Ni;
+ double dev = std::sqrt(var);
+ skew /= Ni * dev * var;
+ kurtosis /= Ni * var * var;
+ kurtosis -= 3;
+ double x_mean = (b[i+1] + b[i]) / 2;
+ double x_var = sqr(b[i+1] - b[i]) / 12;
+ double x_skew = 0;
+ double x_kurtosis = -6./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
}
}
+}
+
+void
+test3()
+{
+ typedef std::piecewise_constant_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16, 17};
+ double p[] = {25, 0, 12.5};
+ const size_t Np = sizeof(p) / sizeof(p[0]);
+ D d(b, b+Np+1, p);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::vector<double> prob(std::begin(p), std::end(p));
+ double s = std::accumulate(prob.begin(), prob.end(), 0.0);
+ for (int i = 0; i < prob.size(); ++i)
+ prob[i] /= s;
+ std::sort(u.begin(), u.end());
+ for (int i = 0; i < Np; ++i)
{
- typedef std::piecewise_constant_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16, 17};
- double p[] = {25, 0, 12.5};
- const size_t Np = sizeof(p) / sizeof(p[0]);
- D d(b, b+Np+1, p);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
+ typedef std::vector<D::result_type>::iterator I;
+ I lb = std::lower_bound(u.begin(), u.end(), b[i]);
+ I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
+ const size_t Ni = ub - lb;
+ if (prob[i] == 0)
+ assert(Ni == 0);
+ else
{
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::vector<double> prob(std::begin(p), std::end(p));
- double s = std::accumulate(prob.begin(), prob.end(), 0.0);
- for (int i = 0; i < prob.size(); ++i)
- prob[i] /= s;
- std::sort(u.begin(), u.end());
- for (int i = 0; i < Np; ++i)
- {
- typedef std::vector<D::result_type>::iterator I;
- I lb = std::lower_bound(u.begin(), u.end(), b[i]);
- I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
- const size_t Ni = ub - lb;
- if (prob[i] == 0)
- assert(Ni == 0);
- else
+ assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
+ double mean = std::accumulate(lb, ub, 0.0) / Ni;
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (I j = lb; j != ub; ++j)
{
- assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
- double mean = std::accumulate(lb, ub, 0.0) / Ni;
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (I j = lb; j != ub; ++j)
- {
- double d = (*j - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= Ni;
- double dev = std::sqrt(var);
- skew /= Ni * dev * var;
- kurtosis /= Ni * var * var;
- kurtosis -= 3;
- double x_mean = (b[i+1] + b[i]) / 2;
- double x_var = sqr(b[i+1] - b[i]) / 12;
- double x_skew = 0;
- double x_kurtosis = -6./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= Ni;
+ double dev = std::sqrt(var);
+ skew /= Ni * dev * var;
+ kurtosis /= Ni * var * var;
+ kurtosis -= 3;
+ double x_mean = (b[i+1] + b[i]) / 2;
+ double x_var = sqr(b[i+1] - b[i]) / 12;
+ double x_skew = 0;
+ double x_kurtosis = -6./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
}
}
+}
+
+void
+test4()
+{
+ typedef std::piecewise_constant_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16, 17};
+ double p[] = {25, 62.5, 0};
+ const size_t Np = sizeof(p) / sizeof(p[0]);
+ D d(b, b+Np+1, p);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::vector<double> prob(std::begin(p), std::end(p));
+ double s = std::accumulate(prob.begin(), prob.end(), 0.0);
+ for (int i = 0; i < prob.size(); ++i)
+ prob[i] /= s;
+ std::sort(u.begin(), u.end());
+ for (int i = 0; i < Np; ++i)
{
- typedef std::piecewise_constant_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16, 17};
- double p[] = {25, 62.5, 0};
- const size_t Np = sizeof(p) / sizeof(p[0]);
- D d(b, b+Np+1, p);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::vector<double> prob(std::begin(p), std::end(p));
- double s = std::accumulate(prob.begin(), prob.end(), 0.0);
- for (int i = 0; i < prob.size(); ++i)
- prob[i] /= s;
- std::sort(u.begin(), u.end());
- for (int i = 0; i < Np; ++i)
+ typedef std::vector<D::result_type>::iterator I;
+ I lb = std::lower_bound(u.begin(), u.end(), b[i]);
+ I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
+ const size_t Ni = ub - lb;
+ if (prob[i] == 0)
+ assert(Ni == 0);
+ else
{
- typedef std::vector<D::result_type>::iterator I;
- I lb = std::lower_bound(u.begin(), u.end(), b[i]);
- I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
- const size_t Ni = ub - lb;
- if (prob[i] == 0)
- assert(Ni == 0);
- else
+ assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
+ double mean = std::accumulate(lb, ub, 0.0) / Ni;
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (I j = lb; j != ub; ++j)
{
- assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
- double mean = std::accumulate(lb, ub, 0.0) / Ni;
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (I j = lb; j != ub; ++j)
- {
- double d = (*j - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= Ni;
- double dev = std::sqrt(var);
- skew /= Ni * dev * var;
- kurtosis /= Ni * var * var;
- kurtosis -= 3;
- double x_mean = (b[i+1] + b[i]) / 2;
- double x_var = sqr(b[i+1] - b[i]) / 12;
- double x_skew = 0;
- double x_kurtosis = -6./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= Ni;
+ double dev = std::sqrt(var);
+ skew /= Ni * dev * var;
+ kurtosis /= Ni * var * var;
+ kurtosis -= 3;
+ double x_mean = (b[i+1] + b[i]) / 2;
+ double x_var = sqr(b[i+1] - b[i]) / 12;
+ double x_skew = 0;
+ double x_kurtosis = -6./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
}
}
+}
+
+void
+test5()
+{
+ typedef std::piecewise_constant_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16, 17};
+ double p[] = {25, 0, 0};
+ const size_t Np = sizeof(p) / sizeof(p[0]);
+ D d(b, b+Np+1, p);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::piecewise_constant_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16, 17};
- double p[] = {25, 0, 0};
- const size_t Np = sizeof(p) / sizeof(p[0]);
- D d(b, b+Np+1, p);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::vector<double> prob(std::begin(p), std::end(p));
- double s = std::accumulate(prob.begin(), prob.end(), 0.0);
- for (int i = 0; i < prob.size(); ++i)
- prob[i] /= s;
- std::sort(u.begin(), u.end());
- for (int i = 0; i < Np; ++i)
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::vector<double> prob(std::begin(p), std::end(p));
+ double s = std::accumulate(prob.begin(), prob.end(), 0.0);
+ for (int i = 0; i < prob.size(); ++i)
+ prob[i] /= s;
+ std::sort(u.begin(), u.end());
+ for (int i = 0; i < Np; ++i)
+ {
+ typedef std::vector<D::result_type>::iterator I;
+ I lb = std::lower_bound(u.begin(), u.end(), b[i]);
+ I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
+ const size_t Ni = ub - lb;
+ if (prob[i] == 0)
+ assert(Ni == 0);
+ else
{
- typedef std::vector<D::result_type>::iterator I;
- I lb = std::lower_bound(u.begin(), u.end(), b[i]);
- I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
- const size_t Ni = ub - lb;
- if (prob[i] == 0)
- assert(Ni == 0);
- else
+ assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
+ double mean = std::accumulate(lb, ub, 0.0) / Ni;
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (I j = lb; j != ub; ++j)
{
- assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
- double mean = std::accumulate(lb, ub, 0.0) / Ni;
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (I j = lb; j != ub; ++j)
- {
- double d = (*j - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= Ni;
- double dev = std::sqrt(var);
- skew /= Ni * dev * var;
- kurtosis /= Ni * var * var;
- kurtosis -= 3;
- double x_mean = (b[i+1] + b[i]) / 2;
- double x_var = sqr(b[i+1] - b[i]) / 12;
- double x_skew = 0;
- double x_kurtosis = -6./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= Ni;
+ double dev = std::sqrt(var);
+ skew /= Ni * dev * var;
+ kurtosis /= Ni * var * var;
+ kurtosis -= 3;
+ double x_mean = (b[i+1] + b[i]) / 2;
+ double x_var = sqr(b[i+1] - b[i]) / 12;
+ double x_skew = 0;
+ double x_kurtosis = -6./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
}
}
+}
+
+void
+test6()
+{
+ typedef std::piecewise_constant_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16, 17};
+ double p[] = {0, 25, 0};
+ const size_t Np = sizeof(p) / sizeof(p[0]);
+ D d(b, b+Np+1, p);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::vector<double> prob(std::begin(p), std::end(p));
+ double s = std::accumulate(prob.begin(), prob.end(), 0.0);
+ for (int i = 0; i < prob.size(); ++i)
+ prob[i] /= s;
+ std::sort(u.begin(), u.end());
+ for (int i = 0; i < Np; ++i)
{
- typedef std::piecewise_constant_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16, 17};
- double p[] = {0, 25, 0};
- const size_t Np = sizeof(p) / sizeof(p[0]);
- D d(b, b+Np+1, p);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::vector<double> prob(std::begin(p), std::end(p));
- double s = std::accumulate(prob.begin(), prob.end(), 0.0);
- for (int i = 0; i < prob.size(); ++i)
- prob[i] /= s;
- std::sort(u.begin(), u.end());
- for (int i = 0; i < Np; ++i)
+ typedef std::vector<D::result_type>::iterator I;
+ I lb = std::lower_bound(u.begin(), u.end(), b[i]);
+ I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
+ const size_t Ni = ub - lb;
+ if (prob[i] == 0)
+ assert(Ni == 0);
+ else
{
- typedef std::vector<D::result_type>::iterator I;
- I lb = std::lower_bound(u.begin(), u.end(), b[i]);
- I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
- const size_t Ni = ub - lb;
- if (prob[i] == 0)
- assert(Ni == 0);
- else
+ assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
+ double mean = std::accumulate(lb, ub, 0.0) / Ni;
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (I j = lb; j != ub; ++j)
{
- assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
- double mean = std::accumulate(lb, ub, 0.0) / Ni;
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (I j = lb; j != ub; ++j)
- {
- double d = (*j - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= Ni;
- double dev = std::sqrt(var);
- skew /= Ni * dev * var;
- kurtosis /= Ni * var * var;
- kurtosis -= 3;
- double x_mean = (b[i+1] + b[i]) / 2;
- double x_var = sqr(b[i+1] - b[i]) / 12;
- double x_skew = 0;
- double x_kurtosis = -6./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= Ni;
+ double dev = std::sqrt(var);
+ skew /= Ni * dev * var;
+ kurtosis /= Ni * var * var;
+ kurtosis -= 3;
+ double x_mean = (b[i+1] + b[i]) / 2;
+ double x_var = sqr(b[i+1] - b[i]) / 12;
+ double x_skew = 0;
+ double x_kurtosis = -6./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
}
}
+}
+
+void
+test7()
+{
+ typedef std::piecewise_constant_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16, 17};
+ double p[] = {0, 0, 1};
+ const size_t Np = sizeof(p) / sizeof(p[0]);
+ D d(b, b+Np+1, p);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::piecewise_constant_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16, 17};
- double p[] = {0, 0, 1};
- const size_t Np = sizeof(p) / sizeof(p[0]);
- D d(b, b+Np+1, p);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::vector<double> prob(std::begin(p), std::end(p));
- double s = std::accumulate(prob.begin(), prob.end(), 0.0);
- for (int i = 0; i < prob.size(); ++i)
- prob[i] /= s;
- std::sort(u.begin(), u.end());
- for (int i = 0; i < Np; ++i)
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::vector<double> prob(std::begin(p), std::end(p));
+ double s = std::accumulate(prob.begin(), prob.end(), 0.0);
+ for (int i = 0; i < prob.size(); ++i)
+ prob[i] /= s;
+ std::sort(u.begin(), u.end());
+ for (int i = 0; i < Np; ++i)
+ {
+ typedef std::vector<D::result_type>::iterator I;
+ I lb = std::lower_bound(u.begin(), u.end(), b[i]);
+ I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
+ const size_t Ni = ub - lb;
+ if (prob[i] == 0)
+ assert(Ni == 0);
+ else
{
- typedef std::vector<D::result_type>::iterator I;
- I lb = std::lower_bound(u.begin(), u.end(), b[i]);
- I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
- const size_t Ni = ub - lb;
- if (prob[i] == 0)
- assert(Ni == 0);
- else
+ assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
+ double mean = std::accumulate(lb, ub, 0.0) / Ni;
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (I j = lb; j != ub; ++j)
{
- assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
- double mean = std::accumulate(lb, ub, 0.0) / Ni;
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (I j = lb; j != ub; ++j)
- {
- double d = (*j - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= Ni;
- double dev = std::sqrt(var);
- skew /= Ni * dev * var;
- kurtosis /= Ni * var * var;
- kurtosis -= 3;
- double x_mean = (b[i+1] + b[i]) / 2;
- double x_var = sqr(b[i+1] - b[i]) / 12;
- double x_skew = 0;
- double x_kurtosis = -6./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= Ni;
+ double dev = std::sqrt(var);
+ skew /= Ni * dev * var;
+ kurtosis /= Ni * var * var;
+ kurtosis -= 3;
+ double x_mean = (b[i+1] + b[i]) / 2;
+ double x_var = sqr(b[i+1] - b[i]) / 12;
+ double x_skew = 0;
+ double x_kurtosis = -6./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
}
}
+}
+
+void
+test8()
+{
+ typedef std::piecewise_constant_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16};
+ double p[] = {75, 25};
+ const size_t Np = sizeof(p) / sizeof(p[0]);
+ D d(b, b+Np+1, p);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::vector<double> prob(std::begin(p), std::end(p));
+ double s = std::accumulate(prob.begin(), prob.end(), 0.0);
+ for (int i = 0; i < prob.size(); ++i)
+ prob[i] /= s;
+ std::sort(u.begin(), u.end());
+ for (int i = 0; i < Np; ++i)
{
- typedef std::piecewise_constant_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16};
- double p[] = {75, 25};
- const size_t Np = sizeof(p) / sizeof(p[0]);
- D d(b, b+Np+1, p);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
+ typedef std::vector<D::result_type>::iterator I;
+ I lb = std::lower_bound(u.begin(), u.end(), b[i]);
+ I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
+ const size_t Ni = ub - lb;
+ if (prob[i] == 0)
+ assert(Ni == 0);
+ else
{
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::vector<double> prob(std::begin(p), std::end(p));
- double s = std::accumulate(prob.begin(), prob.end(), 0.0);
- for (int i = 0; i < prob.size(); ++i)
- prob[i] /= s;
- std::sort(u.begin(), u.end());
- for (int i = 0; i < Np; ++i)
- {
- typedef std::vector<D::result_type>::iterator I;
- I lb = std::lower_bound(u.begin(), u.end(), b[i]);
- I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
- const size_t Ni = ub - lb;
- if (prob[i] == 0)
- assert(Ni == 0);
- else
+ assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
+ double mean = std::accumulate(lb, ub, 0.0) / Ni;
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (I j = lb; j != ub; ++j)
{
- assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
- double mean = std::accumulate(lb, ub, 0.0) / Ni;
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (I j = lb; j != ub; ++j)
- {
- double d = (*j - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= Ni;
- double dev = std::sqrt(var);
- skew /= Ni * dev * var;
- kurtosis /= Ni * var * var;
- kurtosis -= 3;
- double x_mean = (b[i+1] + b[i]) / 2;
- double x_var = sqr(b[i+1] - b[i]) / 12;
- double x_skew = 0;
- double x_kurtosis = -6./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= Ni;
+ double dev = std::sqrt(var);
+ skew /= Ni * dev * var;
+ kurtosis /= Ni * var * var;
+ kurtosis -= 3;
+ double x_mean = (b[i+1] + b[i]) / 2;
+ double x_var = sqr(b[i+1] - b[i]) / 12;
+ double x_skew = 0;
+ double x_kurtosis = -6./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
}
}
+}
+
+void
+test9()
+{
+ typedef std::piecewise_constant_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16};
+ double p[] = {0, 25};
+ const size_t Np = sizeof(p) / sizeof(p[0]);
+ D d(b, b+Np+1, p);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::piecewise_constant_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16};
- double p[] = {0, 25};
- const size_t Np = sizeof(p) / sizeof(p[0]);
- D d(b, b+Np+1, p);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::vector<double> prob(std::begin(p), std::end(p));
- double s = std::accumulate(prob.begin(), prob.end(), 0.0);
- for (int i = 0; i < prob.size(); ++i)
- prob[i] /= s;
- std::sort(u.begin(), u.end());
- for (int i = 0; i < Np; ++i)
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::vector<double> prob(std::begin(p), std::end(p));
+ double s = std::accumulate(prob.begin(), prob.end(), 0.0);
+ for (int i = 0; i < prob.size(); ++i)
+ prob[i] /= s;
+ std::sort(u.begin(), u.end());
+ for (int i = 0; i < Np; ++i)
+ {
+ typedef std::vector<D::result_type>::iterator I;
+ I lb = std::lower_bound(u.begin(), u.end(), b[i]);
+ I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
+ const size_t Ni = ub - lb;
+ if (prob[i] == 0)
+ assert(Ni == 0);
+ else
{
- typedef std::vector<D::result_type>::iterator I;
- I lb = std::lower_bound(u.begin(), u.end(), b[i]);
- I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
- const size_t Ni = ub - lb;
- if (prob[i] == 0)
- assert(Ni == 0);
- else
+ assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
+ double mean = std::accumulate(lb, ub, 0.0) / Ni;
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (I j = lb; j != ub; ++j)
{
- assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
- double mean = std::accumulate(lb, ub, 0.0) / Ni;
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (I j = lb; j != ub; ++j)
- {
- double d = (*j - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= Ni;
- double dev = std::sqrt(var);
- skew /= Ni * dev * var;
- kurtosis /= Ni * var * var;
- kurtosis -= 3;
- double x_mean = (b[i+1] + b[i]) / 2;
- double x_var = sqr(b[i+1] - b[i]) / 12;
- double x_skew = 0;
- double x_kurtosis = -6./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= Ni;
+ double dev = std::sqrt(var);
+ skew /= Ni * dev * var;
+ kurtosis /= Ni * var * var;
+ kurtosis -= 3;
+ double x_mean = (b[i+1] + b[i]) / 2;
+ double x_var = sqr(b[i+1] - b[i]) / 12;
+ double x_skew = 0;
+ double x_kurtosis = -6./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
}
}
+}
+
+void
+test10()
+{
+ typedef std::piecewise_constant_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16};
+ double p[] = {1, 0};
+ const size_t Np = sizeof(p) / sizeof(p[0]);
+ D d(b, b+Np+1, p);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::piecewise_constant_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16};
- double p[] = {1, 0};
- const size_t Np = sizeof(p) / sizeof(p[0]);
- D d(b, b+Np+1, p);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::vector<double> prob(std::begin(p), std::end(p));
- double s = std::accumulate(prob.begin(), prob.end(), 0.0);
- for (int i = 0; i < prob.size(); ++i)
- prob[i] /= s;
- std::sort(u.begin(), u.end());
- for (int i = 0; i < Np; ++i)
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::vector<double> prob(std::begin(p), std::end(p));
+ double s = std::accumulate(prob.begin(), prob.end(), 0.0);
+ for (int i = 0; i < prob.size(); ++i)
+ prob[i] /= s;
+ std::sort(u.begin(), u.end());
+ for (int i = 0; i < Np; ++i)
+ {
+ typedef std::vector<D::result_type>::iterator I;
+ I lb = std::lower_bound(u.begin(), u.end(), b[i]);
+ I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
+ const size_t Ni = ub - lb;
+ if (prob[i] == 0)
+ assert(Ni == 0);
+ else
{
- typedef std::vector<D::result_type>::iterator I;
- I lb = std::lower_bound(u.begin(), u.end(), b[i]);
- I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
- const size_t Ni = ub - lb;
- if (prob[i] == 0)
- assert(Ni == 0);
- else
+ assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
+ double mean = std::accumulate(lb, ub, 0.0) / Ni;
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (I j = lb; j != ub; ++j)
{
- assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
- double mean = std::accumulate(lb, ub, 0.0) / Ni;
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (I j = lb; j != ub; ++j)
- {
- double d = (*j - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= Ni;
- double dev = std::sqrt(var);
- skew /= Ni * dev * var;
- kurtosis /= Ni * var * var;
- kurtosis -= 3;
- double x_mean = (b[i+1] + b[i]) / 2;
- double x_var = sqr(b[i+1] - b[i]) / 12;
- double x_skew = 0;
- double x_kurtosis = -6./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= Ni;
+ double dev = std::sqrt(var);
+ skew /= Ni * dev * var;
+ kurtosis /= Ni * var * var;
+ kurtosis -= 3;
+ double x_mean = (b[i+1] + b[i]) / 2;
+ double x_var = sqr(b[i+1] - b[i]) / 12;
+ double x_skew = 0;
+ double x_kurtosis = -6./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
}
}
+}
+
+void
+test11()
+{
+ typedef std::piecewise_constant_distribution<> D;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14};
+ double p[] = {1};
+ const size_t Np = sizeof(p) / sizeof(p[0]);
+ D d(b, b+Np+1, p);
+ const int N = 100000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::piecewise_constant_distribution<> D;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14};
- double p[] = {1};
- const size_t Np = sizeof(p) / sizeof(p[0]);
- D d(b, b+Np+1, p);
- const int N = 100000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::vector<double> prob(std::begin(p), std::end(p));
- double s = std::accumulate(prob.begin(), prob.end(), 0.0);
- for (int i = 0; i < prob.size(); ++i)
- prob[i] /= s;
- std::sort(u.begin(), u.end());
- for (int i = 0; i < Np; ++i)
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::vector<double> prob(std::begin(p), std::end(p));
+ double s = std::accumulate(prob.begin(), prob.end(), 0.0);
+ for (int i = 0; i < prob.size(); ++i)
+ prob[i] /= s;
+ std::sort(u.begin(), u.end());
+ for (int i = 0; i < Np; ++i)
+ {
+ typedef std::vector<D::result_type>::iterator I;
+ I lb = std::lower_bound(u.begin(), u.end(), b[i]);
+ I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
+ const size_t Ni = ub - lb;
+ if (prob[i] == 0)
+ assert(Ni == 0);
+ else
{
- typedef std::vector<D::result_type>::iterator I;
- I lb = std::lower_bound(u.begin(), u.end(), b[i]);
- I ub = std::lower_bound(u.begin(), u.end(), b[i+1]);
- const size_t Ni = ub - lb;
- if (prob[i] == 0)
- assert(Ni == 0);
- else
+ assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
+ double mean = std::accumulate(lb, ub, 0.0) / Ni;
+ double var = 0;
+ double skew = 0;
+ double kurtosis = 0;
+ for (I j = lb; j != ub; ++j)
{
- assert(std::abs((double)Ni/N - prob[i]) / prob[i] < .01);
- double mean = std::accumulate(lb, ub, 0.0) / Ni;
- double var = 0;
- double skew = 0;
- double kurtosis = 0;
- for (I j = lb; j != ub; ++j)
- {
- double d = (*j - mean);
- double d2 = sqr(d);
- var += d2;
- skew += d * d2;
- kurtosis += d2 * d2;
- }
- var /= Ni;
- double dev = std::sqrt(var);
- skew /= Ni * dev * var;
- kurtosis /= Ni * var * var;
- kurtosis -= 3;
- double x_mean = (b[i+1] + b[i]) / 2;
- double x_var = sqr(b[i+1] - b[i]) / 12;
- double x_skew = 0;
- double x_kurtosis = -6./5;
- assert(std::abs((mean - x_mean) / x_mean) < 0.01);
- assert(std::abs((var - x_var) / x_var) < 0.01);
- assert(std::abs(skew - x_skew) < 0.01);
- assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
+ var += d2;
+ skew += dbl * d2;
+ kurtosis += d2 * d2;
}
+ var /= Ni;
+ double dev = std::sqrt(var);
+ skew /= Ni * dev * var;
+ kurtosis /= Ni * var * var;
+ kurtosis -= 3;
+ double x_mean = (b[i+1] + b[i]) / 2;
+ double x_var = sqr(b[i+1] - b[i]) / 12;
+ double x_skew = 0;
+ double x_kurtosis = -6./5;
+ assert(std::abs((mean - x_mean) / x_mean) < 0.01);
+ assert(std::abs((var - x_var) / x_var) < 0.01);
+ assert(std::abs(skew - x_skew) < 0.01);
+ assert(std::abs((kurtosis - x_kurtosis) / x_kurtosis) < 0.01);
}
}
}
+
+int main()
+{
+ test1();
+ test2();
+ test3();
+ test4();
+ test5();
+ test6();
+ test7();
+ test8();
+ test9();
+ test10();
+ test11();
+}
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval_param.pass.cpp
index 6850115875bb..ffd53c05d37e 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval_param.pass.cpp
@@ -17,6 +17,7 @@
// template<class _URNG> result_type operator()(_URNG& g, const param_type& parm);
#include <random>
+#include <algorithm>
#include <vector>
#include <iterator>
#include <numeric>
@@ -72,10 +73,10 @@ int main()
double kurtosis = 0;
for (I j = lb; j != ub; ++j)
{
- double d = (*j - mean);
- double d2 = sqr(d);
+ double dbl = (*j - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= Ni;
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval.pass.cpp
index af75fce512e4..03da9b8960e4 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval.pass.cpp
@@ -19,10 +19,12 @@
#include <iostream>
#include <random>
+#include <algorithm>
#include <vector>
#include <iterator>
#include <numeric>
#include <cassert>
+#include <limits>
template <class T>
inline
@@ -38,306 +40,333 @@ f(double x, double a, double m, double b, double c)
return a + m*(sqr(x) - sqr(b))/2 + c*(x-b);
}
-int main()
+void
+test1()
{
+ typedef std::piecewise_linear_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16, 17};
+ double p[] = {0, 1, 1, 0};
+ const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
+ D d(b, b+Np+1, p);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::piecewise_linear_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16, 17};
- double p[] = {0, 1, 1, 0};
- const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
- D d(b, b+Np+1, p);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::sort(u.begin(), u.end());
- int kp = -1;
- double a;
- double m;
- double bk;
- double c;
- std::vector<double> areas(Np);
- double S = 0;
- for (int i = 0; i < areas.size(); ++i)
- {
- areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
- S += areas[i];
- }
- for (int i = 0; i < areas.size(); ++i)
- areas[i] /= S;
- for (int i = 0; i < Np+1; ++i)
- p[i] /= S;
- for (int i = 0; i < N; ++i)
- {
- int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
- if (k != kp)
- {
- a = 0;
- for (int j = 0; j < k; ++j)
- a += areas[j];
- m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
- bk = b[k];
- c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
- kp = k;
- }
- assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
- }
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
}
+ std::sort(u.begin(), u.end());
+ int kp = -1;
+ double a = std::numeric_limits<double>::quiet_NaN();
+ double m = std::numeric_limits<double>::quiet_NaN();
+ double bk = std::numeric_limits<double>::quiet_NaN();
+ double c = std::numeric_limits<double>::quiet_NaN();
+ std::vector<double> areas(Np);
+ double S = 0;
+ for (int i = 0; i < areas.size(); ++i)
{
- typedef std::piecewise_linear_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16, 17};
- double p[] = {0, 0, 1, 0};
- const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
- D d(b, b+Np+1, p);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::sort(u.begin(), u.end());
- int kp = -1;
- double a;
- double m;
- double bk;
- double c;
- std::vector<double> areas(Np);
- double S = 0;
- for (int i = 0; i < areas.size(); ++i)
- {
- areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
- S += areas[i];
- }
- for (int i = 0; i < areas.size(); ++i)
- areas[i] /= S;
- for (int i = 0; i < Np+1; ++i)
- p[i] /= S;
- for (int i = 0; i < N; ++i)
- {
- int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
- if (k != kp)
- {
- a = 0;
- for (int j = 0; j < k; ++j)
- a += areas[j];
- m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
- bk = b[k];
- c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
- kp = k;
- }
- assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
- }
+ areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
+ S += areas[i];
}
+ for (int i = 0; i < areas.size(); ++i)
+ areas[i] /= S;
+ for (int i = 0; i < Np+1; ++i)
+ p[i] /= S;
+ for (int i = 0; i < N; ++i)
{
- typedef std::piecewise_linear_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16, 17};
- double p[] = {1, 0, 0, 0};
- const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
- D d(b, b+Np+1, p);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::sort(u.begin(), u.end());
- int kp = -1;
- double a;
- double m;
- double bk;
- double c;
- std::vector<double> areas(Np);
- double S = 0;
- for (int i = 0; i < areas.size(); ++i)
- {
- areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
- S += areas[i];
- }
- for (int i = 0; i < areas.size(); ++i)
- areas[i] /= S;
- for (int i = 0; i < Np+1; ++i)
- p[i] /= S;
- for (int i = 0; i < N; ++i)
+ int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
+ if (k != kp)
{
- int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
- if (k != kp)
- {
- a = 0;
- for (int j = 0; j < k; ++j)
- a += areas[j];
- m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
- bk = b[k];
- c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
- kp = k;
- }
- assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
+ a = 0;
+ for (int j = 0; j < k; ++j)
+ a += areas[j];
+ m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
+ bk = b[k];
+ c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
+ kp = k;
}
+ assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
}
+}
+
+void
+test2()
+{
+ typedef std::piecewise_linear_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16, 17};
+ double p[] = {0, 0, 1, 0};
+ const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
+ D d(b, b+Np+1, p);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::piecewise_linear_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16};
- double p[] = {0, 1, 0};
- const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
- D d(b, b+Np+1, p);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::sort(u.begin(), u.end());
- int kp = -1;
- double a;
- double m;
- double bk;
- double c;
- std::vector<double> areas(Np);
- double S = 0;
- for (int i = 0; i < areas.size(); ++i)
- {
- areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
- S += areas[i];
- }
- for (int i = 0; i < areas.size(); ++i)
- areas[i] /= S;
- for (int i = 0; i < Np+1; ++i)
- p[i] /= S;
- for (int i = 0; i < N; ++i)
- {
- int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
- if (k != kp)
- {
- a = 0;
- for (int j = 0; j < k; ++j)
- a += areas[j];
- m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
- bk = b[k];
- c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
- kp = k;
- }
- assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
- }
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
}
+ std::sort(u.begin(), u.end());
+ int kp = -1;
+ double a = std::numeric_limits<double>::quiet_NaN();
+ double m = std::numeric_limits<double>::quiet_NaN();
+ double bk = std::numeric_limits<double>::quiet_NaN();
+ double c = std::numeric_limits<double>::quiet_NaN();
+ std::vector<double> areas(Np);
+ double S = 0;
+ for (int i = 0; i < areas.size(); ++i)
{
- typedef std::piecewise_linear_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14};
- double p[] = {1, 1};
- const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
- D d(b, b+Np+1, p);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
- {
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
- }
- std::sort(u.begin(), u.end());
- int kp = -1;
- double a;
- double m;
- double bk;
- double c;
- std::vector<double> areas(Np);
- double S = 0;
- for (int i = 0; i < areas.size(); ++i)
+ areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
+ S += areas[i];
+ }
+ for (int i = 0; i < areas.size(); ++i)
+ areas[i] /= S;
+ for (int i = 0; i < Np+1; ++i)
+ p[i] /= S;
+ for (int i = 0; i < N; ++i)
+ {
+ int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
+ if (k != kp)
{
- areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
- S += areas[i];
+ a = 0;
+ for (int j = 0; j < k; ++j)
+ a += areas[j];
+ m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
+ bk = b[k];
+ c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
+ kp = k;
}
- for (int i = 0; i < areas.size(); ++i)
- areas[i] /= S;
- for (int i = 0; i < Np+1; ++i)
- p[i] /= S;
- for (int i = 0; i < N; ++i)
+ assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
+ }
+}
+
+void
+test3()
+{
+ typedef std::piecewise_linear_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16, 17};
+ double p[] = {1, 0, 0, 0};
+ const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
+ D d(b, b+Np+1, p);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::sort(u.begin(), u.end());
+ int kp = -1;
+ double a = std::numeric_limits<double>::quiet_NaN();
+ double m = std::numeric_limits<double>::quiet_NaN();
+ double bk = std::numeric_limits<double>::quiet_NaN();
+ double c = std::numeric_limits<double>::quiet_NaN();
+ std::vector<double> areas(Np);
+ double S = 0;
+ for (int i = 0; i < areas.size(); ++i)
+ {
+ areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
+ S += areas[i];
+ }
+ for (int i = 0; i < areas.size(); ++i)
+ areas[i] /= S;
+ for (int i = 0; i < Np+1; ++i)
+ p[i] /= S;
+ for (int i = 0; i < N; ++i)
+ {
+ int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
+ if (k != kp)
{
- int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
- if (k != kp)
- {
- a = 0;
- for (int j = 0; j < k; ++j)
- a += areas[j];
- m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
- bk = b[k];
- c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
- kp = k;
- }
- assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
+ a = 0;
+ for (int j = 0; j < k; ++j)
+ a += areas[j];
+ m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
+ bk = b[k];
+ c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
+ kp = k;
}
+ assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
}
+}
+
+void
+test4()
+{
+ typedef std::piecewise_linear_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16};
+ double p[] = {0, 1, 0};
+ const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
+ D d(b, b+Np+1, p);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
{
- typedef std::piecewise_linear_distribution<> D;
- typedef D::param_type P;
- typedef std::mt19937_64 G;
- G g;
- double b[] = {10, 14, 16, 17};
- double p[] = {25, 62.5, 12.5, 0};
- const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
- D d(b, b+Np+1, p);
- const int N = 1000000;
- std::vector<D::result_type> u;
- for (int i = 0; i < N; ++i)
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::sort(u.begin(), u.end());
+ int kp = -1;
+ double a = std::numeric_limits<double>::quiet_NaN();
+ double m = std::numeric_limits<double>::quiet_NaN();
+ double bk = std::numeric_limits<double>::quiet_NaN();
+ double c = std::numeric_limits<double>::quiet_NaN();
+ std::vector<double> areas(Np);
+ double S = 0;
+ for (int i = 0; i < areas.size(); ++i)
+ {
+ areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
+ S += areas[i];
+ }
+ for (int i = 0; i < areas.size(); ++i)
+ areas[i] /= S;
+ for (int i = 0; i < Np+1; ++i)
+ p[i] /= S;
+ for (int i = 0; i < N; ++i)
+ {
+ int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
+ if (k != kp)
{
- D::result_type v = d(g);
- assert(d.min() <= v && v < d.max());
- u.push_back(v);
+ a = 0;
+ for (int j = 0; j < k; ++j)
+ a += areas[j];
+ assert(k < Np);
+ m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
+ bk = b[k];
+ c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
+ kp = k;
}
- std::sort(u.begin(), u.end());
- int kp = -1;
- double a;
- double m;
- double bk;
- double c;
- std::vector<double> areas(Np);
- double S = 0;
- for (int i = 0; i < areas.size(); ++i)
+ assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
+ }
+}
+
+void
+test5()
+{
+ typedef std::piecewise_linear_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14};
+ double p[] = {1, 1};
+ const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
+ D d(b, b+Np+1, p);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::sort(u.begin(), u.end());
+ int kp = -1;
+ double a = std::numeric_limits<double>::quiet_NaN();
+ double m = std::numeric_limits<double>::quiet_NaN();
+ double bk = std::numeric_limits<double>::quiet_NaN();
+ double c = std::numeric_limits<double>::quiet_NaN();
+ std::vector<double> areas(Np);
+ double S = 0;
+ for (int i = 0; i < areas.size(); ++i)
+ {
+ assert(i < Np);
+ areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
+ S += areas[i];
+ }
+ for (int i = 0; i < areas.size(); ++i)
+ areas[i] /= S;
+ for (int i = 0; i < Np+1; ++i)
+ p[i] /= S;
+ for (int i = 0; i < N; ++i)
+ {
+ int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
+ if (k != kp)
{
- areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
- S += areas[i];
+ a = 0;
+ for (int j = 0; j < k; ++j)
+ a += areas[j];
+ assert(k < Np);
+ m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
+ bk = b[k];
+ c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
+ kp = k;
}
- for (int i = 0; i < areas.size(); ++i)
- areas[i] /= S;
- for (int i = 0; i < Np+1; ++i)
- p[i] /= S;
- for (int i = 0; i < N; ++i)
+ assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
+ }
+}
+
+void
+test6()
+{
+ typedef std::piecewise_linear_distribution<> D;
+ typedef D::param_type P;
+ typedef std::mt19937_64 G;
+ G g;
+ double b[] = {10, 14, 16, 17};
+ double p[] = {25, 62.5, 12.5, 0};
+ const size_t Np = sizeof(p) / sizeof(p[0]) - 1;
+ D d(b, b+Np+1, p);
+ const int N = 1000000;
+ std::vector<D::result_type> u;
+ for (int i = 0; i < N; ++i)
+ {
+ D::result_type v = d(g);
+ assert(d.min() <= v && v < d.max());
+ u.push_back(v);
+ }
+ std::sort(u.begin(), u.end());
+ int kp = -1;
+ double a = std::numeric_limits<double>::quiet_NaN();
+ double m = std::numeric_limits<double>::quiet_NaN();
+ double bk = std::numeric_limits<double>::quiet_NaN();
+ double c = std::numeric_limits<double>::quiet_NaN();
+ std::vector<double> areas(Np);
+ double S = 0;
+ for (int i = 0; i < areas.size(); ++i)
+ {
+ areas[i] = (p[i]+p[i+1])*(b[i+1]-b[i])/2;
+ S += areas[i];
+ }
+ for (int i = 0; i < areas.size(); ++i)
+ areas[i] /= S;
+ for (int i = 0; i < Np+1; ++i)
+ p[i] /= S;
+ for (int i = 0; i < N; ++i)
+ {
+ int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
+ if (k != kp)
{
- int k = std::lower_bound(b, b+Np+1, u[i]) - b - 1;
- if (k != kp)
- {
- a = 0;
- for (int j = 0; j < k; ++j)
- a += areas[j];
- m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
- bk = b[k];
- c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
- kp = k;
- }
- assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
+ a = 0;
+ for (int j = 0; j < k; ++j)
+ a += areas[j];
+ m = (p[k+1] - p[k]) / (b[k+1] - b[k]);
+ bk = b[k];
+ c = (b[k+1]*p[k] - b[k]*p[k+1]) / (b[k+1] - b[k]);
+ kp = k;
}
+ assert(std::abs(f(u[i], a, m, bk, c) - double(i)/N) < .001);
}
}
+
+int main()
+{
+ test1();
+ test2();
+ test3();
+ test4();
+ test5();
+ test6();
+}
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval_param.pass.cpp
index fe704228e788..8054a69fed87 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval_param.pass.cpp
@@ -20,7 +20,9 @@
#include <vector>
#include <iterator>
#include <numeric>
+#include <algorithm> // for sort
#include <cassert>
+#include <limits>
template <class T>
inline
@@ -58,10 +60,10 @@ int main()
}
std::sort(u.begin(), u.end());
int kp = -1;
- double a;
- double m;
- double bk;
- double c;
+ double a = std::numeric_limits<double>::quiet_NaN();
+ double m = std::numeric_limits<double>::quiet_NaN();
+ double bk = std::numeric_limits<double>::quiet_NaN();
+ double c = std::numeric_limits<double>::quiet_NaN();
std::vector<double> areas(Np);
double S = 0;
for (int i = 0; i < areas.size(); ++i)
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval.pass.cpp
index 66693a8da55b..2abc9d4c6dd5 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval.pass.cpp
@@ -51,10 +51,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -92,10 +92,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -133,10 +133,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -174,10 +174,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -215,10 +215,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -256,10 +256,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -297,10 +297,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -338,10 +338,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -379,10 +379,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -431,10 +431,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval_param.pass.cpp
index d83d48cac1e3..849f25107fa8 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval_param.pass.cpp
@@ -51,10 +51,10 @@ int main()
double kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- double d = (u[i] - mean);
- double d2 = sqr(d);
+ double dbl = (u[i] - mean);
+ double d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval.pass.cpp
index 2663b2683bb4..e000363f3215 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval.pass.cpp
@@ -51,10 +51,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -91,10 +91,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -131,10 +131,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -171,10 +171,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -211,10 +211,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -251,10 +251,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -291,10 +291,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -331,10 +331,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -371,10 +371,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -411,10 +411,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
@@ -451,10 +451,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval_param.pass.cpp b/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval_param.pass.cpp
index b5803f401465..d351f0caed71 100644
--- a/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval_param.pass.cpp
+++ b/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval_param.pass.cpp
@@ -51,10 +51,10 @@ int main()
D::result_type kurtosis = 0;
for (int i = 0; i < u.size(); ++i)
{
- D::result_type d = (u[i] - mean);
- D::result_type d2 = sqr(d);
+ D::result_type dbl = (u[i] - mean);
+ D::result_type d2 = sqr(dbl);
var += d2;
- skew += d * d2;
+ skew += dbl * d2;
kurtosis += d2 * d2;
}
var /= u.size();
diff --git a/test/std/numerics/rand/rand.synopsis/version.pass.cpp b/test/std/numerics/rand/rand.synopsis/version.pass.cpp
deleted file mode 100644
index eae6c493e919..000000000000
--- a/test/std/numerics/rand/rand.synopsis/version.pass.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <random>
-
-#include <random>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}