The last phase of this journey has started. I am happy to let you know that I have passed Phase 2 successfully. Phase 3 will include merging of some important code written in Phase 2, and also implementation of some other useful code. I had a meeting with **Sartaj** in which we discussed about the deliverables to be completed in the last phase.

- The
`FormalPowerSeries class`

PR has undergone a lot of changes. There has been quite a number of API changes, inorder to make the subclasses more usable by the users. The wrapper`FiniteFormalPowerSeries`

class now looks somewhat like this :–

```
class FiniteFormalPowerSeries(FormalPowerSeries):
"""Base Class for Product, Compose and Inverse classes"""
def __init__(self, *args):
pass
@property
def ffps(self):
return self.args[0][0]
@property
def gfps(self):
return self.args[0][1]
@property
def f(self):
return self.ffps.function
@property
def g(self):
return self.gfps.function
@property
def infinite(self):
raise NotImplementedError("No infinite version for an object of"
" FiniteFormalPowerSeries class.")
def _eval_terms(self, n):
raise NotImplementedError("(%s)._eval_terms()" % self)
def _eval_term(self, pt):
raise NotImplementedError("By the current logic, one can get terms"
"upto a certain order, instead of getting term by term.")
def polynomial(self, n):
return self._eval_terms(n)
def _eval_derivative(self, x):
raise NotImplementedError
def integrate(self, x):
raise NotImplementedError
```

As you can see, there are four properties namely `ffps`

(the `Formal Power Series`

of the first function). `gfps`

(the `Formal Power Series`

of the second function), and `f`

and `g`

, which are the two functions respectively. This was done so that the API of the three subclasses can be changed to, for example `FormalPowerSeriesCompose((self, other), self.x, self.x0, self.dir, ((self.bell_coeff_seq,), self.xk, self.ind))`

.

We pass `formal power series`

instead of `functions`

, since the computation in the `_eval_terms()`

function in the three subclasses will be quite easy.

- I also started working on the PR which implements
`aseries`

function for various special functions. I hav e already implemented for`erf`

variants. The PR should be ready by the next week. Also the suggestions provided by Sartaj on the first`aseries`

PR #17167, have been integrated. You can view them in the PR.

That’s it for this week. See you in the next week.