#14007: When computing determinant over GF(p), don't lift to ZZ
----------------------------------+-----------------------------------------
       Reporter:  jdemeyer        |         Owner:  jason, was         
           Type:  enhancement     |        Status:  needs_work         
       Priority:  blocker         |     Milestone:  sage-5.7           
      Component:  linear algebra  |    Resolution:                     
       Keywords:                  |   Work issues:                     
Report Upstream:  N/A             |     Reviewers:  Charles Bouillaguet
        Authors:  Jeroen Demeyer  |     Merged in:                     
   Dependencies:                  |      Stopgaps:                     
----------------------------------+-----------------------------------------

Comment (by jdemeyer):

 I get different timings, the patch always seems to help.

 I used the script
 {{{
 def dettest(k):
     print "Testing", k
     for s in [50,75..300]:
         M = random_matrix(k, s)
         print "Size%4i"%s,
         time d = M.det()

 dettest(Integers(2432902008176640029))
 dettest(Integers(51090942171709440031))
 }}}

 Without patch:
 {{{
 Testing Ring of integers modulo 2432902008176640029
 Size  50 Time: CPU 1.43 s, Wall: 1.43 s
 Size  75 Time: CPU 0.28 s, Wall: 0.43 s
 Size 100 Time: CPU 0.33 s, Wall: 0.33 s
 Size 125 Time: CPU 0.51 s, Wall: 0.51 s
 Size 150 Time: CPU 0.88 s, Wall: 0.88 s
 Size 175 Time: CPU 1.17 s, Wall: 1.17 s
 Size 200 Time: CPU 1.64 s, Wall: 1.64 s
 Size 225 Time: CPU 2.19 s, Wall: 2.19 s
 Size 250 Time: CPU 2.90 s, Wall: 2.91 s
 Size 275 Time: CPU 3.82 s, Wall: 3.83 s
 Size 300 Time: CPU 4.50 s, Wall: 4.50 s
 Testing Ring of integers modulo 51090942171709440031
 Size  50 Time: CPU 1.53 s, Wall: 1.53 s
 Size  75 Time: CPU 0.18 s, Wall: 0.18 s
 Size 100 Time: CPU 0.34 s, Wall: 0.34 s
 Size 125 Time: CPU 0.54 s, Wall: 0.53 s
 Size 150 Time: CPU 0.88 s, Wall: 0.88 s
 Size 175 Time: CPU 1.28 s, Wall: 1.28 s
 Size 200 Time: CPU 1.71 s, Wall: 1.72 s
 Size 225 Time: CPU 2.29 s, Wall: 2.33 s
 Size 250 Time: CPU 2.99 s, Wall: 3.00 s
 Size 275 Time: CPU 3.83 s, Wall: 3.84 s
 Size 300 Time: CPU 4.67 s, Wall: 4.67 s
 }}}

 With patch:
 {{{
 Testing Ring of integers modulo 2432902008176640029
 Size  50 Time: CPU 0.09 s, Wall: 0.09 s
 Size  75 Time: CPU 0.20 s, Wall: 0.20 s
 Size 100 Time: CPU 0.36 s, Wall: 0.36 s
 Size 125 Time: CPU 0.58 s, Wall: 0.61 s
 Size 150 Time: CPU 0.92 s, Wall: 0.92 s
 Size 175 Time: CPU 1.26 s, Wall: 1.26 s
 Size 200 Time: CPU 1.64 s, Wall: 1.64 s
 Size 225 Time: CPU 2.06 s, Wall: 2.05 s
 Size 250 Time: CPU 2.62 s, Wall: 2.62 s
 Size 275 Time: CPU 3.19 s, Wall: 3.19 s
 Size 300 Time: CPU 3.73 s, Wall: 3.73 s
 Testing Ring of integers modulo 51090942171709440031
 Size  50 Time: CPU 0.10 s, Wall: 0.10 s
 Size  75 Time: CPU 0.32 s, Wall: 0.32 s
 Size 100 Time: CPU 0.47 s, Wall: 0.47 s
 Size 125 Time: CPU 0.86 s, Wall: 0.86 s
 Size 150 Time: CPU 1.29 s, Wall: 1.29 s
 Size 175 Time: CPU 1.82 s, Wall: 1.82 s
 Size 200 Time: CPU 2.46 s, Wall: 2.46 s
 Size 225 Time: CPU 3.34 s, Wall: 3.36 s
 Size 250 Time: CPU 4.48 s, Wall: 4.48 s
 Size 275 Time: CPU 5.85 s, Wall: 5.85 s
 Size 300 Time: CPU 7.71 s, Wall: 7.72 s
 }}}

 This seems to suggest that improvements are needed in the integer
 `determinant()` function.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14007#comment:15>
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