# GSoC 2018 - Week 5 - Implementing log solver

17 Jun 2018So this is the last week of the first evaluation. I started with implementing log solver as part of `transolve`

. As per the documentation of the `transolve`

we will need two helpers for implementing log solver, `check_log`

that will check whether the equation is logarithmic or not and `log_solver`

that will solve the equation. Here’s the PR

**Idea behind check_log**

Heuristic is implemented to determine whether the equation is logarithmic or not. According to it the logarithmic equations can be reduced to simpler form using log identities. For this purpose we use SymPy’s function logcombine. If the equation is logarithmic it will be reduced and hence the number of log in the original and modified equation may differ. This will ensure that the equation is logarithmic.

**Idea behind the log solver**

The idea is simple, the reduced form from the `check_log`

is used as the new target equation and is sent to `solveset`

to handle. Solutions are retuned from `solveset`

, but it may contain values that won’t satisfy the equation (log does not take negative values in real domain). Therfore to remove unwanted values we use checksol function of solve module which substitutes each solution in the equation and returns `True`

if it satisfies otherwise `False`

.

Apart from implementing helpers, I have added their documentation. Certain things needs to be done before the PR is ready for review: Tests needs to be added for the helpers and `check_log`

needs to be improved a bit to handle corner cases.

In parallel I am also working on improving `transolve's`

PR to make it merge as soon as possible. After these two gets completely fixed we will be focusing on implementing `lambert equation solver`

.

In the coming week I will be focussing on finishing off the work of these two PR.

Follow @Yathartha22