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