]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/values.cc
1 // { dg-do run { target c++11 } }
2 // { dg-require-cstdint "" }
3 // { dg-require-cmath "" }
5 // Copyright (C) 2011-2024 Free Software Foundation, Inc.
7 // This file is part of the GNU ISO C++ Library. This library is free
8 // software; you can redistribute it and/or modify it under the
9 // terms of the GNU General Public License as published by the
10 // Free Software Foundation; either version 3, or (at your option)
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License along
19 // with this library; see the file COPYING3. If not see
20 // <http://www.gnu.org/licenses/>.
22 // 26.5.8.4.1 Class template poisson_distribution [rand.dist.pois.poisson]
26 #include <testsuite_random.h>
28 // { dg-additional-options "-DSIMULATOR_TEST" { target simulator } }
31 # define ARGS 100, 1000
38 using namespace __gnu_test
;
42 std::poisson_distribution
<> pd1(3.0);
43 auto bpd1
= std::bind(pd1
, eng
);
44 testDiscreteDist
<ARGS
>(bpd1
, [](int n
) { return poisson_pdf(n
, 3.0); } );
46 std::poisson_distribution
<> pd2(15.0);
47 auto bpd2
= std::bind(pd2
, eng
);
48 testDiscreteDist
<ARGS
>(bpd2
, [](int n
) { return poisson_pdf(n
, 15.0); } );
50 std::poisson_distribution
<> pd3(30.0);
51 auto bpd3
= std::bind(pd3
, eng
);
52 testDiscreteDist
<ARGS
>(bpd3
, [](int n
) { return poisson_pdf(n
, 30.0); } );
54 // This can take extremely long on simulators, timing out the test.
55 #ifndef SIMULATOR_TEST
57 std::poisson_distribution
<> pd4(37.17);
58 auto bpd4
= std::bind(pd4
, eng
);
59 testDiscreteDist
<100, 2000000>(bpd4
, [](int n
)
60 { return poisson_pdf(n
, 37.17); } );