Are a, b always 0.5?
No, you can carry as many bits of precision in u,v calculation as you want. Let
(s,t) = (0.51471, 0.7576) = (0000.83C4H, 0000.C1F2H)
(u,v) = (20.F1H, 18.7C8H) = (32.94,24.49)
a = fractional part of ( u - 0.5)
= Frac(20.F1H - 0.80H) = frac(20.71H) = 0.44141
b = fractional part of ( v - 0.5)
= Frac(18.7C8H - 0.80H) = frac(17.FC8H) = .98633