passagemath-singular 10.6.30__cp313-cp313-musllinux_1_2_aarch64.whl → 10.6.31rc2__cp313-cp313-musllinux_1_2_aarch64.whl

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.

Potentially problematic release.


This version of passagemath-singular might be problematic. Click here for more details.

Files changed (73) hide show
  1. PySingular.cpython-313-aarch64-linux-musl.so +0 -0
  2. {passagemath_singular-10.6.30.dist-info → passagemath_singular-10.6.31rc2.dist-info}/METADATA +7 -7
  3. {passagemath_singular-10.6.30.dist-info → passagemath_singular-10.6.31rc2.dist-info}/RECORD +70 -68
  4. passagemath_singular.libs/{libSingular-4-d894d219.4.1.so → libSingular-4-dfbeac15.4.1.so} +0 -0
  5. passagemath_singular.libs/libfactory-4-6907d06f.4.1.so +0 -0
  6. passagemath_singular.libs/libntl-d58d2536.so.44.0.1 +0 -0
  7. passagemath_singular.libs/{libomalloc-0-7768d27e.9.6.so → libomalloc-0-c68af0d6.9.6.so} +0 -0
  8. passagemath_singular.libs/{libpolys-4-2dcf33c7.4.1.so → libpolys-4-f587aa49.4.1.so} +0 -0
  9. passagemath_singular.libs/libreadline-3f6fb6b3.so.8.2 +0 -0
  10. passagemath_singular.libs/{libsingular_resources-4-21ad9234.4.1.so → libsingular_resources-4-c24151f0.4.1.so} +0 -0
  11. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-313-aarch64-linux-musl.so +0 -0
  12. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-313-aarch64-linux-musl.so +0 -0
  13. sage/algebras/fusion_rings/poly_tup_engine.cpython-313-aarch64-linux-musl.so +0 -0
  14. sage/algebras/fusion_rings/shm_managers.cpython-313-aarch64-linux-musl.so +0 -0
  15. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-313-aarch64-linux-musl.so +0 -0
  16. sage/algebras/letterplace/free_algebra_letterplace.cpython-313-aarch64-linux-musl.so +0 -0
  17. sage/algebras/letterplace/letterplace_ideal.cpython-313-aarch64-linux-musl.so +0 -0
  18. sage/algebras/quatalg/quaternion_algebra_cython.cpython-313-aarch64-linux-musl.so +0 -0
  19. sage/algebras/quatalg/quaternion_algebra_element.cpython-313-aarch64-linux-musl.so +0 -0
  20. sage/libs/singular/decl.pxd +1 -1
  21. sage/libs/singular/function.cpython-313-aarch64-linux-musl.so +0 -0
  22. sage/libs/singular/groebner_strategy.cpython-313-aarch64-linux-musl.so +0 -0
  23. sage/libs/singular/option.cpython-313-aarch64-linux-musl.so +0 -0
  24. sage/libs/singular/polynomial.cpython-313-aarch64-linux-musl.so +0 -0
  25. sage/libs/singular/ring.cpython-313-aarch64-linux-musl.so +0 -0
  26. sage/libs/singular/singular.cpython-313-aarch64-linux-musl.so +0 -0
  27. sage/matrix/matrix_mpolynomial_dense.cpython-313-aarch64-linux-musl.so +0 -0
  28. sage/rings/function_field/element_polymod.cpython-313-aarch64-linux-musl.so +0 -0
  29. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-313-aarch64-linux-musl.so +0 -0
  30. sage/rings/polynomial/multi_polynomial_libsingular.cpython-313-aarch64-linux-musl.so +0 -0
  31. sage/rings/polynomial/plural.cpython-313-aarch64-linux-musl.so +0 -0
  32. sage/symbolic/expression.cpython-313-aarch64-linux-musl.so +0 -0
  33. sage/symbolic/expression.pyx +1 -1
  34. sage_wheels/bin/ESingular +0 -0
  35. sage_wheels/bin/Singular +0 -0
  36. sage_wheels/bin/TSingular +0 -0
  37. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  38. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  39. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  40. sage_wheels/lib/singular/MOD/interval.so +0 -0
  41. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  42. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  43. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  44. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  45. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  46. sage_wheels/share/info/singular.info +8119 -3332
  47. sage_wheels/share/singular/LIB/assprimeszerodim.lib +21 -35
  48. sage_wheels/share/singular/LIB/gmspoly.lib +2 -2
  49. sage_wheels/share/singular/LIB/homolog.lib +41 -3
  50. sage_wheels/share/singular/LIB/modprimdec.lib +22 -2
  51. sage_wheels/share/singular/LIB/modstd.lib +1 -2
  52. sage_wheels/share/singular/LIB/modular.lib +124 -17
  53. sage_wheels/share/singular/LIB/modules.lib +15 -7
  54. sage_wheels/share/singular/LIB/ncpreim.lib +2 -2
  55. sage_wheels/share/singular/LIB/normal.lib +6 -6
  56. sage_wheels/share/singular/LIB/normaliz.lib +101 -15
  57. sage_wheels/share/singular/LIB/parallel.lib +28 -14
  58. sage_wheels/share/singular/LIB/primdec.lib +51 -68
  59. sage_wheels/share/singular/LIB/primdecint.lib +2 -2
  60. sage_wheels/share/singular/LIB/random.lib +2 -2
  61. sage_wheels/share/singular/LIB/resources.lib +7 -6
  62. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +228 -104
  63. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  64. sage_wheels/share/singular/LIB/sheafcoh.lib +2 -2
  65. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  66. sage_wheels/share/singular/LIB/triang.lib +20 -18
  67. sage_wheels/share/singular/emacs/hlp-cmpl.el +8 -0
  68. sage_wheels/share/singular/singular.idx +1160 -1144
  69. passagemath_singular.libs/libfactory-4-e322c0c6.4.1.so +0 -0
  70. passagemath_singular.libs/libntl-f4409ed7.so.44.0.1 +0 -0
  71. passagemath_singular.libs/libreadline-78057fb4.so.8.2 +0 -0
  72. {passagemath_singular-10.6.30.dist-info → passagemath_singular-10.6.31rc2.dist-info}/WHEEL +0 -0
  73. {passagemath_singular-10.6.30.dist-info → passagemath_singular-10.6.31rc2.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  //// Singular library normaliz.lib
2
- version="version normaliz.lib 4.3.1.0 June_2022 "; // $Id: e4de2ef9d38ebc698e86bc054dbee8a4456b5e70 $
2
+ version="version normaliz.lib 4.4.1.2 July_2025 "; // $Id: 92f0b75c305fabbb45fb0054da4108ddb8c9cb52 $
3
3
  category="Commutative Algebra";
4
4
  info="
5
5
  LIBRARY: normaliz.lib Provides an interface for the use of Normaliz 3.10.0 or
@@ -464,6 +464,41 @@ static proc getInt(string s, int p)
464
464
  return(i,p);
465
465
  }
466
466
 
467
+ static proc getBigInt(string s, int p)
468
+ {
469
+ string nst;
470
+ int j,en,sn;
471
+ bigint i;
472
+
473
+ for(;p<=size(s);p++)
474
+ {
475
+
476
+ if(digit(s[p]))
477
+ {
478
+ sn=p; break;
479
+ }
480
+ }
481
+ if(not(sn))
482
+ {
483
+ return(0,-1); // -1 indicates: no number found
484
+ }
485
+ p++;
486
+ for(;p<=size(s);p++)
487
+ {
488
+ if(!digit(s[p]))
489
+ {
490
+ en=p-1; break;
491
+ }
492
+ }
493
+ if(p>size(s))
494
+ {
495
+ en=size(s);
496
+ }
497
+ nst="i="+s[sn,en-sn+1];
498
+ execute(nst);
499
+ return(i,p);
500
+ }
501
+
467
502
 
468
503
  static proc getRational(string s, int p)
469
504
  {
@@ -982,6 +1017,7 @@ static proc runNormaliz(list #)
982
1017
  }
983
1018
 
984
1019
  Num_Invs=getNuminvs();
1020
+
985
1021
  int gens_computed = 0;
986
1022
  for( int i = 1; i <= size(Num_Invs); i = i+1){
987
1023
  if(Num_Invs[i][1] == "hilbert_basis_elements"){
@@ -1018,6 +1054,12 @@ RETURN: The function applies Normaliz to the matrix input_mat ofe type nmz_typ
1018
1054
  The function returns the intmat defined by the file ith suffix gen, provided it has been computed. Otherwise it returns the input_mat.
1019
1055
  NOTE: You will find procedures for many applications of Normaliz in this
1020
1056
  library, so the explicit call of this procedure may not be necessary.
1057
+
1058
+ The function reads the numerical invariants computed by normaliz. The integers among
1059
+ them are converted to the Singular type int. It may to bee too small for
1060
+ the Hilbert function or the multiplicity, especially if computed for a non-standard grading.
1061
+ To prevent a disaster set the predefined global variable BigNumInvs = 1. Returnung to
1062
+ BigNumInvs = 0 switches this feature off.
1021
1063
  SEE ALSO: intclToricRing, normalToricRing, ehrhartRing, intclMonIdeal,
1022
1064
  torusInvariants, diagInvariants, finiteDiagInvariants, intersectionValRings,
1023
1065
  intersectionValRingIdeals
@@ -1048,8 +1090,10 @@ static proc getNuminvs()
1048
1090
  string s;
1049
1091
  list num_invs;
1050
1092
  int p,sw,v_length,i,dummy_int;
1093
+ bigint DummyInt;
1051
1094
  intvec dummy_vec;
1052
1095
  string type_inv,name_inv,dummy_bool;
1096
+ int make_big_int;
1053
1097
 
1054
1098
  link in_f=":r "+ getNmzFile() + "."+"inv";
1055
1099
  s=read(in_f);
@@ -1072,23 +1116,46 @@ static proc getNuminvs()
1072
1116
  {
1073
1117
  name_inv="h_vector";
1074
1118
  }
1119
+ make_big_int = 0;
1120
+ if(name_inv == "hilbert_series_num" || name_inv == "hilbert_series_cyclo_num"){
1121
+ if(BigNumInvs){
1122
+ make_big_int = 1;
1123
+ }
1124
+ }
1125
+ if(defined(DummyMat)==voice){
1126
+ kill(DummyMat);
1127
+ }
1128
+ bigintmat DummyMat[1][v_length];
1075
1129
  if(name_inv!="hilbert_polynomial"
1076
1130
  && name_inv!="hilbert_quasipolynomial")
1077
1131
  {
1078
1132
  for(i=1;i<=v_length;i++)
1079
1133
  {
1080
- if(i==1)
1134
+ if(i==1 && !make_big_int)
1081
1135
  {
1082
- (dummy_int,p)=getInt(s,p);
1083
- dummy_vec=dummy_int;
1136
+ if(!make_big_int){
1137
+ (dummy_int,p)=getInt(s,p);
1138
+ dummy_vec=dummy_int;
1139
+ }
1084
1140
  }
1085
1141
  else
1086
1142
  {
1087
- (dummy_int,p)=getInt(s,p);
1088
- dummy_vec=dummy_vec,dummy_int;
1143
+ if(!make_big_int){
1144
+ (dummy_int,p)=getInt(s,p);
1145
+ dummy_vec=dummy_vec,dummy_int;
1146
+ }
1147
+ else{
1148
+ (DummyInt,p) = getBigInt(s,p);
1149
+ DummyMat[1,i] = DummyInt;
1150
+ }
1089
1151
  }
1090
1152
  }
1091
- num_invs=num_invs+list(list(name_inv,dummy_vec,"intvec"));
1153
+ if(!make_big_int){
1154
+ num_invs=num_invs+list(list(name_inv,dummy_vec,"intvec"));
1155
+ }
1156
+ else{
1157
+ num_invs=num_invs+list(list(name_inv,DummyMat,"bigintvec", v_length));
1158
+ }
1092
1159
  }
1093
1160
  else
1094
1161
  {
@@ -1100,8 +1167,14 @@ static proc getNuminvs()
1100
1167
  (sw,p)=nextWord(s,p);
1101
1168
  name_inv=s[sw..p-1];
1102
1169
  if (name_inv!="hilbert_quasipolynomial_denom") {
1103
- (dummy_int,p)=getInt(s,p);
1104
- num_invs=num_invs+list(list(name_inv,dummy_int,"int"));
1170
+ if(!BigNumInvs || (name_inv != "multiplicity" && name_inv != "multiplicity_num" && name_inv != "multiplicity_denom")){
1171
+ (dummy_int,p)=getInt(s,p);
1172
+ num_invs=num_invs+list(list(name_inv,dummy_int,"int"));
1173
+ }
1174
+ else {
1175
+ (DummyInt,p)=getBigInt(s,p);
1176
+ num_invs=num_invs+list(list(name_inv,dummy_int,"bigint"));
1177
+ }
1105
1178
  }
1106
1179
  }
1107
1180
  if(type_inv=="boolean")
@@ -1122,6 +1195,7 @@ static proc getNuminvs()
1122
1195
  return(num_invs);
1123
1196
  }
1124
1197
 
1198
+
1125
1199
  proc showNuminvs()
1126
1200
  "USAGE: showNuminvs();
1127
1201
  PURPOSE: prints the numerical invariants
@@ -1168,7 +1242,15 @@ EXAMPLE: example exportNuminvs; shows an example
1168
1242
  for(i=1;i<=size(Num_Invs);i++)
1169
1243
  {
1170
1244
  dummy=Num_Invs[i];
1171
- s=dummy[3]+" nmz_" + dummy[1] + "=dummy[2]; exportto(Top," + "nmz_" + dummy[1] + ");";
1245
+ if(dummy[3] != "bigintvec"){
1246
+ s=dummy[3]+" nmz_" + dummy[1] + "=dummy[2]; exportto(Top," + "nmz_" + dummy[1] + ");";
1247
+ }
1248
+ else{
1249
+ s = "bigintmat " + "nmz_" + dummy[1] + "[1][";
1250
+ s = s + string(dummy[4]) + "]";
1251
+ s = s + " = dummy[2]; exportto(Top," + "nmz_" + dummy[1] + ");";
1252
+ }
1253
+
1172
1254
  execute(s);
1173
1255
  }
1174
1256
  Exported_Num_Invs = Num_Invs;
@@ -1184,7 +1266,8 @@ example
1184
1266
  nmz_number_extreme_rays;
1185
1267
  nmz_rank;
1186
1268
  nmz_number_support_hyperplanes;
1187
- nmz_multiplicity;
1269
+ if (defined(nmz_multiplicity)) {nmz_multiplicity;}
1270
+ else {nmz_multiplicity_num;}
1188
1271
  nmz_primary;
1189
1272
  }
1190
1273
 
@@ -1592,7 +1675,7 @@ RETURN: The toric ring S is the subalgebra of the basering generated by the
1592
1675
  leading monomials of the elements of I (considered as a list of
1593
1676
  polynomials). The function computes the computes the definig binomial
1594
1677
  ideal J of S with respect to the generators and returns it, together with
1595
- J. See eample.
1678
+ J. DSee eample.
1596
1679
  NOTE: A mathematical remark: the toric ring depends on the list of
1597
1680
  monomials given, and not only on the ideal they generate!
1598
1681
  This function requires the previous setting of an NmzFilename.
@@ -2092,13 +2175,13 @@ static proc mod_init()
2092
2175
  // int GenGen=1; export GenGen; // indicates whether "gen" is generated // no longer used
2093
2176
  list Num_Invs; export Num_Invs;
2094
2177
  list Exported_Num_Invs; export Exported_Num_Invs;
2095
- // running normaliz (with options)
2096
2178
 
2179
+ // options for running normaliz
2180
+ //
2097
2181
  // component 1 is name of option
2098
2182
  // 2 is default value
2099
2183
  // 3 is command line option to be passed to Normaliz
2100
- // 4 indicates whether file "gen" is generated
2101
- // value 2 of 4 indicates "no influence"
2184
+ // 4 is a potential comment pointing to better use
2102
2185
 
2103
2186
  list nmz_options=
2104
2187
  list("supp",0,"-s"),
@@ -2137,4 +2220,7 @@ static proc mod_init()
2137
2220
  export nmz_options;
2138
2221
  list default_options = nmz_options;
2139
2222
  export default_options;
2223
+
2224
+ int BigNumInvs = 0;
2225
+ exportto(Top, BigNumInvs);
2140
2226
  }
@@ -1,5 +1,5 @@
1
1
  ////////////////////////////////////////////////////////////////////
2
- version="version parallel.lib 4.1.2.0 Feb_2019 "; // $Id: 8563f7dbb774bd733a709484252543895a896dd9 $
2
+ version="version parallel.lib 4.4.1.1 Feb_2025 "; // $Id: a5e93aee5a9d3333810fc57b6fd047fa89e9f5b9 $
3
3
  category="General purpose";
4
4
  info="
5
5
  LIBRARY: parallel.lib An abstraction layer for parallel skeletons
@@ -91,25 +91,39 @@ EXAMPLE: example parallelWaitN; shows an example"
91
91
  }
92
92
  }
93
93
 
94
- // compute the tasks
95
- for (i = 1; i <= njobs; i++) {
96
- task t(i) = commands[i], args[i];
94
+ list results;
95
+ if(system("cpu")<=1)
96
+ {
97
+ list tmp;
98
+ int tmp_s;
99
+ for(i=njobs;i>0;i--)
100
+ {
101
+ tmp=args[i];
102
+ tmp_s=size(tmp);
103
+ execute("results[i]="+commands[i]+"(tmp[1..tmp_s]);");
104
+ }
97
105
  }
98
- startTasks(t(1..njobs));
99
- list indices = waitTasks(list(t(1..njobs)), N, timeout);
106
+ else
107
+ {
108
+ // compute the tasks
109
+ for (i = 1; i <= njobs; i++) {
110
+ task t(i) = commands[i], args[i];
111
+ }
112
+ startTasks(t(1..njobs));
113
+ list indices = waitTasks(list(t(1..njobs)), N, timeout);
100
114
 
101
- // wrap back to saved semaphore
102
- if (ncores) {
115
+ // wrap back to saved semaphore
116
+ if (ncores) {
103
117
  Resources::resetcores_subtree(semaphore_save);
104
- }
118
+ }
105
119
 
106
- // return results
107
- list results;
108
- for (i = size(indices); i > 0; i--) {
120
+ // return results
121
+ for (i = size(indices); i > 0; i--) {
109
122
  results[indices[i]] = getResult(t(indices[i]));
110
- }
111
- for (i = 1; i <= njobs; i++) {
123
+ }
124
+ for (i = 1; i <= njobs; i++) {
112
125
  killTask(t(i));
126
+ }
113
127
  }
114
128
  return(results);
115
129
  }
@@ -1,5 +1,5 @@
1
1
  ////////////////////////////////////////////////////////////////////////////
2
- version="version primdec.lib 4.4.0.8 Dec_2024 "; // $Id: ef016f38b5efd97b3139c386d3370839f804cc42 $
2
+ version="version primdec.lib 4.4.1.0 Febv_2025 "; // $Id: 9c0e76a43c07747eb051110c4388a436dd9cd264 $
3
3
  category="Commutative Algebra";
4
4
  info="
5
5
  LIBRARY: primdec.lib Primary Decomposition and Radical of Ideals
@@ -55,7 +55,7 @@ PROCEDURES:
55
55
  gcdTest(I);
56
56
  zero_decomp(I,..); list of primary ideals and their radicals (I zero dimensional)
57
57
 
58
- SEE ALSO: primdecint_lib
58
+ SEE ALSO: primdecint_lib; modprimdec_lib
59
59
  KEYWORDS: primary decomposition
60
60
  ";
61
61
 
@@ -1279,14 +1279,11 @@ static proc zeroSp(ideal i)
1279
1279
 
1280
1280
  //i has to be a reduced groebner basis
1281
1281
  ASSUME(1, dim(i)==0);
1282
- if (hasQQCoefficient(basering) && (nvars(basering)*vdim(I)>300))
1282
+ if (hasQQCoefficient(basering)
1283
+ && (nvars(basering)*vdim(I)>300))
1283
1284
  {
1284
1285
  ideal F=modFinduni(i);
1285
1286
  }
1286
- else
1287
- {
1288
- ideal F=finduni(i);
1289
- }
1290
1287
  int j,k,l,ready;
1291
1288
  list fa;
1292
1289
  fa[1]=factorize(F[1],1);
@@ -1785,7 +1782,7 @@ EXAMPLE: example prepareQuotientring; shows an example
1785
1782
  }
1786
1783
  else
1787
1784
  {
1788
- if (typeof(rl[1]=="cring"))
1785
+ if (typeof(rl[1])=="cring")
1789
1786
  {
1790
1787
  cring p=rl[1];
1791
1788
  list rl2=rl[2];
@@ -2171,15 +2168,6 @@ static proc minAssPrimes_i(int patchPrimaryDecomposition, ideal i, list #)
2171
2168
  option( set,origOp );
2172
2169
  return( ideal(1) );
2173
2170
  }
2174
- //if (dim(i)>0)
2175
- //{
2176
- // if(fastIrred(i))
2177
- // {
2178
- // setring P0;
2179
- // option( set,origOp );
2180
- // return(list(fetch(P,i)));
2181
- // } // irreducible
2182
- //}
2183
2171
  if( (dim(i) == 0 ) && ( npars(P) == 0) )
2184
2172
  {
2185
2173
  int di = vdim(i);
@@ -3275,17 +3263,6 @@ EXAMPLE: example decomp_i; shows an example
3275
3263
  list fett;
3276
3264
  int lauf,di,newtest;
3277
3265
  //------------------------------------------------------------------
3278
- if(!abspri)
3279
- {
3280
- if((@wr!=2) && fastIrred(@j)) // #[1] for minAssGTZ
3281
- {
3282
- list res=@j,@j;
3283
- setring @P;
3284
- option(set,initialOp);
3285
- return(fetch(gnir,res));
3286
- }
3287
- }
3288
- //------------------------------------------------------------------
3289
3266
  //search for a maximal independent set indep,i.e.
3290
3267
  //look for subring such that the intersection with the ideal is zero
3291
3268
  //j intersected with K[var(indep[3]+1),...,var(nvar] is zero,
@@ -4072,7 +4049,8 @@ EXAMPLE: example zeroRad; shows an example"
4072
4049
 
4073
4050
  option(redSB);
4074
4051
  ASSUME(1, dim(I)==0);
4075
- if (hasQQCoefficient(basering) && (nvars(basering)*vdim(I)>300))
4052
+ if (hasQQCoefficient(basering)
4053
+ && (nvars(basering)*vdim(I)>300))
4076
4054
  {
4077
4055
  ideal F=modFinduni(I); //F[i] generates I intersected with K[var(i)]
4078
4056
  }
@@ -4293,6 +4271,7 @@ RETURN: ideal, the annihilator of coker(M)
4293
4271
  NOTE: The output is the ideal of all elements a of the basering R such that
4294
4272
  a * R^m is contained in M (m=number of rows of M).
4295
4273
  EXAMPLE: example Ann; shows an example
4274
+ KEYWORDS: annihilator of a module
4296
4275
  "
4297
4276
  {
4298
4277
  M=prune(M); //to obtain a small embedding
@@ -5646,6 +5625,7 @@ NOTE: - Algorithm of Gianni/Trager/Zacharias.
5646
5625
  - For local and mixed orderings, the decomposition in the
5647
5626
  corresponding global ring is returned if the string 'global'
5648
5627
  is specified as second argument
5628
+ SEE ALSO: modPrimdecGTZ
5649
5629
  EXAMPLE: example primdecGTZE; shows an example
5650
5630
  "
5651
5631
  {
@@ -5679,6 +5659,7 @@ NOTE: - Algorithm of Gianni/Trager/Zacharias.
5679
5659
  - For local and mixed orderings, the decomposition in the
5680
5660
  corresponding global ring is returned if the string 'global'
5681
5661
  is specified as second argument
5662
+ SEE ALSO: modPrimdecGTZ
5682
5663
  EXAMPLE: example primdecGTZ; shows an example
5683
5664
  "
5684
5665
  {
@@ -5737,6 +5718,25 @@ static proc primdecGTZ_i(int patchPrimaryDecomposition,ideal i, list #)
5737
5718
  }
5738
5719
  return(li);
5739
5720
  }
5721
+ i=simplify(i,2); // erase 0-generators
5722
+ if (ncols(i) >= 1) {
5723
+ if ((i[1]==0)||(i[1]==1))
5724
+ {
5725
+ list L = list(ideal(i[1]), ideal(i[1]) );
5726
+ return(list(L));
5727
+ }
5728
+ }
5729
+ if((ncols(i)==1)&&(attrib(basering,"ring_cf")==0))
5730
+ {
5731
+ list @fac=factorize(i[1],2);
5732
+ list result;
5733
+ for(int @i=size(@fac[1]);@i>0;@i--)
5734
+ {
5735
+ result[@i]=list(ideal(@fac[1][@i]^@fac[2][@i]),
5736
+ ideal(@fac[1][@i]));
5737
+ }
5738
+ return(result);
5739
+ }
5740
5740
 
5741
5741
  if(minpoly!=0)
5742
5742
  {
@@ -6114,10 +6114,23 @@ static proc primdecSY_i(int patchPrimaryDecomposition, ideal i, list #)
6114
6114
  }
6115
6115
  i=simplify(i,2);
6116
6116
 
6117
- if ((i[1]==0)||(i[1]==1))
6117
+ if (ncols(i) >= 1) {
6118
+ if ((i[1]==0)||(i[1]==1))
6119
+ {
6120
+ list L = list(ideal(i[1]), ideal(i[1]) );
6121
+ return(list(L));
6122
+ }
6123
+ }
6124
+ if((ncols(i)==1)&&(attrib(basering,"ring_cf")==0))
6118
6125
  {
6119
- list L = list(ideal(i[1]), ideal(i[1]) );
6120
- return(list(L));
6126
+ list @fac=factorize(i[1],2);
6127
+ list result;
6128
+ for(int @i=size(@fac[1]);@i>0;@i--)
6129
+ {
6130
+ result[@i]=list(ideal(@fac[1][@i]^@fac[2][@i]),
6131
+ ideal(@fac[1][@i]));
6132
+ }
6133
+ return(result);
6121
6134
  }
6122
6135
 
6123
6136
  if(minpoly!=0)
@@ -6252,7 +6265,7 @@ static proc minAssGTZ_i(int patchPrimaryDecomposition, ideal i,list #)
6252
6265
  int useFac;
6253
6266
 
6254
6267
  // Set input parameters
6255
- algorithm = "GTZ"; // Default: GTZ algorithm
6268
+ algorithm = "SL"; // Default: GTZ algorithm
6256
6269
  facstdOption = "facstd";
6257
6270
  if(size(#) > 0)
6258
6271
  {
@@ -6466,11 +6479,15 @@ EXAMPLE: example radical; shows an example
6466
6479
  def j=imap(s,j);
6467
6480
  return(j);
6468
6481
  }
6482
+ int j;
6483
+ if(!hasGFCoefficient(basering))
6484
+ {
6485
+ for(j=ncols(i);j>0;j--) { i[j]=sqrfree(i[j],3);}
6486
+ }
6469
6487
  if(hasAlgExtensionCoefficient(basering))
6470
6488
  {
6471
6489
  return(algeRad(i));
6472
6490
  }
6473
- int j;
6474
6491
  def P0 = basering;
6475
6492
  list Pl=ring_list(P0);
6476
6493
  Pl[3]=list(list("dp",1:nvars(P0)),list("C",0));
@@ -9373,40 +9390,6 @@ EXAMPLE: example primdec; shows an example
9373
9390
  return(res);
9374
9391
  }
9375
9392
 
9376
- static proc fastIrred(ideal j)
9377
- // the ideal is a not zero dimensional GB
9378
- // return 1 if it is irreducble for sure, 0 otherwise:
9379
- // substituite indep. variables by random values,
9380
- / factor the univariate poly
9381
- {
9382
- if (char(basering)!=0) { return(0);}
9383
- if (npars(basering)!=0) { return(0);}
9384
- int i;
9385
- for(i=1;i<=ncols(j);i++)
9386
- {
9387
- if(size(factorize(j[i],1))>1) { return(0);} // generators have factors
9388
- }
9389
- def savering=basering;
9390
- // find max. indep. set
9391
- intvec indep=indepSet(j);
9392
- int d=0;
9393
- for(i=1;i<=nvars(basering);i++)
9394
- {
9395
- if(indep[i]==1) { d++; j=subst(j,var(i),7 /*random(-5,5)*/);}
9396
- }
9397
- def R=changeordTo(savering,"lp");
9398
- setring R;
9399
- ideal j=fetch(savering,j);
9400
- j=std(j);
9401
- if (dim(j)!=d) {"ZERO";setring savering;return(0);} // zero found
9402
- list F=factorize(j[1]);
9403
- if (size(F[1])==2)
9404
- {
9405
- if (F[2][2]==1) {setring savering;return(1);} // irreducible
9406
- }
9407
- setring savering;
9408
- return(0); // may be reducible
9409
- }
9410
9393
  ////////////////////////////////////////////////////////////////////////////
9411
9394
  /*
9412
9395
  //Beispiele Wenk-Dipl (in ~/Texfiles/Diplom/Wenk/Examples/)
@@ -1,5 +1,5 @@
1
1
  //////////////////////////////////////////////////////////////////////////////
2
- version="version primdecint.lib 4.3.2.2 Nov_2022 "; // $Id: 7d72592f6c9d06a5410650885197f494c7d72a6d $
2
+ version="version primdecint.lib 4.4.1.1 Feb_2025 "; // $Id: c3a7a5c16612ce896fb311ab4e8c3ca7dff29ea4 $
3
3
  category = "Commutative Algebra";
4
4
  info="
5
5
  LIBRARY: primdecint.lib primary decomposition of an ideal in the polynomial
@@ -71,6 +71,7 @@ EXAMPLE: example primdecZ; shows an example
71
71
  int n = 1;
72
72
  ideal TES = 1;
73
73
  }
74
+ if (system("cpu")<=1) { n=1; }
74
75
 
75
76
 
76
77
  if(size(I)==1 && deg(I[1]) == 0)
@@ -129,7 +130,6 @@ EXAMPLE: example primdecZ; shows an example
129
130
  {
130
131
  p=int(L[1][i + 1]);
131
132
  nu=int(L[2][i + 1]);
132
- //link l(i) = "MPtcp:fork";
133
133
  link l(i) = "ssi:fork";
134
134
  open(l(i));
135
135
  write(l(i), quote(modp(eval(J), eval(p), eval(nu))));
@@ -1,5 +1,5 @@
1
1
  ///////////////////////////////////////////////////////////////////////////
2
- version="version random.lib 4.1.2.0 Feb_2019 "; // $Id: b9d4e8846557832cf2710837f16652894b5cb966 $
2
+ version="version random.lib 4.1.2.0 Feb_2019 "; // $Id: ec617edc25603cabbc227492f80090f5c76c3e7a $
3
3
  category="General purpose";
4
4
  info="
5
5
  LIBRARY: random.lib Creating Random and Sparse Matrices, Ideals, Polys
@@ -391,7 +391,7 @@ EXAMPLE: example randomLast; shows an example
391
391
  "
392
392
  {
393
393
  ideal i=maxideal(1);
394
- int k=size(i);
394
+ int k=nvars(basering);
395
395
  if (k<=1) { return(i);}
396
396
  i[k]=0;
397
397
  i=randomid(i,size(i),b);
@@ -1,5 +1,5 @@
1
1
  ////////////////////////////////////////////////////////////////////
2
- version="version resources.lib 4.1.2.0 Feb_2019 "; // $Id: 1cca86bcb27eefb3ab84076ef9a06a2e1fa897ec $
2
+ version="version resources.lib 4.1.2.0 Feb_2019 "; // $Id: cc0371b2cd2ba4822fc7b167ef219c96bb57c506 $
3
3
  category="General purpose";
4
4
  info="
5
5
  LIBRARY: resources.lib Tools to manage the computational resources
@@ -30,18 +30,18 @@ PROCEDURES:
30
30
  /* initialize (lib-)global variables */
31
31
  static proc mod_init()
32
32
  {
33
- if(system("cpu")>0)
33
+ if(system("cpu")>1)
34
34
  {
35
35
  int sem_cores = semaphore(system("--cpus")-1);
36
36
  int NCORES = system("semaphore", "get_value", sem_cores)+1;
37
37
  }
38
38
  else
39
39
  {
40
- int sem_cores = 0;
41
- int NCORES = 0;
40
+ int sem_cores = semaphore(0);
41
+ int NCORES = 1;
42
42
  }
43
- exportto(Resources, sem_cores);
44
- exportto(Resources, NCORES);
43
+ exportto(Resources, sem_cores);
44
+ exportto(Resources, NCORES);
45
45
  }
46
46
 
47
47
  proc addcores(int n)
@@ -76,6 +76,7 @@ EXAMPLE: example addcores; shows an example"
76
76
 
77
77
  /* adjust and return NCORES */
78
78
  NCORES = NCORES+n;
79
+ if (system("cpu")) {system("--cpus",NCORES);}
79
80
  return(NCORES);
80
81
  }
81
82
  example