From 73708be8742751320fabe53f3415a8530c60ea64 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Sat, 16 Apr 2022 17:34:25 -0700 Subject: [PATCH] Add logpdf to compile tests --- .gitignore | 1 + test/compile_test/test_compile_result.hpp | 51 ++++++++++++----------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index 2b74895e2..5ff21efb6 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ DartConfiguration.tcl cmake-build-debug/* .cmake/* build.ninja +.ninja* diff --git a/test/compile_test/test_compile_result.hpp b/test/compile_test/test_compile_result.hpp index a86d390fa..0afdced91 100644 --- a/test/compile_test/test_compile_result.hpp +++ b/test/compile_test/test_compile_result.hpp @@ -9,14 +9,12 @@ // detect missing includes). // -static const float f = 0; -static const double d = 0; -static const long double l = 0; -static const unsigned u = 0; -static const int i = 0; - -//template -//inline void check_result_imp(T, T){} +static constexpr float f = 0; +static constexpr double d = 0; +static constexpr long double l = 0; +static constexpr unsigned u = 0; +static constexpr int i = 0; +static constexpr unsigned long li = 1; inline void check_result_imp(float, float){} inline void check_result_imp(double, double){} @@ -38,12 +36,12 @@ inline void check_result_imp(bool, bool){} template struct local_is_same { - enum{ value = false }; + static constexpr bool value = false; }; template struct local_is_same { - enum{ value = true }; + static constexpr bool value = true; }; template @@ -54,7 +52,7 @@ inline void check_result_imp(T1, T2) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-local-typedefs" #endif - typedef BOOST_MATH_ASSERT_UNUSED_ATTRIBUTE int static_assertion[local_is_same::value ? 1 : 0]; + using static_assertion = int[local_is_same::value ? 1 : 0]; #if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8))) #pragma GCC diagnostic pop #endif @@ -68,23 +66,12 @@ inline void check_result(T2) return check_result_imp(a, b); } -union max_align_type -{ - char c; - short s; - int i; - long l; - double d; - long double ld; - long long ll; -}; - template struct DistributionConcept { static void constraints() { - typedef typename Distribution::value_type value_type; + using value_type = typename Distribution::value_type; const Distribution& dist = DistributionConcept::get_object(); @@ -93,6 +80,7 @@ struct DistributionConcept check_result(cdf(dist, x)); check_result(cdf(complement(dist, x))); check_result(pdf(dist, x)); + check_result(logpdf(dist, x)); check_result(quantile(dist, x)); check_result(quantile(complement(dist, x))); check_result(mean(dist)); @@ -116,6 +104,7 @@ struct DistributionConcept check_result(cdf(dist, f)); check_result(cdf(complement(dist, f))); check_result(pdf(dist, f)); + check_result(logpdf(dist, f)); check_result(quantile(dist, f)); check_result(quantile(complement(dist, f))); check_result(hazard(dist, f)); @@ -123,6 +112,7 @@ struct DistributionConcept check_result(cdf(dist, d)); check_result(cdf(complement(dist, d))); check_result(pdf(dist, d)); + check_result(logpdf(dist, d)); check_result(quantile(dist, d)); check_result(quantile(complement(dist, d))); check_result(hazard(dist, d)); @@ -130,6 +120,7 @@ struct DistributionConcept check_result(cdf(dist, l)); check_result(cdf(complement(dist, l))); check_result(pdf(dist, l)); + check_result(logpdf(dist, l)); check_result(quantile(dist, l)); check_result(quantile(complement(dist, l))); check_result(hazard(dist, l)); @@ -137,20 +128,32 @@ struct DistributionConcept check_result(cdf(dist, i)); check_result(cdf(complement(dist, i))); check_result(pdf(dist, i)); + check_result(logpdf(dist, i)); check_result(quantile(dist, i)); check_result(quantile(complement(dist, i))); check_result(hazard(dist, i)); check_result(chf(dist, i)); - unsigned long li = 1; check_result(cdf(dist, li)); check_result(cdf(complement(dist, li))); check_result(pdf(dist, li)); + check_result(logpdf(dist, li)); check_result(quantile(dist, li)); check_result(quantile(complement(dist, li))); check_result(hazard(dist, li)); check_result(chf(dist, li)); } private: + union max_align_type + { + char c; + short s; + int i; + long l; + double d; + long double ld; + long long ll; + }; + static void* storage() { static max_align_type storage[sizeof(Distribution)];