12bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant//===----------------------------------------------------------------------===//
22bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant//
32bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant//                     The LLVM Compiler Infrastructure
42bc36fcff3de1ace5c74bb7c1459def41a67e862Howard 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.
72bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant//
82bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant//===----------------------------------------------------------------------===//
92bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant
102bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant// <random>
112bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant
122bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant// template<class RealType = double>
132bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant// class lognormal_distribution
142bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant
152bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant// template <class CharT, class Traits, class RealType>
162bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant// basic_ostream<CharT, Traits>&
172bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant// operator<<(basic_ostream<CharT, Traits>& os,
182bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant//            const lognormal_distribution<RealType>& x);
192bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant
202bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant// template <class CharT, class Traits, class RealType>
212bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant// basic_istream<CharT, Traits>&
222bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant// operator>>(basic_istream<CharT, Traits>& is,
232bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant//            lognormal_distribution<RealType>& x);
242bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant
252bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant#include <random>
262bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant#include <sstream>
272bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant#include <cassert>
282bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant
292bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnantint main()
302bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant{
312bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant    {
322bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant        typedef std::lognormal_distribution<> D;
332bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant        D d1(7, 5);
342bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant        std::ostringstream os;
352bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant        os << d1;
362bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant        std::istringstream is(os.str());
372bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant        D d2;
382bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant        is >> d2;
392bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant        assert(d1 == d2);
402bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant    }
412bc36fcff3de1ace5c74bb7c1459def41a67e862Howard Hinnant}
42