blob: 79323f3e017fec63da44abf532d199976b144949 [file] [log] [blame]
Howard Hinnantd6d11712010-05-20 15:11:46 +00001//===----------------------------------------------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <random>
11
12// template<class RealType = double>
13// class piecewise_constant_distribution
14
15// piecewise_constant_distribution(initializer_list<result_type> bl,
16// UnaryOperation fw);
17
18#include <iostream>
19
20#include <random>
21#include <cassert>
22
23double f(double x)
24{
25 return x*2;
26}
27
28int main()
29{
Howard Hinnant73d21a42010-09-04 23:28:19 +000030#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
Howard Hinnantd6d11712010-05-20 15:11:46 +000031 {
32 typedef std::piecewise_constant_distribution<> D;
33 D d({}, f);
34 std::vector<double> iv = d.intervals();
35 assert(iv.size() == 2);
36 assert(iv[0] == 0);
37 assert(iv[1] == 1);
38 std::vector<double> dn = d.densities();
39 assert(dn.size() == 1);
40 assert(dn[0] == 1);
41 }
42 {
43 typedef std::piecewise_constant_distribution<> D;
44 D d({12}, f);
45 std::vector<double> iv = d.intervals();
46 assert(iv.size() == 2);
47 assert(iv[0] == 0);
48 assert(iv[1] == 1);
49 std::vector<double> dn = d.densities();
50 assert(dn.size() == 1);
51 assert(dn[0] == 1);
52 }
53 {
54 typedef std::piecewise_constant_distribution<> D;
55 D d({12, 14}, f);
56 std::vector<double> iv = d.intervals();
57 assert(iv.size() == 2);
58 assert(iv[0] == 12);
59 assert(iv[1] == 14);
60 std::vector<double> dn = d.densities();
61 assert(dn.size() == 1);
62 assert(dn[0] == 0.5);
63 }
64 {
65 typedef std::piecewise_constant_distribution<> D;
66 D d({5.5, 7.5, 11.5}, f);
67 std::vector<double> iv = d.intervals();
68 assert(iv.size() == 3);
69 assert(iv[0] == 5.5);
70 assert(iv[1] == 7.5);
71 assert(iv[2] == 11.5);
72 std::vector<double> dn = d.densities();
73 assert(dn.size() == 2);
74 assert(dn[0] == 0.203125);
75 assert(dn[1] == 0.1484375);
76 }
Howard Hinnant73d21a42010-09-04 23:28:19 +000077#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
Howard Hinnantd6d11712010-05-20 15:11:46 +000078}