diff options
Diffstat (limited to 'libcxx/test/numerics/rand')
18 files changed, 941 insertions, 0 deletions
diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/assign.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/assign.pass.cpp new file mode 100644 index 00000000000..946763ec387 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/assign.pass.cpp @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// geometric_distribution& operator=(const geometric_distribution&); + +#include <random> +#include <cassert> + +void +test1() +{ +    typedef std::geometric_distribution<> D; +    D d1(0.75); +    D d2; +    assert(d1 != d2); +    d2 = d1; +    assert(d1 == d2); +} + +int main() +{ +    test1(); +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/copy.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/copy.pass.cpp new file mode 100644 index 00000000000..a379815e145 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/copy.pass.cpp @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// geometric_distribution(const geometric_distribution&); + +#include <random> +#include <cassert> + +void +test1() +{ +    typedef std::geometric_distribution<> D; +    D d1(0.75); +    D d2 = d1; +    assert(d1 == d2); +} + +int main() +{ +    test1(); +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/ctor_double.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/ctor_double.pass.cpp new file mode 100644 index 00000000000..de0b1c75d55 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/ctor_double.pass.cpp @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// explicit geometric_distribution(double p = 0.5); + +#include <random> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        D d; +        assert(d.p() == 0.5); +    } +    { +        typedef std::geometric_distribution<> D; +        D d(0.75); +        assert(d.p() == 0.75); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/ctor_param.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/ctor_param.pass.cpp new file mode 100644 index 00000000000..278e8d4c0c4 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/ctor_param.pass.cpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// explicit geometric_distribution(const param_type& parm); + +#include <random> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type P; +        P p(0.25); +        D d(p); +        assert(d.p() == 0.25); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eq.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eq.pass.cpp new file mode 100644 index 00000000000..b332c0b338e --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eq.pass.cpp @@ -0,0 +1,37 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// bool operator=(const geometric_distribution& x, +//                const geometric_distribution& y); +// bool operator!(const geometric_distribution& x, +//                const geometric_distribution& y); + +#include <random> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        D d1(.25); +        D d2(.25); +        assert(d1 == d2); +    } +    { +        typedef std::geometric_distribution<> D; +        D d1(.28); +        D d2(.25); +        assert(d1 != d2); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval.pass.cpp new file mode 100644 index 00000000000..48a6c57aac8 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval.pass.cpp @@ -0,0 +1,272 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// template<class _URNG> result_type operator()(_URNG& g); + +#include <random> +#include <numeric> +#include <vector> +#include <cassert> + +template <class T> +inline +T +sqr(T x) +{ +    return x * x; +} + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        typedef std::mt19937 G; +        G g; +        D d(.03125); +        const int N = 1000000; +        std::vector<D::result_type> u; +        for (int i = 0; i < N; ++i) +        { +            D::result_type v = d(g); +            assert(d.min() <= v && v <= d.max()); +            u.push_back(v); +        } +        double mean = std::accumulate(u.begin(), u.end(), +                                              double(0)) / u.size(); +        double var = 0; +        double skew = 0; +        double kurtosis = 0; +        for (int i = 0; i < u.size(); ++i) +        { +            double d = (u[i] - mean); +            double d2 = sqr(d); +            var += d2; +            skew += d * d2; +            kurtosis += d2 * d2; +        } +        var /= u.size(); +        double dev = std::sqrt(var); +        skew /= u.size() * dev * var; +        kurtosis /= u.size() * var * var; +        kurtosis -= 3; +        double x_mean = (1 - d.p()) / d.p(); +        double x_var = x_mean / d.p(); +        double x_skew = (2 - d.p()) / std::sqrt((1 - d.p())); +        double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p()); +        assert(std::abs(mean - x_mean) / x_mean < 0.01); +        assert(std::abs(var - x_var) / x_var < 0.01); +        assert(std::abs(skew - x_skew) / x_skew < 0.01); +        assert(std::abs(kurtosis - x_kurtosis) / x_kurtosis < 0.01); +    } +    { +        typedef std::geometric_distribution<> D; +        typedef std::mt19937 G; +        G g; +        D d(0.05); +        const int N = 1000000; +        std::vector<D::result_type> u; +        for (int i = 0; i < N; ++i) +        { +            D::result_type v = d(g); +            assert(d.min() <= v && v <= d.max()); +            u.push_back(v); +        } +        double mean = std::accumulate(u.begin(), u.end(), +                                              double(0)) / u.size(); +        double var = 0; +        double skew = 0; +        double kurtosis = 0; +        for (int i = 0; i < u.size(); ++i) +        { +            double d = (u[i] - mean); +            double d2 = sqr(d); +            var += d2; +            skew += d * d2; +            kurtosis += d2 * d2; +        } +        var /= u.size(); +        double dev = std::sqrt(var); +        skew /= u.size() * dev * var; +        kurtosis /= u.size() * var * var; +        kurtosis -= 3; +        double x_mean = (1 - d.p()) / d.p(); +        double x_var = x_mean / d.p(); +        double x_skew = (2 - d.p()) / std::sqrt((1 - d.p())); +        double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p()); +        assert(std::abs(mean - x_mean) / x_mean < 0.01); +        assert(std::abs(var - x_var) / x_var < 0.01); +        assert(std::abs(skew - x_skew) / x_skew < 0.01); +        assert(std::abs(kurtosis - x_kurtosis) / x_kurtosis < 0.02); +    } +    { +        typedef std::geometric_distribution<> D; +        typedef std::minstd_rand G; +        G g; +        D d(.25); +        const int N = 1000000; +        std::vector<D::result_type> u; +        for (int i = 0; i < N; ++i) +        { +            D::result_type v = d(g); +            assert(d.min() <= v && v <= d.max()); +            u.push_back(v); +        } +        double mean = std::accumulate(u.begin(), u.end(), +                                              double(0)) / u.size(); +        double var = 0; +        double skew = 0; +        double kurtosis = 0; +        for (int i = 0; i < u.size(); ++i) +        { +            double d = (u[i] - mean); +            double d2 = sqr(d); +            var += d2; +            skew += d * d2; +            kurtosis += d2 * d2; +        } +        var /= u.size(); +        double dev = std::sqrt(var); +        skew /= u.size() * dev * var; +        kurtosis /= u.size() * var * var; +        kurtosis -= 3; +        double x_mean = (1 - d.p()) / d.p(); +        double x_var = x_mean / d.p(); +        double x_skew = (2 - d.p()) / std::sqrt((1 - d.p())); +        double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p()); +        assert(std::abs(mean - x_mean) / x_mean < 0.01); +        assert(std::abs(var - x_var) / x_var < 0.01); +        assert(std::abs(skew - x_skew) / x_skew < 0.01); +        assert(std::abs(kurtosis - x_kurtosis) / x_kurtosis < 0.02); +    } +    { +        typedef std::geometric_distribution<> D; +        typedef std::mt19937 G; +        G g; +        D d(0.5); +        const int N = 1000000; +        std::vector<D::result_type> u; +        for (int i = 0; i < N; ++i) +        { +            D::result_type v = d(g); +            assert(d.min() <= v && v <= d.max()); +            u.push_back(v); +        } +        double mean = std::accumulate(u.begin(), u.end(), +                                              double(0)) / u.size(); +        double var = 0; +        double skew = 0; +        double kurtosis = 0; +        for (int i = 0; i < u.size(); ++i) +        { +            double d = (u[i] - mean); +            double d2 = sqr(d); +            var += d2; +            skew += d * d2; +            kurtosis += d2 * d2; +        } +        var /= u.size(); +        double dev = std::sqrt(var); +        skew /= u.size() * dev * var; +        kurtosis /= u.size() * var * var; +        kurtosis -= 3; +        double x_mean = (1 - d.p()) / d.p(); +        double x_var = x_mean / d.p(); +        double x_skew = (2 - d.p()) / std::sqrt((1 - d.p())); +        double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p()); +        assert(std::abs(mean - x_mean) / x_mean < 0.01); +        assert(std::abs(var - x_var) / x_var < 0.01); +        assert(std::abs(skew - x_skew) / x_skew < 0.01); +        assert(std::abs(kurtosis - x_kurtosis) / x_kurtosis < 0.01); +    } +    { +        typedef std::geometric_distribution<> D; +        typedef std::mt19937 G; +        G g; +        D d(0.75); +        const int N = 1000000; +        std::vector<D::result_type> u; +        for (int i = 0; i < N; ++i) +        { +            D::result_type v = d(g); +            assert(d.min() <= v && v <= d.max()); +            u.push_back(v); +        } +        double mean = std::accumulate(u.begin(), u.end(), +                                              double(0)) / u.size(); +        double var = 0; +        double skew = 0; +        double kurtosis = 0; +        for (int i = 0; i < u.size(); ++i) +        { +            double d = (u[i] - mean); +            double d2 = sqr(d); +            var += d2; +            skew += d * d2; +            kurtosis += d2 * d2; +        } +        var /= u.size(); +        double dev = std::sqrt(var); +        skew /= u.size() * dev * var; +        kurtosis /= u.size() * var * var; +        kurtosis -= 3; +        double x_mean = (1 - d.p()) / d.p(); +        double x_var = x_mean / d.p(); +        double x_skew = (2 - d.p()) / std::sqrt((1 - d.p())); +        double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p()); +        assert(std::abs(mean - x_mean) / x_mean < 0.01); +        assert(std::abs(var - x_var) / x_var < 0.01); +        assert(std::abs(skew - x_skew) / x_skew < 0.01); +        assert(std::abs(kurtosis - x_kurtosis) / x_kurtosis < 0.02); +    } +    { +        typedef std::geometric_distribution<> D; +        typedef std::mt19937 G; +        G g; +        D d(0.96875); +        const int N = 1000000; +        std::vector<D::result_type> u; +        for (int i = 0; i < N; ++i) +        { +            D::result_type v = d(g); +            assert(d.min() <= v && v <= d.max()); +            u.push_back(v); +        } +        double mean = std::accumulate(u.begin(), u.end(), +                                              double(0)) / u.size(); +        double var = 0; +        double skew = 0; +        double kurtosis = 0; +        for (int i = 0; i < u.size(); ++i) +        { +            double d = (u[i] - mean); +            double d2 = sqr(d); +            var += d2; +            skew += d * d2; +            kurtosis += d2 * d2; +        } +        var /= u.size(); +        double dev = std::sqrt(var); +        skew /= u.size() * dev * var; +        kurtosis /= u.size() * var * var; +        kurtosis -= 3; +        double x_mean = (1 - d.p()) / d.p(); +        double x_var = x_mean / d.p(); +        double x_skew = (2 - d.p()) / std::sqrt((1 - d.p())); +        double x_kurtosis = 6 + sqr(d.p()) / (1 - d.p()); +        assert(std::abs(mean - x_mean) / x_mean < 0.01); +        assert(std::abs(var - x_var) / x_var < 0.01); +        assert(std::abs(skew - x_skew) / x_skew < 0.01); +        assert(std::abs(kurtosis - x_kurtosis) / x_kurtosis < 0.01); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval_param.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval_param.pass.cpp new file mode 100644 index 00000000000..bea0159faa7 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval_param.pass.cpp @@ -0,0 +1,158 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// template<class _URNG> result_type operator()(_URNG& g, const param_type& parm); + +#include <random> +#include <numeric> +#include <vector> +#include <cassert> + +template <class T> +inline +T +sqr(T x) +{ +    return x * x; +} + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type P; +        typedef std::mt19937 G; +        G g; +        D d(.75); +        P p(.03125); +        const int N = 1000000; +        std::vector<D::result_type> u; +        for (int i = 0; i < N; ++i) +        { +            D::result_type v = d(g, p); +            assert(d.min() <= v && v <= d.max()); +            u.push_back(v); +        } +        double mean = std::accumulate(u.begin(), u.end(), +                                              double(0)) / u.size(); +        double var = 0; +        double skew = 0; +        double kurtosis = 0; +        for (int i = 0; i < u.size(); ++i) +        { +            double d = (u[i] - mean); +            double d2 = sqr(d); +            var += d2; +            skew += d * d2; +            kurtosis += d2 * d2; +        } +        var /= u.size(); +        double dev = std::sqrt(var); +        skew /= u.size() * dev * var; +        kurtosis /= u.size() * var * var; +        kurtosis -= 3; +        double x_mean = (1 - p.p()) / p.p(); +        double x_var = x_mean / p.p(); +        double x_skew = (2 - p.p()) / std::sqrt((1 - p.p())); +        double x_kurtosis = 6 + sqr(p.p()) / (1 - p.p()); +        assert(std::abs(mean - x_mean) / x_mean < 0.01); +        assert(std::abs(var - x_var) / x_var < 0.01); +        assert(std::abs(skew - x_skew) / x_skew < 0.01); +        assert(std::abs(kurtosis - x_kurtosis) / x_kurtosis < 0.01); +    } +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type P; +        typedef std::mt19937 G; +        G g; +        D d(.75); +        P p(.25); +        const int N = 1000000; +        std::vector<D::result_type> u; +        for (int i = 0; i < N; ++i) +        { +            D::result_type v = d(g, p); +            assert(d.min() <= v && v <= d.max()); +            u.push_back(v); +        } +        double mean = std::accumulate(u.begin(), u.end(), +                                              double(0)) / u.size(); +        double var = 0; +        double skew = 0; +        double kurtosis = 0; +        for (int i = 0; i < u.size(); ++i) +        { +            double d = (u[i] - mean); +            double d2 = sqr(d); +            var += d2; +            skew += d * d2; +            kurtosis += d2 * d2; +        } +        var /= u.size(); +        double dev = std::sqrt(var); +        skew /= u.size() * dev * var; +        kurtosis /= u.size() * var * var; +        kurtosis -= 3; +        double x_mean = (1 - p.p()) / p.p(); +        double x_var = x_mean / p.p(); +        double x_skew = (2 - p.p()) / std::sqrt((1 - p.p())); +        double x_kurtosis = 6 + sqr(p.p()) / (1 - p.p()); +        assert(std::abs(mean - x_mean) / x_mean < 0.01); +        assert(std::abs(var - x_var) / x_var < 0.01); +        assert(std::abs(skew - x_skew) / x_skew < 0.01); +        assert(std::abs(kurtosis - x_kurtosis) / x_kurtosis < 0.03); +    } +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type P; +        typedef std::minstd_rand G; +        G g; +        D d(.5); +        P p(.75); +        const int N = 1000000; +        std::vector<D::result_type> u; +        for (int i = 0; i < N; ++i) +        { +            D::result_type v = d(g, p); +            assert(d.min() <= v && v <= d.max()); +            u.push_back(v); +        } +        double mean = std::accumulate(u.begin(), u.end(), +                                              double(0)) / u.size(); +        double var = 0; +        double skew = 0; +        double kurtosis = 0; +        for (int i = 0; i < u.size(); ++i) +        { +            double d = (u[i] - mean); +            double d2 = sqr(d); +            var += d2; +            skew += d * d2; +            kurtosis += d2 * d2; +        } +        var /= u.size(); +        double dev = std::sqrt(var); +        skew /= u.size() * dev * var; +        kurtosis /= u.size() * var * var; +        kurtosis -= 3; +        double x_mean = (1 - p.p()) / p.p(); +        double x_var = x_mean / p.p(); +        double x_skew = (2 - p.p()) / std::sqrt((1 - p.p())); +        double x_kurtosis = 6 + sqr(p.p()) / (1 - p.p()); +        assert(std::abs(mean - x_mean) / x_mean < 0.01); +        assert(std::abs(var - x_var) / x_var < 0.01); +        assert(std::abs(skew - x_skew) / x_skew < 0.01); +        assert(std::abs(kurtosis - x_kurtosis) / x_kurtosis < 0.01); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/get_param.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/get_param.pass.cpp new file mode 100644 index 00000000000..c952235892f --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/get_param.pass.cpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// param_type param() const; + +#include <random> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type P; +        P p(.125); +        D d(p); +        assert(d.param() == p); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/io.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/io.pass.cpp new file mode 100644 index 00000000000..051ec0ea733 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/io.pass.cpp @@ -0,0 +1,41 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// template <class charT, class traits> +// basic_ostream<charT, traits>& +// operator<<(basic_ostream<charT, traits>& os, +//            const geometric_distribution& x); +//  +// template <class charT, class traits> +// basic_istream<charT, traits>& +// operator>>(basic_istream<charT, traits>& is, +//            geometric_distribution& x); + +#include <random> +#include <sstream> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        D d1(.25); +        std::ostringstream os; +        os << d1; +        std::istringstream is(os.str()); +        D d2; +        is >> d2; +        assert(d1 == d2); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/max.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/max.pass.cpp new file mode 100644 index 00000000000..c6ece1ad952 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/max.pass.cpp @@ -0,0 +1,27 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// result_type max() const; + +#include <random> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        D d(.25); +        assert(d.max() == std::numeric_limits<int>::max()); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/min.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/min.pass.cpp new file mode 100644 index 00000000000..4a9f5dfc7e8 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/min.pass.cpp @@ -0,0 +1,27 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// result_type min() const; + +#include <random> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        D d(.5); +        assert(d.min() == 0); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_assign.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_assign.pass.cpp new file mode 100644 index 00000000000..a23fbad7b37 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_assign.pass.cpp @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution +// { +//     class param_type; + +#include <random> +#include <limits> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type param_type; +        param_type p0(.7); +        param_type p; +        p = p0; +        assert(p.p() == .7); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_copy.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_copy.pass.cpp new file mode 100644 index 00000000000..2e8fd8c5275 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_copy.pass.cpp @@ -0,0 +1,30 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution +// { +//     class param_type; + +#include <random> +#include <limits> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type param_type; +        param_type p0(.125); +        param_type p = p0; +        assert(p.p() == .125); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_ctor.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_ctor.pass.cpp new file mode 100644 index 00000000000..08c9575e5fd --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_ctor.pass.cpp @@ -0,0 +1,35 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution +// { +//     class param_type; + +#include <random> +#include <limits> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type param_type; +        param_type p; +        assert(p.p() == 0.5); +    } +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type param_type; +        param_type p(0.25); +        assert(p.p() == 0.25); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_eq.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_eq.pass.cpp new file mode 100644 index 00000000000..cf877104404 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_eq.pass.cpp @@ -0,0 +1,37 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution +// { +//     class param_type; + +#include <random> +#include <limits> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type param_type; +        param_type p1(0.75); +        param_type p2(0.75); +        assert(p1 == p2); +    } +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type param_type; +        param_type p1(0.75); +        param_type p2(0.5); +        assert(p1 != p2); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_types.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_types.pass.cpp new file mode 100644 index 00000000000..32808fe825f --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_types.pass.cpp @@ -0,0 +1,28 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution +// { +//     class param_type; + +#include <random> +#include <type_traits> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type param_type; +        typedef param_type::distribution_type distribution_type; +        static_assert((std::is_same<D, distribution_type>::value), ""); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/set_param.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/set_param.pass.cpp new file mode 100644 index 00000000000..7a0715f5d2d --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/set_param.pass.cpp @@ -0,0 +1,30 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution + +// void param(const param_type& parm); + +#include <random> +#include <cassert> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        typedef D::param_type P; +        P p(0.25); +        D d(0.75); +        d.param(p); +        assert(d.param() == p); +    } +} diff --git a/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/types.pass.cpp b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/types.pass.cpp new file mode 100644 index 00000000000..80e9a190356 --- /dev/null +++ b/libcxx/test/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/types.pass.cpp @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <random> + +// template<class IntType = int> +// class geometric_distribution +// { +//     typedef bool result_type; + +#include <random> +#include <type_traits> + +int main() +{ +    { +        typedef std::geometric_distribution<> D; +        typedef D::result_type result_type; +        static_assert((std::is_same<result_type, int>::value), ""); +    } +    { +        typedef std::geometric_distribution<long> D; +        typedef D::result_type result_type; +        static_assert((std::is_same<result_type, long>::value), ""); +    } +}  | 

