The div2 Dekker Algorithm (1971) is a good approach.
This requires an algorithm mul12(p,q)that can accurately calculate the pair u+v = p*q. Dekker uses a method known as Veltkamp splitting, but if you have access to a function fma, then a much simpler method
u = p*q
v = fma(p,q,-u)
( , ):
r = a/c
u,v = mul12(r,c)
s = (a - u - v - b + r*d)/c
r+s (a-b)/(c-d).
UPDATE: -, ..
s = ((((a-u)-v)-b)+r*d)/c
, , rr r (.. r + rr = a/c ), , u+v = r*c , rr*c = a-u-v , (a-u-v-b)/c (a-b)/c.
r*d - :
(a-b)/(c-d) = (a-b)/c * c/(c-d) = (a-b)/c *(1 + d/(c-d))
= [a-b + (a-b)/(c-d) * d]/c
r (a-b)/(c-d), [...], , (a-u-v-b+r*d)/c (a-b)/(c-d)