// Copyright John Maddock 2023. // 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) #include #ifndef BOOST_MATH_STANDALONE #include #endif #include #if __has_include() # include #endif int main() { using boost::math::tools::promote_args_t; #if defined(__cpp_lib_type_trait_variable_templates) && (__cpp_lib_type_trait_variable_templates >= 201510L) && defined(__cpp_static_assert) && (__cpp_static_assert >= 201411L) static_assert(std::is_same_v, long double>); static_assert(std::is_same_v, long double>); static_assert(std::is_same_v, long double>); #ifdef __STDCPP_FLOAT16_T__ static_assert(std::is_same_v, long double>); #endif #ifdef __STDCPP_FLOAT32_T__ static_assert(std::is_same_v, long double>); #endif #ifdef __STDCPP_FLOAT64_T__ #if LDBL_MANT_DIG > 53 static_assert(std::is_same_v, long double>); #else static_assert(std::is_same_v, std::float64_t>); #endif #endif #ifdef __STDCPP_FLOAT128_T__ #if LDBL_MANT_DIG > 113 static_assert(std::is_same_v, long double>); #else static_assert(std::is_same_v, std::float128_t>); #endif #endif static_assert(std::is_same_v, double>); static_assert(std::is_same_v, double>); static_assert(std::is_same_v, long double>); #ifdef __STDCPP_FLOAT16_T__ static_assert(std::is_same_v, double>); #endif #ifdef __STDCPP_FLOAT32_T__ static_assert(std::is_same_v, double>); #endif #ifdef __STDCPP_FLOAT64_T__ #if DBL_MANT_DIG > 53 static_assert(std::is_same_v, double>); #else static_assert(std::is_same_v, std::float64_t>); #endif #endif #ifdef __STDCPP_FLOAT128_T__ #if DBL_MANT_DIG > 113 static_assert(std::is_same_v, double>); #else static_assert(std::is_same_v, std::float128_t>); #endif #endif static_assert(std::is_same_v, float>); static_assert(std::is_same_v, double>); static_assert(std::is_same_v, long double>); #ifdef __STDCPP_FLOAT16_T__ static_assert(std::is_same_v, float>); #endif #ifdef __STDCPP_FLOAT32_T__ static_assert(std::is_same_v, std::float32_t>); #endif #ifdef __STDCPP_FLOAT64_T__ static_assert(std::is_same_v, std::float64_t>); #endif #ifdef __STDCPP_FLOAT128_T__ static_assert(std::is_same_v, std::float128_t>); #endif #ifdef __STDCPP_FLOAT16_T__ static_assert(std::is_same_v, float>); static_assert(std::is_same_v, double>); static_assert(std::is_same_v, long double>); #ifdef __STDCPP_FLOAT16_T__ static_assert(std::is_same_v, float>); #endif #ifdef __STDCPP_FLOAT32_T__ static_assert(std::is_same_v, std::float32_t>); #endif #ifdef __STDCPP_FLOAT64_T__ static_assert(std::is_same_v, std::float64_t>); #endif #ifdef __STDCPP_FLOAT128_T__ static_assert(std::is_same_v, std::float128_t>); #endif #endif #ifdef __STDCPP_FLOAT32_T__ static_assert(std::is_same_v, std::float32_t>); static_assert(std::is_same_v, double>); static_assert(std::is_same_v, long double>); #ifdef __STDCPP_FLOAT16_T__ static_assert(std::is_same_v, std::float32_t>); #endif #ifdef __STDCPP_FLOAT32_T__ static_assert(std::is_same_v, std::float32_t>); #endif #ifdef __STDCPP_FLOAT64_T__ static_assert(std::is_same_v, std::float64_t>); #endif #ifdef __STDCPP_FLOAT128_T__ static_assert(std::is_same_v, std::float128_t>); #endif #endif #ifdef __STDCPP_FLOAT64_T__ static_assert(std::is_same_v, std::float64_t>); static_assert(std::is_same_v, std::float64_t>); #if LDBL_MANT_DIG > 53 static_assert(std::is_same_v, long double>); #else static_assert(std::is_same_v, std::float64_t>); #endif #ifdef __STDCPP_FLOAT16_T__ static_assert(std::is_same_v, std::float64_t>); #endif #ifdef __STDCPP_FLOAT32_T__ static_assert(std::is_same_v, std::float64_t>); #endif #ifdef __STDCPP_FLOAT64_T__ static_assert(std::is_same_v, std::float64_t>); #endif #ifdef __STDCPP_FLOAT128_T__ static_assert(std::is_same_v, std::float128_t>); #endif #endif #ifdef __STDCPP_FLOAT128_T__ static_assert(std::is_same_v, std::float128_t>); static_assert(std::is_same_v, std::float128_t>); #if LDBL_MANT_DIG > 113 static_assert(std::is_same_v, long double>); #else static_assert(std::is_same_v, std::float128_t>); #endif #ifdef __STDCPP_FLOAT16_T__ static_assert(std::is_same_v, std::float128_t>); #endif #ifdef __STDCPP_FLOAT32_T__ static_assert(std::is_same_v, std::float128_t>); #endif #ifdef __STDCPP_FLOAT64_T__ static_assert(std::is_same_v, std::float128_t>); #endif #ifdef __STDCPP_FLOAT128_T__ static_assert(std::is_same_v, std::float128_t>); #endif #endif #ifndef BOOST_MATH_STANDALONE static_assert(std::is_same_v, boost::multiprecision::cpp_bin_float_50>); static_assert(std::is_same_v, boost::multiprecision::cpp_bin_float_50>); static_assert(std::is_same_v, boost::multiprecision::cpp_bin_float_50>); #ifdef __STDCPP_FLOAT16_T__ static_assert(std::is_same_v, boost::multiprecision::cpp_bin_float_50>); #endif #ifdef __STDCPP_FLOAT32_T__ static_assert(std::is_same_v, boost::multiprecision::cpp_bin_float_50>); #endif #ifdef __STDCPP_FLOAT64_T__ static_assert(std::is_same_v, boost::multiprecision::cpp_bin_float_50>); #endif #ifdef __STDCPP_FLOAT128_T__ static_assert(std::is_same_v, boost::multiprecision::cpp_bin_float_50>); #endif #endif // BOOST_MATH_STANDALONE #endif return 0; }