123 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			123 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								//  Copyright John Maddock 2007-8.
							 | 
						||
| 
								 | 
							
								//  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 BOOST_MATH_REAL_TYPE_CONCEPT_HPP
							 | 
						||
| 
								 | 
							
								#define BOOST_MATH_REAL_TYPE_CONCEPT_HPP
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <boost/config.hpp>
							 | 
						||
| 
								 | 
							
								#ifdef BOOST_MSVC
							 | 
						||
| 
								 | 
							
								#pragma warning(push)
							 | 
						||
| 
								 | 
							
								#pragma warning(disable: 4100)
							 | 
						||
| 
								 | 
							
								#pragma warning(disable: 4510)
							 | 
						||
| 
								 | 
							
								#pragma warning(disable: 4610)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#include <boost/concept_check.hpp>
							 | 
						||
| 
								 | 
							
								#ifdef BOOST_MSVC
							 | 
						||
| 
								 | 
							
								#pragma warning(pop)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#include <boost/math/tools/config.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/math/tools/precision.hpp>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace boost{ namespace math{ namespace concepts{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template <class RealType>
							 | 
						||
| 
								 | 
							
								struct RealTypeConcept
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   template <class Other>
							 | 
						||
| 
								 | 
							
								   void check_binary_ops(Other o)
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								      RealType r(o);
							 | 
						||
| 
								 | 
							
								      r = o;
							 | 
						||
| 
								 | 
							
								      r -= o;
							 | 
						||
| 
								 | 
							
								      r += o;
							 | 
						||
| 
								 | 
							
								      r *= o;
							 | 
						||
| 
								 | 
							
								      r /= o;
							 | 
						||
| 
								 | 
							
								      r = r - o;
							 | 
						||
| 
								 | 
							
								      r = o - r;
							 | 
						||
| 
								 | 
							
								      r = r + o;
							 | 
						||
| 
								 | 
							
								      r = o + r;
							 | 
						||
| 
								 | 
							
								      r = o * r;
							 | 
						||
| 
								 | 
							
								      r = r * o;
							 | 
						||
| 
								 | 
							
								      r = r / o;
							 | 
						||
| 
								 | 
							
								      r = o / r;
							 | 
						||
| 
								 | 
							
								      bool b;
							 | 
						||
| 
								 | 
							
								      b = r == o;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								      b = o == r;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								      b = r != o;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								      b = o != r;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								      b = r <= o;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								      b = o <= r;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								      b = r >= o;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								      b = o >= r;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								      b = r < o;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								      b = o < r;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								      b = r > o;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								      b = o > r;
							 | 
						||
| 
								 | 
							
								      suppress_unused_variable_warning(b);
							 | 
						||
| 
								 | 
							
								   }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   void constraints()
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								      BOOST_MATH_STD_USING
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      RealType r;
							 | 
						||
| 
								 | 
							
								      check_binary_ops(r);
							 | 
						||
| 
								 | 
							
								      check_binary_ops(0.5f);
							 | 
						||
| 
								 | 
							
								      check_binary_ops(0.5);
							 | 
						||
| 
								 | 
							
								      //check_binary_ops(0.5L);
							 | 
						||
| 
								 | 
							
								      check_binary_ops(1);
							 | 
						||
| 
								 | 
							
								      //check_binary_ops(1u);
							 | 
						||
| 
								 | 
							
								      check_binary_ops(1L);
							 | 
						||
| 
								 | 
							
								      //check_binary_ops(1uL);
							 | 
						||
| 
								 | 
							
								#ifndef BOOST_HAS_LONG_LONG
							 | 
						||
| 
								 | 
							
								      check_binary_ops(1LL);
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								      RealType r2 = +r;
							 | 
						||
| 
								 | 
							
								      r2 = -r;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      r2 = fabs(r);
							 | 
						||
| 
								 | 
							
								      r2 = abs(r);
							 | 
						||
| 
								 | 
							
								      r2 = ceil(r);
							 | 
						||
| 
								 | 
							
								      r2 = floor(r);
							 | 
						||
| 
								 | 
							
								      r2 = exp(r);
							 | 
						||
| 
								 | 
							
								      r2 = pow(r, r2);
							 | 
						||
| 
								 | 
							
								      r2 = sqrt(r);
							 | 
						||
| 
								 | 
							
								      r2 = log(r);
							 | 
						||
| 
								 | 
							
								      r2 = cos(r);
							 | 
						||
| 
								 | 
							
								      r2 = sin(r);
							 | 
						||
| 
								 | 
							
								      r2 = tan(r);
							 | 
						||
| 
								 | 
							
								      r2 = asin(r);
							 | 
						||
| 
								 | 
							
								      r2 = acos(r);
							 | 
						||
| 
								 | 
							
								      r2 = atan(r);
							 | 
						||
| 
								 | 
							
								      int i;
							 | 
						||
| 
								 | 
							
								      r2 = ldexp(r, i);
							 | 
						||
| 
								 | 
							
								      r2 = frexp(r, &i);
							 | 
						||
| 
								 | 
							
								      i = boost::math::tools::digits<RealType>();
							 | 
						||
| 
								 | 
							
								      r2 = boost::math::tools::max_value<RealType>();
							 | 
						||
| 
								 | 
							
								      r2 = boost::math::tools::min_value<RealType>();
							 | 
						||
| 
								 | 
							
								      r2 = boost::math::tools::log_max_value<RealType>();
							 | 
						||
| 
								 | 
							
								      r2 = boost::math::tools::log_min_value<RealType>();
							 | 
						||
| 
								 | 
							
								      r2 = boost::math::tools::epsilon<RealType>();
							 | 
						||
| 
								 | 
							
								   }
							 | 
						||
| 
								 | 
							
								}; // struct DistributionConcept
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}}} // namespaces
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 |