15430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant//===----------------------------------------------------------------------===// 25430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant// 35430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant// The LLVM Compiler Infrastructure 45430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard 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. 75430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant// 85430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant//===----------------------------------------------------------------------===// 95430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant 105430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant// <random> 115430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant 125430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant// template<class RealType = double> 135430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant// class piecewise_linear_distribution 145430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant// { 155430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant// class param_type; 165430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant 175430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant#include <random> 185430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant#include <limits> 195430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant#include <cassert> 205430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant 215430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnantint main() 225430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant{ 235430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant { 245430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant typedef std::piecewise_linear_distribution<> D; 255430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant typedef D::param_type P; 265430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant double b[] = {10, 14, 16, 17}; 275430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant double p[] = {25, 62.5, 12.5, 2}; 285430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant const size_t Np = sizeof(p) / sizeof(p[0]); 295430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant P p0(b, b+Np, p); 305430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant P p1; 315430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant p1 = p0; 325430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant assert(p1 == p0); 335430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant } 345430540d57b86c7dcc4a29e4ceb4b24c01a23b34Howard Hinnant} 35