# GSoC 2018 - Week 9 - Starting up with Lambert equations

At the start of the week I worked on the leftovers of week 8:

• added `log_singularities()` that will help in determining logarithmic singularities,
• improved documentation of all helpers as suggested by Amit to maintain consistency

Status of the PR’s:

PR #14736 is ready to be merged.

PR #14792 is being worked on. Major tasks has been completed, just review and refining has to be done.

Apart from this I started working on the way Lambert type equations can be solved through `_transolve()`. I looked into `_tsolve's` way of handling such equations. For solving Lambert type equations `_tsolve()` largely depends on `bivariate.py`. It takes help of the different utility functions implemented there. Of them two important are `_solve_lambert()` and `bivariate_type()`. These two helpers help in getting the equations evaluated.

Equations that can be written in the standard form as: `A + B*x + C*log(D + E*x) = 0` has the solutions in terms of `Lambert` function as:

`D/E + C*B*W(t) with (B/C*E)*exp((BD - AE)/CE)`

This is what `_solve_lambert()` determines and accordingly returns the solutions, otherwise returns a `NotImplementedError`

If `_solve_lambert()` is unable to handle `bivariate_type()` is tried. This function first tries to identify the type of composite bivariate and then substitutes `Dummy` in place of them. For eq: `(x + y)**2 - 3` would become `_u**2 - 3` where `_u` is the dummy variable. The idea is that solving the latter equation for `u` and then equating the solutions to the former equation is equivalent for solving the original one.

While implementing in `_transolve` this philosophy needs to be applied. As of now I have looked into different tests on how they behave. I will start implementing it next.

Next week’s plan:

• Finishing with the logsolver

• Implementing lambert solver.