inline void raise()

in include/half.hpp [625:671]


		inline void raise(int HALF_UNUSED_NOERR(flags), bool HALF_UNUSED_NOERR(cond) = true)
		{
		#if HALF_ERRHANDLING
			if(!cond)
				return;
		#if HALF_ERRHANDLING_FLAGS
			errflags() |= flags;
		#endif
		#if HALF_ERRHANDLING_ERRNO
			if(flags & FE_INVALID)
				errno = EDOM;
			else if(flags & (FE_DIVBYZERO|FE_OVERFLOW|FE_UNDERFLOW))
				errno = ERANGE;
		#endif
		#if HALF_ERRHANDLING_FENV && HALF_ENABLE_CPP11_CFENV
			std::feraiseexcept(flags);
		#endif
		#ifdef HALF_ERRHANDLING_THROW_INVALID
			if(flags & FE_INVALID)
				throw std::domain_error(HALF_ERRHANDLING_THROW_INVALID);
		#endif
		#ifdef HALF_ERRHANDLING_THROW_DIVBYZERO
			if(flags & FE_DIVBYZERO)
				throw std::domain_error(HALF_ERRHANDLING_THROW_DIVBYZERO);
		#endif
		#ifdef HALF_ERRHANDLING_THROW_OVERFLOW
			if(flags & FE_OVERFLOW)
				throw std::overflow_error(HALF_ERRHANDLING_THROW_OVERFLOW);
		#endif
		#ifdef HALF_ERRHANDLING_THROW_UNDERFLOW
			if(flags & FE_UNDERFLOW)
				throw std::underflow_error(HALF_ERRHANDLING_THROW_UNDERFLOW);
		#endif
		#ifdef HALF_ERRHANDLING_THROW_INEXACT
			if(flags & FE_INEXACT)
				throw std::range_error(HALF_ERRHANDLING_THROW_INEXACT);
		#endif
		#if HALF_ERRHANDLING_UNDERFLOW_TO_INEXACT
			if((flags & FE_UNDERFLOW) && !(flags & FE_INEXACT))
				raise(FE_INEXACT);
		#endif
		#if HALF_ERRHANDLING_OVERFLOW_TO_INEXACT
			if((flags & FE_OVERFLOW) && !(flags & FE_INEXACT))
				raise(FE_INEXACT);
		#endif
		#endif
		}