mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	
		
			
	
	
		
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								//  Copyright John Maddock 2006-15.
							 | 
						||
| 
								 | 
							
								//  Copyright Paul A. Bristow 2007
							 | 
						||
| 
								 | 
							
								//  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)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
							 | 
						||
| 
								 | 
							
								#include "bindings.hpp"
							 | 
						||
| 
								 | 
							
								#include "../../test/log1p_expm1_test.hpp"
							 | 
						||
| 
								 | 
							
								#include <boost/math/special_functions/expm1.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/math/special_functions/log1p.hpp>
							 | 
						||
| 
								 | 
							
								#define BOOST_TEST_MAIN
							 | 
						||
| 
								 | 
							
								#include <boost/test/unit_test.hpp>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES(test_main, 10000);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								BOOST_AUTO_TEST_CASE(test_main)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   BOOST_MATH_CONTROL_FP;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   error_stream_replacer rep;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef TYPE_TO_TEST
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   test(static_cast<TYPE_TO_TEST>(0), NAME_OF_TYPE_TO_TEST);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								   bool test_float = false;
							 | 
						||
| 
								 | 
							
								   bool test_double = false;
							 | 
						||
| 
								 | 
							
								   bool test_long_double = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   if(std::numeric_limits<long double>::digits == std::numeric_limits<double>::digits)
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								      //
							 | 
						||
| 
								 | 
							
								      // Don't bother with long double, it's the same as double:
							 | 
						||
| 
								 | 
							
								      //
							 | 
						||
| 
								 | 
							
								      if(BOOST_MATH_PROMOTE_FLOAT_POLICY == false)
							 | 
						||
| 
								 | 
							
								         test_float = true;
							 | 
						||
| 
								 | 
							
								      test_double = true;
							 | 
						||
| 
								 | 
							
								   }
							 | 
						||
| 
								 | 
							
								   else
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								      if(BOOST_MATH_PROMOTE_FLOAT_POLICY == false)
							 | 
						||
| 
								 | 
							
								         test_float = true;
							 | 
						||
| 
								 | 
							
								      if(BOOST_MATH_PROMOTE_DOUBLE_POLICY == false)
							 | 
						||
| 
								 | 
							
								         test_double = true;
							 | 
						||
| 
								 | 
							
								      test_long_double = true;
							 | 
						||
| 
								 | 
							
								   }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef ALWAYS_TEST_DOUBLE
							 | 
						||
| 
								 | 
							
								   test_double = true;
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   if(test_float)
							 | 
						||
| 
								 | 
							
								      test(0.0f, "float");
							 | 
						||
| 
								 | 
							
								   if(test_double)
							 | 
						||
| 
								 | 
							
								      test(0.0, "double");
							 | 
						||
| 
								 | 
							
								   if(test_long_double)
							 | 
						||
| 
								 | 
							
								      test(0.0L, "long double");
							 | 
						||
| 
								 | 
							
								#ifdef BOOST_MATH_USE_FLOAT128
							 | 
						||
| 
								 | 
							
								   //test(0.0Q, "__float128");
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |