public static float buildFloat(int mant, int exp)
	{
		if (exp < -125 || mant == 0)
		{
			return 0.0f;
		}

		if (exp >= 128)
		{
			return (mant > 0) ? Float.POSITIVE_INFINITY
					: Float.NEGATIVE_INFINITY;
		}

		if (exp == 0)
		{
			return mant;
		}

		if (mant >= (1 << 26))
		{
			mant++; // round up trailing bits if they will be dropped.
		}

		return (float) ((exp > 0) ? mant * pow10[exp] : mant / pow10[-exp]);
	}