## Final Report : End of GSoC 2017

Final evaluations are due in a day and GSoC 2017 will soon come to an end.
Here is the link I submitted for the final report -> GSoC 2017 Report. The last three weeks I have been wrapping up the 3D use case, writing its test cases and documentation.

The only deliverables which remain :

1. Computing all monomials given a max_degree for the 3D case.
2. Handling implicit intersecting polygons.

I would have loved to at least have the first one merged before SoC deadline but unfortunately I have two tests and two lab sessions in the span of three days hence will have to implement after the 30th.

Let us discuss how close the above issues are to being resolved :

1. For the 2D case it was simple to just generate a list of all monomials up to a given max degree. I wanted to do a similar thing for the 3D case, but was having problems with having to find out the correct indices for $\delta (monom)/\delta x$$\delta (monom)/\delta y$ and $\delta (monom)/\delta z$ in the flat_list. But then I remembered a certain PR in SymPy which two SymPy members and me had worked on(PR#12490). It seems that creating a flat list out a given matrix is a compiler optimization, therefore it would be a lot of work with quite less benefit if a flat_list is attempted to be made(in the code itself) for the 3D case as well.
Therefore, a list of lists can be used for the 3D case which makes indexing for the partial derivatives much easier. After this all that needs to be done is to simply take up of the faces of the polygon and compute the left_integral of 1 over it and then that value would be re-used. This is partly implemented and should be a part of the module soon but unfortunately after the 30th.
2. As mentioned in the Report, the intersection algorithm needs to be replaced and the case for more than two intersecting sides needs to be dealt with. The first problem isn’t that hard to be dealt with but I haven’t thought about the second one yet.

GSoC has been a great learning experience and I look forward to porting this module to symengine after the loose ends in SymPy are tied up. Grateful to both my mentors Ondrej and Prof.Sukumar for their guidance.