Y0=[(605380608L+(X<<16)/(20294L-X)]. Y=3300L*Y0. Старшие 16 разрядов произведения дадут целую часть Y. Младшие 16 разрядов, беззнаковые, поделенные на 65536, дадут дробную часть. Округление до целого: int IY=(int)((Y+0x8000L)>>16). Преобразование во float: union flolong { float f; unsigned long l; }; union flolong fl; fl.f=(float)Y; fl.l-=0x8000000L;