Given $3n$ positive numbers $a_1, \ldots, a_n$, $b_1, \ldots, b_n$, and $x_1, \ldots, x_n$, we are given a function $$f(x) = \sum_{i = 1}^n \frac{a_i}{\sqrt{(x - x_i)^2 + b_i}}.$$ Can we find all the roots of $f'(x) = \sum_{i = 1}^n \frac{a_i (x - x_i)}{\sqrt{(x - x_i)^2 + b_i}^3}$ (all minima, maxima, and saddle points of $f$) in poly-time? Is the number of real roots $poly(n)$? What if the $a_i$ coefficients can be negative (assume the instance is generic)?
Notes:
For each $i$, the function $f_i(x) = \frac{a_i}{\sqrt{(x - x_i)^2 + b_i}}$ is single-peaked at $x_i$; the first derivative $f_i'(x) > 0$ for $x < x_i$, $f_i'(x) < 0$ for $x > x_i$, and $f_i'(x) = 0$ for $x = x_i$; the second derivative $f_i''(x) < 0$ if $2(x - x_i)^2 < b_i$, and so on.
We could get rid of the square-roots in $f'(x)$ one by one by bringing the term with $\sqrt{(x - x_i)^2 + b_i}$ on one side and squaring. But this gives us a (rational) polynomial of degree $2^{n-1} (1 + 3(n-1))$ at the end of the process.
We can introduce additional variables $y_i$ and equations $y_i^2 = (x - x_i)^2 + b_i$. If we do Gröbner decompositions with lexicographic ordering, we can get a polynomial only in $x$ (and no $y_i$ variables). But this polynomial also seems to be of degree $2^{n-1} (1 + 3(n-1))$ for small examples and the algorithm is likely exponential time (or double-exponential time).