try ev(eq,exponentialize);
solve(%,x);
The solutions look like
[x=-%i*log(%i*((%i*y0)/(%i*y0+x0)-x0/(%i*y0+x0))^(1/4)),
x=-%i*log(-((%i*y0)/(%i*y0+x0)-x0/(%i*y0+x0))^(1/4)),
x=-%i*log(-%i*((%i*y0)/(%i*y0+x0)-x0/(%i*y0+x0))^(1/4)),
x=-(%i*log((%i*y0)/(%i*y0+x0)-x0/(%i*y0+x0)))/4]
which may not be what you had in mind.
I was also able to get
[cos(x)=-sqrt(y0*sqrt(y0^2+x0^2)+y0^2+x0^2)/(sqrt(2)*sqrt(y0^2+x0^2)),cos(x)=sqrt(y0*sqrt(y0^2+x0^2)+y0^2+x0^2)/(sqrt(2)*sqrt(y0^2+x0^2)),cos(x)=-
sqrt(-y0*sqrt(y0^2+x0^2)+y0^2+x0^2)/(sqrt(2)*sqrt(y0^2+x0^2)),cos(x)=sqrt(-y0*sqrt(y0^2+x0^2)+y0^2+x0^2)/(sqrt(2)*sqrt(y0^2+x0^2))]
by solving for cos(x), after replacing sin by sqrt(1-cos).
The solve program was originally written as a compromise between "how
much hacking on the expression do you really want to do,
considering that it might take a long time to do it, and it might not
help at all" and "just do the straightforward thing".
Maybe the balance has changed so that more hacking e.g. to_poly_solver)
should be included in solve.
RJF