$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r56522 - sandbox/statistics/distribution_toolkit/libs/statistics/detail/distribution_toolkit/test
From: erwann.rogard_at_[hidden]
Date: 2009-10-02 13:56:08
Author: e_r
Date: 2009-10-02 13:56:07 EDT (Fri, 02 Oct 2009)
New Revision: 56522
URL: http://svn.boost.org/trac/boost/changeset/56522
Log:
m/a
Added:
   sandbox/statistics/distribution_toolkit/libs/statistics/detail/distribution_toolkit/test/functions.cpp   (contents, props changed)
Text files modified: 
   sandbox/statistics/distribution_toolkit/libs/statistics/detail/distribution_toolkit/test/function_ptrs.cpp |   140 ++++++++++++++++++++++----------------- 
   1 files changed, 80 insertions(+), 60 deletions(-)
Modified: sandbox/statistics/distribution_toolkit/libs/statistics/detail/distribution_toolkit/test/function_ptrs.cpp
==============================================================================
--- sandbox/statistics/distribution_toolkit/libs/statistics/detail/distribution_toolkit/test/function_ptrs.cpp	(original)
+++ sandbox/statistics/distribution_toolkit/libs/statistics/detail/distribution_toolkit/test/function_ptrs.cpp	2009-10-02 13:56:07 EDT (Fri, 02 Oct 2009)
@@ -8,79 +8,99 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef LIBS_STATISTICS_DETAIL_DISTRIBUTION_TOOLKIT_TEST_FUNCTION_PTRS_H_ER_2009
 #define LIBS_STATISTICS_DETAIL_DISTRIBUTION_TOOLKIT_TEST_FUNCTION_PTRS_H_ER_2009
+#include <ostream>
 #include <boost/concept/assert.hpp>
 #include <boost/statistics/detail/distribution_toolkit/distributions/include.hpp>
 #include <boost/statistics/detail/distribution_toolkit/map_pdf/include.hpp>
 #include <boost/statistics/detail/distribution_toolkit/fun_wrap/pdf.hpp>
 #include <boost/statistics/detail/distribution_toolkit/concept/aggregate/function_ptrs.hpp>
 
-
 template <typename T>
-void test_function_ptrs()
+void test_function_ptrs(std::ostream& os)
 {
+    os << "test_function_ptrs - >" << std::endl;
+
    using namespace boost;
    using namespace math;
    
    namespace tk = boost::statistics::detail::distribution_toolkit;
    namespace tk_c = tk::concept; 
-
-   typedef math::chi_squared_distribution<T>            chi_squared_;
-   BOOST_CONCEPT_ASSERT((
-        tk_c::FunctionPtrs<chi_squared_>
-   ));
-
-   typedef math::exponential_distribution<T>            exponential_;
-   BOOST_CONCEPT_ASSERT((
-        tk_c::FunctionPtrs<exponential_>
-   ));
-
-   typedef math::gamma_distribution<T>                  gamma_;
-   BOOST_CONCEPT_ASSERT((
-        tk_c::FunctionPtrs<gamma_>
-   ));
-
-   typedef math::normal_distribution<T>                 normal_;
-   BOOST_CONCEPT_ASSERT((
-        tk_c::FunctionPtrs<normal_>
-   ));
-
-   typedef math::uniform_distribution<T>                uniform_;
-   BOOST_CONCEPT_ASSERT((
-        tk_c::FunctionPtrs<uniform_>
-   ));
-
-   typedef math::students_t_distribution<T>             students_t_;
-   BOOST_CONCEPT_ASSERT((
-        tk_c::FunctionPtrs<students_t_>
-   ));
-
-   //typedef tk::wrapper< const normal_& >                wrapper_;
-   //BOOST_CONCEPT_ASSERT((
-   //     tk_c::FunctionPtrs<wrapper_>
-   //));
-
-   typedef tk::location_scale_distribution< normal_ >   loc_scale_;
-   BOOST_CONCEPT_ASSERT((
-        tk_c::FunctionPtrs<loc_scale_>
-   ));
-
-   // Weaker requirements 
-   typedef tk::inverse_pdf< normal_ >                   inv_;
-   BOOST_CONCEPT_ASSERT((
-        tk_c::LogUnnormalizedPdf<inv_>
-   ));
-
-   typedef tk::product_pdf< normal_,students_t_ >       prod_;
-   BOOST_CONCEPT_ASSERT((
-        tk_c::LogUnnormalizedPdf<prod_>
-   ));
-
-   typedef typename
-    tk::meta_ratio_pdf< normal_,students_t_ >::type     ratio_;
-   BOOST_CONCEPT_ASSERT((
-        tk_c::LogUnnormalizedPdf<ratio_>
-   ));
-
+    {
+        typedef math::chi_squared_distribution<T>           d_;
+        BOOST_CONCEPT_ASSERT((
+            tk_c::FunctionPtrs<d_>
+        ));
+    }
+    {
+        typedef math::exponential_distribution<T>            d_;
+        BOOST_CONCEPT_ASSERT((
+            tk_c::FunctionPtrs<d_>
+        ));
+    }
+    {
+
+        typedef math::gamma_distribution<T>                  d_;
+        BOOST_CONCEPT_ASSERT((
+            tk_c::FunctionPtrs<d_>
+        ));
+    }
+    {
+        typedef math::normal_distribution<T>                 d_;
+        BOOST_CONCEPT_ASSERT((
+            tk_c::FunctionPtrs<d_>
+        ));
+    }
+    {
+        typedef math::uniform_distribution<T>                d_;
+        BOOST_CONCEPT_ASSERT((
+            tk_c::FunctionPtrs<d_>
+        ));
+    }
+    {
+        typedef math::students_t_distribution<T>             d_;
+        BOOST_CONCEPT_ASSERT((
+            tk_c::FunctionPtrs<d_>
+        ));
+    }
+    {
+        typedef math::normal_distribution<T>                d0_;
+        typedef tk::wrapper< const d0_& >                   d_;
+        BOOST_CONCEPT_ASSERT((
+            tk_c::FunctionPtrs<d_>
+        ));
+    }
+    {
+        typedef math::normal_distribution<T>                 d0_;
+        typedef tk::location_scale_distribution< d0_ >       d_;
+        BOOST_CONCEPT_ASSERT((
+            tk_c::FunctionPtrs<d_>
+        ));
+    }
+    {
+        typedef math::normal_distribution<T>                 d0_;
+        typedef tk::inverse_pdf< d0_ >                       d_;
+        BOOST_CONCEPT_ASSERT((
+            tk_c::FunctionPtr<d_,tk::fun_wrap::log_unnormalized_pdf_>
+        ));
+    }
+    {
+        typedef math::students_t_distribution<T>             d0_;
+        typedef math::normal_distribution<T>                 d1_;
+        typedef tk::product_pdf<d0_,d1_ >                    d_;
+        BOOST_CONCEPT_ASSERT((
+            tk_c::FunctionPtr<d_,tk::fun_wrap::log_unnormalized_pdf_>
+        ));
+    }
+    {
+        typedef math::students_t_distribution<T>             d0_;
+        typedef math::normal_distribution<T>                 d1_;
+        typedef typename tk::meta_ratio_pdf<d0_,d1_>::type   d_;
+        BOOST_CONCEPT_ASSERT((
+            tk_c::FunctionPtr<d_,tk::fun_wrap::log_unnormalized_pdf_>
+        ));
+    }
+    
+    os << "<-" << std::endl;
 }
 
 #endif
\ No newline at end of file
Added: sandbox/statistics/distribution_toolkit/libs/statistics/detail/distribution_toolkit/test/functions.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/distribution_toolkit/libs/statistics/detail/distribution_toolkit/test/functions.cpp	2009-10-02 13:56:07 EDT (Fri, 02 Oct 2009)
@@ -0,0 +1,268 @@
+//////////////////////////////////////////////////////////////////////////////
+// distribution_toolkit::test::functions.h                                  //
+//                                                                          //
+//  (C) Copyright 2009 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef LIBS_STATISTICS_DETAIL_DISTRIBUTION_TOOLKIT_TEST_FUNCTIONS_H_ER_2009
+#define LIBS_STATISTICS_DETAIL_DISTRIBUTION_TOOLKIT_TEST_FUNCTIONS_H_ER_2009
+#include <ostream>
+#include <boost/concept/assert.hpp>
+
+#include <boost/statistics/detail/distribution_toolkit/distributions/chi_squared/include.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/exponential/include.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/gamma/include.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/normal/include.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/students_t/include.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/uniform/include.hpp>
+
+#include <boost/statistics/detail/distribution_toolkit/fwd_math/cdf.hpp>
+#include <boost/statistics/detail/distribution_toolkit/fwd_math/mean.hpp>
+#include <boost/statistics/detail/distribution_toolkit/fwd_math/pdf.hpp>
+#include <boost/statistics/detail/distribution_toolkit/fwd_math/quantile.hpp>
+#include <boost/statistics/detail/distribution_toolkit/fwd_math/variance.hpp>
+
+#include <boost/statistics/detail/distribution_toolkit/distributions/location_scale/location_scale.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/location_scale/quantile.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/location_scale/cdf.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/location_scale/pdf.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/location_scale/log_unnormalized_pdf.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/location_scale/mean.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/location_scale/derivative_log_unnormalized_pdf.hpp>
+#include <boost/statistics/detail/distribution_toolkit/distributions/location_scale/variance.hpp>
+
+#include <boost/statistics/detail/distribution_toolkit/distributions/wrapper/include.hpp>
+
+#include <boost/statistics/detail/distribution_toolkit/map_pdf/inverse_pdf/include.hpp>
+#include <boost/statistics/detail/distribution_toolkit/map_pdf/product_pdf/include.hpp>
+#include <boost/statistics/detail/distribution_toolkit/map_pdf/ratio_pdf/include.hpp>
+
+// Concepts must come after distributions
+#include <boost/statistics/detail/distribution_common/concept/unary/mean.hpp>
+#include <boost/statistics/detail/distribution_common/concept/unary/variance.hpp>
+#include <boost/statistics/detail/distribution_common/concept/unary/quantile.hpp>
+#include <boost/statistics/detail/distribution_common/concept/unary/cdf.hpp>
+#include <boost/statistics/detail/distribution_common/concept/unary/pdf.hpp>
+#include <boost/statistics/detail/distribution_common/concept/unary/log_unnormalized_pdf.hpp>
+#include <boost/statistics/detail/distribution_common/concept/unary/derivative_log_unnormalized_pdf.hpp>
+#include <boost/statistics/detail/distribution_toolkit/concept/aggregate/function_ptrs.hpp>
+
+#include <boost/statistics/detail/distribution_common/meta/wrapper_distribution.hpp>
+#include <boost/statistics/detail/distribution_common/meta/wrapper_variable.hpp>
+#include <boost/statistics/detail/distribution_common/meta/wrapper_probability.hpp>
+
+template <typename T>
+void test_functions(std::ostream& os)
+{
+    os << "test_functions - >" << std::endl;
+    using namespace boost;
+    using namespace math;
+   
+    namespace st        = boost::statistics::detail;
+    namespace st_dc     = st::distribution::common;
+    namespace st_dc_c   = st_dc::concept;
+    namespace st_tk     = st::distribution_toolkit;
+    namespace st_tk_c   = st_tk::concept;
+
+    typedef st_dc::meta::wrapper_variable<T> x_;
+    typedef st_dc::meta::wrapper_probability<T,x_> p_x_; 
+
+    {
+        typedef math::chi_squared_distribution<T>                   d_;
+        typedef st_dc::meta::wrapper_distribution<d_,p_x_>          w_;
+
+        BOOST_CONCEPT_ASSERT((
+            st_tk_c::FunctionPtrs<d_>
+        ));
+
+        BOOST_CONCEPT_ASSERT((
+            st_dc_c::DerivativeLogUnnormalizedPdf<
+                st_dc_c::LogUnnormalizedPdf<
+                    st_dc_c::Pdf<
+                        st_dc_c::Quantile<
+                            st_dc_c::Cdf<
+                                st_dc_c::Mean<
+                                    st_dc_c::Variance<w_>
+                                >
+                            >
+                        > 
+                    > 
+                > 
+            >
+        ));
+    }
+    {
+        typedef math::exponential_distribution<T>                   d_;
+        typedef st_dc::meta::wrapper_distribution<d_,p_x_>          w_;
+        BOOST_CONCEPT_ASSERT((
+            st_dc_c::DerivativeLogUnnormalizedPdf<
+                st_dc_c::LogUnnormalizedPdf<
+                    st_dc_c::Pdf<
+                        st_dc_c::Quantile<
+                            st_dc_c::Cdf<
+                                st_dc_c::Mean<
+                                    st_dc_c::Variance<w_>
+                                >
+                            >
+                        > 
+                    > 
+                > 
+            >
+        ));
+    }
+    {
+        typedef math::gamma_distribution<T>                         d_;
+        typedef st_dc::meta::wrapper_distribution<d_,p_x_>          w_;
+        BOOST_CONCEPT_ASSERT((
+            st_dc_c::DerivativeLogUnnormalizedPdf<
+                st_dc_c::LogUnnormalizedPdf<
+                    st_dc_c::Pdf<
+                        st_dc_c::Quantile<
+                            st_dc_c::Cdf<
+                                st_dc_c::Mean<
+                                    st_dc_c::Variance<w_>
+                                >
+                            >
+                        > 
+                    > 
+                > 
+            >
+        ));
+
+    }
+    {
+        typedef math::normal_distribution<T>                        d_;
+        typedef st_dc::meta::wrapper_distribution<d_,p_x_>          w_;
+        BOOST_CONCEPT_ASSERT((
+            st_dc_c::DerivativeLogUnnormalizedPdf<
+                st_dc_c::LogUnnormalizedPdf<
+                    st_dc_c::Pdf<
+                        st_dc_c::Quantile<
+                            st_dc_c::Cdf<
+                                st_dc_c::Mean<
+                                    st_dc_c::Variance<w_>
+                                >
+                            >
+                        > 
+                    > 
+                > 
+            >
+        ));
+    }
+    {
+        typedef math::students_t_distribution<T>                    d_;
+        typedef st_dc::meta::wrapper_distribution<d_,p_x_>          w_;
+
+        BOOST_CONCEPT_ASSERT((
+            st_dc_c::DerivativeLogUnnormalizedPdf<
+                st_dc_c::LogUnnormalizedPdf<
+                    st_dc_c::Pdf<
+                        st_dc_c::Quantile<
+                            st_dc_c::Cdf<
+                                st_dc_c::Mean<
+                                   st_dc_c::Variance<w_>
+                               >
+                           >
+                       > 
+                   > 
+               > 
+           >
+        ));
+    }
+    {
+        typedef math::normal_distribution<T>                        d_;
+        typedef st_dc::meta::wrapper_distribution<d_,p_x_>          w_;
+
+        BOOST_CONCEPT_ASSERT((
+            st_dc_c::DerivativeLogUnnormalizedPdf<
+                st_dc_c::LogUnnormalizedPdf<
+                    st_dc_c::Pdf<
+                        st_dc_c::Quantile<
+                            st_dc_c::Cdf<
+                                st_dc_c::Mean<
+                                   st_dc_c::Variance<w_>
+                               >
+                           >
+                       > 
+                   > 
+               > 
+           >
+        ));
+    }
+    {
+        typedef math::normal_distribution<T>                        z_;
+        typedef st_tk::location_scale_distribution< z_ >            d_;
+        typedef st_dc::meta::wrapper_distribution<d_,p_x_>          w_;
+
+        BOOST_CONCEPT_ASSERT((
+            st_dc_c::DerivativeLogUnnormalizedPdf<
+                st_dc_c::LogUnnormalizedPdf<
+                    st_dc_c::Pdf<
+                        st_dc_c::Quantile<
+                            st_dc_c::Cdf<
+                                st_dc_c::Mean<
+                                    st_dc_c::Variance<w_>
+                                >
+                            >
+                        > 
+                    > 
+                > 
+            >
+        ));
+    }
+    {
+        typedef math::normal_distribution<T>                        d0_;
+        typedef st_tk::wrapper< const d0_& >                        d_;
+        typedef st_dc::meta::wrapper_distribution<d_,p_x_>          w_;
+    
+        BOOST_CONCEPT_ASSERT((
+            st_dc_c::DerivativeLogUnnormalizedPdf<
+                st_dc_c::LogUnnormalizedPdf<
+                    st_dc_c::Pdf<
+                        st_dc_c::Quantile<
+                            st_dc_c::Cdf<
+                                st_dc_c::Mean<
+                                    st_dc_c::Variance<w_>
+                                >
+                            >
+                        > 
+                    > 
+                > 
+            >
+        ));
+    }
+    {
+        typedef math::normal_distribution<T>                        d0_;
+        typedef st_tk::inverse_pdf< d0_ >                           d_;
+        typedef st_dc::meta::wrapper_distribution<d_,p_x_>          w_;
+    
+        BOOST_CONCEPT_ASSERT((
+            st_dc_c::LogUnnormalizedPdf<w_>
+        ));
+    }
+    {
+        typedef math::normal_distribution<T>                        d0_;
+        typedef math::chi_squared_distribution<T>                   d1_;
+        typedef st_tk::product_pdf< d0_, d1_ >                      d_;
+        typedef st_dc::meta::wrapper_distribution<d_,p_x_>          w_;
+    
+        BOOST_CONCEPT_ASSERT((
+            st_dc_c::LogUnnormalizedPdf<w_>
+        ));
+    }
+    {
+        typedef math::normal_distribution<T>                        d0_;
+        typedef math::chi_squared_distribution<T>                   d1_;
+        typedef typename st_tk::meta_ratio_pdf< d0_, d1_ >::type    d_;
+        typedef st_dc::meta::wrapper_distribution<d_,p_x_>  w_;
+    
+        BOOST_CONCEPT_ASSERT((
+            st_dc_c::LogUnnormalizedPdf<w_>
+        ));
+    }
+    os << " <- " << std::endl;
+}
+
+#endif
\ No newline at end of file