1d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant//===----------------------------------------------------------------------===// 2d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// 3d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// The LLVM Compiler Infrastructure 4d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// 8d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant//===----------------------------------------------------------------------===// 9d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant 10d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// <random> 11d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant 12d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// template<class RealType = double> 13d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// class piecewise_constant_distribution 14d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant 15d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// template<class UnaryOperation> 16d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// param_type(size_t nw, double xmin, double xmax, 17d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// UnaryOperation fw); 18d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant 19d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant#include <random> 20d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant#include <cassert> 21d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant 22d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnantdouble fw(double x) 23d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant{ 24d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant return 2*x; 25d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant} 26d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant 27d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnantint main() 28d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant{ 29d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant { 30d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant typedef std::piecewise_constant_distribution<> D; 31d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant typedef D::param_type P; 32d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant P pa(0, 0, 1, fw); 33d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant std::vector<double> iv = pa.intervals(); 34d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(iv.size() == 2); 35d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(iv[0] == 0); 36d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(iv[1] == 1); 37d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant std::vector<double> dn = pa.densities(); 38d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(dn.size() == 1); 39d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(dn[0] == 1); 40d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant } 41d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant { 42d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant typedef std::piecewise_constant_distribution<> D; 43d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant typedef D::param_type P; 44d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant P pa(1, 10, 12, fw); 45d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant std::vector<double> iv = pa.intervals(); 46d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(iv.size() == 2); 47d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(iv[0] == 10); 48d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(iv[1] == 12); 49d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant std::vector<double> dn = pa.densities(); 50d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(dn.size() == 1); 51d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(dn[0] == 0.5); 52d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant } 53d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant { 54d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant typedef std::piecewise_constant_distribution<> D; 55d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant typedef D::param_type P; 56d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant P pa(2, 6, 14, fw); 57d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant std::vector<double> iv = pa.intervals(); 58d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(iv.size() == 3); 59d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(iv[0] == 6); 60d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(iv[1] == 10); 61d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(iv[2] == 14); 62d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant std::vector<double> dn = pa.densities(); 63d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(dn.size() == 2); 64d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(dn[0] == 0.1); 65d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant assert(dn[1] == 0.15); 66d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant } 67d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant} 68