template unsigned int integral()

in include/half.hpp [849:868]


		template<std::float_round_style R,bool E,bool I> unsigned int integral(unsigned int value)
		{
			unsigned int abs = value & 0x7FFF;
			if(abs < 0x3C00)
			{
				raise(FE_INEXACT, I);
				return ((R==std::round_to_nearest) ? (0x3C00&-static_cast<unsigned>(abs>=(0x3800+E))) :
						(R==std::round_toward_infinity) ? (0x3C00&-(~(value>>15)&(abs!=0))) :
						(R==std::round_toward_neg_infinity) ? (0x3C00&-static_cast<unsigned>(value>0x8000)) :
						0) | (value&0x8000);
			}
			if(abs >= 0x6400)
				return (abs>0x7C00) ? signal(value) : value;
			unsigned int exp = 25 - (abs>>10), mask = (1<<exp) - 1;
			raise(FE_INEXACT, I && (value&mask));
			return ((	(R==std::round_to_nearest) ? ((1<<(exp-1))-(~(value>>exp)&E)) :
						(R==std::round_toward_infinity) ? (mask&((value>>15)-1)) :
						(R==std::round_toward_neg_infinity) ? (mask&-(value>>15)) :
						0) + value) & ~mask;
		}