#8972: Inversion and fraction fields for power series rings
--------------------------+-------------------------------------------------
   Reporter:  SimonKing   |       Owner:  AlexGhitza                       
       Type:  defect      |      Status:  needs_review                     
   Priority:  major       |   Milestone:  sage-4.4.2                       
  Component:  algebra     |    Keywords:  power series ring, fraction field
     Author:  Simon King  |    Upstream:  N/A                              
   Reviewer:              |      Merged:                                   
Work_issues:              |  
--------------------------+-------------------------------------------------

Comment(by SimonKing):

 Replying to [comment:13 robertwb]:
 > Do you have any timings for power series sqrt()?

 Tentatively.

 Without the patch:
 {{{
 sage: P.<t> = QQ[[]]
 sage: p = 9 - 33*t - 13*t^2 - 155*t^3 - 429*t^4 - 137*t^5 + 170*t^6 +
 81*t^7 - 132*t^8 + 179*t^9 + O(t^10)
 sage: p.sqrt()
 3 - 11/2*t - 173/24*t^2 - 5623/144*t^3 - 174815/1152*t^4 -
 8187925/20736*t^5 - 12112939/9216*t^6 - 7942852751/1492992*t^7 -
 1570233970141/71663616*t^8 - 12900142229635/143327232*t^9 + O(t^10)
 sage: timeit('q = p.sqrt()')
 25 loops, best of 3: 13.3 ms per loop
 sage: timeit('q = (p^2).sqrt()')
 25 loops, best of 3: 13.6 ms per loop
 sage: timeit('q = (p^4).sqrt()')
 25 loops, best of 3: 14.5 ms per loop
 sage: PZ = ZZ[['t']]
 sage: timeit('q = (PZ(p)^2).sqrt()')
 ERROR: An unexpected error occurred while tokenizing input
 The following traceback may be corrupted or invalid
 The error message is: ('EOF in multi-line statement', (27, 0))
 ...
 TypeError: no conversion of this rational to integer
 sage: p = 9 - 33*t - 13*t^2 - 155*t^3 - 429*t^4 - 137*t^5 + 170*t^6 +
 81*t^7 - 132*t^8 + 179*t^9
 sage: timeit('q = p.sqrt()')
 25 loops, best of 3: 20.7 ms per loop
 sage: timeit('q = (p^2).sqrt()')
 25 loops, best of 3: 21.9 ms per loop
 }}}

 With the patch:
 {{{
 sage: P.<t> = QQ[[]]
 sage: p = 9 - 33*t - 13*t^2 - 155*t^3 - 429*t^4 - 137*t^5 + 170*t^6 +
 81*t^7 - 132*t^8 + 179*t^9 + O(t^10)
 sage: p.sqrt()
 3 - 11/2*t - 173/24*t^2 - 5623/144*t^3 - 174815/1152*t^4 -
 8187925/20736*t^5 - 12112939/9216*t^6 - 7942852751/1492992*t^7 -
 1570233970141/71663616*t^8 - 12900142229635/143327232*t^9 + O(t^10)
 sage: timeit('q = p.sqrt()')
 25 loops, best of 3: 15.5 ms per loop
 sage: timeit('q = (p^2).sqrt()')
 25 loops, best of 3: 15.7 ms per loop
 sage: timeit('q = (p^4).sqrt()')
 25 loops, best of 3: 16.6 ms per loop
 sage: PZ = ZZ[['t']]
 sage: timeit('q = (PZ(p)^2).sqrt()')
 25 loops, best of 3: 19.2 ms per loop
 sage: p = 9 - 33*t - 13*t^2 - 155*t^3 - 429*t^4 - 137*t^5 + 170*t^6 +
 81*t^7 - 132*t^8 + 179*t^9
 sage: timeit('q = p.sqrt()')
 25 loops, best of 3: 23.8 ms per loop
 sage: timeit('q = (p^2).sqrt()')
 25 loops, best of 3: 24.5 ms per loop
 }}}

 So, over QQ, there is a slight regression (both with exact and inexact
 input). Over ZZ, it only works with my patch, even for a polynomial that
 is quadratic by definition.

 I will have a closer look at sqrt - perhaps I'll find something.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/8972#comment:14>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to