local function Y(Y,s,G,U)local n=bit.rshift(U,7)local X=bit.rshift(G,7)+bit.lshift(bit.band(U,127),1)local k=(Y+bit.lshift(s,8))+bit.lshift(bit.band(G,127),16)local K=1 if X==0 then if k==0 then return n*0 else K=0 X=1 end elseif X==127 then if k==0 then return n*(1/0)else return n*(0/0)end end return(-1^n*2^(X-127))*(1+K/8388608.0)end

local function rd_flt_basic(f1, f2, f3, f4)
	local sign = bit.rshift(f4, 7)
	local exp = bit.rshift(f3, 7) + bit.lshift(bit.band(f4, 0x7F), 1)
	local frac = f1 + bit.lshift(f2, 8) + bit.lshift(bit.band(f3, 0x7F), 16)
	local normal = 1

	if exp == 0 then
		if frac == 0 then
			return sign * 0
		else
			normal = 0
			exp = 1
		end
	elseif exp == 0x7F then
		if frac == 0 then
			return sign * (1 / 0)
		else
			return sign * (0 / 0)
		end
	end

	return (-1) ^ sign * 2 ^ (exp - 127) * (1 + normal / 2 ^ 23)
end
