schubmult 1.2.8__tar.gz → 1.2.10__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.2.8 → schubmult-1.2.10}/PKG-INFO +1 -1
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_yz/schubmult_yz.py +31 -12
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/PKG-INFO +1 -1
- {schubmult-1.2.8 → schubmult-1.2.10}/setup.py +1 -1
- {schubmult-1.2.8 → schubmult-1.2.10}/LICENSE +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/README.md +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/__init__.py +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/perm_lib.py +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_double/__init__.py +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_double/__main__.py +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_double/schubmult_double.py +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_py/__init__.py +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_py/__main__.py +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_py/schubmult_py.py +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_yz/__init__.py +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_yz/__main__.py +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/SOURCES.txt +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/dependency_links.txt +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/entry_points.txt +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/requires.txt +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/top_level.txt +0 -0
- {schubmult-1.2.8 → schubmult-1.2.10}/setup.cfg +0 -0
@@ -736,12 +736,12 @@ def is_hook(cd):
|
|
736
736
|
return True
|
737
737
|
return False
|
738
738
|
|
739
|
-
@cached(cache={}, key=lambda val, u2,v2,w2,var2=var2,var3=var3,msg=False: hashkey(u2,v2,w2,var2,var3,msg))
|
740
|
-
def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False):
|
739
|
+
@cached(cache={}, key=lambda val, u2,v2,w2,var2=var2,var3=var3,msg=False,do_pos_neg=True: hashkey(u2,v2,w2,var2,var3,msg,do_pos_neg))
|
740
|
+
def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False,do_pos_neg=True):
|
741
741
|
if inv(u2)+inv(v2) - inv(w2)<=1:
|
742
742
|
return expand(val)
|
743
743
|
cdv = code(v2)
|
744
|
-
if set(cdv) == set([0,1]):
|
744
|
+
if set(cdv) == set([0,1]) and do_pos_neg:
|
745
745
|
return val
|
746
746
|
#if is_hook(cdv):
|
747
747
|
# print(f"Could've {cdv}")
|
@@ -975,9 +975,9 @@ def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False):
|
|
975
975
|
if len(v3)<=3:
|
976
976
|
v3 += [4]
|
977
977
|
v3[2], v3[3] = v3[3], v3[2]
|
978
|
-
coeff = permy(posify(schubmult_one((1,3,2),tuple(permtrim([*v3]))).get((2,4,3,1),0),(1,3,2),tuple(permtrim([*v3])),(2,4,3,1),var2,var3,msg),2)
|
978
|
+
coeff = permy(posify(schubmult_one((1,3,2),tuple(permtrim([*v3])),var2,var3).get((2,4,3,1),0),(1,3,2),tuple(permtrim([*v3])),(2,4,3,1),var2,var3,msg,do_pos_neg),2)
|
979
979
|
else:
|
980
|
-
coeff = permy(schubmult_one((1,3,2),tuple(permtrim([*v3]))).get((2,4,1,3),0),2)
|
980
|
+
coeff = permy(schubmult_one((1,3,2),tuple(permtrim([*v3])),var2,var3).get((2,4,1,3),0),2)
|
981
981
|
tomul = sympify(coeff)
|
982
982
|
toadd = 1
|
983
983
|
for i in range(len(L[0])):
|
@@ -1038,7 +1038,7 @@ def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False):
|
|
1038
1038
|
for new_w in coeff_dict:
|
1039
1039
|
tomul = coeff_dict[new_w]
|
1040
1040
|
newval = schubmult_one(new_w,tuple(permtrim(uncode(newc))),var2,var3).get(tuple(permtrim([*w])),0)
|
1041
|
-
newval = posify(newval,new_w,tuple(permtrim(uncode(newc))),w,var2,var3,msg)
|
1041
|
+
newval = posify(newval,new_w,tuple(permtrim(uncode(newc))),w,var2,var3,msg,do_pos_neg)
|
1042
1042
|
val += tomul*shiftsubz(newval)
|
1043
1043
|
elif c01[0] == c02[0] and c01[0] != 0:
|
1044
1044
|
varl = c01[0]
|
@@ -1046,7 +1046,7 @@ def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False):
|
|
1046
1046
|
w3 = uncode([0] + c02[1:])
|
1047
1047
|
val = 0
|
1048
1048
|
val = schubmult_one(tuple(permtrim(u3)),tuple(permtrim([*v])),var2,var3).get(tuple(permtrim(w3)),0)
|
1049
|
-
val = posify(val,tuple(permtrim(u3)),tuple(permtrim([*v])),tuple(permtrim(w3)),var2,var3,msg)
|
1049
|
+
val = posify(val,tuple(permtrim(u3)),tuple(permtrim([*v])),tuple(permtrim(w3)),var2,var3,msg,do_pos_neg)
|
1050
1050
|
for i in range(varl):
|
1051
1051
|
val = permy(val,i+1)
|
1052
1052
|
elif c1[0] == c2[0]:
|
@@ -1062,10 +1062,10 @@ def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False):
|
|
1062
1062
|
tomul*=var2[1] - var3[arr[i]]
|
1063
1063
|
|
1064
1064
|
val2 = schubmult_one(tuple(permtrim(u3)),tuple(permtrim(v3)),var2,var3).get(tuple(permtrim(w3)),0)
|
1065
|
-
val2 = posify(val2,u3,tuple(permtrim(v3)),w3,var2,var3,msg)
|
1065
|
+
val2 = posify(val2,u3,tuple(permtrim(v3)),w3,var2,var3,msg,do_pos_neg)
|
1066
1066
|
val += tomul*shiftsub(val2)
|
1067
1067
|
else:
|
1068
|
-
val2 = compute_positive_rep(val,var2,var3,msg)
|
1068
|
+
val2 = compute_positive_rep(val,var2,var3,msg,do_pos_neg)
|
1069
1069
|
if val2 is not None:
|
1070
1070
|
val = val2
|
1071
1071
|
return val
|
@@ -1187,7 +1187,25 @@ def main():
|
|
1187
1187
|
cd = code(mperm)
|
1188
1188
|
perms[0] = mperm
|
1189
1189
|
pos = perms[1]
|
1190
|
+
pos2 = []
|
1191
|
+
last_descent = -1
|
1192
|
+
poso = []
|
1193
|
+
for i in range(len(perms[0])-1):
|
1194
|
+
if perms[0][i]>perms[0][i+1]:
|
1195
|
+
last_descent = i+1
|
1196
|
+
for i in range(1,last_descent+1):
|
1197
|
+
if i not in pos:
|
1198
|
+
pos2 += [i-1]
|
1199
|
+
else:
|
1200
|
+
poso += [i-1]
|
1201
|
+
|
1202
|
+
mu_W = uncode(theta(inverse(perms[0])))
|
1203
|
+
|
1204
|
+
the_top_perm = tuple(permtrim(mulperm(list(perms[0]),mu_W)))
|
1190
1205
|
|
1206
|
+
muA = uncode(mu_A(code(mu_W),poso))
|
1207
|
+
muB = uncode(mu_A(code(mu_W),pos2))
|
1208
|
+
#print(f"{code(mu_W)=},{pos=},{poso=} {pos2=},{p_trans(code(mu_W))=},{p_trans(code(muA))=},{p_trans(code(muB))=},{code(muA)=},{code(muB)=}")
|
1191
1209
|
while cd[-1] == 0:
|
1192
1210
|
cd.pop()
|
1193
1211
|
k = len(pos)
|
@@ -1253,10 +1271,11 @@ def main():
|
|
1253
1271
|
|
1254
1272
|
if val != 0:
|
1255
1273
|
if display_positive:
|
1256
|
-
if
|
1257
|
-
val2 =
|
1274
|
+
if val != 0:
|
1275
|
+
val2 = posify(val,tuple(permtrim(mulperm(firstperm,muA))),tuple(permtrim(mulperm(secondperm,muB))),the_top_perm,tuple(var2neg.tolist()),tuple(var3neg.tolist()),msg,False)
|
1258
1276
|
if expand(val - val2) != 0:
|
1259
|
-
print(f"error; write to schubmult@gmail.com with the case {perms=}
|
1277
|
+
print(f"error; write to schubmult@gmail.com with the case {perms=}\n{code(firstperm)=} {code(secondperm)=}\n{val2=}\n{val=}")
|
1278
|
+
print(f"{code(tuple(permtrim(mulperm(firstperm,muA))))=},{code(tuple(permtrim(mulperm(secondperm,muB))))=},{code(the_top_perm)=}\n{expand(val-val2)=}")
|
1260
1279
|
exit(1)
|
1261
1280
|
val = val2
|
1262
1281
|
else:
|
@@ -6,7 +6,7 @@ long_description = (this_directory / "README.md").read_text()
|
|
6
6
|
|
7
7
|
setup(
|
8
8
|
name="schubmult",
|
9
|
-
version="1.2.
|
9
|
+
version="1.2.10",
|
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
|