# Google Summer of Code 2021 summary

** Published:**

In this post, I will give an overview of my work for the SageMath open-source mathematical software. If you are new to this blog, I suggest that you start reading from the first post.

I will list here a brief overview of the work I did and explain the new features that will be available in SageMath in a future release of the software (probably SageMath 9.5). A more detailed list can be found here.

## Work done during the summer

Ticket #31559: The class

`ModularFormsRing`

now manipulates formal object.The old implementation of the ring of modular forms was a little bit outdated. Now, the elements of this ring in SageMath are instances of the class

`GradedModularFormElement`

which inherit from the class`Element`

:

Ticket #32168: Fixed conversion between modular forms spaces.

It is well known that a modular form \(f\) of weight \(k\), level \(N\) and nebentypus \(\chi\) is modular over \(\Gamma_1(N)\). However, it was not always possible to convert a modular form between different spaces:

This bug is now fixed:

Ticket #32135: implemented

`to_polynomial`

and`from_polynomial`

for the ring of modular forms (see this blog post for more info).Ticket #31512: implemented the ring of quasimodular forms.

A new parent class was implemented, named

`QuasiModularForms`

. This class is similar to the class`ModularFormsRing`

. See this blog post for more info about quasimodular forms.

Ticket #32336: implemented

`to_polynomial`

and`from_polynomial`

for quasimodular forms.These two methods are similar to the ones implemented for the ring of modular forms.

Ticket #32343: implemented the Serre derivative of modular forms.

The Serre derivative of a modular form is an operator that sends a weight \(k\) modular form to a weight \(k+2\) modular form. It is defined by \(f \mapsto q\frac{df}{dq} - \frac{k}{12}E_2 f\).

Ticket #32357: implemented derivative of quasimodular forms and graded modular forms.

The derivative of a modular form \(f \mapsto q\tfrac{df}{dq}\) is not necessarily a modular form. However, it is a quasimodular form. Using the Serre derivative, it was possible to implement this derivative of a graded modular form and a quasiform:

Ticket 32366: implement the q-bracket.

This ticket is still a work in progress, but its goal is to implement the q-bracket using the tools provided in the paper of Zagier: Partitions, quasimodular forms and the Bloch-Okounkov theorem. More details about this \(q\)-bracket is given in this post.

More details about this project can be found in the task ticket #31560. This ticket list all the work done so far, and what is to be done in the future.

## Reviewed tickets

In addition to these new feature, I also reviewed some tickets. Reviewing tickets is a really important part of SageMath development as everything must be peer reviewed before being officially included in the software. In other words, no reviewers \(=\) no new feature/bug fix. Here’s the list of tickets I reviewed during the summer:

## Last words

The GSoC 2021 program is already finished and it was an enriching and captivating experience. I perfected my Python programming skills while working on a subject that I’m passionated about: modular forms. Moreover, I thoroughly enjoyed working in collaboration with my mentor as I learned a lot from him. Thank you for reading this blog. If you have any questions or suggestions do not hesitate to contact me via email.