id summary reporter owner description type status priority milestone component resolution keywords cc merged author reviewer upstream work_issues branch commit dependencies stopgaps
14567 Refactor continued fractions vdelecroix vdelecroix "Continued fractions (in sage.rings.contfrac) do not do what we expect:
1. categories are not properly initialized nor used.
2. all arithmetic operations go back and forth with the underlying rational (there are much more direct solutions for taking the negative, inverse and to compare two continued fractions)
3. it only deals with rational numbers
4. there is no dedicated method for numerical approximations (which is one of the first aim of continued fractions)
5. there is no bridge with quadratic numbers (see also #11345)
6. there is no bridge with words (sage.combinat.words)
7. continued fractions are not included in the documentation
The patch proposed here develop some general design for dealing with continued fractions and solve all issues above.
With the patch applied we can do
{{{
sage: (117/253).continued_fraction()
[0; 2, 6, 6, 3]
sage: K. = QuadraticField(2)
sage: cff = (sqrt2/3 + 1/4).continued_fraction(); cff
[0; 1, (2, 1, 1, 2, 3, 2, 1, 1, 2, 5, 1, 1, 14, 1, 1, 5)*]
sage: cff.period()
(2, 1, 1, 2, 3, 2, 1, 1, 2, 5, 1, 1, 14, 1, 1, 5)
sage: cff.preperiod()
(0, 1)
sage: cff.value()
1/3*sqrt2 + 1/4
sage: cff.n(digits=50)
0.72140452079103168293389624140323269285655729179232
sage: cf_pi = continued_fraction(pi)
[3; 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2, ...]
sage: cf_pi.quotient(1500)
1
sage: cf_fib = continued_fraction(words.FibonacciWord([1,2]))
sage: cf_fib
[1; 2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 2...]
sage: cf_fib.n(digits=42)
1.38795458796714233691931385987318547787815
}}}
In particular we solve the question in #11345." enhancement closed major sage-6.5 number theory fixed continued fractions, numerical approximation tmonteil slabbe Fougeroc Vincent Delecroix Ralf Stephan, Thierry Monteil N/A ec4a4baa149a9b9e74dc32d25745b81059af2e6b #13213, #13256, #14563