IMO, In dsolve ```simplify=True``` uses odesimp method for simplification whereas when we use ```.simplify()``` externally in a equation it uses simplify method from sympy->core and both have different way of simplifying equations. Thats why dsolve of above equation give ```-(C2 + x**2)/(-C1 + x**2)``` as output whereas when I use simpify externally it simplify the previous solution to ```(C2 + x**2)/(C1 - x**2)```. Furthermore ```sol22 = Eq(f(x), -(C2 + x**2)/(-C1 + x**2))``` results into ```f(x) == (-C2 - x**2)/(-C1 + x**2)```. In order to match these two equations I am using simplify.

Since simplify() is very slow, I think I shoud use expand() to match those two equations or I can use str also.