#14567: Refactor continued fractions
----------------------------------------------------------------+-----------
       Reporter:  vdelecroix                                    |         
Owner:  vdelecroix  
           Type:  enhancement                                   |        
Status:  needs_review
       Priority:  major                                         |     
Milestone:  sage-5.10   
      Component:  number theory                                 |    
Resolution:              
       Keywords:  continued fractions, numerical approximation  |   Work 
issues:              
Report Upstream:  N/A                                           |     
Reviewers:              
        Authors:  vdelecroix                                    |     Merged 
in:              
   Dependencies:  #13213, #13957, #14563, #14568                |      
Stopgaps:              
----------------------------------------------------------------+-----------
Changes (by vdelecroix):

  * status:  new => needs_review


Old description:

> Continued fractions (in sage.rings.contfrac) do not do what we expect:
>  * it only deals with rational numbers
>  * there is no dedicated method for numerical approximations (which is
> one of the first aim of continued fractions)
>  * there is no bridge with words (sage.combinat.words)
>  * there is no bridge with quadratic numbers (see also #11345)
>
> Moreover, categories are not properly initialized nor used.
>
> The patch proposed here improves the current version by addressing the
> four issues above.

New description:

 Continued fractions (in sage.rings.contfrac) do not do what we expect:

  0. categories are not properly initialized nor used.
  1. it only deals with rational numbers
  2. there is no dedicated method for numerical approximations (which is
 one of the first aim of continued fractions)
  4. there is no bridge with quadratic numbers (see also #11345)
  3. there is no bridge with words (sage.combinat.words)

 The patch proposed here develop some general design for dealing with
 continued fractions and solves the issues 0, 1 and 4 (and I hope 2); see
 the discussion below.

 {{{
 sage: K.<sqrt2> = 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.value()
 1/3*sqrt2 + 1/4
 }}}
 In particular we solve the question in #11345.

--

Comment:

 The ticket is not yet finished but the review may start (all test pass on
 my computer... waiting for patchbot). Here are some questions I am not
 sure how to deal about.
  * How to cleanly implement numerical approximations of continued
 fractions (see the current (stupid) implementation of `_mpfr_` in
 sage.rings.continued_fraction_element`) ?
  * What method name do we choose for conversion to continued fractions ?
 (ZZ has `_integer_`, QQ has `_rational_` and RR has `_mpfr_`, ...). For
 now it is simply `continued_fraction` as the user may prefer
 `my_number.continued_fraction()` to `CFF(my_number)`.
  * The link with words is not yet done and perhaps should be delayed to
 another ticket as the patch is yet 2500 lines long.
  * some of the stuff about continued fractions in `sage.rings.arith`
 should move to `sage.rings.continued_fraction_field` (I think I do prefer
 `sage.rings.continued_fractions` to
 `sage.rings.continued_fraction_field`...).
  * I did not check what are the Pari's fonctionnalities that may be used
 here

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14567#comment:2>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to