GSoC 2018 - Week 4 - Continuing with transolve Part-II

By the end of the previous week I had completed majority of the TODO’s of the PR #14736. This week I started on minor improvements suggested by Amit. This included:

• Minor Documentation changes
Included proof of correctness, typo fixes, rephrasing lines etc.

• Removing `flag` variable from transolve.
`flag` variable was passed as a function parameter in `transolve` and was used to check on the recursive call. The thought was that there might be a case when equation could not be solved by any of the helpers but during the process the equation might get modified, so we wanted to double check whether the modified equation could be solved again, thats why we used `flag` but Amit suggested on removing it as there wasn’t a case as of now and it will only make things unnecessarily complicated.

• Also worked on XFAILS, mainly on solving equations containing only symbols. There was an exception raised in `_invert_real`, because of a relational comparison made with `0` which caused the faiure of the tests. It has been fixed by handling the exception.

• Imported tests of log and lambert.

• Another thing we discussed was about log solver. The helpers for solving logarithmic equations will be implemented in a seperated PR, to make the review and implementing task easy and independent.

After this I started a working on solving exponential equations in complex domain, though it turns out that we will be focussing on only the real domain as of now. But I have added tests for it as XFAIL.
To make exponents work in complex domain, we require the complex logarithm. If we have equation as

``````	z = e**w,
where w is complex number and z is non-zero complex number,
then
Ln(z) = ln|z| + I*(Arg(z) + 2*n*pi)
where Ln(z) is the complex logarithm and ln|z| is the
logarithm evaluated with real number argument.
``````

Apart from this we also had a meeting yesterday in which we discussed about how we will be wrapping up things before the first evaluation.
I will be completing few leftovers of the current PR to make it merge and start working on implementing log solver (making a commit probably by tomorrow).

Amit also suggested on creating a coverage report so as to get an idea about the amount of tests covered by the code. The current coverage report can be found here. Other than this he also advised on reading Clean Code by `Robert C. Martin` which will help me improve in writing clean and efficient code.

The main target for the coming week will be merging `PR #14736`, implementing `log solver` (will try to merge this as well), starting with implementing `lambert solver` (try to add atleast a WIP PR) and reading the book.

Hope things go as planned!!