Skip to content

Commit 06c2217

Browse files
committed
some little changes in polynomials (ruff PERF)
1 parent 439065e commit 06c2217

File tree

11 files changed

+36
-64
lines changed

11 files changed

+36
-64
lines changed

src/sage/rings/polynomial/binary_form_reduce.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,7 @@ def covariant_z0(F, z0_cov=False, prec=53, emb=None, error_limit=0.000001):
202202
for p, e in L1:
203203
if e >= d / 2:
204204
raise ValueError('cannot have a root with multiplicity >= %s/2' % d)
205-
for _ in range(e):
206-
L.append(p)
205+
L.extend(p for _ in range(e))
207206
RCF = PolynomialRing(CF, 'u,t')
208207
a = RCF.zero()
209208
c = RCF.zero()

src/sage/rings/polynomial/complex_roots.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,7 @@ def complex_roots(p, skip_squarefree=False, retval='interval', min_prec=0):
290290
break
291291
if retval != 'interval':
292292
factor = QQbar.common_polynomial(factor)
293-
for irt in irts:
294-
all_rts.append((irt, factor, exp))
293+
all_rts.extend((irt, factor, exp) for irt in irts)
295294

296295
if ok and intervals_disjoint([rt for (rt, fac, mult) in all_rts]):
297296
all_rts = sort_complex_numbers_for_display(all_rts)

src/sage/rings/polynomial/groebner_fan.py

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -643,11 +643,7 @@ def verts_for_normal(normal, poly):
643643
expmat = matrix(exps)
644644
vals = expmat * vector(QQ, normal)
645645
maxval = max(vals)
646-
outverts = []
647-
for i in range(len(exps)):
648-
if vals[i] == maxval:
649-
outverts.append(exps[i])
650-
return outverts
646+
return [exps[i] for i in range(len(exps)) if vals[i] == maxval]
651647

652648

653649
class TropicalPrevariety(PolyhedralFan):
@@ -1316,16 +1312,13 @@ def render(self, file=None, larger=False, shift=0, rgbcolor=(0, 0, 0),
13161312
xs = x.split(' ')
13171313
y = []
13181314
if x[0:3] != '2 3' and len(xs) > 1:
1319-
for q in xs:
1320-
if q != '':
1321-
y.append(q)
1315+
y.extend(q for q in xs if q)
13221316
sp2.append(y)
13231317
sp3 = []
13241318
for j in range(len(sp2)):
1325-
temp = []
1326-
for i in range(0, len(sp2[j]) - 1, 2):
1327-
temp.append([float(sp2[j][i]) / 1200.0,
1328-
float(sp2[j][i + 1]) / 1200.0])
1319+
temp = [[float(sp2[j][i]) / 1200.0,
1320+
float(sp2[j][i + 1]) / 1200.0]
1321+
for i in range(0, len(sp2[j]) - 1, 2)]
13291322
sp3.append(temp)
13301323
r_lines = Graphics()
13311324
for x in sp3:
@@ -1370,10 +1363,7 @@ def _cone_to_ieq(self, facet_list):
13701363
sage: gf._cone_to_ieq([[1,2,3,4]])
13711364
[[0, 1, 2, 3, 4]]
13721365
"""
1373-
ieq_list = []
1374-
for q in facet_list:
1375-
ieq_list.append([0] + q)
1376-
return ieq_list
1366+
return [[0] + q for q in facet_list]
13771367

13781368
def _embed_tetra(self, fpoint):
13791369
"""
@@ -1505,8 +1495,7 @@ def render3d(self, verbose=False):
15051495
except Exception:
15061496
print(cone_data._rays)
15071497
raise RuntimeError
1508-
for a_line in cone_lines:
1509-
all_lines.append(a_line)
1498+
all_lines.extend(a_line for a_line in cone_lines)
15101499
return sum([line3d(a_line) for a_line in all_lines])
15111500

15121501
def _gfan_stats(self):

src/sage/rings/polynomial/multi_polynomial_ideal.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -605,9 +605,8 @@ def _groebner_cover(self):
605605
from sage.libs.singular.function import lib, singular_function
606606
lib("grobcov.lib")
607607
grobcov = singular_function("grobcov")
608-
polynomials = []
609-
for f in self.gens():
610-
polynomials.append(f * lcm([c.denominator() for c in f.coefficients()]))
608+
polynomials = [f * lcm([c.denominator() for c in f.coefficients()])
609+
for f in self.gens()]
611610
return grobcov(self.ring().ideal(polynomials))
612611

613612

@@ -2853,10 +2852,8 @@ def _variety(T, V, v=None):
28532852
from sage.misc.converting_dict import KeyConvertingDict
28542853
V = []
28552854
for t in T:
2856-
Vbar = _variety([P(f) for f in t], [])
2857-
2858-
for v in Vbar:
2859-
V.append(KeyConvertingDict(P, v))
2855+
V.extend(KeyConvertingDict(P, v)
2856+
for v in _variety([P(f) for f in t], []))
28602857
return V
28612858

28622859
@require_field
@@ -5586,8 +5583,8 @@ def weil_restriction(self):
55865583
map_ideal = [a]
55875584

55885585
variables = iter(intermediate_ring.gens()[1:])
5589-
for _ in range(nvars):
5590-
map_ideal.append(sum([a**i * next(variables) for i in range(r)]))
5586+
map_ideal.extend(sum([a**i * next(variables) for i in range(r)])
5587+
for _ in range(nvars))
55915588

55925589
myminpoly = myminpoly(*map_ideal)
55935590
l = [f(*map_ideal).reduce([myminpoly]) for f in l]

src/sage/rings/polynomial/pbori/blocks.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,7 @@ def __init__(self, var_names, size_per_variable, start_index=0,
5757

5858
if reverse:
5959
indices = reversed(indices)
60-
names = []
61-
for i in indices:
62-
for n in var_names:
63-
names.append(n + "(" + str(i) + ")")
60+
names = [f"{n}({str(i)})" for i in indices for n in var_names]
6461
self.indices = indices
6562
self.index2pos = {v: k for k, v in enumerate(indices)}
6663
self.names = names

src/sage/rings/polynomial/pbori/cnf.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -144,18 +144,14 @@ def dimacs_encode_polynomial(self, p):
144144
TESTS::
145145
146146
sage: from sage.rings.polynomial.pbori import *
147-
sage: d=dict()
147+
sage: d = {}
148148
sage: r = declare_ring(["x", "y", "z"], d)
149149
sage: from sage.rings.polynomial.pbori.cnf import CNFEncoder
150150
sage: e = CNFEncoder(r)
151151
sage: sorted(e.dimacs_encode_polynomial(d["x"]+d["y"]+d["z"]))
152152
['-1 -2 -3 0', '-1 2 3 0', '1 -2 3 0', '1 2 -3 0']
153153
"""
154-
clauses = self.clauses(p)
155-
res = []
156-
for c in clauses:
157-
res.append(self.dimacs_encode_clause(c))
158-
return res
154+
return [self.dimacs_encode_clause(c) for c in self.clauses(p)]
159155

160156
def dimacs_cnf(self, polynomial_system):
161157
r"""
@@ -174,13 +170,12 @@ def dimacs_cnf(self, polynomial_system):
174170
'c cnf generated by PolyBoRi\np cnf 3 3\n-1 -2 -3 0\n1 -2 0\n-1 2 0'
175171
"""
176172
clauses_list = [c for p in polynomial_system for c in self.
177-
dimacs_encode_polynomial(p)]
173+
dimacs_encode_polynomial(p)]
178174
res = ["c cnf generated by PolyBoRi"]
179175
r = polynomial_system[0].ring()
180176
n_variables = r.n_variables()
181177
res.append("p cnf %s %s" % (n_variables, len(clauses_list)))
182-
for c in clauses_list:
183-
res.append(c)
178+
res.extend(clauses_list)
184179
return "\n".join(res)
185180

186181

@@ -239,6 +234,6 @@ def dimacs_cnf(self, polynomial_system):
239234
"""
240235
uv = list(used_vars_set(polynomial_system).variables())
241236
res = super().dimacs_cnf(polynomial_system)
242-
res = res + "\n" + "\n".join(["c v %s %s" % (self.to_dimacs_index(v),
243-
v) for v in uv])
237+
res += "\n" + "\n".join("c v %s %s" % (self.to_dimacs_index(v), v)
238+
for v in uv)
244239
return res

src/sage/rings/polynomial/pbori/easy_polynomials.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ def easy_linear_polynomials(p):
2020
res = []
2121
if p.deg() >= 2:
2222
if p.vars_as_monomial().deg() > 8:
23-
opp = p + 1
24-
for q in easy_linear_factors(opp):
25-
res.append(q + 1)
23+
res.extend(q + 1 for q in easy_linear_factors(p + 1))
2624
else:
2725
res = easy_linear_polynomials_via_interpolation(p)
2826
return res

src/sage/rings/polynomial/pbori/gbcore.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -488,14 +488,14 @@ def eliminate_identical_variables_pre(I, prot):
488488

489489
def my_sort_key(l):
490490
return l.navigation().value()
491+
491492
for (t, leads) in rules.items():
492493
if len(leads) > 1:
493494
changed = True
494495
leads = sorted(leads, key=my_sort_key, reverse=True)
495496
chosen = leads[0]
496-
for v in leads[1:]:
497-
ll_system.append(chosen + v)
498-
if len(ll_system) > 0:
497+
ll_system.extend(chosen + v for v in leads[1:])
498+
if ll_system:
499499
ll_encoded = ll_encode(ll_system, reduce=True)
500500
I = set(ll_red_nf_redsb(p, ll_encoded) for p in I)
501501
return (I, ll_system)
@@ -592,15 +592,15 @@ def call_algorithm(I, max_generators=None):
592592

593593
if clean_and_restart_algorithm:
594594
for max_generators in [1000, 10000, 50000, 100000, 200000, 300000,
595-
400000, None]:
595+
400000, None]:
596596
try:
597597
return call_algorithm(I, max_generators=max_generators)
598598
except GeneratorLimitExceeded as e:
599599
I = list(e.strat.all_generators())
600600
del e.strat
601601
if prot:
602602
print("generator limit exceeded:", max_generators,
603-
"restarting algorithm")
603+
"restarting algorithm")
604604
else:
605605
return call_algorithm(I)
606606

src/sage/rings/polynomial/pbori/randompoly.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,8 @@ def sparse_random_system(ring, number_of_polynomials, variables_per_polynomial,
6767
if random_seed is not None:
6868
set_random_seed(random_seed)
6969
random_generator = Random(random_seed)
70-
solutions = []
7170
variables = [ring.variable(i) for i in range(ring.n_variables())]
72-
for v in variables:
73-
solutions.append(v + random_generator.randint(0, 1))
71+
solutions = [v + random_generator.randint(0, 1) for v in variables]
7472
solutions = ll_encode(solutions)
7573
res = []
7674
while len(res) < number_of_polynomials:

src/sage/rings/polynomial/polynomial_quotient_ring.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,11 +1362,12 @@ def _S_decomposition(self, S):
13621362
if not seen_before:
13631363
S_abs = []
13641364
for p in S:
1365-
abs_gens = []
1366-
for g in D.ideal(p.gens()).gens(): # this line looks a bit silly, due to inconsistency over QQ - see # 7596
1367-
abs_gens.append(D_abs.structure()[1](g))
1368-
S_abs += [pp for pp,_ in D_abs.ideal(abs_gens).factor()]
1369-
iso_classes.append((D_abs,S_abs))
1365+
# next line looks a bit silly,
1366+
# due to inconsistency over QQ - see # 7596
1367+
abs_gens = [D_abs.structure()[1](g)
1368+
for g in D.ideal(p.gens()).gens()]
1369+
S_abs += [pp for pp, _ in D_abs.ideal(abs_gens).factor()]
1370+
iso_classes.append((D_abs, S_abs))
13701371
isos.append((D_abs.embeddings(D_abs)[0], j))
13711372
return fields, isos, iso_classes
13721373

0 commit comments

Comments
 (0)