Gsoc 2020 Application by Saanidhya Vats on Series Expansion - sympy/sympy GitHub Wiki

SERIES EXPANSIONS

PERSONAL DETAILS

Name: Saanidhya Vats

Email: [email protected]

Gitter: @Saanidhya

Mobile No: 8928211874

Country of Residence: India

Timezone: Indian Standard Time(UTC + 5:30)

College: IIIT- Bhubaneswar

Course: Undergraduate

Field of Study: Computer Science and Engineering

Year: 2nd Year

Github: @Saanidhya

AIM:

This project is divided into 3 phases which will cover up

  1. improving series expansions
  2. improving formal power series
  3. improving limits
  4. asymptotic series
  5. Better support for Order term arithmetic (for example, expression of the order term of the series around a point that is not 0, like O((x - a)**3)).

PERSONAL BACKGROUND:

I am Saanidhya vats currently pursuing Btech (2nd year) in Computer Science and Engineering field from IIIT- Bhubaneswar(International Institute of Information Technology-Bhubaneswar). Major topics covered in past in our curriculum are ( Subjects related to Maths and programming only have been mentioned) : 1)Data Structures 2) Linear Algebra and Vector Calculus 3)Probability and Statistics 4) Differential Equations and Partial Differential Equations 5)Programming in C and C++ 6)Scientific computing in python

Coding Experience:

I am well versed with coding in C, C++ and python. I have been coding in python for 2 years and I have made various projects based on python like implementing a 3-layer neural network and probabilistic neural network on iris data and pca on kentridge colon tumor data with the help of numpy and pandas only(theses 2 libraries were used for importing the data and to perform mathematical operations).

I work on Ubuntu 18.04.3 LTS version where I use sublime text editor for coding and finding bugs as it provides a better user interface. I have practiced python from coding platforms like hackerrank( in initial stage) and codeforces. In these 2 years python has made me realise that its the future of programming. The ease of coding, inbuilt functions like sort, insertion which are not present in other languages like C and C++, libraries like numpy, pandas, sympy which has further reduced the complexity of coding in python has fascinated me.

I found the sympy library unique as it supports various fields in maths and physics. The feature which I liked the most was the limit function as finding limits is not an easy task(usually to find out limit we take an approach if it doesn't work then apply another approach and so on). The gruntz algorithm used to find out the limit surprised me and hence I decided to contribute to the series module of sympy library.

I have started using git and github 6 months before. Initially I was afraid working on github and found git quite complicated but contributing in sympy I slowly started learning things, thanks to its members who have helped me in every phase of contribution.

I have referred to previous gsoc projects on series along with this I have referred to

  1. "Formal Power Series" by Dominik Gruntz and Wolfram Koepf
  2. "Computing limits of Sequences" by Manuel Kauers
  3. "Symbolic Asymptotics: Functions of Two Variables, Implicit Functions" by Bruno Savly and John Shackell

PULL REQUESTS:

Open :

#18681 (merged) : Solves #16234 #18947 (open) : Solves #18482 #18559 (open) : Solves #18064 #18164 (open) : Solves #16350 Reviewed : #18952

Chainer : Along with Sympy I have contributed in Chainer library as well #8516 (merged) : Solves #7882

Proposed Timeline :

MAY 4 - JUNE 1 : (Community Bonding Period)

Get familiar with the series code base Get familiar with the polys code base Will go through the maths involved in implementation of the project Will take guidance from mentors regarding implementation of the project. Will start working on it

###PHASE-1 :

JUNE 1 - JUNE 29 :

WEEK 1-2 : In this phase I will start with the limits module. It has been found that limit and limit_seq function is not showing the expected results (#16722, #18482,#18543,#18378 ,#18501…). I will start by working on the bugs for limit and limitseq of series module . While going through the issues related to series, I found that majority of bugs were related to limits so I will devote 2 weeks for this purpose.

WEEK 3 : In the 3rd week, the focus will be mainly on removing the bugs from series expansion (solving issues like #18842) .

WEEK 4 : In 4th week I will work on extending asymptotic series to : erf: gauss error function erfc: complementary error function erfi: imaginary error function Ei: exponential integral expint: generalised exponential integral li: logarithmic integral Li: offset logarithmic integral Si: sine integral Ci: cosine integral bessely besselj lerchphi function Riemann zeta function Some work has been done in pull request #17303. I will further continue this work. Since this will take more time, some time of phase-2 is devoted to it.

JUNE 30- JULY 2 : BUFFER TIME

PHASE-2 :

JULY 3- JULY 27:

WEEK 1 : Week 1 is devoted in extending asymptotic series to various functions (continuing the previous work).

WEEK 2 : In 2nd week the work will be shifted to issue #14068, in this issue a lot of change needs to be done in _eval_nseries of Mul . Kalevi Suominen has provided the path to work on the issue in #14068, I will follow the path. This can simultaneously solve the issue #18008.

WEEK 3-4 : In 3rd week my target will be to make all the X-FAIL tests pass in series.limitseq. This may require some changes in the module which can take a time of 3-4 days. In the remaining 3rd week, the focus will be shifted in extending the support of rs_series to Puiseux series, as this may require additional week I have devoted 4th week to it as well.

PHASE-3:

AUGUST 1- AUGUST 24:

WEEK 1 : This week will be devoted in solving bugs related to ringseries. Issues like #10191, #10190, #9843 are open for quite a long time, I will work on these. Along with this I will work on operations in FormalPowerSeries like reversion, or coefficient sequence of power of fps .

WEEK 2 : In this week, the focus will be on extension of asymptotic series with several variants of expansion for the same function .

WEEK 3 : BUFFER WEEK

TIME COMMITMENT :

In April end I am having end sem exams which will continue till 1st week of May. After the end sems I will devote my time to this project and will work according to the timeline. I am having summer vacations from 9th May to 29th July. In this period(summer vacation) I can give 40 hours of time on this project weekly. During my semesters i.e from 30th July to 31st August I will devote 30 hours of time to this project. If there is any change in the plan then it will be discussed with mentor and schedule will be handled accordingly.

Why Series Expansion?

I have started contributing in this community from December 2019. In these 3-4 months I realised that series module is a prominent part of Sympy library which needs to be robust. Apart from this, series is also one of the vital subject in maths hence I decided to work on this project for this amazing community.

POST GSOC PLAN :

After the completion of gsoc I am planning to contribute in other modules of the library like assumptions and statistics. Along with this I will guide and motivate the newcomers to contribute.