Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A previously fixed regression has reappeared #15792

Closed
simon-king-jena opened this issue Feb 6, 2014 · 22 comments
Closed

A previously fixed regression has reappeared #15792

simon-king-jena opened this issue Feb 6, 2014 · 22 comments

Comments

@simon-king-jena
Copy link
Member

In #11900, some regressions were fixed that have been introduced in #9138. It seems that one of the examples from #11900 shows a regression again:

sage: E = J0(46).endomorphism_ring()
sage: %time g = E.gens()
CPU times: user 10.27 s, sys: 0.22 s, total: 10.49 s
Wall time: 10.63 s

And another example:

sage: def test():
....:     for p in prime_range(10000):
....:         P = GF(p)['t','x','z']
....:         
sage: %time test()
CPU times: user 4.95 s, sys: 0.09 s, total: 5.05 s
Wall time: 5.05 s

With the current master, both examples take twice as much time as it used to be pre-#9138 and post-#11900. Alright, it's a different computer. But still, there seems to be an issue.

CC: @nthiery @nbruin @JohnCremona

Component: performance

Reviewer: Volker Braun

Issue created by migration from https://trac.sagemath.org/ticket/15792

@simon-king-jena

This comment has been minimized.

@simon-king-jena
Copy link
Member Author

comment:2

An amazing amount of time is spent for the initialisation of free modules when computing E.gens(). So, perhaps this is the culprit.

@simon-king-jena
Copy link
Member Author

comment:3

These are all the tests from #11900:

sage: %time D = J0(46).endomorphism_ring().discriminant()
CPU times: user 10.20 s, sys: 0.39 s, total: 10.59 s
Wall time: 10.63 s
sage: %time TestSuite(CrystalOfTableaux(['B',4],shape=[2,1,1,0])).run()
CPU times: user 3.07 s, sys: 0.00 s, total: 3.07 s
Wall time: 3.08 s
sage: W.<z> = CyclotomicField(13)
sage: %time M = Matrix(W, 2, 3, [10^30*(1-z)^13, 1, 2, 3, 4, z]).echelon_form()
CPU times: user 1.95 s, sys: 0.06 s, total: 2.00 s
Wall time: 2.01 s
sage: %time L = EllipticCurve('960d1').prove_BSD()
CPU times: user 5.11 s, sys: 0.22 s, total: 5.34 s
Wall time: 5.37 s
sage: def test(E):
....:     for p in prime_range(10000):
....:         if p != 389:
....:             G = E.change_ring(GF(p)).abelian_group()
....:             
sage: E = EllipticCurve('389a')
sage: %time test(E)
CPU times: user 26.62 s, sys: 0.18 s, total: 26.81 s
Wall time: 26.85 s
sage: E = J0(46).endomorphism_ring()
sage: %time g = E.gens()
CPU times: user 9.11 s, sys: 0.28 s, total: 9.39 s
Wall time: 9.41 s

@simon-king-jena
Copy link
Member Author

comment:4

Aha! Very good news. At #11900, an incomplete category initialisation has been introduced for matrix spaces, to prevent some regression. But I just tested: If we now always fully initialise the matrix space, we get

sage: %time D = J0(46).endomorphism_ring().discriminant()
CPU times: user 10.16 s, sys: 0.22 s, total: 10.39 s
Wall time: 10.40 s
sage: %time TestSuite(CrystalOfTableaux(['B',4],shape=[2,1,1,0])).run()
CPU times: user 3.16 s, sys: 0.09 s, total: 3.25 s
Wall time: 3.26 s
sage: W.<z> = CyclotomicField(13)
sage: %time M = Matrix(W, 2, 3, [10^30*(1-z)^13, 1, 2, 3, 4, z]).echelon_form()
CPU times: user 2.05 s, sys: 0.04 s, total: 2.08 s
Wall time: 2.08 s
sage: %time L = EllipticCurve('960d1').prove_BSD()
CPU times: user 4.70 s, sys: 0.06 s, total: 4.75 s
Wall time: 4.78 s
sage: def test(E):
....:     for p in prime_range(10000):
....:         if p != 389:
....:             G = E.change_ring(GF(p)).abelian_group()
....:             
sage: E = EllipticCurve('389a')
sage: %time test(E)
CPU times: user 26.96 s, sys: 0.24 s, total: 27.20 s
Wall time: 27.26 s
sage: E = J0(46).endomorphism_ring()
sage: %time g = E.gens()
CPU times: user 9.51 s, sys: 0.37 s, total: 9.88 s
Wall time: 9.90 s

In other words, it seems that we can now afford full category initialisation!!

That said, we should find other ways to speed up the E.gens() and E.discriminant() tests, as they used to be faster.

@simon-king-jena
Copy link
Member Author

comment:5

OK, these have not been all tests from #11900. Here is another one. Without full init:

sage: %time for E in cremona_curves([11..100]): S = E.integral_points(both_signs=False)
CPU times: user 21.00 s, sys: 0.07 s, total: 21.08 s
Wall time: 21.11 s

With full init it becomes 21.34 s.

But that's WAAAAAY slower than the time stated in #11900.

So, we have a regression, but it seems we wouldn't make things worse by a full category initialisation of matrix spaces.

@simon-king-jena
Copy link
Member Author

comment:6

So, the plan is: Remove the ugly hack and finally do a full initialisation of matrix spaces. And then see why everything is so slow.

@simon-king-jena
Copy link
Member Author

comment:7

Adding John to Cc, since the examples seemingly showing a regression since #11900 belong (I think) to his field of expertise.

@JohnCremona
Copy link
Member

comment:8

There's another open ticket on integer points at #1-973 which I am working on when I have time. I don't have time to look at this now but it seems fomr the above comments that something has changed outside the ellipticv curve code, is that right?

@simon-king-jena
Copy link
Member Author

comment:9

Replying to @JohnCremona:

There's another open ticket on integer points at #1-973

I suppose you mean #10973.

I don't have time to look at this now but it seems fomr the above comments that something has changed outside the ellipticv curve code, is that right?

Not necessarily. The story is: #9138 has introduced a regression in various examples (among them integer points). Then, I fixed the regression at #11900. But since then, it seems that it got slower again. No idea what ticket was responsible, and not even what part of Sage was responsible.

Actually it is not even totally clear that there is a regression, since I tested on different machines. All what I can say is: Several benchmark tests from #11900 are as fast now (on my laptop) as they used to be post-#11900 (on some desktop computer), and that's why I think the two machines are more or less comparable. And in the integer points, discriminant and gens example the timings are now much worse.

I am sorry for this very long post containing almost a complete prun output for the integer_points example. But I could not find anything strange going on and can only hope that you can lay your finger on the problem.

Some functions take much time, but they belong to elliptic curves ("saturate" and so on) and thus are entitled to occur in this example. However, I don't see any suspicious category or matrix operation taking an unreasonable amount of time. That's the difference to #11900, where the problem was easy to locate.

Do you see more than I in the prun output?

sage: %prun for E in cremona_curves([11..100]): S = E.integral_points(both_signs=False)
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
       22    8.451    0.384    8.451    0.384 {method 'saturate' of 'sage.libs.mwrank.mwrank._two_descent' objects}
       22    2.675    0.122    2.675    0.122 {method 'do_descent' of 'sage.libs.mwrank.mwrank._two_descent' objects}
   376503    0.845    0.000    0.845    0.000 {isinstance}
    22153    0.843    0.000    1.351    0.000 matrix_space.py:1129(matrix)
     7788    0.425    0.000    0.705    0.000 sequence.py:86(Sequence)
6905/4018    0.391    0.000    1.162    0.000 homset.py:83(Hom)
    31442    0.369    0.000    1.477    0.000 matrix_space.py:146(__classcall__)
    88062    0.363    0.000    0.564    0.000 weakref.py:223(__new__)
     3930    0.351    0.000    0.517    0.000 homset.py:410(__init__)
      350    0.336    0.001    0.336    0.001 {method 'ellinit' of 'sage.libs.pari.gen.gen' objects}
3943/3859    0.306    0.000    1.347    0.000 constructor.py:80(_matrix_constructor)
     2661    0.297    0.000    1.561    0.001 {method 'linear_combination_of_rows' of 'sage.matrix.matrix0.Matrix' objects}
     1990    0.279    0.000    1.009    0.001 matrix_space.py:222(__init__)
     9507    0.274    0.000    0.822    0.000 ell_point.py:245(__init__)
     2240    0.269    0.000    0.273    0.000 dynamic_class.py:324(dynamic_class_internal)
    11576    0.254    0.000    0.422    0.000 free_module.py:899(__call__)
    21081    0.245    0.000    0.273    0.000 {hasattr}
2226/1484    0.223    0.000    0.493    0.000 scheme.py:91(__init__)
    64678    0.221    0.000    0.221    0.000 weakref.py:228(__init__)
       42    0.212    0.005    0.215    0.005 {method '_rational_kernel_iml' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
50520/25603    0.209    0.000    0.366    0.000 {hash}
    88076    0.200    0.000    0.200    0.000 {built-in method __new__ of type object at 0xb777efc0}
     1178    0.196    0.000    2.386    0.002 free_module.py:5409(echelon_coordinates)
117692/117620    0.194    0.000    0.195    0.000 {len}
4857/4752    0.181    0.000    0.239    0.000 complex_interval_field.py:346(__call__)
      306    0.154    0.001    1.346    0.004 fgp_module.py:982(smith_form_gens)
      306    0.150    0.000   29.096    0.095 ell_rational_field.py:5355(integral_points)
      657    0.148    0.000    0.491    0.001 {method 'solve_right' of 'sage.matrix.matrix2.Matrix' objects}
11013/10946    0.136    0.000    0.568    0.000 category.py:435(__classcall__)
      960    0.134    0.000    0.374    0.000 additive_abelian_group.py:149(_hermite_lift)
     5652    0.134    0.000    0.337    0.000 free_module.py:5229(__cmp__)
      306    0.132    0.000    0.300    0.001 {method 'solve_left' of 'sage.matrix.matrix2.Matrix' objects}
     2900    0.130    0.000    0.421    0.000 ell_point.py:656(_add_)
     1077    0.127    0.000    0.221    0.000 free_module.py:654(__init__)
     1266    0.124    0.000    9.234    0.007 fgp_module.py:1494(__iter__)
4663/1336    0.118    0.000    0.476    0.000 gen_py.py:106(python)
      382    0.113    0.000    1.025    0.003 ell_generic.py:115(__init__)
    22153    0.113    0.000    1.464    0.000 matrix_space.py:329(__call__)
      960    0.112    0.000    0.995    0.001 additive_abelian_wrapper.py:208(_discrete_exp)
     3544    0.112    0.000    1.256    0.000 homset.py:253(__call__)
    13285    0.104    0.000    0.384    0.000 dynamic_class.py:122(dynamic_class)
  140/125    0.104    0.001    0.688    0.006 {method 'roots' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
    59605    0.103    0.000    0.103    0.000 rational_field.py:214(__hash__)
    12796    0.101    0.000    0.200    0.000 free_module.py:4129(__hash__)
     1578    0.100    0.000    0.443    0.000 category.py:113(_join)
      147    0.100    0.001    0.428    0.003 qqbar.py:6080(_real_refine_interval)
  210/180    0.100    0.000    0.737    0.004 qqbar.py:6247(_complex_refine_interval)
     3134    0.096    0.000    0.994    0.000 scheme.py:339(point)
    60275    0.095    0.000    0.095    0.000 {method 'base_ring' of 'sage.structure.category_object.CategoryObject' objects}
     7788    0.093    0.000    0.110    0.000 sequence.py:463(__init__)
     7115    0.091    0.000    0.112    0.000 morphism.py:94(is_SchemeMorphism)
      520    0.091    0.000    0.181    0.000 ell_generic.py:720(lift_x)
    23452    0.087    0.000    0.206    0.000 category.py:1358(is_subcategory)
      306    0.086    0.000    8.529    0.028 fgp_module.py:1158(optimized)
      306    0.085    0.000    0.085    0.000 {method 'elltors' of 'sage.libs.pari.gen.gen' objects}
     6235    0.085    0.000    0.100    0.000 qqbar.py:4984(_interval_fast)
     8451    0.078    0.000    0.143    0.000 misc.py:161(cputime)
1445/1224    0.077    0.000    3.320    0.003 {method 'echelon_form' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
    20420    0.076    0.000    0.116    0.000 category.py:667(_subcategory_hook_)
     5844    0.074    0.000    0.263    0.000 qqbar.py:3006(__init__)
    36954    0.072    0.000    0.072    0.000 matrix_space.py:1357(nrows)
     2969    0.072    0.000    0.194    0.000 {method 'matrix_from_columns' of 'sage.matrix.matrix1.Matrix' objects}
5161/2205    0.072    0.000    0.644    0.000 qqbar.py:3616(interval_fast)
    27077    0.072    0.000    0.072    0.000 {cmp}
    36954    0.069    0.000    0.069    0.000 matrix_space.py:1345(ncols)
      612    0.066    0.000    0.798    0.001 fgp_module.py:320(__init__)
    31773    0.066    0.000    0.066    0.000 free_module.py:1868(rank)
     5731    0.063    0.000    0.335    0.000 free_module.py:4985(__call__)
      918    0.063    0.000    0.788    0.001 free_module.py:5059(__init__)
    14014    0.063    0.000    0.093    0.000 sequence.py:556(__getitem__)
      614    0.060    0.000    0.137    0.000 ell_generic.py:999(b_invariants)
     6199    0.059    0.000    0.083    0.000 {method '__copy__' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
    10290    0.059    0.000    0.098    0.000 free_module.py:5730(ambient_vector_space)
       42    0.057    0.001    0.539    0.013 matrix_integer_dense_hnf.py:310(solve_system_with_difficult_last_row)
     2098    0.056    0.000    0.096    0.000 {method 'pivots' of 'sage.matrix.matrix0.Matrix' objects}
     4843    0.053    0.000    0.080    0.000 morphism.py:139(__init__)
      263    0.052    0.000    3.092    0.012 matrix_integer_dense_hnf.py:803(probable_hnf)
      526    0.051    0.000    0.080    0.000 {method 'ideal' of 'sage.rings.ring.Ring' objects}
    10619    0.051    0.000    0.051    0.000 free_module.py:330(create_key)
      526    0.050    0.000    0.121    0.000 quotient_ring.py:408(__init__)
     9499    0.050    0.000    0.050    0.000 {method 'extend' of 'list' objects}
     5438    0.049    0.000    0.256    0.000 free_module.py:4214(__cmp__)
    15248    0.049    0.000    0.099    0.000 ell_point.py:340(__getitem__)
     1699    0.048    0.000    0.059    0.000 qqbar.py:6129(update_info)
     4020    0.047    0.000    0.179    0.000 free_module.py:2221(basis_matrix)
     1530    0.047    0.000    0.073    0.000 {method 'rows' of 'sage.matrix.matrix1.Matrix' objects}
     8865    0.046    0.000    0.046    0.000 {sage.rings.ring.is_Ring}
     1655    0.045    0.000    0.132    0.000 polynomial_ring.py:306(_element_constructor_)
     1990    0.045    0.000    0.080    0.000 matrix_space.py:853(_get_matrix_class)
      526    0.045    0.000    1.217    0.002 {method '_reduce' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
15331/15045    0.044    0.000    0.526    0.000 {method 'is_zero' of 'sage.structure.element.Element' objects}
     3239    0.044    0.000    0.616    0.000 projective_homset.py:199(_element_constructor_)
    11453    0.044    0.000    0.069    0.000 group_element.py:77(is_MatrixGroupElement)
     8451    0.043    0.000    0.043    0.000 {resource.getrusage}
    25674    0.043    0.000    0.043    0.000 {method 'parent' of 'sage.structure.element.Element' objects}
    14202    0.043    0.000    0.125    0.000 category.py:150(<genexpr>)
     3536    0.043    0.000    0.418    0.000 constructor.py:767(prepare)
     7406    0.042    0.000    0.095    0.000 spec.py:166(__hash__)
      454    0.042    0.000    0.079    0.000 rational_field.py:138(__init__)
    20683    0.040    0.000    0.040    0.000 {issubclass}
    11567    0.040    0.000    0.064    0.000 free_module.py:1534(dimension)
     1110    0.040    0.000    0.279    0.000 polynomial_ring_constructor.py:60(PolynomialRing)
     1181    0.040    0.000    3.029    0.003 free_module.py:2436(is_submodule)
     4873    0.040    0.000    0.057    0.000 qqbar.py:4893(__init__)
    17488    0.040    0.000    0.040    0.000 free_module.py:1518(degree)
    12624    0.039    0.000    0.117    0.000 category.py:152(<genexpr>)
    21587    0.038    0.000    0.038    0.000 {method 'get' of 'dict' objects}
     5019    0.038    0.000    0.277    0.000 qqbar.py:4295(__init__)
      132    0.038    0.000    0.060    0.000 {method 'norm' of 'sage.modules.free_module_element.FreeModuleElement' objects}
     5904    0.037    0.000    0.221    0.000 homset.py:466(__hash__)
     8451    0.037    0.000    0.180    0.000 misc.py:392(verbose)
       84    0.037    0.000    0.156    0.002 {method '_add_row_and_maintain_echelon_form' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
    19783    0.036    0.000    0.036    0.000 homset.py:789(codomain)
     1178    0.035    0.000    0.143    0.000 free_module.py:5669(_rref_to_echelon_matrix)
      918    0.035    0.000    0.347    0.000 free_module.py:5191(_echelonized_basis)
     7928    0.034    0.000    0.225    0.000 sets_cat.py:286(_element_constructor_)
     5530    0.034    0.000    0.169    0.000 {any}
      306    0.034    0.000    0.349    0.001 additive_abelian_group.py:396(__init__)
3590/3064    0.034    0.000    1.253    0.000 unique_representation.py:1006(__classcall__)
      306    0.033    0.000    0.500    0.002 {method 'smith_form' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
1947/1873    0.033    0.000    0.126    0.000 {method 'has_coerce_map_from' of 'sage.structure.parent.Parent' objects}
     6432    0.033    0.000    0.081    0.000 ell_point.py:562(__nonzero__)
      526    0.032    0.000    0.460    0.001 integer_mod_ring.py:285(__init__)
     2421    0.032    0.000    0.238    0.000 qqbar.py:3112(_mul_)
     8317    0.032    0.000    0.055    0.000 quotient_ring.py:308(is_QuotientRing)
     2586    0.031    0.000    0.134    0.000 schemes.py:18(Schemes)
     1002    0.030    0.000    0.060    0.000 free_module.py:4431(change_ring)
     2044    0.030    0.000    0.053    0.000 qqbar.py:2438(an_muldiv_rational)
     1828    0.030    0.000    0.130    0.000 fgp_module.py:582(_element_constructor_)
       44    0.030    0.001    0.107    0.002 {method 'gram_schmidt' of 'sage.matrix.matrix2.Matrix' objects}
     1213    0.029    0.000    0.037    0.000 {method 'row' of 'sage.matrix.matrix_rational_dense.Matrix_rational_dense' objects}
     2963    0.029    0.000    0.303    0.000 {sage.rings.ring._is_Field}
      306    0.028    0.000    2.065    0.007 ell_torsion.py:127(__init__)
     1995    0.028    0.000    0.058    0.000 free_module.py:872(element_class)
    12029    0.028    0.000    0.028    0.000 {range}
      808    0.028    0.000    0.037    0.000 homset.py:187(natural_map)
     1600    0.027    0.000    0.277    0.000 category.py:466(__init__)
     7000    0.027    0.000    0.083    0.000 free_module.py:5131(__hash__)
     6622    0.027    0.000    0.039    0.000 qqbar.py:4963(kind)
     3318    0.027    0.000    0.151    0.000 fgp_module.py:1593(__hash__)
     2425    0.027    0.000    0.512    0.000 modules.py:70(__classcall_private__)
     7218    0.027    0.000    0.042    0.000 category.py:1739(is_Category)
     1315    0.027    0.000    0.037    0.000 matrix_integer_dense_hnf.py:474(pivots_of_hnf_matrix)
     1416    0.026    0.000    0.085    0.000 polynomial_element_generic.py:718(__init__)
      350    0.026    0.000    0.027    0.000 {eval}
      569    0.026    0.000    0.033    0.000 {method 'change_ring' of 'sage.matrix.matrix_rational_dense.Matrix_rational_dense' objects}
3590/3064    0.026    0.000    1.218    0.000 {sage.misc.classcall_metaclass.typecall}
     4843    0.026    0.000    0.106    0.000 projective_point.py:990(__init__)
      173    0.025    0.000    0.055    0.000 polynomial_ring.py:249(__init__)
    12783    0.025    0.000    0.025    0.000 homset.py:773(domain)
      360    0.025    0.000    0.602    0.002 scheme.py:299(point_homset)
     6303    0.025    0.000    0.036    0.000 qqbar.py:4313(_ensure_real)
     1178    0.025    0.000    2.878    0.002 free_module.py:1083(__contains__)
      360    0.025    0.000    1.103    0.003 constructor.py:47(EllipticCurve)
1041/1031    0.024    0.000    0.831    0.001 ell_generic.py:479(__call__)
     2797    0.024    0.000    0.103    0.000 {sum}
     1077    0.024    0.000    0.026    0.000 free_module.py:6636(element_class)
     3388    0.024    0.000    0.174    0.000 matrix_space.py:1322(matrix_space)
     5904    0.024    0.000    0.059    0.000 ell_generic.py:198(__hash__)
      973    0.024    0.000    0.044    0.000 rational_field.py:322(_coerce_map_from_)
      328    0.024    0.000    0.890    0.003 cremona.py:815(elliptic_curve)
1675/1603    0.023    0.000    0.429    0.000 qqbar.py:4582(sign)
    12125    0.023    0.000    0.023    0.000 free_module.py:4714(ambient_vector_space)
      905    0.023    0.000    0.087    0.000 {method 'matrix_from_rows' of 'sage.matrix.matrix1.Matrix' objects}
       78    0.023    0.000    0.110    0.001 ell_generic.py:1475(division_polynomial_0)
     1828    0.023    0.000    0.163    0.000 additive_abelian_wrapper.py:256(_element_constructor_)
      610    0.023    0.000    0.080    0.000 {method 'augment' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
      873    0.023    0.000    2.258    0.003 free_module.py:5889(echelon_coordinate_vector)
      440    0.023    0.000    0.023    0.000 {method 'execute' of 'sqlite3.Cursor' objects}
      306    0.022    0.000    0.520    0.002 free_module.py:1442(coordinate_module)
      504    0.022    0.000    0.192    0.000 ell_generic.py:1381(discriminant)
     3105    0.022    0.000    0.039    0.000 copy.py:66(copy)
      263    0.022    0.000    0.118    0.000 matrix_integer_dense_hnf.py:706(extract_ones_data)
     3962    0.022    0.000    0.325    0.000 fields.py:60(__contains__)
      918    0.022    0.000    0.402    0.000 homset.py:495(_generic_convert_map)
   120/60    0.021    0.000    0.210    0.004 qqbar.py:3833(__pow__)
      407    0.021    0.000    0.101    0.000 pushout.py:3041(pushout)
     1731    0.021    0.000    0.140    0.000 free_module.py:1059(_coerce_impl)
     1506    0.021    0.000    0.164    0.000 scheme.py:455(base_scheme)
     382    0.021    0.000    0.144    0.000 algebraic_scheme.py:900(__init__)
      306    0.021    0.000    0.322    0.001 additive_abelian_group.py:119(cover_and_relations_from_invariants)
      401    0.021    0.000    0.200    0.000 {method 'derivative' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
     1507    0.021    0.000    0.058    0.000 {sorted}
     8643    0.020    0.000    0.021    0.000 complex_interval_field.py:289(_real_field)
     8138    0.020    0.000    0.020    0.000 {sage.rings.real_mpfi.RealIntervalField}
     2608    0.020    0.000    0.029    0.000 scheme.py:426(base_ring)
      306    0.020    0.000    0.020    0.000 {method '_unset_coercions_used' of 'sage.structure.parent.Parent' objects}
       14    0.020    0.001    0.060    0.004 qqbar.py:6481(intv_fn)
      372    0.020    0.000    0.357    0.001 ell_rational_field.py:589(pari_curve)
    10290    0.020    0.000    0.020    0.000 free_module.py:5386(ambient_module)
    11533    0.020    0.000    0.020    0.000 {sage.matrix.matrix.is_Matrix}
      427    0.020    0.000    0.049    0.000 term_order.py:558(__init__)
       98    0.019    0.000    0.178    0.002 qqbar.py:6935(_interval_fast)
     5099    0.019    0.000    0.031    0.000 scheme.py:34(is_Scheme)
     1061    0.019    0.000    0.078    0.000 free_module.py:1019(_has_coerce_map_from_space)
1462/1102    0.019    0.000    0.556    0.001 spec.py:106(__init__)
     7000    0.019    0.000    0.027    0.000 sequence.py:685(__hash__)
     1506    0.019    0.000    0.022    0.000 {sage.structure.parent_gens.normalize_names}
      808    0.019    0.000    0.283    0.000 {method 'hom' of 'sage.structure.parent_gens.ParentWithGens' objects}
     2024    0.019    0.000    0.343    0.000 homset.py:871(__init__)
1635/1481    0.019    0.000    0.522    0.000 qqbar.py:661(_element_constructor_)
      373    0.018    0.000    0.085    0.000 ell_point.py:739(__neg__)
     2074    0.018    0.000    0.032    0.000 category.py:1964(_make_named_class)
       22    0.018    0.001    0.915    0.042 period_lattice.py:1150(elliptic_logarithm)
     3566    0.018    0.000    0.028    0.000 projective_space.py:237(ngens)
     2036    0.018    0.000    0.037    0.000 homset.py:518(value_ring)
      306    0.018    0.000    1.145    0.004 fgp_module.py:1461(cardinality)
     5148    0.018    0.000    0.018    0.000 {method 'list' of 'sage.modules.vector_rational_dense.Vector_rational_dense' objects}
     3919    0.017    0.000    0.017    0.000 commutative_additive_semigroups.py:122(__init_extra__)
     8467    0.017    0.000    0.017    0.000 {sage.rings.polynomial.multi_polynomial_ring_generic.is_MPolynomialRing}
      960    0.016    0.000    0.038    0.000 {method 'pivot_rows' of 'sage.matrix.matrix2.Matrix' objects}
      885    0.016    0.000    0.057    0.000 magmas.py:101(__init_extra__)
1603/1561    0.016    0.000    0.458    0.000 qqbar.py:4372(__cmp__)
     3908    0.016    0.000    0.026    0.000 fraction_field.py:131(is_FractionField)
      202    0.016    0.000    0.057    0.000 matrix_space.py:516(get_action_impl)
      918    0.016    0.000    0.032    0.000 free_module.py:5302(_denominator)
     1283    0.016    0.000    0.021    0.000 {method 'diameter' of 'sage.rings.complex_interval.ComplexIntervalFieldElement' objects}
     8821    0.015    0.000    0.015    0.000 {method 'is_exact' of 'sage.rings.ring.Ring' objects}
     1030    0.015    0.000    0.113    0.000 {method 'python' of 'sage.libs.pari.gen.gen' objects}
      728    0.015    0.000    0.119    0.000 polynomial_ring_constructor.py:518(_single_variate)
      306    0.015    0.000    0.026    0.000 {method 'stack' of 'sage.matrix.matrix1.Matrix' objects}
       15    0.015    0.001    0.301    0.020 qqbar.py:6433(exactify)
       45    0.015    0.000    0.031    0.001 complex_roots.py:35(refine_root)
      610    0.015    0.000    0.016    0.000 {method 'is_prime' of 'sage.rings.integer.Integer' objects}
      263    0.015    0.000    1.092    0.004 matrix_integer_dense_hnf.py:506(hnf_square)
      829    0.015    0.000    0.130    0.000 free_module.py:734(_Hom_)
     8133    0.014    0.000    0.014    0.000 {sage.rings.complex_interval.is_ComplexIntervalFieldElement}
 1737/220    0.014    0.000    0.676    0.003 qqbar.py:3551(_more_precision)
     8431    0.014    0.000    0.014    0.000 {method 'precision' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
      960    0.014    0.000    1.385    0.001 additive_abelian_wrapper.py:114(element)
       44    0.014    0.000    0.096    0.002 weierstrass_morphism.py:240(isomorphisms)
     8338    0.014    0.000    0.014    0.000 {method 'nrows' of 'sage.matrix.matrix0.Matrix' objects}
      628    0.014    0.000    0.014    0.000 {method 'log' of 'sage.rings.real_mpfr.RealNumber' objects}
     5278    0.014    0.000    0.014    0.000 {method 'list' of 'sage.modules.vector_integer_dense.Vector_integer_dense' objects}
      526    0.014    0.000    1.319    0.003 matrix_integer_dense_hnf.py:647(probable_pivot_columns)
     1110    0.014    0.000    0.024    0.000 polynomial_ring_constructor.py:503(_get_from_cache)
      307    0.014    0.000    0.866    0.003 cremona.py:899(iter)
     6783    0.013    0.000    0.013    0.000 complex_interval_field.py:212(prec)
     3611    0.013    0.000    0.021    0.000 commutative_ring.py:22(is_CommutativeRing)
      306    0.013    0.000    0.809    0.003 additive_abelian_wrapper.py:152(__init__)
      306    0.013    0.000    1.126    0.004 fgp_module.py:919(invariants)
     2005    0.013    0.000    0.021    0.000 ell_point.py:494(codomain)
     3310    0.013    0.000    0.021    0.000 ell_generic.py:85(is_EllipticCurve)
      918    0.013    0.000    0.034    0.000 {method 'transpose' of 'sage.matrix.matrix_rational_dense.Matrix_rational_dense' objects}
       22    0.013    0.001    0.261    0.012 ell_rational_field.py:6448(integral_points_with_bounded_mw_coeffs)
       76    0.013    0.000    0.019    0.000 {method 'argument' of 'sage.rings.complex_interval.ComplexIntervalFieldElement' objects}
      360    0.013    0.000    0.112    0.000 homset.py:121(create_key_and_extra_args)
     4584    0.013    0.000    0.013    0.000 fgp_module.py:795(V)
      382    0.013    0.000    0.098    0.000 polynomial_ring_constructor.py:569(_multi_variate)
     1575    0.013    0.000    0.123    0.000 free_module.py:6572(basis_seq)
     4278    0.013    0.000    0.013    0.000 fgp_module.py:830(W)
       16    0.012    0.001    0.042    0.003 qqbar.py:6465(find_fn)
       44    0.012    0.000    0.021    0.000 {method 'LLL' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
     1266    0.012    0.000    0.028    0.000 mrange.py:90(_xmrange_iter)
      470    0.012    0.000    0.657    0.001 qqbar.py:3672(interval)
     3239    0.012    0.000    0.015    0.000 homset.py:467(extended_codomain)
     3156    0.012    0.000    0.019    0.000 category.py:143(<genexpr>)
      328    0.012    0.000    0.017    0.000 ell_rational_field.py:393(is_integral)
      514    0.012    0.000    0.642    0.001 qqbar.py:3648(interval_diameter)
     5973    0.012    0.000    0.012    0.000 {sage.rings.finite_rings.finite_field_base.is_FiniteField}
      263    0.012    0.000    0.246    0.001 free_module.py:5484(user_to_echelon_matrix)
      526    0.012    0.000    0.028    0.000 {method 'matrix_from_rows_and_columns' of 'sage.matrix.matrix1.Matrix' objects}
     3116    0.012    0.000    0.018    0.000 spec.py:18(is_Spec)
      350    0.011    0.000    0.745    0.002 ell_number_field.py:122(__init__)
      959    0.011    0.000    0.043    0.000 {method '_populate_coercion_lists_' of 'sage.structure.parent.Parent' objects}
     4439    0.011    0.000    0.011    0.000 free_module.py:1781(is_sparse)
      529    0.011    0.000    0.196    0.000 rings.py:95(_Hom_)
     1613    0.011    0.000    0.020    0.000 additive_abelian_wrapper.py:100(__init__)
     3948    0.011    0.000    0.011    0.000 ambient_space.py:383(dimension_relative)
     1578    0.011    0.000    0.454    0.000 category.py:1574(join)
      328    0.011    0.000   13.882    0.042 ell_rational_field.py:3702(torsion_points)
     1908    0.011    0.000    0.012    0.000 polynomial_ring.py:738(__hash__)
      915    0.011    0.000    0.011    0.000 {method 'denominator' of 'sage.modules.free_module_element.FreeModuleElement' objects}
     4134    0.011    0.000    0.011    0.000 {method 'lower' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
      764    0.011    0.000    0.136    0.000 projective_space.py:306(coordinate_ring)
      306    0.011    0.000    2.395    0.008 free_module.py:2323(intersection)
       14    0.011    0.001    0.011    0.001 {method 'polredbest' of 'sage.libs.pari.gen.gen' objects}
     1443    0.011    0.000    0.013    0.000 free_module.py:1903(zero_vector)
      814    0.011    0.000    0.058    0.000 pushout.py:3429(construction_tower)
     5133    0.010    0.000    0.010    0.000 ell_generic.py:1260(base_ring)
      478    0.010    0.000    0.013    0.000 matrix_space.py:1082(zero_matrix)
     1178    0.010    0.000    2.843    0.002 free_module.py:1382(coordinates)
      348    0.010    0.000    0.039    0.000 {method '_clear_denom' of 'sage.matrix.matrix_rational_dense.Matrix_rational_dense' objects}
      384    0.010    0.000    0.047    0.000 multi_polynomial_element.py:220(_mul_)
      532    0.010    0.000    0.115    0.000 category_types.py:324(__init__)
      876    0.010    0.000    0.028    0.000 free_module.py:1578(gen)
     1002    0.010    0.000    0.056    0.000 {method 'rank' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
     1600    0.010    0.000    0.047    0.000 category.py:1238(subcategory_class)
 1284/610    0.010    0.000    0.347    0.001 qqbar.py:4334(_more_precision)
      328    0.010    0.000    3.223    0.010 ell_rational_field.py:3650(torsion_subgroup)
     6122    0.010    0.000    0.010    0.000 {method 'category' of 'sage.structure.parent.Parent' objects}
  381/201    0.010    0.000    0.396    0.002 complex_field.py:353(_element_constructor_)
     1530    0.010    0.000    0.016    0.000 homset.py:671(__cmp__)
     2625    0.010    0.000    0.016    0.000 free_module.py:634(is_FreeModule)
       44    0.010    0.000    0.085    0.002 period_lattice.py:488(_compute_periods_real)
     3402    0.010    0.000    0.010    0.000 {method 'category' of 'sage.modules.module.Module_old' objects}
     1637    0.010    0.000    0.018    0.000 ell_point.py:378(__cmp__)
     5937    0.010    0.000    0.010    0.000 {method 'base' of 'sage.structure.category_object.CategoryObject' objects}
      526    0.010    0.000    0.042    0.000 free_module.py:5634(_echelon_to_rref_matrix)
      674    0.009    0.000    0.104    0.000 {method 'transpose' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
      612    0.009    0.000    0.532    0.001 free_module.py:2735(span_of_basis)
     1466    0.009    0.000    0.032    0.000 scheme.py:138(__cmp__)
       22    0.009    0.000    0.075    0.003 period_lattice.py:996(coordinates)
     3919    0.009    0.000    0.009    0.000 additive_magmas.py:91(__init_extra__)
     1613    0.009    0.000    0.009    0.000 fgp_element.py:62(__init__)
     2069    0.009    0.000    0.013    0.000 {method 'prec' of 'sage.rings.complex_interval.ComplexIntervalFieldElement' objects}
     4910    0.009    0.000    0.009    0.000 spec.py:295(coordinate_ring)
      526    0.009    0.000    0.012    0.000 ideal.py:237(__init__)
     5135    0.009    0.000    0.009    0.000 {method 'type' of 'sage.libs.pari.gen.gen' objects}
      610    0.009    0.000    0.256    0.000 free_module.py:5531(echelon_to_user_matrix)
      263    0.009    0.000    3.212    0.012 matrix_integer_dense_hnf.py:1031(hnf_with_transformation)
      305    0.009    0.000    0.582    0.002 scheme.py:226(__call__)
      306    0.009    0.000   10.628    0.035 ell_torsion.py:267(points)
     4361    0.009    0.000    0.009    0.000 {sage.structure.element.parent}
     1466    0.009    0.000    0.014    0.000 spec.py:129(_cmp_)
      526    0.009    0.000    0.009    0.000 {method 'next_prime' of 'sage.rings.integer.Integer' objects}
1484/1029    0.009    0.000    0.259    0.000 qqbar.py:4627(_interval_fast)
      526    0.009    0.000    0.009    0.000 {method 'random_element' of 'sage.rings.integer_ring.IntegerRing_class' objects}
     4501    0.009    0.000    0.009    0.000 {method 'append' of 'list' objects}
     2314    0.009    0.000    0.014    0.000 fgp_module.py:269(is_FGP_Module)
     2625    0.009    0.000    0.010    0.000 {sage.structure.element.canonical_coercion}
      382    0.008    0.000    0.227    0.001 projective_space.py:118(ProjectiveSpace)
      328    0.008    0.000    0.015    0.000 cremona.py:286(parse_cremona_label)
      526    0.008    0.000    0.330    0.001 quotient_ring.py:1221(__init__)
     4548    0.008    0.000    0.008    0.000 sequence.py:780(universe)
     2561    0.008    0.000    0.008    0.000 proof.py:151(get_flag)
     5126    0.008    0.000    0.008    0.000 free_module.py:4961(ambient_vector_space)
       22    0.008    0.000    0.160    0.007 period_lattice.py:1073(reduce)
      350    0.008    0.000    0.754    0.002 ell_rational_field.py:147(__init__)
     1951    0.008    0.000    0.036    0.000 ell_point.py:549(curve)
      387    0.008    0.000    0.021    0.000 {method '_coerce_' of 'sage.structure.parent_old.Parent' objects}
     3885    0.008    0.000    0.008    0.000 {method 'has_key' of 'dict' objects}
  493/313    0.008    0.000    0.418    0.001 complex_field.py:318(__call__)
      306    0.008    0.000   11.393    0.037 ell_rational_field.py:1769(gens)
     1967    0.008    0.000    0.013    0.000 rational_field.py:994(is_RationalField)
     1951    0.008    0.000    0.028    0.000 ell_point.py:445(scheme)
      646    0.008    0.000    0.022    0.000 qqbar.py:2481(an_muldiv_zero)
       22    0.008    0.000    0.043    0.002 {method 'charpoly' of 'sage.matrix.matrix2.Matrix' objects}
     3029    0.008    0.000    0.008    0.000 {method 'pop' of 'list' objects}
      306    0.008    0.000    0.603    0.002 fgp_module.py:864(_relative_matrix)
     3591    0.007    0.000    0.007    0.000 ell_generic.py:904(a_invariants)
      263    0.007    0.000    0.019    0.000 matrix_integer_dense_hnf.py:760(is_in_hnf_form)
      992    0.007    0.000    0.160    0.000 groupoid.py:34(__init__)
     4310    0.007    0.000    0.007    0.000 {method 'precision' of 'sage.rings.real_mpfi.RealIntervalField_class' objects}
     3566    0.007    0.000    0.007    0.000 algebraic_scheme.py:317(ambient_space)
     4250    0.007    0.000    0.007    0.000 {method 'ncols' of 'sage.matrix.matrix0.Matrix' objects}
     2899    0.007    0.000    0.007    0.000 copy.py:113(_copy_with_constructor)
      162    0.007    0.000    0.010    0.000 ell_rational_field.py:6493(is_approx_integral)
     1065    0.007    0.000    0.161    0.000 vector_spaces.py:34(__classcall_private__)
      154    0.007    0.000    0.010    0.000 ell_generic.py:1108(c_invariants)
  514/396    0.007    0.000    0.420    0.001 qqbar.py:7540(_interval_fast)
     3981    0.007    0.000    0.007    0.000 {method 'category' of 'sage.rings.ring.Ring' objects}
     1723    0.007    0.000    0.007    0.000 {method 'diameter' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
       22    0.007    0.000    0.062    0.003 ell_number_field.py:2389(lll_reduce)
     3806    0.007    0.000    0.007    0.000 free_module.py:5776(basis)
       22    0.007    0.000    0.060    0.003 polynomial_element_generic.py:635(_gcd)
     1616    0.007    0.000    0.017    0.000 fgp_module.py:466(__eq__)
     2927    0.007    0.000    0.007    0.000 {method 'upper' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
      501    0.007    0.000    0.059    0.000 qqbar.py:3163(_sub_)
     1223    0.006    0.000    0.006    0.000 {method 'python_list' of 'sage.libs.pari.gen.gen' objects}
      772    0.006    0.000    0.012    0.000 multi_polynomial_element.py:343(__init__)
      263    0.006    0.000    0.010    0.000 matrix_integer_dense_hnf.py:668(ones)
      936    0.006    0.000    0.010    0.000 free_module.py:2205(base_field)
     2791    0.006    0.000    0.006    0.000 complex_field.py:283(_real_field)
      610    0.006    0.000    1.892    0.003 free_module.py:5830(coordinate_vector)
     1224    0.006    0.000    0.008    0.000 fgp_module.py:908(base_ring)
      529    0.006    0.000    0.178    0.000 homset.py:38(RingHomset)
      360    0.006    0.000    0.046    0.000 homset.py:179(create_object)
     3646    0.006    0.000    0.006    0.000 {sage.structure.element.is_Vector}
       15    0.006    0.000    0.019    0.001 {method 'factor' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
      305    0.006    0.000    0.009    0.000 mrange.py:46(_is_finite)
     1372    0.006    0.000    0.009    0.000 factorization.py:325(__getitem__)
      306    0.006    0.000    1.109    0.004 fgp_module.py:888(_smith_form)
     2966    0.006    0.000    0.006    0.000 complex_interval_field.py:48(late_import)
      263    0.006    0.000    0.040    0.000 matrix_integer_dense_hnf.py:596(interleave_matrices)
      182    0.006    0.000    0.013    0.000 polynomial_singular_interface.py:334(can_convert_to_singular)
     1476    0.006    0.000    0.010    0.000 integer_mod_ring.py:148(is_IntegerModRing)
      306    0.006    0.000    0.086    0.000 fgp_morphism.py:459(FGP_Homset)
      258    0.006    0.000    0.031    0.000 {method 'row' of 'sage.matrix.matrix1.Matrix' objects}
      526    0.006    0.000    0.468    0.001 integer_mod_ring.py:128(create_object)
      306    0.006    0.000    0.096    0.000 additive_abelian_wrapper.py:59(__init__)
      306    0.006    0.000    0.043    0.000 free_module.py:3039(_Hom_)
      723    0.006    0.000    0.017    0.000 {method 'sort' of 'list' objects}
      382    0.006    0.000    0.097    0.000 algebraic_scheme.py:223(__init__)
       60    0.006    0.000    0.008    0.000 complex_interval_field.py:176(__init__)
  357/299    0.006    0.000    1.051    0.004 qqbar.py:6049(refine_interval)
      392    0.006    0.000    0.047    0.000 rational_field.py:674(is_subring)
      698    0.006    0.000    0.117    0.000 fgp_module.py:388(_coerce_map_from_)
     2836    0.006    0.000    0.006    0.000 additive_abelian_wrapper.py:167(universe)
     3067    0.006    0.000    0.006    0.000 {sage.rings.integer_ring.is_IntegerRing}
      168    0.006    0.000    0.011    0.000 {method 'stack' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
     2756    0.006    0.000    0.006    0.000 free_module.py:5170(echelonized_basis_matrix)
       81    0.006    0.000    0.008    0.000 factorization.py:612(simplify)
     1082    0.005    0.000    0.007    0.000 category_types.py:206(_make_named_class_key)
      723    0.005    0.000    0.008    0.000 {method 'center' of 'sage.rings.complex_interval.ComplexIntervalFieldElement' objects}
      382    0.005    0.000    0.211    0.001 projective_space.py:226(__init__)
       14    0.005    0.000    0.076    0.005 qqbar.py:1562(isolating_interval)
      306    0.005    0.000    0.281    0.001 free_module.py:2589(span)
     1052    0.005    0.000    0.005    0.000 {sage.rings.finite_rings.integer_mod.IntegerMod}
  653/399    0.005    0.000    0.646    0.002 qqbar.py:6582(_interval_fast)
      913    0.005    0.000    0.014    0.000 re.py:226(_compile)
     2072    0.005    0.000    0.005    0.000 {method 'fraction_field' of 'sage.rings.integer_ring.IntegerRing_class' objects}
     2658    0.005    0.000    0.005    0.000 qqbar.py:5031(rational_value)
  435/333    0.005    0.000    0.433    0.001 qqbar.py:7263(_interval_fast)
     1704    0.005    0.000    0.005    0.000 {method 'pivots' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
       98    0.005    0.000    0.017    0.000 {method 'polynomial' of 'sage.rings.number_field.number_field_element.NumberFieldElement' objects}
      911    0.005    0.000    0.011    0.000 complex_interval_field.py:76(ComplexIntervalField)
  226/205    0.005    0.000    0.089    0.000 qqbar.py:4393(__pow__)
      741    0.005    0.000    0.007    0.000 {method 'is_subring' of 'sage.rings.integer_ring.IntegerRing_class' objects}
       22    0.005    0.000    1.581    0.072 period_lattice.py:124(__init__)
     2598    0.005    0.000    0.005    0.000 qqbar.py:5018(is_rational)
      301    0.005    0.000    0.011    0.000 rational_field.py:288(construction)
      382    0.005    0.000    0.151    0.000 projective_curve.py:46(__init__)
      204    0.005    0.000    0.015    0.000 free_module.py:715(construction)
      382    0.005    0.000    0.195    0.001 ambient_space.py:46(__init__)
      422    0.005    0.000    0.021    0.000 qqbar.py:6211(try_bisection)
      173    0.005    0.000    0.077    0.000 polynomial_ring.py:1459(__init__)
      825    0.005    0.000    0.058    0.000 qqbar.py:3709(__init__)
      349    0.005    0.000    0.033    0.000 qqbar.py:3148(_add_)
      387    0.004    0.000    0.005    0.000 {method 'imag' of 'sage.rings.complex_interval.ComplexIntervalFieldElement' objects}
     1880    0.004    0.000    0.004    0.000 {method 'nrows' of 'sage.libs.pari.gen.gen' objects}
     1178    0.004    0.000    0.004    0.000 {method 'list_from_positions' of 'sage.modules.free_module_element.FreeModuleElement' objects}
      878    0.004    0.000    0.004    0.000 matrix_space.py:284(_copy_zero)
       15    0.004    0.000    0.337    0.022 qqbar.py:7320(exactify)
     2356    0.004    0.000    0.004    0.000 integer_mod_ring.py:866(order)
      179    0.004    0.000    0.009    0.000 polynomial_ring.py:488(_coerce_map_from_)
     2220    0.004    0.000    0.004    0.000 {sage.structure.element.is_Element}
     2394    0.004    0.000    0.004    0.000 {sage.rings.integer_ring.IntegerRing}
      321    0.004    0.000    0.034    0.000 qqbar.py:3125(_div_)
     1002    0.004    0.000    0.007    0.000 free_quadratic_module.py:227(is_FreeQuadraticModule)
       42    0.004    0.000    0.572    0.014 matrix_integer_dense_hnf.py:392(add_column)
      382    0.004    0.000    0.004    0.000 {method '_assign_names' of 'sage.structure.category_object.CategoryObject' objects}
     1990    0.004    0.000    0.004    0.000 matrix_space.py:1019(is_dense)
      710    0.004    0.000    0.004    0.000 {method 'match' of '_sre.SRE_Pattern' objects}
       44    0.004    0.000    0.214    0.005 weierstrass_morphism.py:375(__init__)
  567/429    0.004    0.000    0.426    0.001 qqbar.py:4021(_interval_fast)
     2230    0.004    0.000    0.004    0.000 {method 'is_field' of 'sage.rings.integer_ring.IntegerRing_class' objects}
      612    0.004    0.000    0.802    0.001 additive_abelian_group.py:216(__init__)
      526    0.004    0.000    0.019    0.000 integer_mod_ring.py:524(is_field)
       15    0.004    0.000    0.389    0.026 complex_roots.py:251(complex_roots)
      526    0.004    0.000    0.006    0.000 quotient_ring.py:1041(ngens)
      541    0.004    0.000    0.106    0.000 category_types.py:202(__init__)
      303    0.004    0.000    0.017    0.000 constructor.py:1591(identity_matrix)
      523    0.004    0.000    0.015    0.000 functional.py:986(log)
       44    0.004    0.000    0.009    0.000 qqbar.py:4639(interval_exact)
       22    0.004    0.000    0.006    0.000 {method 'ellorder' of 'sage.libs.pari.gen.gen' objects}
     1934    0.004    0.000    0.004    0.000 {method 'denominator' of 'sage.rings.rational.Rational' objects}
      137    0.004    0.000    0.039    0.000 free_module.py:351(create_object)
      300    0.004    0.000    0.029    0.000 qqbar.py:1000(_element_constructor_)
      416    0.004    0.000    0.009    0.000 free_module.py:4381(basis)
     1208    0.004    0.000    0.004    0.000 rational_field.py:739(characteristic)
      526    0.004    0.000    0.004    0.000 {method 'format' of 'str' objects}
      400    0.004    0.000    0.005    0.000 term_order.py:1615(_repr_)
      160    0.004    0.000    0.012    0.000 multi_polynomial_element.py:212(_add_)
     1136    0.004    0.000    0.004    0.000 integer_mod_ring.py:806(characteristic)
       29    0.004    0.000    0.004    0.000 {sage.libs.ratpoints.ratpoints}
       81    0.004    0.000    0.031    0.000 factorization.py:213(__init__)
      529    0.003    0.000    0.168    0.000 homset.py:66(__init__)
      263    0.003    0.000    3.115    0.012 matrix_integer_dense_hnf.py:960(hnf)
      526    0.003    0.000    0.015    0.000 ideal.py:1302(__init__)
      399    0.003    0.000    0.006    0.000 qqbar.py:2459(an_addsub_zero)
      448    0.003    0.000    0.045    0.000 rational_field.py:558(embeddings)
      281    0.003    0.000    0.004    0.000 {method 'real' of 'sage.rings.complex_interval.ComplexIntervalFieldElement' objects}
      108    0.003    0.000    0.007    0.000 arith.py:5162(_cmp_complex_for_display)
      246    0.003    0.000    0.006    0.000 qqbar.py:2418(an_addsub_rational)
      532    0.003    0.000    0.118    0.000 vector_spaces.py:64(__init__)
      162    0.003    0.000    0.009    0.000 matrix_space.py:501(construction)
      808    0.003    0.000    0.005    0.000 homset.py:20(is_RingHomset)
      526    0.003    0.000    0.199    0.000 {sage.structure.category_object.check_default_category}
     1877    0.003    0.000    0.003    0.000 {method 'ncols' of 'sage.libs.pari.gen.gen' objects}
       15    0.003    0.000    0.089    0.006 complex_roots.py:150(interval_roots)
      382    0.003    0.000    0.007    0.000 projective_space.py:332(_validate)
      811    0.003    0.000    0.005    0.000 complex_field.py:74(is_ComplexField)
      301    0.003    0.000    0.006    0.000 pushout.py:1921(__init__)
      610    0.003    0.000    0.004    0.000 integer_mod_ring.py:1044(__cmp__)
       22    0.003    0.000    0.030    0.001 {sage.modules.free_module_element.vector}
      562    0.003    0.000    0.016    0.000 category.py:1279(parent_class)
      526    0.003    0.000    0.007    0.000 integer_mod_ring.py:819(_repr_)
      772    0.003    0.000    0.003    0.000 multi_polynomial_element.py:79(__init__)
       22    0.003    0.000    0.003    0.000 interface.py:132(__init__)
      382    0.003    0.000    0.003    0.000 {method 'findall' of '_sre.SRE_Pattern' objects}
       84    0.003    0.000    0.007    0.000 arith.py:407(is_prime)
      161    0.003    0.000    0.438    0.003 qqbar.py:5885(__init__)
      212    0.003    0.000    0.291    0.001 qqbar.py:4700(real_number)
      382    0.003    0.000    0.012    0.000 re.py:169(findall)
      306    0.003    0.000    0.054    0.000 fgp_morphism.py:481(__init__)
      168    0.003    0.000    0.026    0.000 {method '_matrix_' of 'sage.modules.free_module_element.FreeModuleElement' objects}
      571    0.003    0.000    0.022    0.000 free_module.py:851(_an_element_impl)
      204    0.003    0.000    0.007    0.000 pushout.py:1503(__init__)
      813    0.003    0.000    0.003    0.000 {max}
      132    0.003    0.000    0.005    0.000 infinity.py:925(_element_constructor_)
       75    0.003    0.000    0.006    0.000 number_field.py:5994(_coerce_non_number_field_element_in)
      654    0.003    0.000    0.004    0.000 number_field.py:920(is_CyclotomicField)
     1633    0.003    0.000    0.003    0.000 {method 'set_immutable' of 'sage.modules.free_module_element.FreeModuleElement' objects}
       44    0.003    0.000    0.053    0.001 ell_rational_field.py:2576(minimal_model)
     1372    0.003    0.000    0.003    0.000 {method '__getitem__' of 'list' objects}
      742    0.003    0.000    0.003    0.000 defaults.py:27(variable_names)
       44    0.003    0.000    0.127    0.003 ell_point.py:2400(height)
      634    0.003    0.000    0.003    0.000 {sage.misc.misc_c.prod}
     1416    0.003    0.000    0.003    0.000 rational_field.py:225(_repr_)
      234    0.003    0.000    0.007    0.000 ell_rational_field.py:6460(use)
       22    0.003    0.000    0.006    0.000 ell_rational_field.py:5218(height)
      173    0.003    0.000    0.057    0.000 polynomial_ring.py:1354(__init__)
      306    0.003    0.000    0.273    0.001 free_module.py:5995(__init__)
     1226    0.003    0.000    0.003    0.000 {method 'index' of 'list' objects}
      382    0.003    0.000    0.007    0.000 re.py:134(match)
      360    0.003    0.000    0.036    0.000 ell_generic.py:841(_point_homset)
      622    0.003    0.000    0.003    0.000 {abs}
      306    0.002    0.000    0.004    0.000 fgp_module.py:1103(gen)
       88    0.002    0.000    0.017    0.000 category.py:1110(_make_named_class)
       32    0.002    0.000    0.019    0.001 multi_polynomial_element.py:216(_sub_)
      306    0.002    0.000    1.148    0.004 additive_abelian_group.py:312(order)
      126    0.002    0.000    0.003    0.000 arith.py:1662(lcm)
      611    0.002    0.000    0.006    0.000 additive_abelian_wrapper.py:160(<genexpr>)
      568    0.002    0.000    0.011    0.000 mrange.py:126(<genexpr>)
       22    0.002    0.000    0.004    0.000 preparser.py:562(preparse_numeric_literals)
     1414    0.002    0.000    0.002    0.000 {method 'set_immutable' of 'sage.matrix.matrix0.Matrix' objects}
      359    0.002    0.000    0.007    0.000 algebras.py:100(__init_extra__)
      306    0.002    0.000    0.677    0.002 additive_abelian_group.py:289(_module_constructor)
      263    0.002    0.000    0.004    0.000 category_types.py:264(_subcategory_hook_)
     1265    0.002    0.000    0.002    0.000 fgp_element.py:87(lift)
      726    0.002    0.000    0.002    0.000 {method 'list' of 'sage.rings.polynomial.polynomial_element.Polynomial_generic_dense' objects}
      373    0.002    0.000    0.003    0.000 term_order.py:1823(__eq__)
       15    0.002    0.000    0.062    0.004 {method 'squarefree_decomposition' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
       14    0.002    0.000    0.006    0.000 qqbar.py:1459(clear_denominators)
      162    0.002    0.000    0.005    0.000 pushout.py:1262(__init__)
      306    0.002    0.000    0.088    0.000 fgp_module.py:1431(Hom)
      433    0.002    0.000    0.002    0.000 polynomial_ring.py:940(gen)
      454    0.002    0.000    0.003    0.000 rational_field.py:64(__new__)
      305    0.002    0.000    0.021    0.000 free_module.py:4755(coordinate_vector)
     1214    0.002    0.000    0.002    0.000 {method 'is_commutative' of 'sage.rings.ring.CommutativeRing' objects}
      305    0.002    0.000    0.003    0.000 mrange.py:23(_len)
     1111    0.002    0.000    0.002    0.000 rational_field.py:706(is_field)
      440    0.002    0.000    0.002    0.000 {method 'cursor' of 'sqlite3.Connection' objects}
      588    0.002    0.000    0.002    0.000 {method '__copy__' of 'sage.modules.vector_integer_dense.Vector_integer_dense' objects}
      486    0.002    0.000    0.003    0.000 pushout.py:1587(__cmp__)
      723    0.002    0.000    0.002    0.000 complex_interval_field.py:308(_middle_field)
      182    0.002    0.000    0.004    0.000 polynomial_ring_constructor.py:511(_save_in_cache)
      572    0.002    0.000    0.003    0.000 matrix_space.py:88(is_MatrixSpace)
      306    0.002    0.000    0.003    0.000 mrange.py:589(cartesian_product_iterator)
     1178    0.002    0.000    0.002    0.000 {method 'degree' of 'sage.modules.free_module_element.FreeModuleElement' objects}
     1172    0.002    0.000    0.002    0.000 {method 'pop' of 'dict' objects}
      131    0.002    0.000    0.013    0.000 qqbar.py:5664(__init__)
       41    0.002    0.000    0.009    0.000 multi_polynomial_ring.py:178(__call__)
        9    0.002    0.000    0.014    0.002 multi_polynomial_ring.py:137(__init__)
       81    0.002    0.000    0.276    0.003 qqbar.py:3292(sqrt)
      284    0.002    0.000    0.003    0.000 ell_rational_field.py:335(_set_gens)
       28    0.002    0.000    0.005    0.000 {method '_rational_' of 'sage.rings.number_field.number_field_element.NumberFieldElement' objects}
      559    0.002    0.000    0.002    0.000 {method 'intersection' of 'sage.rings.complex_interval.ComplexIntervalFieldElement' objects}
      263    0.002    0.000    0.812    0.003 matrix_integer_dense_hnf.py:624(probable_pivot_rows)
      992    0.002    0.000    0.002    0.000 groupoid.py:61(_make_named_class_key)
     1052    0.002    0.000    0.002    0.000 {method '_is_category_initialized' of 'sage.structure.category_object.CategoryObject' objects}
      305    0.002    0.000    0.003    0.000 sequence.py:588(append)
     1052    0.002    0.000    0.002    0.000 {method 'ideal_monoid' of 'sage.rings.ring.CommutativeRing' objects}
      478    0.002    0.000    0.005    0.000 {method 'abs' of 'sage.structure.element.RingElement' objects}
      169    0.002    0.000    0.023    0.000 multi_polynomial_element.py:243(_rmul_)
       60    0.002    0.000    0.002    0.000 {method 'sin' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
       84    0.002    0.000    0.002    0.000 {method 'det' of 'sage.matrix.matrix2.Matrix' objects}
       22    0.002    0.000    0.002    0.000 {method 'arctan' of 'sage.rings.real_mpfr.RealNumber' objects}
      132    0.002    0.000    0.012    0.000 ell_generic.py:1407(j_invariant)
       22    0.002    0.000    0.922    0.042 ell_point.py:3027(elliptic_logarithm)
      741    0.002    0.000    0.002    0.000 {getattr}
      382    0.002    0.000    0.003    0.000 misc.py:1591(is_iterator)
      366    0.002    0.000    0.003    0.000 constructor.py:617(<genexpr>)
      784    0.002    0.000    0.002    0.000 {method 'characteristic' of 'sage.rings.integer_ring.IntegerRing_class' objects}
      933    0.002    0.000    0.002    0.000 {method 'is_integral' of 'sage.rings.rational.Rational' objects}
      264    0.002    0.000    0.003    0.000 complex_field.py:300(__cmp__)
       59    0.002    0.000    0.006    0.000 factorization.py:640(sort)
       60    0.002    0.000    0.002    0.000 {method 'cos' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
      488    0.002    0.000    0.004    0.000 {all}
      382    0.002    0.000    0.003    0.000 ideal.py:197(is_Ideal)
      382    0.002    0.000    0.002    0.000 multi_polynomial_sequence.py:173(is_PolynomialSequence)
       15    0.002    0.000    0.008    0.001 complex_field.py:193(__init__)
       44    0.002    0.000    0.003    0.000 ell_point.py:403(_pari_)
      225    0.002    0.000    0.003    0.000 polynomial_ring.py:1007(is_exact)
       88    0.002    0.000    0.002    0.000 {method 'pi' of 'sage.rings.real_mpfr.RealField_class' objects}
      612    0.002    0.000    0.002    0.000 {method 'set_cache' of 'sage.misc.cachefunc.CachedFunction' objects}
      465    0.002    0.000    0.002    0.000 {method '_assign_names' of 'sage.structure.parent_gens.ParentWithGens' objects}
      443    0.002    0.000    0.002    0.000 {method 'sqrt' of 'sage.rings.real_mpfr.RealNumber' objects}
       67    0.002    0.000    0.002    0.000 {sage.misc.c3_controlled.C3_sorted_merge}
      526    0.002    0.000    0.002    0.000 quotient_ring.py:887(cover_ring)
      105    0.002    0.000    0.014    0.000 qqbar.py:4778(_complex_mpfr_field_)
      239    0.002    0.000    0.003    0.000 complex_interval_field.py:326(__cmp__)
      265    0.002    0.000    0.022    0.000 {sage.structure.element.generic_power}
      328    0.002    0.000    0.002    0.000 {method 'find' of 'unicode' objects}
      296    0.002    0.000    0.003    0.000 ell_generic.py:427(__cmp__)
      510    0.002    0.000    0.002    0.000 {method 'is_square' of 'sage.rings.rational.Rational' objects}
      918    0.002    0.000    0.002    0.000 free_module.py:1712(is_ambient)
      688    0.002    0.000    0.002    0.000 {method 'gens' of 'sage.structure.parent_gens.ParentWithGens' objects}
       60    0.002    0.000    0.003    0.000 pushout.py:2005(__init__)
      382    0.002    0.000    0.002    0.000 ambient_space.py:18(is_AmbientSpace)
      360    0.002    0.000    0.003    0.000 multi_polynomial_element.py:75(is_MPolynomial)
      400    0.002    0.000    0.002    0.000 term_order.py:809(__getattr__)
      918    0.002    0.000    0.002    0.000 free_module.py:4368(ambient_module)
      382    0.002    0.000    0.002    0.000 projective_space.py:100(is_ProjectiveSpace)
      390    0.002    0.000    0.002    0.000 factorization_integer.py:28(__init__)
      187    0.002    0.000    0.002    0.000 {method 'coerce_map_from' of 'sage.structure.parent.Parent' objects}
      511    0.002    0.000    0.002    0.000 {method 'sqrt' of 'sage.rings.rational.Rational' objects}
       42    0.002    0.000    0.123    0.003 matrix_integer_dense_hnf.py:219(double_det)
       22    0.002    0.000    0.015    0.001 interface.py:635(gens)
      328    0.002    0.000    0.002    0.000 ell_rational_field.py:224(_set_rank)
      322    0.002    0.000    0.002    0.000 {method 'round' of 'sage.rings.real_mpfr.RealNumber' objects}
      110    0.002    0.000    0.028    0.000 ell_rational_field.py:6469(use_t)
      162    0.001    0.000    0.003    0.000 pushout.py:473(__init__)
       14    0.001    0.000    0.020    0.001 number_field.py:214(NumberField)
       29    0.001    0.000    0.025    0.001 ell_rational_field.py:5325(integral_x_coords_in_interval)
       75    0.001    0.000    0.009    0.000 number_field.py:1176(_element_constructor_)
       84    0.001    0.000    0.179    0.002 matrix_integer_dense_hnf.py:438(add_row)
  196/138    0.001    0.000    0.632    0.005 qqbar.py:6564(_more_precision)
       30    0.001    0.000    0.023    0.001 qqbar.py:5809(exactify)
      173    0.001    0.000    0.059    0.000 polynomial_ring.py:1408(__init__)
      306    0.001    0.000    0.001    0.000 additive_abelian_group.py:408(gens)
       54    0.001    0.000    0.002    0.000 arith.py:3093(binomial)
       22    0.001    0.000    0.129    0.006 ell_number_field.py:502(height_pairing_matrix)
      300    0.001    0.000    0.002    0.000 qqbar.py:3803(__nonzero__)
      610    0.001    0.000    0.001    0.000 integer_mod_ring.py:113(create_key)
      729    0.001    0.000    0.001    0.000 {iter}
      169    0.001    0.000    0.019    0.000 {method 'scalar_rmult' of 'sage.rings.polynomial.polydict.PolyDict' objects}
       11    0.001    0.000    0.004    0.000 number_field.py:955(__init__)
      710    0.001    0.000    0.001    0.000 {method 'lower' of 'str' objects}
       94    0.001    0.000    0.002    0.000 {method 'sub' of '_sre.SRE_Pattern' objects}
       11    0.001    0.000    0.016    0.001 number_field.py:5742(__init__)
      814    0.001    0.000    0.001    0.000 {method 'construction' of 'sage.structure.parent.Parent' objects}
      352    0.001    0.000    0.002    0.000 polynomial_ring.py:198(is_PolynomialRing)
      263    0.001    0.000    0.916    0.003 free_module.py:6041(coordinate_vector)
      245    0.001    0.000    0.010    0.000 complex_field.py:91(ComplexField)
       44    0.001    0.000    0.009    0.000 ell_point.py:2035(order)
       86    0.001    0.000    0.002    0.000 number_field.py:4947(polynomial_ntl)
      397    0.001    0.000    0.001    0.000 {method 'variable_name' of 'sage.structure.category_object.CategoryObject' objects}
      324    0.001    0.000    0.002    0.000 pushout.py:1311(__cmp__)
      263    0.001    0.000    0.001    0.000 category_types.py:245(base)
      267    0.001    0.000    0.002    0.000 {method 'imag' of 'sage.rings.complex_number.ComplexNumber' objects}
       25    0.001    0.000    0.002    0.000 number_field.py:4248(gen)
       44    0.001    0.000    0.001    0.000 {method 'exp' of 'sage.rings.real_mpfr.RealNumber' objects}
       40    0.001    0.000    0.002    0.000 free_module_homspace.py:225(_matrix_space)
       51    0.001    0.000    0.011    0.000 polynomial_ring.py:793(change_ring)
       88    0.001    0.000    0.002    0.000 {method '__copy__' of 'sage.matrix.matrix_generic_dense.Matrix_generic_dense' objects}
      369    0.001    0.000    0.001    0.000 {sage.rings.real_mpfr.RealField}
       44    0.001    0.000    0.086    0.002 period_lattice.py:359(basis)
      642    0.001    0.000    0.001    0.000 matrix_space.py:1032(is_sparse)
       36    0.001    0.000    0.001    0.000 {method 'factor' of 'sage.rings.integer.Integer' objects}
      328    0.001    0.000    0.001    0.000 ell_rational_field.py:246(_set_torsion_order)
       32    0.001    0.000    0.312    0.010 ell_generic.py:1229(base_extend)
       32    0.001    0.000    0.001    0.000 {method 'is_homogeneous' of 'sage.rings.polynomial.polydict.PolyDict' objects}
       42    0.001    0.000    0.004    0.000 {method '_hnf_mod' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
      720    0.001    0.000    0.001    0.000 {id}
      223    0.001    0.000    0.002    0.000 {method 'real' of 'sage.rings.complex_number.ComplexNumber' objects}
      276    0.001    0.000    0.001    0.000 {method 'base_ring' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
      553    0.001    0.000    0.001    0.000 {sage.rings.number_field.number_field_base.is_NumberField}
       22    0.001    0.000    0.010    0.000 preparser.py:1006(preparse)
      349    0.001    0.000    0.001    0.000 {method '__copy__' of 'sage.modules.vector_rational_dense.Vector_rational_dense' objects}
      533    0.001    0.000    0.001    0.000 {method 'contains_zero' of 'sage.rings.complex_interval.ComplexIntervalFieldElement' objects}
       45    0.001    0.000    0.017    0.000 {method '_generic_convert_map' of 'sage.structure.parent_old.Parent' objects}
      404    0.001    0.000    0.001    0.000 {method 'keys' of 'dict' objects}
      328    0.001    0.000    0.001    0.000 ell_rational_field.py:292(_set_conductor)
      328    0.001    0.000    0.001    0.000 ell_rational_field.py:267(_set_cremona_label)
      243    0.001    0.000    0.003    0.000 category.py:2258(is_subcategory)
      263    0.001    0.000    0.001    0.000 matrix_integer_dense_hnf.py:928(pad_zeros)
      261    0.001    0.000    0.002    0.000 complex_interval_field.py:61(is_ComplexIntervalField)
       22    0.001    0.000    0.002    0.000 {method 'ellheight' of 'sage.libs.pari.gen.gen' objects}
      394    0.001    0.000    0.001    0.000 {method 'groups' of '_sre.SRE_Match' objects}
       22    0.001    0.000    0.104    0.005 ell_rational_field.py:752(database_curve)
      137    0.001    0.000    0.031    0.000 free_module.py:4110(__init__)
       40    0.001    0.000    0.003    0.000 matrix_morphism.py:1168(__init__)
       66    0.001    0.000    0.020    0.000 sequence.py:760(category)
        7    0.001    0.000    0.021    0.003 ell_rational_field.py:5492(point_preprocessing)
       19    0.001    0.000    0.016    0.001 ell_point.py:2154(is_on_identity_component)
      306    0.001    0.000    0.001    0.000 {method 'register_embedding' of 'sage.structure.parent.Parent' objects}
      191    0.001    0.000    0.002    0.000 qqbar.py:2547(an_addsub_expr)
      526    0.001    0.000    0.001    0.000 abstract_method.py:203(__get__)
      249    0.001    0.000    0.001    0.000 polynomial_ring.py:1023(is_sparse)
       44    0.001    0.000    1.582    0.036 ell_rational_field.py:2876(period_lattice)
      386    0.001    0.000    0.001    0.000 {method 'center' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
      360    0.001    0.000    0.001    0.000 {sage.symbolic.expression.is_SymbolicEquation}
       40    0.001    0.000    0.012    0.000 free_module_homspace.py:278(identity)
       67    0.001    0.000    0.007    0.000 category.py:851(_all_super_categories)
       20    0.001    0.000    0.002    0.000 {method 'remove' of 'list' objects}
      137    0.001    0.000    0.033    0.000 free_module.py:4816(__init__)
       44    0.001    0.000    0.004    0.000 {method '_coerce_try' of 'sage.structure.parent_old.Parent' objects}
       46    0.001    0.000    0.003    0.000 constructor.py:985(random_matrix)
       22    0.001    0.000    2.676    0.122 interface.py:336(two_descent)
       60    0.001    0.000    0.004    0.000 {method 'construction' of 'sage.rings.real_mpfr.RealField_class' objects}
       22    0.001    0.000    0.001    0.000 {method 'getbasis' of 'sage.libs.mwrank.mwrank._two_descent' objects}
      445    0.001    0.000    0.001    0.000 term_order.py:2038(is_weighted_degree_order)
      350    0.001    0.000    0.001    0.000 {method 'is_homogeneous' of 'sage.rings.polynomial.multi_polynomial_libsingular.MPolynomial_libsingular' objects}
      120    0.001    0.000    0.002    0.000 multi_polynomial_ring.py:171(__cmp__)
      328    0.001    0.000    0.001    0.000 sql_db.py:1188(get_skeleton)
       29    0.001    0.000    0.019    0.001 ell_generic.py:1697(division_polynomial)
      306    0.001    0.000    0.001    0.000 mrange.py:317(__iter__)
       22    0.001    0.000    0.047    0.002 cremona.py:774(elliptic_curve_from_ainvs)
     12/5    0.001    0.000    0.003    0.001 sre_parse.py:380(_parse)
      526    0.001    0.000    0.001    0.000 {method 'ngens' of 'sage.rings.integer_ring.IntegerRing_class' objects}
      373    0.001    0.000    0.001    0.000 ell_generic.py:939(a1)
       84    0.001    0.000    0.001    0.000 all.py:1(arithmetic)
       23    0.001    0.000    0.011    0.000 complex_field.py:395(_coerce_map_from_)
       22    0.001    0.000    0.002    0.000 ell_generic.py:211(_repr_)
      306    0.001    0.000    0.001    0.000 mrange.py:307(__init__)
       40    0.001    0.000    0.008    0.000 free_module_morphism.py:63(__init__)
   105/15    0.001    0.000    0.338    0.023 qqbar.py:3447(exactify)
       14    0.001    0.000    0.019    0.001 qqbar.py:1512(do_polred)
      414    0.001    0.000    0.001    0.000 pushout.py:265(expand)
      382    0.001    0.000    0.001    0.000 {method 'variable_names' of 'sage.structure.category_object.CategoryObject' objects}
      373    0.001    0.000    0.001    0.000 ell_generic.py:963(a3)
      110    0.001    0.000    0.001    0.000 {method '_coeff_repr' of 'sage.structure.element.Element' objects}
      137    0.001    0.000    0.032    0.000 free_module.py:4641(__init__)
       44    0.001    0.000    0.006    0.000 complex_interval_field.py:389(_coerce_impl)
       88    0.001    0.000    0.001    0.000 {method 'agm' of 'sage.rings.real_mpfr.RealNumber' objects}
       10    0.001    0.000    0.004    0.000 projective_point.py:166(__eq__)
       67    0.001    0.000    0.001    0.000 category.py:1554(_flatten_categories)
       44    0.001    0.000    0.017    0.000 qqbar.py:3200(__hash__)
      243    0.001    0.000    0.001    0.000 qqbar.py:7386(__init__)
       11    0.001    0.000    0.003    0.000 number_field.py:2380(_repr_)
      394    0.001    0.000    0.001    0.000 {method 'upper' of 'str' objects}
       94    0.001    0.000    0.005    0.000 re.py:144(sub)
      207    0.001    0.000    0.001    0.000 qqbar.py:7127(__init__)
       44    0.001    0.000    8.452    0.192 interface.py:605(saturate)
       67    0.001    0.000    0.004    0.000 category.py:1015(_super_categories)
       30    0.001    0.000    0.016    0.001 qqbar.py:3464(_set_descr)
      368    0.001    0.000    0.001    0.000 {method 'numerator' of 'sage.rings.rational.Rational' objects}
       22    0.001    0.000    0.001    0.000 {method '_pari_' of 'sage.matrix.matrix1.Matrix' objects}
      112    0.001    0.000    0.022    0.000 generic.py:336(next)
       44    0.001    0.000    0.011    0.000 ell_point.py:2108(has_finite_order)
      433    0.001    0.000    0.001    0.000 {sage.rings.real_mpfr.is_RealField}
       22    0.001    0.000    0.001    0.000 weierstrass_morphism.py:189(__call__)
      162    0.001    0.000    0.002    0.000 pushout.py:1610(merge)
       42    0.001    0.000    0.001    0.000 free_module.py:4838(_repr_)
       30    0.001    0.000    0.002    0.000 polynomial_ring.py:454(construction)
      113    0.001    0.000    0.001    0.000 {method 'union' of 'set' objects}
      270    0.001    0.000    0.001    0.000 {method 'real' of 'sage.libs.pari.gen.gen' objects}
       30    0.001    0.000    0.001    0.000 complex_interval_field.py:461(gen)
      348    0.001    0.000    0.001    0.000 qqbar.py:5747(poly)
       14    0.001    0.000    0.001    0.000 {method '_pari_' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
      162    0.001    0.000    0.002    0.000 pushout.py:1327(merge)
       22    0.001    0.000    0.001    0.000 preparser.py:274(strip_string_literals)
       15    0.001    0.000    0.007    0.000 complex_roots.py:188(intervals_disjoint)
     23/5    0.001    0.000    0.002    0.000 sre_compile.py:33(_compile)
       40    0.001    0.000    0.001    0.000 matrix_morphism.py:74(__init__)
       45    0.001    0.000    0.002    0.000 complex_field.py:532(construction)
       45    0.001    0.000    0.367    0.008 qqbar.py:4191(complex_number)
      305    0.001    0.000    0.001    0.000 sequence.py:791(_require_mutable)
       91    0.001    0.000    0.001    0.000 {method 'list' of 'sage.matrix.matrix0.Matrix' objects}
      324    0.001    0.000    0.001    0.000 pushout.py:239(commutes)
      296    0.001    0.000    0.001    0.000 {method 'contains_zero' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
      104    0.001    0.000    0.001    0.000 infinity.py:292(__cmp__)
       30    0.001    0.000    0.001    0.000 polynomial_ring.py:747(_repr_)
      360    0.001    0.000    0.001    0.000 {sage.structure.element.is_RingElement}
       45    0.001    0.000    0.368    0.008 qqbar.py:4167(_complex_mpfr_field_)
      100    0.001    0.000    0.021    0.000 {operator.add}
       75    0.001    0.000    0.001    0.000 qqbar.py:2897(imag)
      270    0.001    0.000    0.001    0.000 {method 'imag' of 'sage.libs.pari.gen.gen' objects}
       22    0.001    0.000    0.001    0.000 {method 'ellminimalmodel' of 'sage.libs.pari.gen.gen' objects}
       22    0.001    0.000    0.004    0.000 weierstrass_morphism.py:511(__call__)
      346    0.001    0.000    0.001    0.000 polynomial_ring.py:1065(ngens)
       22    0.001    0.000    0.004    0.000 ell_rational_field.py:829(mwrank_curve)
      139    0.001    0.000    0.001    0.000 function_field.py:970(is_RationalFunctionField)
       90    0.001    0.000    0.001    0.000 pushout.py:92(__mul__)
      307    0.001    0.000    0.001    0.000 {method 'precision' of 'sage.rings.real_mpfr.RealField_class' objects}
      132    0.001    0.000    0.001    0.000 infinity.py:999(__init__)
       98    0.001    0.000    0.122    0.001 qqbar.py:2175(_interval_fast)
       75    0.001    0.000    0.013    0.000 qqbar.py:4097(imag)
       22    0.001    0.000    0.016    0.001 ell_rational_field.py:700(pari_mincurve)
      140    0.001    0.000    0.001    0.000 factorization.py:365(__len__)
      132    0.001    0.000    0.001    0.000 qqbar.py:1358(is_AlgebraicField)
      132    0.001    0.000    0.001    0.000 infinity.py:1015(__cmp__)
       44    0.001    0.000    0.003    0.000 constructor.py:1628(zero_matrix)
       88    0.001    0.000    0.001    0.000 sre_parse.py:183(__next)
       22    0.001    0.000    0.001    0.000 ell_point.py:765(xy)
      210    0.001    0.000    0.001    0.000 {method 'is_exact' of 'sage.rings.complex_interval.ComplexIntervalFieldElement' objects}
      212    0.001    0.000    0.001    0.000 {method 'rounding_mode' of 'sage.rings.real_mpfr.RealField_class' objects}
       67    0.001    0.000    0.007    0.000 category.py:1036(_super_categories_for_classes)
      176    0.001    0.000    0.001    0.000 {method 'replace' of 'str' objects}
       95    0.001    0.000    0.001    0.000 {method 'ceil' of 'sage.rings.real_mpfr.RealNumber' objects}
      176    0.001    0.000    0.001    0.000 category.py:1233(<genexpr>)
       59    0.000    0.000    0.001    0.000 factorization.py:565(is_commutative)
       44    0.000    0.000    0.000    0.000 weierstrass_morphism.py:55(__init__)
       30    0.000    0.000    0.001    0.000 pushout.py:602(__init__)
      240    0.000    0.000    0.000    0.000 complex_field.py:43(late_import)
       45    0.000    0.000    0.127    0.003 qqbar.py:1204(polynomial_root)
        1    0.000    0.000    0.001    0.001 other.py:1554(_do_sqrt)
      162    0.000    0.000    0.000    0.000 {zip}
      118    0.000    0.000    0.001    0.000 qqbar.py:1373(is_AlgebraicField_common)
      134    0.000    0.000    0.001    0.000 category.py:1570(<genexpr>)
       87    0.000    0.000    0.001    0.000 qqbar.py:2842(neg)
       45    0.000    0.000    0.009    0.000 arith.py:5221(sort_complex_numbers_for_display)
       22    0.000    0.000    0.001    0.000 homset.py:744(identity)
      242    0.000    0.000    0.000    0.000 qqbar.py:2807(is_rational)
       40    0.000    0.000    0.008    0.000 free_module_homspace.py:123(__call__)
       14    0.000    0.000    0.001    0.000 qqbar.py:1645(conjugate_expand)
       14    0.000    0.000    0.002    0.000 polynomial_ring.py:769(base_extend)
      154    0.000    0.000    0.000    0.000 {method 'floor' of 'sage.rings.rational.Rational' objects}
      237    0.000    0.000    0.000    0.000 {method 'degree' of 'sage.rings.polynomial.polynomial_rational_flint.Polynomial_rational_flint' objects}
      207    0.000    0.000    0.000    0.000 factorization.py:305(<genexpr>)
       44    0.000    0.000    0.215    0.005 ell_generic.py:2185(isomorphism_to)
       45    0.000    0.000    0.001    0.000 complex_roots.py:222(row_disjoint)
       36    0.000    0.000    0.002    0.000 arith.py:2319(factor)
       14    0.000    0.000    0.000    0.000 {method 'modreverse' of 'sage.libs.pari.gen.gen' objects}
       86    0.000    0.000    0.002    0.000 number_field.py:4936(absolute_polynomial_ntl)
       60    0.000    0.000    0.001    0.000 qqbar.py:3510(_exact_field)
       45    0.000    0.000    0.003    0.000 factorization.py:698(_cmp)
       28    0.000    0.000    0.005    0.000 qqbar.py:6638(__new__)
       14    0.000    0.000    0.001    0.000 qqbar.py:2663(an_addsub_element)
       75    0.000    0.000    0.001    0.000 gap.py:1647(is_GapElement)
       12    0.000    0.000    0.008    0.001 generic.py:285(__init__)
      195    0.000    0.000    0.000    0.000 qqbar.py:5057(is_exact)
       45    0.000    0.000    0.001    0.000 pushout.py:2834(__init__)
      201    0.000    0.000    0.000    0.000 qqbar.py:5999(kind)
       50    0.000    0.000    0.001    0.000 number_field.py:5001(polynomial_ring)
       44    0.000    0.000    0.001    0.000 interface.py:650(certain)
       56    0.000    0.000    0.044    0.001 period_lattice.py:549(<genexpr>)
        6    0.000    0.000    0.000    0.000 sre_compile.py:208(_optimize_charset)
       61    0.000    0.000    0.001    0.000 qqbar.py:5093(neg)
      134    0.000    0.000    0.000    0.000 complex_field.py:232(prec)
       33    0.000    0.000    0.012    0.000 number_field.py:6079(_coerce_map_from_)
       84    0.000    0.000    0.001    0.000 sre_parse.py:131(__getitem__)
      145    0.000    0.000    0.000    0.000 {sage.rings.real_double.is_RealDoubleField}
      182    0.000    0.000    0.000    0.000 {method 'is_prime_field' of 'sage.rings.ring.Ring' objects}
    33/15    0.000    0.000    0.000    0.000 sre_parse.py:141(getwidth)
      180    0.000    0.000    0.000    0.000 {sage.libs.pari.pari_instance.prec_words_to_bits}
       30    0.000    0.000    0.001    0.000 complex_roots.py:216(column_disjoint)
       46    0.000    0.000    0.001    0.000 category_types.py:153(super_categories)
       50    0.000    0.000    0.001    0.000 number_field.py:3970(degree)
       88    0.000    0.000    0.001    0.000 qqbar.py:962(is_AlgebraicRealField)
      186    0.000    0.000    0.000    0.000 {method 'parent' of 'sage.rings.real_mpfr.RealNumber' objects}
      180    0.000    0.000    0.000    0.000 {method 'precision' of 'sage.libs.pari.gen.gen' objects}
       88    0.000    0.000    0.000    0.000 ell_generic.py:1141(c4)
       66    0.000    0.000    0.020    0.000 sequence.py:770(parent)
       14    0.000    0.000    0.001    0.000 qqbar.py:1931(__init__)
      120    0.000    0.000    0.000    0.000 qqbar.py:1421(tail_prec_seq)
       29    0.000    0.000    0.000    0.000 {method 'coeffs' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
       46    0.000    0.000    0.015    0.000 category_types.py:136(__init__)
      161    0.000    0.000    0.000    0.000 qqbar.py:5760(is_complex)
       46    0.000    0.000    0.000    0.000 {method 'randomize' of 'sage.matrix.matrix_integer_dense.Matrix_integer_dense' objects}
      135    0.000    0.000    0.000    0.000 rational_field.py:236(_repr_option)
       46    0.000    0.000    0.015    0.000 free_module.py:4895(__init__)
      114    0.000    0.000    0.000    0.000 {min}
      126    0.000    0.000    0.000    0.000 {method 'canonical_coercion' of 'sage.structure.coerce.CoercionModel_cache_maps' objects}
      126    0.000    0.000    0.000    0.000 {method 'lcm' of 'sage.structure.element.PrincipalIdealDomainElement' objects}
       22    0.000    0.000    0.006    0.000 free_module.py:2062(__init__)
       35    0.000    0.000    0.002    0.000 qqbar.py:3176(_neg_)
      139    0.000    0.000    0.000    0.000 {sage.rings.complex_double.is_ComplexDoubleField}
       54    0.000    0.000    0.000    0.000 {method 'binomial' of 'sage.rings.integer.Integer' objects}
      110    0.000    0.000    0.000    0.000 interface.py:428(__two_descent_data)
      133    0.000    0.000    0.000    0.000 number_field.py:4968(polynomial)
       44    0.000    0.000    0.001    0.000 re.py:181(finditer)
       66    0.000    0.000    0.000    0.000 {method 'finditer' of '_sre.SRE_Pattern' objects}
      131    0.000    0.000    0.000    0.000 complex_interval_field.py:201(is_exact)
      147    0.000    0.000    0.000    0.000 {method 'is_exact' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
       30    0.000    0.000    0.001    0.000 polynomial_ring.py:1443(_repr_)
       15    0.000    0.000    0.042    0.003 qqbar.py:1611(find_zero_result)
       60    0.000    0.000    0.000    0.000 {method 'relative_diameter' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
       15    0.000    0.000    0.000    0.000 {method 'is_monic' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
        7    0.000    0.000    0.000    0.000 {posix.urandom}
       95    0.000    0.000    0.000    0.000 {method 'add' of 'set' objects}
       24    0.000    0.000    0.003    0.000 morphism.py:1267(__copy__)
       52    0.000    0.000    0.000    0.000 qqbar.py:2566(an_muldiv_expr)
       60    0.000    0.000    0.000    0.000 qqbar.py:2354(__call__)
       36    0.000    0.000    0.000    0.000 number_field.py:2415(__cmp__)
       44    0.000    0.000    0.001    0.000 re.py:268(_subx)
       60    0.000    0.000    0.000    0.000 qqbar.py:3531(_exact_value)
      131    0.000    0.000    0.000    0.000 {sage.rings.polynomial.polynomial_element.is_Polynomial}
       32    0.000    0.000    0.002    0.000 multi_polynomial_element.py:822(is_homogeneous)
       70    0.000    0.000    0.001    0.000 sre_parse.py:202(get)
      156    0.000    0.000    0.000    0.000 qqbar.py:7229(kind)
       30    0.000    0.000    0.007    0.000 qqbar.py:4086(real)
      134    0.000    0.000    0.000    0.000 qqbar.py:7513(kind)
       21    0.000    0.000    0.068    0.003 qqbar.py:907(polynomial_root)
       76    0.000    0.000    0.000    0.000 {method 'absolute_diameter' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
      118    0.000    0.000    0.000    0.000 qqbar.py:6010(is_complex)
       62    0.000    0.000    0.000    0.000 homset.py:805(is_endomorphism_set)
      126    0.000    0.000    0.000    0.000 factorization.py:629(<lambda>)
       99    0.000    0.000    0.000    0.000 {method 'find' of 'str' objects}
       50    0.000    0.000    0.000    0.000 number_field.py:7464(relative_polynomial)
        5    0.000    0.000    0.001    0.000 sre_compile.py:362(_compile_info)
       45    0.000    0.000    0.010    0.000 period_lattice.py:237(<lambda>)
       15    0.000    0.000    0.001    0.000 matrix_space.py:1056(gen)
       50    0.000    0.000    0.001    0.000 number_field.py:7428(absolute_degree)
       44    0.000    0.000    0.000    0.000 re.py:248(_compile_repl)
      103    0.000    0.000    0.000    0.000 {method 'is_field' of 'sage.rings.ring.Field' objects}
       34    0.000    0.000    0.092    0.003 ell_generic.py:1668(two_division_polynomial)
       14    0.000    0.000    0.001    0.000 qqbar.py:1676(conjugate_shrink)
       14    0.000    0.000    0.000    0.000 {function seed at 0xb72aad4c}
       30    0.000    0.000    0.003    0.000 qqbar.py:3185(__abs__)
      126    0.000    0.000    0.000    0.000 {sage.structure.element.get_coercion_model}
       11    0.000    0.000    0.002    0.000 latex.py:2540(latex_variable_name)
       84    0.000    0.000    0.000    0.000 proof.py:18(arithmetic)
       51    0.000    0.000    0.000    0.000 {method 'floor' of 'sage.rings.real_mpfr.RealNumber' objects}
       54    0.000    0.000    0.000    0.000 generic_nodes.py:196(is_pAdicField)
       30    0.000    0.000    0.000    0.000 qqbar.py:2881(real)
       88    0.000    0.000    0.000    0.000 ell_generic.py:1157(c6)
       45    0.000    0.000    0.000    0.000 term_order.py:796(__copy)
       42    0.000    0.000    0.000    0.000 {method '_xgcd' of 'sage.rings.integer.Integer' objects}
       54    0.000    0.000    0.000    0.000 {method 'union' of 'sage.rings.complex_interval.ComplexIntervalFieldElement' objects}
       14    0.000    0.000    0.009    0.001 {method 'change_ring' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
       22    0.000    0.000    0.001    0.000 preparser.py:849(preparse_generators)
       21    0.000    0.000    0.000    0.000 category_types.py:78(super_categories)
     11/5    0.000    0.000    0.003    0.001 sre_parse.py:302(_parse_sub)
       44    0.000    0.000    0.000    0.000 homset.py:486(__nonzero__)
       14    0.000    0.000    0.001    0.000 random.py:100(seed)
       94    0.000    0.000    0.000    0.000 {sage.rings.real_mpfi.is_RealIntervalFieldElement}
       44    0.000    0.000    0.000    0.000 qqbar.py:572(characteristic)
       40    0.000    0.000    0.000    0.000 free_module_homspace.py:82(is_FreeModuleHomspace)
       32    0.000    0.000    0.000    0.000 multi_polynomial_element.py:301(element)
       87    0.000    0.000    0.000    0.000 complex_interval_field.py:498(is_field)
       61    0.000    0.000    0.000    0.000 sre_parse.py:196(match)
       40    0.000    0.000    0.000    0.000 homset.py:895(is_Homset)
       22    0.000    0.000    0.000    0.000 {method 'lllgram' of 'sage.libs.pari.gen.gen' objects}
       46    0.000    0.000    0.000    0.000 sre_parse.py:127(__len__)
       21    0.000    0.000    0.000    0.000 inspect.py:340(getmro)
       58    0.000    0.000    0.000    0.000 qqbar.py:1385(prec_seq)
       21    0.000    0.000    0.007    0.000 category_types.py:45(__init__)
       94    0.000    0.000    0.000    0.000 {method 'is_exact' of 'sage.rings.real_mpfr.RealField_class' objects}
       56    0.000    0.000    0.000    0.000 qqbar.py:6740(kind)
       22    0.000    0.000    0.001    0.000 preparser.py:750(preparse_calculus)
       60    0.000    0.000    0.000    0.000 qqbar.py:2188(union)
        9    0.000    0.000    0.000    0.000 free_module.py:1795(ngens)
       44    0.000    0.000    0.000    0.000 period_lattice.py:629(is_real)
       15    0.000    0.000    0.004    0.000 qqbar.py:4108(conjugate)
       34    0.000    0.000    0.000    0.000 complex_field.py:427(_repr_)
       14    0.000    0.000    0.000    0.000 qqbar.py:6646(__init__)
       18    0.000    0.000    0.000    0.000 {method 'register_coercion' of 'sage.structure.parent.Parent' objects}
       45    0.000    0.000    0.000    0.000 {method 'copy' of 'dict' objects}
       66    0.000    0.000    0.000    0.000 {method 'group' of '_sre.SRE_Match' objects}
       59    0.000    0.000    0.000    0.000 factorization.py:503(universe)
       66    0.000    0.000    0.000    0.000 {method 'start' of '_sre.SRE_Match' objects}
       22    0.000    0.000    0.001    0.000 {method 'is_unit' of 'sage.structure.element.FieldElement' objects}
       30    0.000    0.000    0.000    0.000 qqbar.py:2868(abs)
        1    0.000    0.000    0.000    0.000 {method 'range' of 'sage.rings.integer_ring.IntegerRing_class' objects}
       60    0.000    0.000    0.000    0.000 qqbar.py:4995(generator)
        6    0.000    0.000    0.001    0.000 sre_compile.py:179(_compile_charset)
       31    0.000    0.000    0.000    0.000 sre_parse.py:139(append)
       59    0.000    0.000    0.000    0.000 {method 'is_commutative' of 'sage.rings.ring.CommutativeAlgebra' objects}
       42    0.000    0.000    0.000    0.000 {method 'characteristic' of 'sage.rings.real_mpfr.RealField_class' objects}
       60    0.000    0.000    0.000    0.000 qqbar.py:1407(short_prec_seq)
       44    0.000    0.000    0.000    0.000 {method 'nextabove' of 'sage.rings.real_mpfr.RealNumber' objects}
       60    0.000    0.000    0.000    0.000 {method 'crosses_log_branch_cut' of 'sage.rings.complex_interval.ComplexIntervalFieldElement' objects}
       44    0.000    0.000    0.000    0.000 {method 'join' of 'str' objects}
        1    0.000    0.000    0.001    0.001 misc.py:1324(ellipsis_range)
       30    0.000    0.000    0.000    0.000 complex_interval_field.py:426(_repr_)
       28    0.000    0.000    0.000    0.000 {method 'lift' of 'sage.libs.pari.gen.gen' objects}
       22    0.000    0.000    0.001    0.000 constants.py:553(_mpfr_)
       28    0.000    0.000    0.000    0.000 qqbar.py:2002(__cmp__)
       22    0.000    0.000    0.000    0.000 preparser.py:479(parse_ellipsis)
       21    0.000    0.000    0.000    0.000 inspect.py:332(_searchbases)
       47    0.000    0.000    0.000    0.000 qqbar.py:692(_repr_)
       11    0.000    0.000    0.000    0.000 {method 'list' of 'sage.rings.polynomial.polynomial_rational_flint.Polynomial_rational_flint' objects}
       15    0.000    0.000    0.001    0.000 qqbar.py:596(common_polynomial)
        9    0.000    0.000    0.014    0.002 multi_polynomial_ring.py:492(__init__)
        5    0.000    0.000    0.006    0.001 sre_compile.py:496(compile)
        9    0.000    0.000    0.000    0.000 multi_polynomial_ring.py:167(_poly_class)
       66    0.000    0.000    0.000    0.000 {method 'end' of '_sre.SRE_Match' objects}
        3    0.000    0.000    0.000    0.000 {method '_coerce_map_via' of 'sage.structure.parent.Parent' objects}
       30    0.000    0.000    0.000    0.000 {method 'intersection' of 'sage.rings.real_mpfi.RealIntervalFieldElement' objects}
       21    0.000    0.000    0.000    0.000 inspect.py:59(isclass)
       15    0.000    0.000    0.023    0.002 qqbar.py:5863(generator)
        9    0.000    0.000    0.000    0.000 sre_parse.py:258(_escape)
       44    0.000    0.000    0.000    0.000 misc.py:524(get_verbose)
       11    0.000    0.000    0.001    0.000 re.py:139(search)
...

@JohnCremona
Copy link
Member

comment:10

That looks completely crazily over the top for an integer points computation. Why qqbar? Why abelian groups? I will look but it will take time and I have less than none for a while.

@simon-king-jena

This comment has been minimized.

@simon-king-jena
Copy link
Member Author

comment:11

There also is a regression in a different example (unrelated with elliptic curves, but part of #11900).

@simon-king-jena

This comment has been minimized.

@simon-king-jena
Copy link
Member Author

comment:13

Note that in the second example from the ticket description, finite fields are involved. But their creation (in a freshly started Sage session, of course) is fast:

sage: def test():
....:     for p in prime_range(10000):
....:         P = GF(p)
....:         
sage: %time test()
CPU times: user 0.52 s, sys: 0.01 s, total: 0.53 s
Wall time: 0.53 s

@simon-king-jena
Copy link
Member Author

comment:14

This one might be slower than in the good old times:

sage: def test():
....:     for i in xrange(5000):
....:         MS = MatrixSpace(QQ,i)
....:         
sage: %time test()
CPU times: user 0.49 s, sys: 0.02 s, total: 0.51 s
Wall time: 0.49 s

@simon-king-jena
Copy link
Member Author

comment:15

There is (again) some issue with overhead of the category framework:

sage: def test():             
    for p in prime_range(10000):
        P = GF(p)['t','x','z']
....:         
sage: %prun test()

         939023 function calls (884893 primitive calls) in 8.130 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     9837    1.791    0.000    1.806    0.000 dynamic_class.py:324(dynamic_class_internal)
     1229    0.623    0.001    6.659    0.005 polynomial_ring_constructor.py:569(_multi_variate)
13511/13510    0.298    0.000    3.230    0.000 category.py:435(__classcall__)
24580/3687    0.264    0.000    4.036    0.001 category.py:1522(<genexpr>)
     1228    0.225    0.000    0.246    0.000 constructor.py:533(other_keys)
    89702    0.200    0.000    0.200    0.000 {isinstance}
9836/1229    0.166    0.000    4.168    0.003 category.py:1467(_meet_)
19658/18423    0.151    0.000    0.468    0.000 category.py:1964(_make_named_class)
     9826    0.142    0.000    2.343    0.000 category.py:466(__init__)
    11054    0.132    0.000    0.195    0.000 {sorted}
     7369    0.129    0.000    1.872    0.000 category_types.py:324(__init__)
    11060    0.126    0.000    0.443    0.000 category.py:113(_join)
31942/23339    0.125    0.000    0.394    0.000 category.py:1358(is_subcategory)
     1228    0.120    0.000    0.214    0.000 quotient_ring.py:408(__init__)
     9826    0.120    0.000    0.233    0.000 category.py:1554(_flatten_categories)
11060/2457    0.120    0.000    4.456    0.002 category.py:1574(join)
2458/1229    0.113    0.000    4.578    0.004 homset.py:83(Hom)
     9826    0.111    0.000    3.013    0.000 category.py:1015(_super_categories)
    28258    0.110    0.000    0.168    0.000 weakref.py:223(__new__)
    28259    0.101    0.000    0.155    0.000 category.py:667(_subcategory_hook_)
    22113    0.095    0.000    0.131    0.000 category_types.py:206(_make_named_class_key)
     9826    0.092    0.000    2.748    0.000 unique_representation.py:1006(__classcall__)
    13521    0.091    0.000    1.898    0.000 dynamic_class.py:122(dynamic_class)
...

So, creation of dynamic classes and computation of the join of categories takes a considerable amount of time.

Nicolas, do you think that this issue would vanish with your "more functorial constructions"? Well, I am checking it now...

@simon-king-jena
Copy link
Member Author

comment:16

#10963 makes the situation even worse. I am commenting there.

@sagetrac-vbraun-spam sagetrac-vbraun-spam mannequin modified the milestones: sage-6.2, sage-6.3 May 6, 2014
@sagetrac-vbraun-spam sagetrac-vbraun-spam mannequin modified the milestones: sage-6.3, sage-6.4 Aug 10, 2014
@simon-king-jena
Copy link
Member Author

comment:19

Bump.

@nbruin
Copy link
Contributor

nbruin commented Oct 14, 2014

comment:20

The large contribution from dynamic_class_internal in [comment:15] doesn't seem to be there in 6.4beta5 anymore. In fact, the relevant line now is:

        7    0.001    0.000    0.001    0.000 dynamic_class.py:324(dynamic_class_internal)

so I expect that this unfortunate artifact was fixed by #15801. Looking at the present profile, as well as the runsnake boxchart, I don't see anything jumping out as problematic. Close?

@simon-king-jena
Copy link
Member Author

comment:21

Replying to @nbruin:

The large contribution from dynamic_class_internal in [comment:15] doesn't seem to be there in 6.4beta5 anymore. In fact, the relevant line now is:

        7    0.001    0.000    0.001    0.000 dynamic_class.py:324(dynamic_class_internal)

so I expect that this unfortunate artifact was fixed by #15801. Looking at the present profile, as well as the runsnake boxchart, I don't see anything jumping out as problematic. Close?

What is runsnake boxchart?

If you think that the regression has disappeared, I wouldn't mind to get this ticket closed (with you as reviewer, since you did tests).

@nbruin
Copy link
Contributor

nbruin commented Oct 14, 2014

comment:22

Replying to @simon-king-jena:

What is runsnake boxchart?

See #14414. runsnake is a graphic python profile data visualization program that makes a chart where each routine is represented by a box, and the area of each box is proportionate to the time spent. Call relations are visualized by containment of boxes. It sometimes gives a little better info than just a plain profile list (partially because the cumulative/total dilemma is taken away in a natural way).

Since runsnake just needs a dump of profile data, it's sufficient to install runsnake in your system python (sage's python is a little hobbled on the graphic interface side).

Anyway, we could leave this ticket open for when a new profile illustrates the reoccurrence of some regression, but it feels good to close tickets, so let's do that.

@nbruin nbruin removed this from the sage-6.4 milestone Oct 14, 2014
@vbraun
Copy link
Member

vbraun commented Oct 25, 2014

Reviewer: Volker Braun

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants