Do you know some conditions ahead of time? For example, will the denominator
always be a linear term, such as (x- a)? If so, it would make the program a lot simpler.
You might find something by doing a search on the term "synthetic division".
It is often used for solving the roots of polynomials (deflating them).
Say you have the polynomial P(x) = 0 and you know one root is x = a. You then know P(x) = (x-a)*Q(x) = 0. Q(x) is found by synthetic division, removing the root you already know so that the remaining equation, Q(x), is simpler to solve.
For example, check out sub-routine quadsd on the following page:
http://www.crbond.com/download/misc/rpoly.cpp
You may not be solving for the roots of polynomials, but the synthetic division procedure, itself, might be applicable to your problem. "Numerical Recipes" also provides some code.
Hope this gives you some ideas.
David