# Why desolve() can not solve an ODE while SymPy can?

For example, in sage, when I call:

```
x=var('x')
f=function('f')(x)
desolve(f.diff(x)^2+1,f)
```

It will return:

```
NotImplementedError: Maxima was unable to solve this ODE. Consider to set option contrib_ode to True.
```

However, with SymPy, when I call:

```
x=symbols('x')
f=symbols('f',cls=Function)
dsolve(f(x).diff(x)**2+1,f(x))
```

It will return the exact result:

```
[Eq(f(x), C1 - I*x), Eq(f(x), C1 + I*x)]
```

I know maybe it because sage use Maxima in desolve but not SymPy, however, I consider using both of them and merge the result is a better choice. Or if there already exists a method to use SymPy in sgae?

`desolve(f.diff(x)^2+1,f,contrib_ode=True)`

finds`[-I*x - f(x) == _C]`

"Merge the results" may be algorithmically hard. Choosing the "best" result even more so.