gcd in generic polynomial rings with many generators

97 views
Skip to first unread message

Martin R

unread,
Nov 3, 2024, 6:31:44 AM11/3/24
to sage-devel
Are the following timings to be expected?

sage: R = SymmetricFunctions(QQ).h().fraction_field()
sage: P = PolynomialRing(R, 200, "x")
sage: e = P.gen(199); e
x199
sage: %time e.gcd(e)
CPU times: user 41.1 s, sys: 2.24 s, total: 43.4 s
Wall time: 43.5 s
x199

sage: R = QQ
sage: P = PolynomialRing(R, 200, "x")
sage: e = P.gen(199); e
x199
sage: %time e.gcd(e)
CPU times: user 41 µs, sys: 0 ns, total: 41 µs
Wall time: 47 µs
x199

sage: R = QQbar
sage: P = PolynomialRing(R, 200, "x")
sage: e = P.gen(199); e
x199
sage: %time e.gcd(e)
CPU times: user 3.02 s, sys: 183 ms, total: 3.2 s
Wall time: 3.21 s
x199

Martin R

unread,
Nov 3, 2024, 11:11:23 AM11/3/24
to sage-devel
Possibly the problem is that MPolynomial.gcd calls UniqueFactorizationDomains.ParentMethods._gcd_univariate_polynomial, which recurses on MPolynomial.gcd, but the setup done by MPolynomial.gcd is possibly not cheap.

Martin R

unread,
Nov 3, 2024, 3:57:05 PM11/3/24
to sage-devel
I think I see things slightly clearer now.  One problem is, that, by design, we successively reduce to polynomial rings with fewer generators.  More precisely, MPolynomial.gcd converts the input to a univariate polynomial in one of the generators, and UniqueFactorizationDomains.ParentMethods._gcd_univariate_polynomial then relies on the existence of a gcd for the new base ring.

To do this, the new base ring, i.e., the ring with one fewer generator, must be constructed, and this is rather expensive.  If I understand correctly, almost all the time is spent there.  This is done in `MPolynomial.polynomial` using `S = PolynomialRing(R.base_ring(), Z)`

So, the questions are:
1. is there a (much) faster way to construct the univariate polynomial ring?  I tried to do S = R.__class__(R.base_ring(), len(Z), [str(z) for z in Z], R.term_order()) when Z has at least two variables (because of the difference between univariate and multivariate polynomial rings) but to my surprise this was actually slower.
2. can we bypass the construction of polynomial rings entirely?

Martin R

unread,
Nov 4, 2024, 5:45:45 AM11/4/24
to sage-devel
Ah, S = R.__class__(R.base_ring(), len(Z), [str(z) for z in Z], R.term_order()) is silly, because it bypasses the caching mechanism.

In fact, I'm not sure anymore whether I am on the right track: the basic problem is described at the bottom of https://github.com/sagemath/sage/pull/38108.  Looking at %prun (see below), I thought that a lot of time is wasted in constructing polynomial rings, especially the number of calls to PolynomialRing seems very large to me.  However, looking at sage.rings.polynomial.polynomial_ring_constructor._cache.keys(), these are actually all have very few generators (at most 7), so the title of this post ("many generators") is completely wrong.  It may still be problematic that `_gcd_univariate_polynomial` constructs them so often.

I'll investigate further.  Help would be very much appreciated, of course.

Martin

%prun -s cumulative repr(D)
         92714635 function calls (92104545 primitive calls) in 71.609 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000   71.783   71.783 {built-in method builtins.exec}
        1    0.000    0.000   71.783   71.783 <string>:1(<module>)
    790/1    0.002    0.000   71.783   71.783 {built-in method builtins.repr}
    141/1    0.000    0.000   71.783   71.783 lazy_series.py:1550(_repr_)
     29/1    0.001    0.000   71.783   71.783 lazy_series.py:5930(_format_series)
     29/1    0.000    0.000   71.776   71.776 lazy_series.py:5959(<listcomp>)
   100/11    0.000    0.000   71.775    6.525 lazy_series.py:320(__getitem__)
    62/11    0.000    0.000   71.775    6.525 stream.py:1782(__getitem__)
        7    0.000    0.000   71.775   10.254 stream.py:2096(_compute)
      996    0.006    0.000   67.615    0.068 infinite_polynomial_element.py:1266(gcd)
17828/996    0.851    0.000   67.579    0.068 {method 'gcd' of 'sage.rings.polynomial.multi_polynomial.MPolynomial' objects}
18124/990    0.204    0.000   62.978    0.064 unique_factorization_domains.py:132(_gcd_univariate_polynomial)
1788/1062    0.026    0.000   55.622    0.052 fraction_field.py:560(_element_constructor_)
        7    0.001    0.000   51.446    7.349 stream.py:2046(_solve_linear_equations_and_subs)
       28    0.008    0.000   51.324    1.833 stream.py:1900(_subs_in_caches)
      402    0.004    0.000   51.111    0.127 {method 'map_coefficients' of 'sage.rings.polynomial.multi_polynomial.MPolynomial' objects}
      713    0.001    0.000   50.436    0.071 stream.py:1964(<lambda>)
      713    0.019    0.000   50.435    0.071 stream.py:1922(subs)
233237/233209    0.949    0.000   46.016    0.000 multi_polynomial_element.py:457(_repr_)
233237/233209    4.064    0.000   44.502    0.000 {method 'poly_repr' of 'sage.rings.polynomial.polydict.PolyDict' objects}
  1517930    2.132    0.000   43.219    0.000 magmatic_algebras.py:208(_product_from_product_on_basis_multiply)
  1517930    1.505    0.000   40.697    0.000 free_module.py:1054(linear_combination)
  1517930    4.470    0.000   38.232    0.000 {built-in method sage.data_structures.blas_dict.linear_combination}
183026/182240    1.749    0.000   34.106    0.000 polynomial_ring_constructor.py:60(PolynomialRing)
  3034737    1.263    0.000   33.762    0.000 free_module.py:1078(<genexpr>)
  3034737    2.818    0.000   32.499    0.000 magmatic_algebras.py:222(<genexpr>)
183026/182666    0.943    0.000   30.224    0.000 {built-in method sage.structure.category_object.normalize_names}
  1516807    4.375    0.000   29.414    0.000 multiplicative.py:41(product_on_basis)
        7    0.000    0.000   20.329    2.904 stream.py:1983(_collect_equations)
     71/7    0.000    0.000   20.321    2.903 stream.py:396(__getitem__)
     28/7    0.000    0.000   20.321    2.903 stream.py:2741(get_coefficient)
226182/164092    0.072    0.000   17.707    0.000 {built-in method builtins.sum}
    24/19    0.000    0.000   17.654    0.929 stream.py:2808(get_coefficient)
    24/19    0.000    0.000   17.654    0.929 additive_monoids.py:52(sum)
    52/42    0.000    0.000   17.582    0.419 stream.py:2827(<genexpr>)
    17861    0.111    0.000   15.377    0.001 polynomial_singular_interface.py:181(_singular_)
    17861    0.366    0.000   15.266    0.001 polynomial_singular_interface.py:348(_singular_init_)
  1516811    1.379    0.000   12.021    0.000 poor_man_map.py:241(__call__)
103578/87895    0.835    0.000   11.820    0.000 multi_polynomial_ring.py:177(__call__)
10284/8981    0.165    0.000   10.894    0.001 multi_polynomial_element.py:321(_mul_)
  1516807    1.980    0.000   10.686    0.000 partition.py:462(__classcall_private__)
  1516811    8.360    0.000   10.642    0.000 free_module.py:1106(_monomial)
    12991    0.154    0.000    9.839    0.001 multi_polynomial_element.py:1849(_floordiv_)
   109401    0.631    0.000    9.452    0.000 sfa.py:3241(gcd)
  1626805    2.513    0.000    8.706    0.000 partition.py:6350(_element_constructor_)
35668/35580    0.190    0.000    8.503    0.000 rings.py:1148(__getitem__)
     1454    0.017    0.000    6.957    0.005 multi_polynomial_element.py:121(__call__)
   111193    0.404    0.000    6.924    0.000 sfa.py:6841(_to_polynomials)
        7    0.000    0.000    6.363    0.909 lazy_series.py:5265(coefficient)
    82/63    0.001    0.000    5.441    0.086 lazy_series_ring.py:2648(_element_constructor_)
  1738587    1.196    0.000    5.187    0.000 partition.py:518(__init__)
      443    0.005    0.000    4.027    0.009 fraction_field.py:712(resolve_fractions)
    12497    0.297    0.000    3.871    0.000 multi_polynomial_ring.py:565(monomial_quotient)
    14242    0.031    0.000    3.856    0.000 multi_polynomial_element.py:356(_rmul_)
    14242    0.177    0.000    3.775    0.000 {method 'scalar_rmult' of 'sage.rings.polynomial.polydict.PolyDict' objects}
  1738587    2.717    0.000    3.752    0.000 combinat.py:1526(__init__)
     1326    0.003    0.000    3.042    0.002 multi_polynomial_element.py:335(_lmul_)
     1326    0.016    0.000    3.033    0.002 {method 'scalar_lmult' of 'sage.rings.polynomial.polydict.PolyDict' objects}
       28    0.001    0.000    2.644    0.094 multi_polynomial_element.py:307(_sub_)
     1426    0.091    0.000    2.622    0.002 multi_polynomial_element.py:1432(subs)
   107192    0.399    0.000    2.374    0.000 sfa.py:6873(<listcomp>)
  3089637    1.873    0.000    2.165    0.000 free_module.py:1204(_from_dict)
 15888578    2.153    0.000    2.153    0.000 {built-in method builtins.isinstance}
       29    0.000    0.000    2.138    0.074 fraction_field.py:351(wrapper)
   111193    0.328    0.000    2.015    0.000 sfa.py:6879(_from_polynomial)
456555/234169    0.361    0.000    1.912    0.000 {built-in method builtins.max}
   110451    0.183    0.000    1.898    0.000 sfa.py:1797(is_unit)
103141/103022    0.288    0.000    1.863    0.000 {method 'coerce' of 'sage.structure.parent.Parent' objects}
     5014    0.093    0.000    1.765    0.000 {method 'pseudo_quo_rem' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
   333579    0.259    0.000    1.745    0.000 sfa.py:6866(<genexpr>)
   109994    0.802    0.000    1.657    0.000 modules_with_basis.py:1520(coefficient)
   242646    1.101    0.000    1.587    0.000 polynomial_ring.py:336(_element_constructor_)
      296    0.013    0.000    1.431    0.005 fraction_field.py:942(_gcd_univariate_polynomial)
   107192    0.700    0.000    1.427    0.000 sfa.py:6905(<dictcomp>)
  1737437    0.895    0.000    1.287    0.000 partition.py:6394(__contains__)
  3234864    0.817    0.000    1.194    0.000 combinat.py:1447(__iter__)
      708    0.002    0.000    1.090    0.002 infinite_polynomial_element.py:698(_lmul_)
137507/133349    0.151    0.000    1.065    0.000 multi_polynomial_element.py:1820(__eq__)
      408    0.003    0.000    1.042    0.003 {method 'numerator' of 'sage.rings.polynomial.multi_polynomial.MPolynomial' objects}
      592    0.010    0.000    1.026    0.002 {method 'numerator' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
  3234741    0.692    0.000    1.021    0.000 combinat.py:1421(__len__)
150040/149686    0.147    0.000    1.009    0.000 polynomial_ring_constructor.py:750(_single_variate)
  1738587    0.680    0.000    1.002    0.000 partition.py:550(__hash__)
    32986    0.152    0.000    0.967    0.000 polynomial_ring_constructor.py:831(_multi_variate)
7241407/7040280    0.848    0.000    0.908    0.000 {built-in method builtins.len}
      112    0.000    0.000    0.904    0.008 lazy_series.py:2976(_mul_)
        9    0.000    0.000    0.897    0.100 lazy_series.py:3091(<listcomp>)
       18    0.000    0.000    0.897    0.050 lazy_series.py:3091(<genexpr>)
    12647    0.012    0.000    0.882    0.000 {method 'is_one' of 'sage.structure.element.RingElement' objects}
  1738587    0.841    0.000    0.841    0.000 combinat.py:1111(__init__)
   222386    0.722    0.000    0.822    0.000 modules_with_basis.py:1651(support)
   111782    0.265    0.000    0.688    0.000 partition.py:6615(from_exp)
   214384    0.171    0.000    0.671    0.000 sfa.py:6873(<dictcomp>)
   226135    0.338    0.000    0.636    0.000 term_order.py:999(sortkey_degrevlex)
   183026    0.111    0.000    0.615    0.000 polynomial_ring_constructor.py:740(_get_from_cache)
20353/20206    0.019    0.000    0.598    0.000 multi_polynomial_ring.py:502(<dictcomp>)
    32986    0.274    0.000    0.594    0.000 term_order.py:570(__init__)
   144787    0.264    0.000    0.576    0.000 multi_polynomial_element.py:425(__init__)
   201127    0.300    0.000    0.568    0.000 partition.py:3770(to_exp)
  377/365    0.007    0.000    0.547    0.001 infinite_polynomial_ring.py:858(_element_constructor_)
        7    0.000    0.000    0.537    0.077 lazy_series_ring.py:2833(<listcomp>)
   183026    0.227    0.000    0.504    0.000 {method 'get' of 'sage.misc.weak_dict.WeakValueDictionary' objects}
   873167    0.397    0.000    0.493    0.000 combinat.py:1202(__eq__)
     1208    0.004    0.000    0.439    0.000 polynomial_ring.py:1928(__init__)
    51473    0.172    0.000    0.432    0.000 multi_polynomial_element.py:827(__iter__)
     1210    0.009    0.000    0.432    0.000 polynomial_ring.py:1801(__init__)
     1210    0.051    0.000    0.420    0.000 polynomial_ring.py:246(__init__)
1894151/1836583    0.378    0.000    0.418    0.000 {built-in method builtins.hash}
  3267511    0.409    0.000    0.409    0.000 {method 'monomial_coefficients' of 'sage.modules.with_basis.indexed_element.IndexedFreeModuleElement' objects}
      638    0.024    0.000    0.392    0.001 classical.py:90(_element_constructor_)
  3272864    0.386    0.000    0.386    0.000 {built-in method builtins.iter}
  3491586    0.337    0.000    0.337    0.000 {method 'items' of 'dict' objects}
    28565    0.086    0.000    0.301    0.000 multi_polynomial_element.py:571(degree)
     1210    0.005    0.000    0.298    0.000 unital_algebras.py:74(__init_extra__)
     1210    0.037    0.000    0.286    0.000 polynomial_ring.py:706(_coerce_map_from_base_ring)
   259200    0.135    0.000    0.284    0.000 term_order.py:888(sortkey)
  1516807    0.281    0.000    0.281    0.000 {method 'sort' of 'list' objects}
    37976    0.010    0.000    0.264    0.000 {built-in method builtins.next}
     1111    0.003    0.000    0.257    0.000 polynomial_ring.py:2159(__init__)
      868    0.006    0.000    0.239    0.000 multi_polynomial_element.py:940(coefficient)
   423513    0.214    0.000    0.238    0.000 support_view.py:102(__iter__)
  2245496    0.230    0.000    0.230    0.000 {method 'base_ring' of 'sage.structure.category_object.CategoryObject' objects}
     1792    0.019    0.000    0.226    0.000 sfa.py:3202(_floordiv_)
      776    0.007    0.000    0.221    0.000 {method 'format' of 'str' objects}
    21915    0.151    0.000    0.219    0.000 {method '_mpoly_dict_recursive' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
   184753    0.186    0.000    0.212    0.000 {method 'remove_zeros' of 'sage.rings.polynomial.polydict.PolyDict' objects}
    54371    0.038    0.000    0.210    0.000 unital_algebras.py:354(from_base_ring_from_one_basis)
      868    0.017    0.000    0.209    0.000 multi_polynomial_element.py:1373(is_monomial)
      272    0.001    0.000    0.201    0.001 stream.py:1936(fix_cache)
     4448    0.015    0.000    0.191    0.000 infinite_polynomial_element.py:1628(_richcmp_)
    32785    0.030    0.000    0.186    0.000 re.py:232(findall)
    25879    0.053    0.000    0.186    0.000 multi_polynomial_element.py:1211(_exponents)
   183090    0.104    0.000    0.184    0.000 {built-in method builtins.any}
    17855    0.082    0.000    0.176    0.000 polynomial_singular_interface.py:52(_do_singular_init_)
     1550    0.007    0.000    0.174    0.000 {sage.misc.misc_c.prod}
     1210    0.013    0.000    0.173    0.000 polynomial_ring.py:1240(gen)
    54896    0.055    0.000    0.173    0.000 free_module.py:1083(term)
  1546536    0.173    0.000    0.173    0.000 {method 'one' of 'sage.rings.ring.Ring' objects}
      290    0.011    0.000    0.172    0.001 {method 'monic' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
  1536888    0.166    0.000    0.166    0.000 {method 'parent' of 'sage.structure.element.Element' objects}
   262784    0.151    0.000    0.151    0.000 {built-in method builtins.getattr}
    28784    0.052    0.000    0.146    0.000 multi_polynomial_ring.py:166(__hash__)
    15174    0.034    0.000    0.143    0.000 {method 'coefficients' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
     4001    0.059    0.000    0.138    0.000 sfa.py:6875(<listcomp>)
    82221    0.103    0.000    0.138    0.000 monoids.py:277(is_one)
1312/1310    0.008    0.000    0.138    0.000 polynomial_ring.py:734(_coerce_map_from_)
    19069    0.089    0.000    0.133    0.000 polynomial_singular_interface.py:382(can_convert_to_singular)
      631    0.000    0.000    0.129    0.000 infinite_polynomial_element.py:271(_repr_)
3939/2632    0.042    0.000    0.126    0.000 homset.py:87(Hom)
      402    0.001    0.000    0.125    0.000 infinite_polynomial_element.py:555(numerator)
      473    0.002    0.000    0.122    0.000 infinite_polynomial_element.py:1683(_mul_)
1507/1505    0.006    0.000    0.121    0.000 {method 'coerce_map_from' of 'sage.structure.parent.Parent' objects}
   116841    0.076    0.000    0.121    0.000 multi_polynomial_element.py:805(monomial_coefficients)
   107192    0.117    0.000    0.117    0.000 {method 'monomial_coefficients' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
   111193    0.115    0.000    0.115    0.000 sfa.py:6871(<listcomp>)
   144787    0.114    0.000    0.114    0.000 multi_polynomial_element.py:93(__init__)
   233266    0.111    0.000    0.111    0.000 {method '_repr_option' of 'sage.structure.parent.Parent' objects}
     5151    0.003    0.000    0.109    0.000 {built-in method sage.structure.richcmp.richcmp}
    22917    0.066    0.000    0.109    0.000 multi_polynomial_element.py:1352(is_generator)
10704/4397    0.071    0.000    0.104    0.000 {method 'has_coerce_map_from' of 'sage.structure.parent.Parent' objects}
    32785    0.104    0.000    0.104    0.000 {method 'findall' of 're.Pattern' objects}
    35668    0.102    0.000    0.102    0.000 rings.py:1365(<listcomp>)
        7    0.007    0.001    0.100    0.014 {method 'solve_right' of 'sage.matrix.matrix2.Matrix' objects}
    12497    0.040    0.000    0.100    0.000 multi_polynomial_ring.py:771(monomial_divides)
   100617    0.068    0.000    0.096    0.000 <frozen importlib._bootstrap>:404(parent)
     4001    0.057    0.000    0.095    0.000 sfa.py:6908(<dictcomp>)
    99/97    0.001    0.000    0.094    0.001 fraction_field.py:219(_coerce_map_from_)
   486632    0.091    0.000    0.091    0.000 multi_polynomial_element.py:416(element)
    25886    0.026    0.000    0.090    0.000 {built-in method builtins.sorted}
   249052    0.088    0.000    0.088    0.000 {method 'nonzero_values' of 'sage.rings.polynomial.polydict.ETuple' objects}
    10326    0.015    0.000    0.088    0.000 multi_polynomial_element.py:440(_new_constant_poly)
   226135    0.087    0.000    0.087    0.000 {method 'reversed' of 'sage.rings.polynomial.polydict.ETuple' objects}
    28565    0.082    0.000    0.083    0.000 {method 'degree' of 'sage.rings.polynomial.polydict.PolyDict' objects}
     8002    0.012    0.000    0.080    0.000 sfa.py:6875(<dictcomp>)
   365957    0.080    0.000    0.080    0.000 polynomial_ring_constructor.py:639(<genexpr>)
    65570    0.061    0.000    0.077    0.000 re.py:288(_compile)
    32785    0.028    0.000    0.076    0.000 re.py:187(match)
    64726    0.059    0.000    0.071    0.000 fraction_field.py:799(__hash__)
     8527    0.025    0.000    0.070    0.000 rational_field.py:344(_coerce_map_from_)
    14086    0.027    0.000    0.068    0.000 multi_polynomial_element.py:293(_add_)
    17890    0.066    0.000    0.066    0.000 fraction_field.py:816(ngens)
    17855    0.020    0.000    0.064    0.000 {method 'characteristic' of 'sage.rings.polynomial.multi_polynomial_ring_base.MPolynomialRing_base' objects}
    32986    0.049    0.000    0.061    0.000 term_order.py:1907(__eq__)
   159669    0.059    0.000    0.059    0.000 multi_polynomial_element.py:1839(__bool__)
   226135    0.059    0.000    0.059    0.000 {method 'emul' of 'sage.rings.polynomial.polydict.ETuple' objects}
      557    0.000    0.000    0.059    0.000 stream.py:1966(<lambda>)
      557    0.007    0.000    0.058    0.000 stream.py:1929(retract)
   201127    0.057    0.000    0.057    0.000 combinat.py:1377(__bool__)
   319920    0.052    0.000    0.052    0.000 {method 'get' of 'dict' objects}
      201    0.001    0.000    0.051    0.000 infinite_polynomial_element.py:688(_rmul_)
    61770    0.034    0.000    0.046    0.000 term_order.py:865(__hash__)
     1407    0.008    0.000    0.045    0.000 rings.py:489(_Hom_)
   115744    0.045    0.000    0.045    0.000 {method 'base_ring' of 'sage.structure.element.Element' objects}
    17855    0.014    0.000    0.045    0.000 fraction_field.py:465(characteristic)
   119515    0.044    0.000    0.044    0.000 support_view.py:52(__init__)
   172689    0.043    0.000    0.043    0.000 {method 'dict' of 'sage.rings.polynomial.polydict.PolyDict' objects}
     2634    0.034    0.000    0.043    0.000 homset.py:610(__init__)
   334489    0.042    0.000    0.042    0.000 {method 'zero' of 'sage.rings.ring.Ring' objects}
   316129    0.041    0.000    0.041    0.000 {method 'term_order' of 'sage.rings.polynomial.multi_polynomial_ring_base.MPolynomialRing_base' objects}
     2420    0.002    0.000    0.038    0.000 {built-in method sage.structure.category_object.check_default_category}
      296    0.001    0.000    0.037    0.000 polynomial_ring.py:1083(change_ring)
   136/92    0.001    0.000    0.037    0.000 repr.py:48(repr_lincomb)
     1210    0.004    0.000    0.036    0.000 category.py:2281(join)
    35668    0.023    0.000    0.035    0.000 rings.py:1325(normalize_arg)
     1407    0.005    0.000    0.034    0.000 homset.py:46(RingHomset)
   290454    0.033    0.000    0.033    0.000 {method 'variable_names' of 'sage.structure.category_object.CategoryObject' objects}
     4630    0.031    0.000    0.032    0.000 polynomial_element_generic.py:1145(__init__)
     3244    0.011    0.000    0.031    0.000 infinite_polynomial_element.py:180(__classcall_private__)
    17855    0.016    0.000    0.031    0.000 algebras.py:146(characteristic)
      112    0.000    0.000    0.030    0.000 infinite_polynomial_element.py:1397(_mul_)
    16799    0.014    0.000    0.029    0.000 multi_polynomial_element.py:1828(__ne__)
  312/192    0.000    0.000    0.029    0.000 repr.py:7(coeff_repr)
       35    0.000    0.000    0.029    0.001 stream.py:1893(<genexpr>)
  310/190    0.001    0.000    0.029    0.000 {method '_coeff_repr' of 'sage.structure.element.Element' objects}
     1407    0.002    0.000    0.029    0.000 homset.py:78(__init__)
   126545    0.028    0.000    0.028    0.000 {built-in method builtins.hasattr}
   100617    0.028    0.000    0.028    0.000 {method 'rpartition' of 'str' objects}
     1210    0.011    0.000    0.028    0.000 {built-in method sage.categories.category_cy_helper._sort_uniq}
       27    0.000    0.000    0.027    0.001 qqbar_decorators.py:38(wrapper)
     1407    0.002    0.000    0.027    0.000 homset.py:1267(__init__)
    54896    0.026    0.000    0.026    0.000 free_module.py:1261(<dictcomp>)
       27    0.000    0.000    0.026    0.001 multi_polynomial_element.py:2242(quo_rem)
     5414    0.020    0.000    0.024    0.000 multi_polynomial_element.py:1503(constant_coefficient)
   109994    0.023    0.000    0.023    0.000 {method 'is_unit' of 'sage.structure.element.FieldElement' objects}
    32785    0.022    0.000    0.022    0.000 {method 'match' of 're.Pattern' objects}
     4836    0.009    0.000    0.022    0.000 infinite_polynomial_element.py:248(__init__)
     2260    0.005    0.000    0.019    0.000 multi_polynomial_element.py:186(<genexpr>)
       60    0.001    0.000    0.018    0.000 lazy_series.py:3134(__pow__)
     1307    0.011    0.000    0.018    0.000 magmas.py:791(__init_extra__)
    85627    0.018    0.000    0.018    0.000 fraction_field.py:532(ring)
   110202    0.017    0.000    0.017    0.000 polynomial_ring.py:1375(ngens)
    12497    0.017    0.000    0.017    0.000 {method 'common_nonzero_positions' of 'sage.rings.polynomial.polydict.ETuple' objects}
    17114    0.009    0.000    0.017    0.000 {built-in method builtins.all}
    19557    0.007    0.000    0.017    0.000 category.py:1758(is_subcategory)
    22917    0.015    0.000    0.016    0.000 {method 'is_one' of 'sage.rings.fraction_field_element.FractionFieldElement' objects}
    21701    0.009    0.000    0.015    0.000 weakref.py:348(__new__)
    23434    0.015    0.000    0.015    0.000 {method 'is_zero' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
       51    0.000    0.000    0.015    0.000 polynomial_element_generic.py:625(_mul_)
      525    0.002    0.000    0.014    0.000 rings.py:1537(inverse_of_unit)
     7826    0.009    0.000    0.013    0.000 multi_polynomial_ring.py:137(__eq__)
    17855    0.013    0.000    0.013    0.000 rational_field.py:1003(characteristic)
        3    0.000    0.000    0.013    0.004 stream.py:4783(_advance)
     3862    0.011    0.000    0.011    0.000 dynamic_class.py:129(dynamic_class)
    17861    0.010    0.000    0.011    0.000 fraction_field.py:450(base_ring)
    51290    0.011    0.000    0.011    0.000 {method 'degree' of 'sage.rings.polynomial.polynomial_element.Polynomial_generic_dense' objects}
    12497    0.011    0.000    0.011    0.000 {method 'divides' of 'sage.structure.element.FieldElement' objects}
      969    0.001    0.000    0.011    0.000 infinite_polynomial_element.py:492(is_unit)
    76016    0.011    0.000    0.011    0.000 {method 'ngens' of 'sage.rings.polynomial.multi_polynomial_ring_base.MPolynomialRing_base' objects}
     9792    0.008    0.000    0.011    0.000 <frozen importlib._bootstrap>:1053(_handle_fromlist)
        5    0.000    0.000    0.010    0.002 lazy_series_ring.py:1501(<genexpr>)
        4    0.000    0.000    0.010    0.002 <ipython-input-14-11aeb329ac6b>:1(<lambda>)
      969    0.005    0.000    0.010    0.000 {method 'is_unit' of 'sage.rings.polynomial.multi_polynomial.MPolynomial' objects}
    19316    0.009    0.000    0.009    0.000 {method 'gens' of 'sage.structure.parent_gens.ParentWithGens' objects}
    33187    0.009    0.000    0.009    0.000 term_order.py:2132(is_block_order)
    17855    0.009    0.000    0.009    0.000 term_order.py:1648(singular_str)
    20388    0.009    0.000    0.009    0.000 weakref.py:353(__init__)
       97    0.002    0.000    0.008    0.000 polynomial_ring.py:627(flattening_morphism)
     5137    0.005    0.000    0.008    0.000 copy.py:66(copy)
     1210    0.003    0.000    0.008    0.000 {method '_populate_coercion_lists_' of 'sage.structure.parent.Parent' objects}
    12497    0.007    0.000    0.007    0.000 {method 'esub' of 'sage.rings.polynomial.polydict.ETuple' objects}
     6305    0.005    0.000    0.007    0.000 free_module.py:823(_coerce_map_from_)
    33270    0.007    0.000    0.007    0.000 {method 'lower' of 'str' objects}
     1210    0.002    0.000    0.007    0.000 magmatic_algebras.py:178(product)
       18    0.000    0.000    0.007    0.000 lazy_series.py:1940(_acted_upon_)
      703    0.002    0.000    0.007    0.000 infinite_polynomial_element.py:1498(_richcmp_)
     2420    0.004    0.000    0.007    0.000 polynomial_ring_constructor.py:745(_save_in_cache)
      4/1    0.000    0.000    0.007    0.007 stream.py:2722(_approximate_order)
        7    0.000    0.000    0.007    0.001 multi_polynomial_sequence.py:719(coefficients_monomials)
      4/3    0.000    0.000    0.007    0.002 stream.py:2789(_approximate_order)
    32867    0.007    0.000    0.007    0.000 {method 'keys' of 'dict' objects}
    21701    0.007    0.000    0.007    0.000 {built-in method __new__ of type object at 0x55a21f2709a0}
        1    0.000    0.000    0.007    0.007 stream.py:4755(_approximate_order)
     7252    0.004    0.000    0.006    0.000 category_types.py:377(_subcategory_hook_)
        5    0.000    0.000    0.006    0.001 stream.py:4847(__getitem__)
     3362    0.004    0.000    0.006    0.000 infinite_polynomial_element.py:351(__getattr__)
     8685    0.004    0.000    0.006    0.000 category.py:638(_subcategory_hook_)
        7    0.000    0.000    0.005    0.001 multi_polynomial_sequence.py:212(PolynomialSequence)
      576    0.002    0.000    0.005    0.000 polynomial_ring.py:2122(construction)
      408    0.002    0.000    0.005    0.000 {method 'denominator' of 'sage.rings.polynomial.multi_polynomial.MPolynomial' objects}
      321    0.001    0.000    0.005    0.000 fraction_field.py:1228(_call_)
     1210    0.004    0.000    0.005    0.000 {method 'register_coercion' of 'sage.structure.parent.Parent' objects}
    32797    0.005    0.000    0.005    0.000 term_order.py:942(sortkey_lex)
    13124    0.005    0.000    0.005    0.000 multi_polynomial_ring.py:807(<genexpr>)
      525    0.002    0.000    0.005    0.000 algebras_with_basis.py:160(__invert__)
     2420    0.002    0.000    0.005    0.000 rings.py:437(is_zero)
     1210    0.004    0.000    0.004    0.000 {built-in method sage.categories.category_cy_helper._flatten_categories}
    23244    0.004    0.000    0.004    0.000 combinat.py:1433(__getitem__)
     1256    0.004    0.000    0.004    0.000 fields.py:65(__contains__)
    16036    0.004    0.000    0.004    0.000 {built-in method builtins.issubclass}
      816    0.002    0.000    0.004    0.000 multi_polynomial_element.py:1226(exponents)
     6892    0.004    0.000    0.004    0.000 polynomial_ring.py:1027(__hash__)
     1111    0.003    0.000    0.004    0.000 polynomial_ring.py:2186(_element_class)
       10    0.000    0.000    0.004    0.000 lazy_series.py:2106(<listcomp>)
    17855    0.003    0.000    0.003    0.000 rational_field.py:992(is_prime_field)
1220/1216    0.001    0.000    0.003    0.000 category.py:3046(is_subcategory)
     1307    0.002    0.000    0.003    0.000 polynomial_ring.py:500(_implementation_names)
      408    0.003    0.000    0.003    0.000 {method '_extract_polydict' of 'sage.rings.polynomial.multi_polynomial_ring_base.MPolynomialRing_base' objects}
      584    0.003    0.000    0.003    0.000 pushout.py:828(__init__)
     6903    0.003    0.000    0.003    0.000 partition.py:6434(<genexpr>)
     2592    0.002    0.000    0.003    0.000 {method 'is_one' of 'sage.rings.polynomial.polynomial_element.Polynomial' objects}
      868    0.003    0.000    0.003    0.000 {method 'polynomial_coefficient' of 'sage.rings.polynomial.polydict.PolyDict' objects}
       35    0.000    0.000    0.003    0.000 infinite_polynomial_element.py:1670(_add_)
       45    0.000    0.000    0.003    0.000 lazy_series.py:1767(_add_)
        3    0.000    0.000    0.003    0.001 stream.py:4976(apply_operator)
       97    0.000    0.000    0.003    0.000 category.py:597(_repr_)
        3    0.000    0.000    0.002    0.001 lazy_series.py:1846(<listcomp>)
     1210    0.002    0.000    0.002    0.000 {method '_make_weak_references' of 'sage.categories.map.Map' objects}
       31    0.000    0.000    0.002    0.000 free_module.py:308(FreeModule)
       97    0.000    0.000    0.002    0.000 category.py:499(_repr_object_names)
      123    0.000    0.000    0.002    0.000 indexed_generators.py:332(_repr_generator)
       42    0.000    0.000    0.002    0.000 free_module.py:6421(_element_constructor_)
      324    0.001    0.000    0.002    0.000 {method 'join' of 'str' objects}
     4001    0.002    0.000    0.002    0.000 {method 'iterator_exp_coeff' of 'sage.rings.polynomial.multi_polynomial_libsingular.MPolynomial_libsingular' objects}
       49    0.001    0.000    0.002    0.000 free_module.py:2174(_element_constructor_)
       18    0.000    0.000    0.002    0.000 free_module.py:245(create_object)
       41    0.000    0.000    0.002    0.000 {method 'homogeneous_components' of 'sage.rings.polynomial.multi_polynomial.MPolynomial' objects}
     1210    0.001    0.000    0.002    0.000 polynomial_ring.py:1291(is_exact)
     5849    0.002    0.000    0.002    0.000 term_order.py:2144(is_weighted_degree_order)
      483    0.001    0.000    0.002    0.000 free_module.py:897(is_exact)
        7    0.000    0.000    0.002    0.000 multi_polynomial_sequence.py:568(monomials)
       18    0.000    0.000    0.002    0.000 free_module.py:6073(__init__)
       36    0.000    0.000    0.002    0.000 stream.py:918(_polynomial_part)
       18    0.000    0.000    0.002    0.000 free_module.py:5360(__init__)
      868    0.002    0.000    0.002    0.000 multi_polynomial_element.py:1016(<listcomp>)
       18    0.000    0.000    0.002    0.000 free_module.py:1992(__init__)
        7    0.000    0.000    0.002    0.000 infinite_polynomial_element.py:1367(_add_)
      284    0.000    0.000    0.001    0.000 infinite_polynomial_element.py:281(__hash__)
     8640    0.001    0.000    0.001    0.000 {built-in method sage.structure.element.parent}
     2919    0.001    0.000    0.001    0.000 homset.py:1219(codomain)
        7    0.000    0.000    0.001    0.000 {sage.modules.free_module_element.vector}
       99    0.001    0.000    0.001    0.000 {method '__copy__' of 'sage.categories.map.Map' objects}
       18    0.001    0.000    0.001    0.000 free_module.py:908(__init__)
     6324    0.001    0.000    0.001    0.000 {function FreeModule_ambient._coerce_map_from_ at 0x7f858e182d40}
       14    0.000    0.000    0.001    0.000 free_module.py:6242(__init__)
     5165    0.001    0.000    0.001    0.000 homset.py:774(homset_category)
      123    0.001    0.000    0.001    0.000 polynomial_element_generic.py:84(__init__)
       53    0.000    0.000    0.001    0.000 {built-in method sage.structure.element.canonical_coercion}
      701    0.001    0.000    0.001    0.000 multi_polynomial_element.py:1694(is_constant)
       28    0.000    0.000    0.001    0.000 stream.py:1288(new_variable)
     1228    0.001    0.000    0.001    0.000 additive_magmas.py:211(__init_extra__)
     1273    0.001    0.000    0.001    0.000 fraction_field.py:763(__eq__)
      123    0.000    0.000    0.001    0.000 partition.py:563(_repr_)
       99    0.001    0.000    0.001    0.000 stream.py:621(__init__)
       28    0.000    0.000    0.001    0.000 stream.py:1316(del_variable)
       35    0.000    0.000    0.001    0.000 matrix_misc.py:24(row_iterator)
     4769    0.001    0.000    0.001    0.000 {method 'category' of 'sage.rings.ring.Ring' objects}
       11    0.000    0.000    0.001    0.000 free_module.py:6333(__init__)
     1305    0.001    0.000    0.001    0.000 polynomial_ring.py:2086(_implementation_names_impl)
       28    0.000    0.000    0.001    0.000 {method 'row' of 'sage.matrix.matrix1.Matrix' objects}
     2919    0.001    0.000    0.001    0.000 homset.py:1204(domain)
     2420    0.001    0.000    0.001    0.000 category.py:2997(super_categories)
     1940    0.001    0.000    0.001    0.000 category.py:519(<genexpr>)
      123    0.000    0.000    0.001    0.000 global_options.py:1643(_dispatch)
       28    0.000    0.000    0.001    0.000 infinite_polynomial_element.py:611(monomials)
        4    0.000    0.000    0.001    0.000 {method 'column' of 'sage.matrix.matrix1.Matrix' objects}
     1550    0.001    0.000    0.001    0.000 polynomial_ring.py:1309(is_sparse)
       56    0.000    0.000    0.001    0.000 {method 'add' of 'set' objects}
     1210    0.001    0.000    0.001    0.000 abstract_method.py:202(__get__)
       41    0.000    0.000    0.001    0.000 fraction_field.py:481(_repr_)
      382    0.000    0.000    0.001    0.000 fraction_field.py:782(__ne__)
      868    0.001    0.000    0.001    0.000 {method 'coefficients' of 'sage.rings.polynomial.polydict.PolyDict' objects}
       18    0.000    0.000    0.001    0.000 category_with_axiom.py:1977(__classcall__)
     3630    0.001    0.000    0.001    0.000 {method 'copy' of 'list' objects}
       35    0.000    0.000    0.001    0.000 infinite_polynomial_ring.py:1267(gens_dict)
       41    0.000    0.000    0.001    0.000 sfa.py:477(_repr_)
       84    0.000    0.000    0.001    0.000 multi_polynomial_element.py:189(_richcmp_)
       36    0.000    0.000    0.001    0.000 polynomial_element_generic.py:753(shift)
       49    0.000    0.000    0.001    0.000 matrix_space.py:1036(_element_constructor_)
       28    0.000    0.000    0.001    0.000 infinite_polynomial_element.py:590(variables)
     1210    0.001    0.000    0.001    0.000 {method '_is_coercion_cached' of 'sage.structure.parent.Parent' objects}
       42    0.000    0.000    0.001    0.000 matrix_space.py:677(__classcall__)
     4001    0.001    0.000    0.001    0.000 {method 'ngens' of 'sage.rings.polynomial.multi_polynomial_libsingular.MPolynomialRing_libsingular' objects}
       84    0.000    0.000    0.001    0.000 infinite_polynomial_element.py:1262(<genexpr>)
      701    0.000    0.000    0.000    0.000 {method 'is_constant' of 'sage.rings.polynomial.polydict.PolyDict' objects}
       28    0.000    0.000    0.000    0.000 multi_polynomial_element.py:1471(monomials)
       18    0.000    0.000    0.000    0.000 modules.py:119(__classcall_private__)
        7    0.000    0.000    0.000    0.000 {method 'right_kernel_matrix' of 'sage.matrix.matrix2.Matrix' objects}
        3    0.000    0.000    0.000    0.000 {sage.modules.free_module_element.zero_vector}
      448    0.000    0.000    0.000    0.000 monoids.py:293(_pow_int)
      123    0.000    0.000    0.000    0.000 partition.py:687(_repr_list)
       84    0.000    0.000    0.000    0.000 infinite_polynomial_ring.py:1455(__getitem__)
       82    0.000    0.000    0.000    0.000 multi_polynomial_element.py:911(iterator_exp_coeff)
     2062    0.000    0.000    0.000    0.000 {method 'numerator' of 'sage.rings.fraction_field_element.FractionFieldElement' objects}
        7    0.000    0.000    0.000    0.000 stream.py:2021(<listcomp>)
        3    0.000    0.000    0.000    0.000 rings.py:618(__pow__)
      525    0.000    0.000    0.000    0.000 free_module.py:621(__contains__)
      291    0.000    0.000    0.000    0.000 pushout.py:917(__ne__)
       28    0.000    0.000    0.000    0.000 {method 'monomial' of 'sage.rings.polynomial.multi_polynomial_ring_base.MPolynomialRing_base' objects}
      201    0.000    0.000    0.000    0.000 term_order.py:875(__copy)
      117    0.000    0.000    0.000    0.000 {built-in method sage.rings.ring._is_Field}
      582    0.000    0.000    0.000    0.000 category.py:521(<genexpr>)
        3    0.000    0.000    0.000    0.000 free_module.py:5768(change_ring)
      170    0.000    0.000    0.000    0.000 stream.py:719(__getitem__)
      880    0.000    0.000    0.000    0.000 {method 'variable_name' of 'sage.structure.category_object.CategoryObject' objects}
     1408    0.000    0.000    0.000    0.000 copy.py:107(_copy_immutable)
       84    0.000    0.000    0.000    0.000 {method 'rich_compare' of 'sage.rings.polynomial.polydict.PolyDict' objects}
     2034    0.000    0.000    0.000    0.000 {method 'denominator' of 'sage.rings.fraction_field_element.FractionFieldElement' objects}
        2    0.000    0.000    0.000    0.000 infinite_polynomial_ring.py:816(_coerce_map_from_)
       35    0.000    0.000    0.000    0.000 infinite_polynomial_ring.py:519(__init__)
        2    0.000    0.000    0.000    0.000 pushout.py:4017(pushout)
      471    0.000    0.000    0.000    0.000 {built-in method sage.arith.power.generic_power}
       41    0.000    0.000    0.000    0.000 sf.py:886(_repr_)
     1631    0.000    0.000    0.000    0.000 {method 'is_exact' of 'sage.rings.ring.Ring' objects}
       28    0.000    0.000    0.000    0.000 infinite_polynomial_element.py:631(<listcomp>)
       32    0.000    0.000    0.000    0.000 lazy_series_ring.py:2554(_monomial)
       77    0.000    0.000    0.000    0.000 infinite_polynomial_element.py:608(<genexpr>)
      713    0.000    0.000    0.000    0.000 infinite_polynomial_ring.py:1628(polynomial_ring)
       28    0.000    0.000    0.000    0.000 verbose.py:116(verbose)
      516    0.000    0.000    0.000    0.000 {built-in method sage.structure.coerce.py_scalar_to_element}
       35    0.000    0.000    0.000    0.000 {method 'gens_dict' of 'sage.structure.category_object.CategoryObject' objects}
       87    0.000    0.000    0.000    0.000 polynomial_element_generic.py:419(__normalize)
      291    0.000    0.000    0.000    0.000 pushout.py:892(__eq__)
       28    0.000    0.000    0.000    0.000 multi_polynomial_element.py:1500(<listcomp>)
        4    0.000    0.000    0.000    0.000 {method 'matrix_from_columns' of 'sage.matrix.matrix1.Matrix' objects}
     1843    0.000    0.000    0.000    0.000 {method 'isupper' of 'str' objects}
       28    0.000    0.000    0.000    0.000 multi_polynomial_element.py:1634(variables)
        7    0.000    0.000    0.000    0.000 sequence.py:78(Sequence)
       42    0.000    0.000    0.000    0.000 matrix_space.py:92(get_matrix_class)
        1    0.000    0.000    0.000    0.000 stream.py:1738(_good_cache)
       28    0.000    0.000    0.000    0.000 timing.py:25(cputime)
        4    0.000    0.000    0.000    0.000 sfa.py:1884(__getitem__)
        4    0.000    0.000    0.000    0.000 pushout.py:4744(construction_tower)
      644    0.000    0.000    0.000    0.000 rational_field.py:245(_repr_)
        6    0.000    0.000    0.000    0.000 infinite_polynomial_ring.py:745(__repr__)
       81    0.000    0.000    0.000    0.000 qqbar_decorators.py:93(<genexpr>)
        1    0.000    0.000    0.000    0.000 stream.py:1699(_input_streams)
      408    0.000    0.000    0.000    0.000 {method 'issubset' of 'set' objects}
       35    0.000    0.000    0.000    0.000 infinite_polynomial_ring.py:413(__init__)
       23    0.000    0.000    0.000    0.000 lazy_series.py:2845(__pow__)
      483    0.000    0.000    0.000    0.000 {method 'is_exact' of 'sage.structure.parent.Parent' objects}
       19    0.000    0.000    0.000    0.000 free_module.py:5423(_coerce_map_from_)
      127    0.000    0.000    0.000    0.000 lazy_series.py:304(__init__)
      108    0.000    0.000    0.000    0.000 polynomial_element_generic.py:547(degree)
      123    0.000    0.000    0.000    0.000 indexed_generators.py:269(_parse_names)
      201    0.000    0.000    0.000    0.000 {method 'copy' of 'dict' objects}
       36    0.000    0.000    0.000    0.000 lazy_series.py:3216(<listcomp>)
       53    0.000    0.000    0.000    0.000 free_module.py:982(degree)
        6    0.000    0.000    0.000    0.000 lazy_series.py:3338(_div_)
       26    0.000    0.000    0.000    0.000 category.py:425(__classcall__)
       28    0.000    0.000    0.000    0.000 {method 'is_zero' of 'sage.structure.element.Element' objects}
       18    0.000    0.000    0.000    0.000 free_module.py:8216(element_class)
       87    0.000    0.000    0.000    0.000 polynomial_element_generic.py:421(<listcomp>)
       97    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
      296    0.000    0.000    0.000    0.000 {method 'pop' of 'dict' objects}
        7    0.000    0.000    0.000    0.000 {method 'transpose' of 'sage.matrix.matrix_sparse.Matrix_sparse' objects}
       36    0.000    0.000    0.000    0.000 polynomial_element_generic.py:797(<dictcomp>)
       18    0.000    0.000    0.000    0.000 category.py:2486(category)
       28    0.000    0.000    0.000    0.000 {built-in method resource.getrusage}
      183    0.000    0.000    0.000    0.000 partition.py:696(<genexpr>)
       11    0.000    0.000    0.000    0.000 fraction_field.py:434(is_finite)
       28    0.000    0.000    0.000    0.000 multi_polynomial_element.py:541(degrees)
        8    0.000    0.000    0.000    0.000 polynomial_ring.py:651(construction)
       36    0.000    0.000    0.000    0.000 polynomial_element_generic.py:425(__getitem__)
       35    0.000    0.000    0.000    0.000 abc.py:117(__instancecheck__)
       28    0.000    0.000    0.000    0.000 multi_polynomial_element.py:1658(<listcomp>)
        6    0.000    0.000    0.000    0.000 lazy_series.py:1040(__bool__)
      246    0.000    0.000    0.000    0.000 rational_field.py:256(_repr_option)
       11    0.000    0.000    0.000    0.000 vector_spaces.py:41(__classcall_private__)
       21    0.000    0.000    0.000    0.000 multi_polynomial_sequence.py:305(<lambda>)
      107    0.000    0.000    0.000    0.000 indexed_generators.py:201(print_options)
       98    0.000    0.000    0.000    0.000 matrix_space.py:2341(ncols)
       14    0.000    0.000    0.000    0.000 sequence.py:398(__init__)
        7    0.000    0.000    0.000    0.000 multi_polynomial_sequence.py:386(__init__)
      285    0.000    0.000    0.000    0.000 {method 'category' of 'sage.structure.parent.Parent' objects}
       36    0.000    0.000    0.000    0.000 polynomial_element_generic.py:198(valuation)
       36    0.000    0.000    0.000    0.000 polynomial_element_generic.py:113(<dictcomp>)
       13    0.000    0.000    0.000    0.000 global_options.py:1158(__getitem__)
       70    0.000    0.000    0.000    0.000 infinite_polynomial_ring.py:428(<genexpr>)
       93    0.000    0.000    0.000    0.000 {built-in method builtins.min}
       31    0.000    0.000    0.000    0.000 free_module.py:228(create_key)
       41    0.000    0.000    0.000    0.000 lazy_series_ring.py:2822(<listcomp>)
       98    0.000    0.000    0.000    0.000 matrix_space.py:2353(nrows)
      296    0.000    0.000    0.000    0.000 {method 'base' of 'sage.structure.category_object.CategoryObject' objects}
       28    0.000    0.000    0.000    0.000 infinite_polynomial_element.py:1250(__iter__)
       35    0.000    0.000    0.000    0.000 {built-in method _abc._abc_instancecheck}
       11    0.000    0.000    0.000    0.000 modules_with_basis.py:1066(is_finite)
        4    0.000    0.000    0.000    0.000 rational_field.py:308(construction)
      123    0.000    0.000    0.000    0.000 sfa.py:2426(prefix)
       95    0.000    0.000    0.000    0.000 sfa.py:444(is_field)
        3    0.000    0.000    0.000    0.000 free_module.py:1097(zero_vector)
       99    0.000    0.000    0.000    0.000 stream.py:146(__init__)
       97    0.000    0.000    0.000    0.000 {method 'lstrip' of 'str' objects}
        4    0.000    0.000    0.000    0.000 sfa.py:3054(construction)
        1    0.000    0.000    0.000    0.000 global_options.py:581(__radd__)
        7    0.000    0.000    0.000    0.000 sequence.py:238(<listcomp>)
       28    0.000    0.000    0.000    0.000 {method 'max_exp' of 'sage.rings.polynomial.polydict.PolyDict' objects}
        4    0.000    0.000    0.000    0.000 fraction_field.py:746(construction)
        8    0.000    0.000    0.000    0.000 pushout.py:2430(__init__)
        6    0.000    0.000    0.000    0.000 {method 'fraction_field' of 'sage.rings.ring.CommutativeRing' objects}
       71    0.000    0.000    0.000    0.000 stream.py:769(order)
      123    0.000    0.000    0.000    0.000 {built-in method builtins.callable}
       23    0.000    0.000    0.000    0.000 free_module.py:1184(__richcmp__)
      123    0.000    0.000    0.000    0.000 indexed_generators.py:159(<lambda>)
        4    0.000    0.000    0.000    0.000 infinite_polynomial_ring.py:1564(construction)
       50    0.000    0.000    0.000    0.000 free_module.py:2949(coordinate_ring)
        2    0.000    0.000    0.000    0.000 category.py:682(__contains__)
        1    0.000    0.000    0.000    0.000 stream.py:1547(__del__)
        4    0.000    0.000    0.000    0.000 sfa.py:6488(__init__)
       16    0.000    0.000    0.000    0.000 combinat.py:1241(__lt__)
       49    0.000    0.000    0.000    0.000 {method 'gen' of 'sage.rings.polynomial.multi_polynomial_ring_base.MPolynomialRing_base' objects}
       29    0.000    0.000    0.000    0.000 lazy_series.py:5975(<listcomp>)
       88    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
        4    0.000    0.000    0.000    0.000 integral_domains.py:45(__contains__)
       45    0.000    0.000    0.000    0.000 sfa.py:2857(basis_name)
       62    0.000    0.000    0.000    0.000 stream.py:1733(<genexpr>)
        1    0.000    0.000    0.000    0.000 stream.py:1030(input_streams)
        4    0.000    0.000    0.000    0.000 stream.py:2079(<listcomp>)
        2    0.000    0.000    0.000    0.000 category.py:3023(_subcategory_hook_)
        1    0.000    0.000    0.000    0.000 stream.py:1055(<listcomp>)
        3    0.000    0.000    0.000    0.000 fields.py:803(inverse_of_unit)
        4    0.000    0.000    0.000    0.000 pushout.py:1265(__init__)
       13    0.000    0.000    0.000    0.000 global_options.py:1515(_match_option)
        5    0.000    0.000    0.000    0.000 non_negative_integers.py:172(__iter__)
       28    0.000    0.000    0.000    0.000 {method 'nonzero_positions' of 'sage.rings.polynomial.polydict.ETuple' objects}
        4    0.000    0.000    0.000    0.000 infinite_polynomial_ring.py:1311(is_integral_domain)
        6    0.000    0.000    0.000    0.000 category.py:3044(<genexpr>)
        9    0.000    0.000    0.000    0.000 stream.py:2549(__getitem__)
       42    0.000    0.000    0.000    0.000 matrix_space.py:2088(is_sparse)
        1    0.000    0.000    0.000    0.000 stream.py:2197(is_uninitialized)
       28    0.000    0.000    0.000    0.000 stream.py:242(is_uninitialized)
        6    0.000    0.000    0.000    0.000 multi_polynomial_ring.py:948(is_field)
       20    0.000    0.000    0.000    0.000 stream.py:2078(<genexpr>)
        8    0.000    0.000    0.000    0.000 stream.py:2442(input_streams)
       28    0.000    0.000    0.000    0.000 {method 'fraction_field' of 'sage.rings.ring.Field' objects}
       18    0.000    0.000    0.000    0.000 category.py:1807(or_subcategory)
       12    0.000    0.000    0.000    0.000 pushout.py:4443(<genexpr>)
        1    0.000    0.000    0.000    0.000 free_module.py:1118(zero)
       14    0.000    0.000    0.000    0.000 sets_cat.py:1895(is_finite)
        1    0.000    0.000    0.000    0.000 stream.py:1586(input_streams)
       10    0.000    0.000    0.000    0.000 {method 'pop' of 'list' objects}
       11    0.000    0.000    0.000    0.000 integral_domains.py:100(is_integral_domain)
        7    0.000    0.000    0.000    0.000 multi_polynomial_sequence.py:447(ring)
        7    0.000    0.000    0.000    0.000 sequence.py:699(universe)
       14    0.000    0.000    0.000    0.000 {method 'extend' of 'list' objects}
       11    0.000    0.000    0.000    0.000 fraction_field.py:423(is_field)
       10    0.000    0.000    0.000    0.000 {method 'nrows' of 'sage.matrix.matrix0.Matrix' objects}
        6    0.000    0.000    0.000    0.000 infinite_polynomial_ring.py:1131(is_field)
        2    0.000    0.000    0.000    0.000 pushout.py:4430(<listcomp>)
        2    0.000    0.000    0.000    0.000 unique_factorization_domains.py:64(__contains__)
        3    0.000    0.000    0.000    0.000 lazy_series.py:5964(<genexpr>)
        6    0.000    0.000    0.000    0.000 multi_polynomial_ring.py:945(is_integral_domain)
        6    0.000    0.000    0.000    0.000 {method 'is_prime_field' of 'sage.rings.ring.Ring' objects}
        9    0.000    0.000    0.000    0.000 {method 'values' of 'dict' objects}
        3    0.000    0.000    0.000    0.000 {method 'is_field' of 'sage.rings.integer_ring.IntegerRing_class' objects}
        6    0.000    0.000    0.000    0.000 free_module.py:998(is_sparse)
        2    0.000    0.000    0.000    0.000 pushout.py:4431(<listcomp>)
        3    0.000    0.000    0.000    0.000 free_module.py:3308(rank)
        2    0.000    0.000    0.000    0.000 polynomial_ring.py:555(_implementation_names_impl)
        4    0.000    0.000    0.000    0.000 sets_cat.py:1451(construction)
        1    0.000    0.000    0.000    0.000 stream.py:4958(initial)
        4    0.000    0.000    0.000    0.000 {method 'find' of 'str' objects}
        2    0.000    0.000    0.000    0.000 polynomial_ring.py:1295(is_field)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
        2    0.000    0.000    0.000    0.000 {method 'replace' of 'str' objects}
        1    0.000    0.000    0.000    0.000 {method 'set_immutable' of 'sage.structure.element.ModuleElementWithMutability' objects}
Reply all
Reply to author
Forward
0 new messages