schubmult 1.4.1__tar.gz → 1.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {schubmult-1.4.1 → schubmult-1.4.2}/PKG-INFO +1 -1
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/perm_lib.py +16 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_q_yz/schubmult_q_yz.py +1 -1
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_yz/schubmult_yz.py +49 -49
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult.egg-info/PKG-INFO +1 -1
- {schubmult-1.4.1 → schubmult-1.4.2}/setup.py +1 -1
- {schubmult-1.4.1 → schubmult-1.4.2}/LICENSE +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/README.md +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/__init__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_double/__init__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_double/__main__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_double/schubmult_double.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_py/__init__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_py/__main__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_py/schubmult_py.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_q/__init__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_q/__main__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_q/schubmult_q.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_q_double/__init__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_q_double/__main__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_q_double/schubmult_q_double.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_q_yz/__init__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_q_yz/__main__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_yz/__init__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult/schubmult_yz/__main__.py +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult.egg-info/SOURCES.txt +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult.egg-info/dependency_links.txt +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult.egg-info/entry_points.txt +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult.egg-info/requires.txt +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/schubmult.egg-info/top_level.txt +0 -0
- {schubmult-1.4.1 → schubmult-1.4.2}/setup.cfg +0 -0
@@ -307,6 +307,22 @@ def reduce_q_coeff(u, v, w, qv):
|
|
307
307
|
if i>=len(w)-1 or w[i]<w[i+1]:
|
308
308
|
qv_ret[i] -= 1
|
309
309
|
return tuple(permtrim(ret_u)), v, tuple(permtrim(ret_w)), qv_ret, True
|
310
|
+
elif i<len(u)-1 and u[i]>u[i+1] and (i>=len(v)-1 or v[i]<v[i+1]) and sg(i,w)==1 and omega(i+1,qv) == 0:
|
311
|
+
ret_u = [*u]
|
312
|
+
ret_u[i], ret_u[i+1] = ret_u[i+1], ret_u[i]
|
313
|
+
ret_w = [*w] + [j+1 for j in range(len(w),i+2)]
|
314
|
+
ret_w[i], ret_w[i+1] = ret_w[i+1], ret_w[i]
|
315
|
+
qv_ret = [*qv]
|
316
|
+
#print("Blop u")
|
317
|
+
return tuple(permtrim(ret_u)), v, tuple(permtrim(ret_w)), qv_ret, True
|
318
|
+
elif i<len(v)-1 and v[i]>v[i+1] and (i>=len(u)-1 or u[i]<u[i+1]) and sg(i,w) == 1 and omega(i+1,qv) == 0:
|
319
|
+
ret_v = [*v]
|
320
|
+
ret_v[i], ret_v[i+1] = ret_v[i+1], ret_v[i]
|
321
|
+
ret_w = [*w] + [j+1 for j in range(len(w),i+2)]
|
322
|
+
ret_w[i], ret_w[i+1] = ret_w[i+1], ret_w[i]
|
323
|
+
qv_ret = qv
|
324
|
+
#print("Blop v")
|
325
|
+
return u, tuple(permtrim(ret_v)), tuple(permtrim(ret_w)), qv_ret, True
|
310
326
|
return u, v, w, qv, False
|
311
327
|
|
312
328
|
# perms and inversion diff
|
@@ -524,7 +524,7 @@ def main():
|
|
524
524
|
q_part2 = np.prod([q_var[i+1]**qv[i] for i in range(len(qv))])
|
525
525
|
if q_part2 == 1:
|
526
526
|
#if q_part != q_part2:
|
527
|
-
# print("Posified q part")
|
527
|
+
# print(f"Posified q part {q_part} {q_dict[q_part]=}")
|
528
528
|
val2 += q_part*posify(q_dict[q_part],u2,v2,w2,var2_t,var3_t,msg,False)
|
529
529
|
else:
|
530
530
|
val2 += q_part*compute_positive_rep(q_dict[q_part],var2_t,var3_t,msg,False)
|
@@ -1315,55 +1315,55 @@ def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False,do_pos_neg=True,sign_only=
|
|
1315
1315
|
val2 = schubmult_one(tuple(permtrim(u3)),tuple(permtrim(v3)),var2,var3).get(tuple(permtrim(w3)),0)
|
1316
1316
|
val2 = posify(val2,u3,tuple(permtrim(v3)),w3,var2,var3,msg,do_pos_neg)
|
1317
1317
|
val += tomul*shiftsub(val2)
|
1318
|
-
elif inv(w)-inv(u)==2 and len(trimcode(u)) == len(trimcode(w)):
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1328
|
-
|
1329
|
-
|
1330
|
-
|
1331
|
-
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
1353
|
-
|
1354
|
-
|
1355
|
-
|
1356
|
-
|
1357
|
-
|
1358
|
-
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1318
|
+
#elif inv(w)-inv(u)==2 and len(trimcode(u)) == len(trimcode(w)):
|
1319
|
+
# indices = []
|
1320
|
+
# for i in range(len(w)):
|
1321
|
+
# if i>=len(u) or u[i]!=w[i]:
|
1322
|
+
# indices += [i+1]
|
1323
|
+
# arr = [[[],v]]
|
1324
|
+
# d = -1
|
1325
|
+
# for i in range(len(v)-1):
|
1326
|
+
# if v[i]>v[i+1]:
|
1327
|
+
# d = i + 1
|
1328
|
+
# for i in range(d):
|
1329
|
+
# arr2 = []
|
1330
|
+
#
|
1331
|
+
# if i+1 in indices:
|
1332
|
+
# continue
|
1333
|
+
# i2 = 1
|
1334
|
+
# i2 += len([aa for aa in indices if i+1>aa])
|
1335
|
+
# for vr, v2 in arr:
|
1336
|
+
# dpret = pull_out_var(i2,[*v2])
|
1337
|
+
# for v3r, v3 in dpret:
|
1338
|
+
# arr2 += [[vr + [(v3r,i+1)],v3]]
|
1339
|
+
# arr = arr2
|
1340
|
+
# val = 0
|
1341
|
+
#
|
1342
|
+
# for L in arr:
|
1343
|
+
# v3 = [*L[-1]]
|
1344
|
+
# tomul = 1
|
1345
|
+
# toadd = 1
|
1346
|
+
# for i in range(len(L[0])):
|
1347
|
+
# var_index = L[0][i][1]
|
1348
|
+
# oaf = L[0][i][0]
|
1349
|
+
# if var_index-1>=len(w):
|
1350
|
+
# yv = var_index
|
1351
|
+
# else:
|
1352
|
+
# yv = w[var_index-1]
|
1353
|
+
# for j in range(len(oaf)):
|
1354
|
+
# toadd*= var2[yv] - var3[oaf[j]]
|
1355
|
+
# pooly = skew_div_diff(u,w,schubpoly(v3,[0,*[var2[a] for a in indices]],var3))
|
1356
|
+
# if toadd == 0:
|
1357
|
+
# continue
|
1358
|
+
# if pooly !=0:
|
1359
|
+
# coeff = compute_positive_rep(pooly,var2,var3,msg,False)
|
1360
|
+
# else:
|
1361
|
+
# coeff = 0
|
1362
|
+
# if coeff == -1:
|
1363
|
+
# return -1
|
1364
|
+
# tomul = sympify(coeff)
|
1365
|
+
# toadd*=tomul#.subs(subs_dict3)
|
1366
|
+
# val += toadd
|
1367
1367
|
else:
|
1368
1368
|
if not sign_only:
|
1369
1369
|
if inv(u)+inv(v)-inv(w)==1:
|
@@ -6,7 +6,7 @@ long_description = (this_directory / "README.md").read_text()
|
|
6
6
|
|
7
7
|
setup(
|
8
8
|
name="schubmult",
|
9
|
-
version="1.4.
|
9
|
+
version="1.4.2",
|
10
10
|
description="Computing Littlewood-Richardson coefficients of Schubert polynomials",
|
11
11
|
long_description=long_description,
|
12
12
|
long_description_content_type='text/markdown',
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|