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→ax+bcx+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!