My goal is to implement Gosper's algorithm for algebraic operations on continued fractions into Sage. To begin with, I would like to implement a functionality to perform a homographic transformation
$$x \rightarrow \frac{ax + b}{cx + d}$$
where $x$ is a CF.
The easiest way to do this is probably to create a new class in sage.rings.continued_fraction that would on inicialization accept the integer constants $a, b, c, d$ and a descendant of ContinuedFraction_base class. The most important method of this class would be next()
or iter()
, which would read the input $x$ until it can output new term using Gosper's algorithm.
Should this new class be a descendant of ContinuedFraction_base class, or some other? Maybe ContinuedFraction_infinite?
And most importantly, how do I create an instance of this class with proper arguments, when for example $(3*x + 1)/2$, where $x$ is a CF, is called from Sage?
Thank you very much for any advice on this!