passagemath-singular 10.6.31rc3__cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.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 (491) hide show
  1. PySingular.cpython-314-x86_64-linux-gnu.so +0 -0
  2. passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
  3. passagemath_singular-10.6.31rc3.dist-info/RECORD +491 -0
  4. passagemath_singular-10.6.31rc3.dist-info/WHEEL +6 -0
  5. passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
  6. passagemath_singular.libs/libSingular-4-20aec911.4.1.so +0 -0
  7. passagemath_singular.libs/libcddgmp-21acf0c6.so.0.1.3 +0 -0
  8. passagemath_singular.libs/libfactory-4-fcee31da.4.1.so +0 -0
  9. passagemath_singular.libs/libflint-66e12231.so.21.0.0 +0 -0
  10. passagemath_singular.libs/libgf2x-a4cdec90.so.3.0.0 +0 -0
  11. passagemath_singular.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
  12. passagemath_singular.libs/libgmp-6e109695.so.10.5.0 +0 -0
  13. passagemath_singular.libs/libgsl-cda90e79.so.28.0.0 +0 -0
  14. passagemath_singular.libs/libmpfr-82690d50.so.6.2.1 +0 -0
  15. passagemath_singular.libs/libntl-e6f0d543.so.44.0.1 +0 -0
  16. passagemath_singular.libs/libomalloc-0-5c9e866e.9.6.so +0 -0
  17. passagemath_singular.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
  18. passagemath_singular.libs/libpolys-4-5c0a87e0.4.1.so +0 -0
  19. passagemath_singular.libs/libquadmath-2284e583.so.0.0.0 +0 -0
  20. passagemath_singular.libs/libreadline-ea270e21.so.8.2 +0 -0
  21. passagemath_singular.libs/libsingular_resources-4-a1aafc6d.4.1.so +0 -0
  22. passagemath_singular.libs/libtinfo-ceb117d9.so.6.3 +0 -0
  23. sage/algebras/all__sagemath_singular.py +3 -0
  24. sage/algebras/fusion_rings/all.py +19 -0
  25. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  26. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-x86_64-linux-gnu.so +0 -0
  27. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  28. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  29. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-x86_64-linux-gnu.so +0 -0
  30. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  31. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  32. sage/algebras/fusion_rings/fusion_double.py +899 -0
  33. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  34. sage/algebras/fusion_rings/poly_tup_engine.cpython-314-x86_64-linux-gnu.so +0 -0
  35. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  36. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  37. sage/algebras/fusion_rings/shm_managers.cpython-314-x86_64-linux-gnu.so +0 -0
  38. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  39. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  40. sage/algebras/letterplace/all.py +1 -0
  41. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-x86_64-linux-gnu.so +0 -0
  42. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  43. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  44. sage/algebras/letterplace/free_algebra_letterplace.cpython-314-x86_64-linux-gnu.so +0 -0
  45. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  46. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  47. sage/algebras/letterplace/letterplace_ideal.cpython-314-x86_64-linux-gnu.so +0 -0
  48. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  49. sage/algebras/quatalg/all.py +2 -0
  50. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  51. sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-x86_64-linux-gnu.so +0 -0
  52. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  53. sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
  54. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  55. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  56. sage/all__sagemath_singular.py +11 -0
  57. sage/ext_data/all__sagemath_singular.py +1 -0
  58. sage/ext_data/singular/function_field/core.lib +98 -0
  59. sage/interfaces/all__sagemath_singular.py +1 -0
  60. sage/interfaces/singular.py +2835 -0
  61. sage/libs/all__sagemath_singular.py +1 -0
  62. sage/libs/singular/__init__.py +1 -0
  63. sage/libs/singular/decl.pxd +1168 -0
  64. sage/libs/singular/function.cpython-314-x86_64-linux-gnu.so +0 -0
  65. sage/libs/singular/function.pxd +87 -0
  66. sage/libs/singular/function.pyx +1901 -0
  67. sage/libs/singular/function_factory.py +61 -0
  68. sage/libs/singular/groebner_strategy.cpython-314-x86_64-linux-gnu.so +0 -0
  69. sage/libs/singular/groebner_strategy.pxd +22 -0
  70. sage/libs/singular/groebner_strategy.pyx +582 -0
  71. sage/libs/singular/option.cpython-314-x86_64-linux-gnu.so +0 -0
  72. sage/libs/singular/option.pyx +671 -0
  73. sage/libs/singular/polynomial.cpython-314-x86_64-linux-gnu.so +0 -0
  74. sage/libs/singular/polynomial.pxd +39 -0
  75. sage/libs/singular/polynomial.pyx +661 -0
  76. sage/libs/singular/ring.cpython-314-x86_64-linux-gnu.so +0 -0
  77. sage/libs/singular/ring.pxd +58 -0
  78. sage/libs/singular/ring.pyx +893 -0
  79. sage/libs/singular/singular.cpython-314-x86_64-linux-gnu.so +0 -0
  80. sage/libs/singular/singular.pxd +72 -0
  81. sage/libs/singular/singular.pyx +1944 -0
  82. sage/libs/singular/standard_options.py +145 -0
  83. sage/matrix/all__sagemath_singular.py +1 -0
  84. sage/matrix/matrix_mpolynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
  85. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  86. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  87. sage/rings/all__sagemath_singular.py +1 -0
  88. sage/rings/function_field/all__sagemath_singular.py +1 -0
  89. sage/rings/function_field/derivations_polymod.py +911 -0
  90. sage/rings/function_field/element_polymod.cpython-314-x86_64-linux-gnu.so +0 -0
  91. sage/rings/function_field/element_polymod.pyx +406 -0
  92. sage/rings/function_field/function_field_polymod.py +2611 -0
  93. sage/rings/function_field/ideal_polymod.py +1775 -0
  94. sage/rings/function_field/order_polymod.py +1475 -0
  95. sage/rings/function_field/place_polymod.py +681 -0
  96. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  97. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-x86_64-linux-gnu.so +0 -0
  98. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  99. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  100. sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-x86_64-linux-gnu.so +0 -0
  101. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  102. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  103. sage/rings/polynomial/plural.cpython-314-x86_64-linux-gnu.so +0 -0
  104. sage/rings/polynomial/plural.pxd +48 -0
  105. sage/rings/polynomial/plural.pyx +3171 -0
  106. sage/symbolic/all__sagemath_singular.py +1 -0
  107. sage/symbolic/comparison_impl.pxi +428 -0
  108. sage/symbolic/constants_c_impl.pxi +178 -0
  109. sage/symbolic/expression.cpython-314-x86_64-linux-gnu.so +0 -0
  110. sage/symbolic/expression.pxd +7 -0
  111. sage/symbolic/expression.pyx +14200 -0
  112. sage/symbolic/getitem_impl.pxi +202 -0
  113. sage/symbolic/pynac.pxi +572 -0
  114. sage/symbolic/pynac_constant_impl.pxi +133 -0
  115. sage/symbolic/pynac_function_impl.pxi +206 -0
  116. sage/symbolic/pynac_impl.pxi +2576 -0
  117. sage/symbolic/pynac_wrap.h +124 -0
  118. sage/symbolic/series_impl.pxi +272 -0
  119. sage/symbolic/substitution_map_impl.pxi +94 -0
  120. sage_wheels/bin/ESingular +0 -0
  121. sage_wheels/bin/Singular +0 -0
  122. sage_wheels/bin/TSingular +0 -0
  123. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  124. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  125. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  126. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  127. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  128. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  129. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  130. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  131. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  132. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  133. sage_wheels/lib/singular/MOD/interval.la +41 -0
  134. sage_wheels/lib/singular/MOD/interval.so +0 -0
  135. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  136. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  137. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  138. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  139. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  140. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  146. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  147. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  148. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  149. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  150. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  151. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  152. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  153. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  154. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  155. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  156. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  157. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  158. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  159. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  160. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  161. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  162. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  163. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  164. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  165. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  166. sage_wheels/libexec/singular/MOD/surfex +16 -0
  167. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  168. sage_wheels/share/factory/gftables/10201 +342 -0
  169. sage_wheels/share/factory/gftables/1024 +37 -0
  170. sage_wheels/share/factory/gftables/10609 +356 -0
  171. sage_wheels/share/factory/gftables/11449 +384 -0
  172. sage_wheels/share/factory/gftables/11881 +398 -0
  173. sage_wheels/share/factory/gftables/121 +6 -0
  174. sage_wheels/share/factory/gftables/12167 +408 -0
  175. sage_wheels/share/factory/gftables/125 +7 -0
  176. sage_wheels/share/factory/gftables/12769 +428 -0
  177. sage_wheels/share/factory/gftables/128 +7 -0
  178. sage_wheels/share/factory/gftables/1331 +47 -0
  179. sage_wheels/share/factory/gftables/1369 +48 -0
  180. sage_wheels/share/factory/gftables/14641 +490 -0
  181. sage_wheels/share/factory/gftables/15625 +523 -0
  182. sage_wheels/share/factory/gftables/16 +3 -0
  183. sage_wheels/share/factory/gftables/16129 +540 -0
  184. sage_wheels/share/factory/gftables/16384 +549 -0
  185. sage_wheels/share/factory/gftables/16807 +563 -0
  186. sage_wheels/share/factory/gftables/1681 +58 -0
  187. sage_wheels/share/factory/gftables/169 +8 -0
  188. sage_wheels/share/factory/gftables/17161 +574 -0
  189. sage_wheels/share/factory/gftables/1849 +64 -0
  190. sage_wheels/share/factory/gftables/18769 +628 -0
  191. sage_wheels/share/factory/gftables/19321 +646 -0
  192. sage_wheels/share/factory/gftables/19683 +659 -0
  193. sage_wheels/share/factory/gftables/2048 +71 -0
  194. sage_wheels/share/factory/gftables/2187 +75 -0
  195. sage_wheels/share/factory/gftables/2197 +76 -0
  196. sage_wheels/share/factory/gftables/2209 +76 -0
  197. sage_wheels/share/factory/gftables/22201 +742 -0
  198. sage_wheels/share/factory/gftables/22801 +762 -0
  199. sage_wheels/share/factory/gftables/2401 +82 -0
  200. sage_wheels/share/factory/gftables/243 +11 -0
  201. sage_wheels/share/factory/gftables/24389 +815 -0
  202. sage_wheels/share/factory/gftables/24649 +824 -0
  203. sage_wheels/share/factory/gftables/25 +3 -0
  204. sage_wheels/share/factory/gftables/256 +11 -0
  205. sage_wheels/share/factory/gftables/26569 +888 -0
  206. sage_wheels/share/factory/gftables/27 +3 -0
  207. sage_wheels/share/factory/gftables/27889 +932 -0
  208. sage_wheels/share/factory/gftables/2809 +96 -0
  209. sage_wheels/share/factory/gftables/28561 +954 -0
  210. sage_wheels/share/factory/gftables/289 +12 -0
  211. sage_wheels/share/factory/gftables/29791 +995 -0
  212. sage_wheels/share/factory/gftables/29929 +1000 -0
  213. sage_wheels/share/factory/gftables/3125 +107 -0
  214. sage_wheels/share/factory/gftables/32 +4 -0
  215. sage_wheels/share/factory/gftables/32041 +1070 -0
  216. sage_wheels/share/factory/gftables/32761 +1094 -0
  217. sage_wheels/share/factory/gftables/32768 +1095 -0
  218. sage_wheels/share/factory/gftables/343 +14 -0
  219. sage_wheels/share/factory/gftables/3481 +118 -0
  220. sage_wheels/share/factory/gftables/361 +14 -0
  221. sage_wheels/share/factory/gftables/36481 +1218 -0
  222. sage_wheels/share/factory/gftables/3721 +126 -0
  223. sage_wheels/share/factory/gftables/37249 +1244 -0
  224. sage_wheels/share/factory/gftables/38809 +1296 -0
  225. sage_wheels/share/factory/gftables/39601 +1322 -0
  226. sage_wheels/share/factory/gftables/4 +3 -0
  227. sage_wheels/share/factory/gftables/4096 +139 -0
  228. sage_wheels/share/factory/gftables/44521 +1486 -0
  229. sage_wheels/share/factory/gftables/4489 +152 -0
  230. sage_wheels/share/factory/gftables/49 +4 -0
  231. sage_wheels/share/factory/gftables/4913 +166 -0
  232. sage_wheels/share/factory/gftables/49729 +1660 -0
  233. sage_wheels/share/factory/gftables/5041 +170 -0
  234. sage_wheels/share/factory/gftables/50653 +1691 -0
  235. sage_wheels/share/factory/gftables/512 +20 -0
  236. sage_wheels/share/factory/gftables/51529 +1720 -0
  237. sage_wheels/share/factory/gftables/52441 +1750 -0
  238. sage_wheels/share/factory/gftables/529 +20 -0
  239. sage_wheels/share/factory/gftables/5329 +180 -0
  240. sage_wheels/share/factory/gftables/54289 +1812 -0
  241. sage_wheels/share/factory/gftables/57121 +1906 -0
  242. sage_wheels/share/factory/gftables/58081 +1938 -0
  243. sage_wheels/share/factory/gftables/59049 +1971 -0
  244. sage_wheels/share/factory/gftables/6241 +210 -0
  245. sage_wheels/share/factory/gftables/625 +23 -0
  246. sage_wheels/share/factory/gftables/63001 +2102 -0
  247. sage_wheels/share/factory/gftables/64 +5 -0
  248. sage_wheels/share/factory/gftables/6561 +221 -0
  249. sage_wheels/share/factory/gftables/6859 +231 -0
  250. sage_wheels/share/factory/gftables/6889 +232 -0
  251. sage_wheels/share/factory/gftables/729 +27 -0
  252. sage_wheels/share/factory/gftables/7921 +266 -0
  253. sage_wheels/share/factory/gftables/8 +3 -0
  254. sage_wheels/share/factory/gftables/81 +5 -0
  255. sage_wheels/share/factory/gftables/8192 +276 -0
  256. sage_wheels/share/factory/gftables/841 +30 -0
  257. sage_wheels/share/factory/gftables/9 +3 -0
  258. sage_wheels/share/factory/gftables/9409 +316 -0
  259. sage_wheels/share/factory/gftables/961 +34 -0
  260. sage_wheels/share/info/singular.info +191898 -0
  261. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  262. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  263. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  264. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  265. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  266. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  267. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  268. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  269. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  270. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  271. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  272. sage_wheels/share/singular/LIB/all.lib +136 -0
  273. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  274. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  275. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  276. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  277. sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
  278. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  279. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  280. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  281. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  282. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  283. sage_wheels/share/singular/LIB/central.lib +2169 -0
  284. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  285. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  286. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  287. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  288. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  289. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  290. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  291. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  292. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  293. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  294. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  295. sage_wheels/share/singular/LIB/control.lib +1636 -0
  296. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  297. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  298. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  299. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  300. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  301. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  302. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  303. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  304. sage_wheels/share/singular/LIB/deform.lib +925 -0
  305. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  306. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  307. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  308. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  309. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  310. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  311. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  312. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  313. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  314. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  315. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  316. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  317. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  318. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  319. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  320. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  321. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  322. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  323. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  324. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  325. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  326. sage_wheels/share/singular/LIB/general.lib +1350 -0
  327. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  328. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  329. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  330. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  331. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  332. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  333. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  334. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  335. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  336. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  337. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  338. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  339. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  340. sage_wheels/share/singular/LIB/help.cnf +57 -0
  341. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  342. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  343. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  344. sage_wheels/share/singular/LIB/homolog.lib +1965 -0
  345. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  346. sage_wheels/share/singular/LIB/inout.lib +679 -0
  347. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  348. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  349. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  350. sage_wheels/share/singular/LIB/invar.lib +443 -0
  351. sage_wheels/share/singular/LIB/involut.lib +980 -0
  352. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  353. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  354. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  355. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  356. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  357. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  358. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  359. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  360. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  361. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  362. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  363. sage_wheels/share/singular/LIB/methods.lib +212 -0
  364. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  365. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  366. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  367. sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
  368. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  369. sage_wheels/share/singular/LIB/modstd.lib +1024 -0
  370. sage_wheels/share/singular/LIB/modular.lib +545 -0
  371. sage_wheels/share/singular/LIB/modules.lib +2561 -0
  372. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  373. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  374. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  375. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  376. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  377. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  378. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  379. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  380. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  381. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  382. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  383. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  384. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  385. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  386. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  387. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  388. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  389. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  390. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  391. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  392. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  393. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  394. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  395. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  396. sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
  397. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  398. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  399. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  400. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  401. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  402. sage_wheels/share/singular/LIB/parallel.lib +319 -0
  403. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  404. sage_wheels/share/singular/LIB/perron.lib +202 -0
  405. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  406. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  407. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  408. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  409. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  410. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  411. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  412. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  413. sage_wheels/share/singular/LIB/primdec.lib +9576 -0
  414. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  415. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  416. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  417. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  418. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  419. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  420. sage_wheels/share/singular/LIB/random.lib +455 -0
  421. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  422. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  423. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  424. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  425. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  426. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  427. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  428. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  429. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  430. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  431. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  432. sage_wheels/share/singular/LIB/resources.lib +170 -0
  433. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  434. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  435. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  436. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  437. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  438. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  439. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  440. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  441. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  442. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  443. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
  444. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  445. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  446. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  447. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  448. sage_wheels/share/singular/LIB/sets.lib +524 -0
  449. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  450. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  451. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  452. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  453. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  454. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  455. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  456. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  457. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  458. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  459. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  460. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  461. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  462. sage_wheels/share/singular/LIB/surf.lib +506 -0
  463. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  464. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  465. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  466. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  467. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  468. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  469. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  470. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  471. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  472. sage_wheels/share/singular/LIB/template.lib +116 -0
  473. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  474. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  475. sage_wheels/share/singular/LIB/triang.lib +1197 -0
  476. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  477. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  478. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  479. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  480. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  481. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  482. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  483. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  484. sage_wheels/share/singular/emacs/COPYING +44 -0
  485. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  486. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  487. sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
  488. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  489. sage_wheels/share/singular/emacs/singular.el +4273 -0
  490. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  491. sage_wheels/share/singular/singular.idx +5002 -0
@@ -0,0 +1,1108 @@
1
+ //////////////////////////////////////////////////////////////////////////
2
+ version="version tst.lib 4.1.2.0 Feb_2019 "; // $Id: cfdd40a8b451590308afefe3f4b654ba8b32ebc1 $
3
+ category="Utilities";
4
+ info="
5
+ LIBRARY: tst.lib Procedures for running automatic tst Tests
6
+ AUTHORS: Singular team
7
+
8
+ PROCEDURES:
9
+ tst_system(s) returns string which is stdout of system(\"sh\", s)
10
+ tst_ignore(any,[keyword], [link]) writes string(any) to link (or stdout),
11
+ prepending prefix \"// tst_ignore:\"
12
+ tst_init() writes some identification data to GetTstStatusFile()
13
+ tst_status([any]) writes status info to GetTstStatusFile()
14
+ tst_InitTimer() initialize tst-Timer
15
+ tst_StopTimer() stop Tst-Timer
16
+ tst_GetTimer get value of Tst-Timer
17
+ tst_ReportTimer report value of Tst-Timer
18
+ tst_groebnerTest(ideal i)
19
+ tests groebner command
20
+ tst_stdEqual(ideal i1, ideal i2)
21
+ test whether two std's are \"equal\"
22
+
23
+ tst_test_res(ideal i) test different res commands for homog ideal i
24
+ ";
25
+
26
+ /////////////////////////////////////////////////////////////////////////////
27
+ proc tst_system(string s, list #)
28
+ "USAGE: tst_system(s); s string
29
+ RETURN: string which is stdout and stderr of system(\"sh\", s)
30
+ EXAMPLE: example tst_system; shows examples"
31
+ {
32
+ string tmpfile = "/tmp/tst_" + string(system("pid"));
33
+ int errno;
34
+
35
+ s = s + " 1>" + tmpfile + " 2>&1";
36
+ errno = system("sh", s);
37
+ s = read(tmpfile);
38
+ errno = system("sh", "rm -f " + tmpfile);
39
+ if (size(#) > 0 && size(s) > 1)
40
+ {
41
+ s = s[1, size(s) -1];
42
+ }
43
+ return (s);
44
+ }
45
+ example
46
+ {
47
+ "EXAMPLE"; echo = 2;
48
+ string s = tst_system("echo This is an example of tst_system");
49
+ "The following is what the system call wrote to stdout: " + s;
50
+ }
51
+
52
+ proc tst_ignore(list #)
53
+ "USAGE: tst_ignore(any,[keyword], [link])
54
+ any -- valid argument to string()
55
+ keyword -- an arbitrary string
56
+ link -- a link which can be written to
57
+ RETURN: none; writes string(any) to link (or stdout, if no link given),
58
+ prepending prefix \"// tst_ignore:\", or
59
+ \"// tst_ignore:keyword hostname:\",
60
+ if keyword was given.
61
+ Should be used in tst files to output system dependent data
62
+ (like date, pathnames).
63
+ EXAMPLE: example tst_ignore; shows examples
64
+ "
65
+ {
66
+ if (! defined(tst_no_status))
67
+ {
68
+ string s;
69
+ string keyword = "";
70
+ link outlink = "";
71
+
72
+ // Check # of args
73
+ if (size(#) < 1 || size(#) > 3)
74
+ {
75
+ ERROR("Error tst_ignore: Wrong number of arguments
76
+ Usage: tst_ignore (any,[keyword], [link]);");
77
+ }
78
+
79
+ // Get Args
80
+ s = string(#[1]);
81
+ if (size(#) == 3)
82
+ {
83
+ keyword = #[2];
84
+ outlink = #[3];
85
+ }
86
+ if (size(#) == 2)
87
+ {
88
+ if (typeof(#[2]) == "string")
89
+ {
90
+ keyword = #[2];
91
+ }
92
+ else
93
+ {
94
+ outlink = #[2];
95
+ }
96
+ }
97
+
98
+ // check args
99
+ if (typeof(keyword) != "string")
100
+ {
101
+ "Error tst_ignore: Keyword must be a string";
102
+ "Usage: tst_ignore (any,[keyword], [link]);";
103
+ return();
104
+ }
105
+
106
+ if (status(outlink, "open", "no"))
107
+ {
108
+ open(outlink);
109
+ }
110
+
111
+ if (status(outlink, "write", "not ready"))
112
+ {
113
+ "Error tst_ignore: Cannot write to link";
114
+ outlink;
115
+ "Usage: tst_ignore (any,[keyword], [link]);";
116
+ return();
117
+ }
118
+
119
+ // ready -- do the actual work
120
+ if (keyword != "")
121
+ {
122
+ write(outlink,"// tst_ignore:" + keyword + " :: " + tst_system("hostname", 1) + ":" + s);
123
+ }
124
+ else
125
+ {
126
+ write(outlink, "// tst_ignore: " + s);
127
+ }
128
+ }
129
+ }
130
+ example
131
+ {
132
+ "EXAMPLE";
133
+ "System independent data can safely be output in tst files;";
134
+ "However, system dependent data like dates, or pathnames, should be output";
135
+ "using the command tst_ignore(...), like";
136
+ echo = 2;
137
+ tst_ignore(tst_system("date"));
138
+ int t1 = timer;
139
+ tst_ignore(t1, "time");
140
+ tst_ignore(memory(1), "memory");
141
+ }
142
+
143
+ static proc Get_tst_timer()
144
+ {
145
+ if (! defined (tst_timer))
146
+ {
147
+ string tst_timer = "// tst_ignore:0";
148
+ export tst_timer;
149
+ return (0);
150
+ }
151
+ else
152
+ {
153
+ execute("int tst_int_timer = " + tst_timer[15,size(tst_timer)] + ";");
154
+ return (tst_int_timer);
155
+ }
156
+ }
157
+
158
+ static proc Set_tst_timer (int this_time)
159
+ {
160
+ tst_timer = tst_timer[1,14] + string(this_time);
161
+ }
162
+
163
+ static proc GetTstStatusFile()
164
+ {
165
+ if (!defined(tst_status_file))
166
+ {
167
+ return ("tst_status.out");
168
+ }
169
+ else
170
+ {
171
+ return (tst_status_file);
172
+ }
173
+ }
174
+
175
+ static proc tst_status_out (def prefix, def what, list #)
176
+ {
177
+ string outstring;
178
+
179
+ outstring = string(prefix) + " >> " + string(what);
180
+ if (size(#) > 0)
181
+ {
182
+ outstring = outstring + " :: " +
183
+ tst_system("hostname", 1) + ":" + string(#[1]);
184
+ }
185
+ write(":a " + GetTstStatusFile(), outstring);
186
+ }
187
+
188
+ proc tst_status (list #)
189
+ "USAGE: tst_status([prefix [, start_up]])
190
+ prefix -- string
191
+ start_up -- int
192
+ RETURN: none
193
+ PURPOSE: writes to tst-output the current memory usage and used CPU time.
194
+ If no integer argument is given, the elapsed CPU time since
195
+ the last call to tst_status() is reported.
196
+ If an integer argument is given, the elapsed CPU time since the
197
+ start-up of @sc{Singular} is reported.
198
+ If prefix is given, output reported start with prefix.
199
+ NOTE: Should be used regularly within tst files to enable automatic
200
+ tracking of memory and time performance.
201
+ EXAMPLE: example tst_status; shows example
202
+ SEE ALSO: tst_init
203
+ "
204
+ {
205
+ int start_up;
206
+
207
+ if (size(#) > 0)
208
+ {
209
+ if (typeof(#[1]) == "string")
210
+ {
211
+ string prefix = #[1];
212
+ if (size(#) > 1)
213
+ {
214
+ start_up = 1;
215
+ }
216
+ }
217
+ else
218
+ {
219
+ start_up = 1;
220
+ }
221
+ }
222
+ if (! defined(tst_no_status))
223
+ {
224
+ if (! defined(tst_status_counter))
225
+ {
226
+ int tst_status_counter = 1;
227
+ export tst_status_counter;
228
+ }
229
+ else
230
+ {
231
+ tst_status_counter++;
232
+ }
233
+
234
+ if (!defined(prefix))
235
+ {
236
+ int prefix = tst_status_counter;
237
+ }
238
+ tst_status_out(prefix, "tst_memory_0", memory(0));
239
+ tst_status_out(prefix, "tst_memory_1", memory(1));
240
+ tst_status_out(prefix, "tst_memory_2", memory(2));
241
+ if (start_up > 0)
242
+ {
243
+ tst_status_out(prefix, "tst_timer_1", timer);
244
+ }
245
+ else
246
+ {
247
+ tst_status_out(prefix, "tst_timer", timer - Get_tst_timer());
248
+ Set_tst_timer(timer);
249
+ }
250
+ }
251
+ }
252
+ example
253
+ {
254
+ "EXAMPLE"; echo = 2;
255
+ tst_status();
256
+ ring r;
257
+ poly p = (x+y+z)^40;
258
+ tst_status();
259
+ tst_status(1);
260
+ }
261
+
262
+
263
+ proc tst_init(list #)
264
+ "USAGE: tst_init([file])
265
+ file -- string
266
+ RETURN: none
267
+ PURPOSE: initializes further calls to tst routines:
268
+ If no arguments are given, and if tst_status_file is not defined,
269
+ then tst-output is written to stdout, else tst-output is written
270
+ to file.
271
+ EXAMPLE: example tst_init; shows example
272
+ "
273
+ {
274
+ if (! defined(tst_no_status))
275
+ {
276
+ string outfile = "";
277
+
278
+ if (size(#) > 0)
279
+ {
280
+ if (typeof(#[1]) == string)
281
+ {
282
+ outfile = #[1];
283
+ }
284
+ }
285
+ if (!defined(tst_status_file))
286
+ {
287
+ string tst_status_file = outfile;
288
+ export tst_status_file;
289
+ }
290
+ if (GetTstStatusFile() != "")
291
+ {
292
+ write(":w " + GetTstStatusFile(), "Status Output of " + GetTstStatusFile());
293
+ }
294
+ tst_status_out("init", "USER :" + system("getenv", "USER"));
295
+ tst_status_out("init", "HOSTNAME:" + tst_system("hostname", 1));
296
+ tst_status_out("init", "uname -a:" + tst_system("uname -a", 1));
297
+ tst_status_out("init", "date :" + tst_system("date", 1));
298
+ tst_status_out("init", "version :" + string(system("version")));
299
+ tst_status_out("init", "ticks :" + string(system("--ticks-per-sec")));
300
+ "init >> " + GetTstStatusFile();
301
+ }
302
+ }
303
+ example
304
+ {
305
+ "EXAMPLE"; echo = 2;
306
+ tst_init();
307
+ }
308
+
309
+ proc tst_InitTimer(list #)
310
+ "USAGE: tst_InitTime([ticks_per_second])
311
+ ticks_per_second -- int
312
+ RETURN: none
313
+ PURPOSE: initializes tst timer for subsequent calls to tst_StopTimer or
314
+ tst_ReportTimer.
315
+ If the ticks_per_second argument is given, then the timer resolution
316
+ is set to this value. Otherwise, the default timer resolution is used.
317
+ SEE ALSO: tst_StopTimer, tst_GetTimer, tst_ReportTimer
318
+ "
319
+ {
320
+ if (!defined(tst_Timer))
321
+ {
322
+ int tst_Timer;
323
+ export tst_Timer;
324
+ }
325
+ if (size(#) > 0)
326
+ {
327
+ if (typeof(#[1]) == "int")
328
+ {
329
+ if (#[1] > 0)
330
+ {
331
+ system("--ticks-per-sec", #[1]);
332
+ }
333
+ else
334
+ {
335
+ ERROR("need integer argument > 0");
336
+ }
337
+ }
338
+ else
339
+ {
340
+ ERROR("need integer argument");
341
+ }
342
+ }
343
+ tst_Timer = timer;
344
+ }
345
+
346
+ proc tst_StopTimer()
347
+ "USAGE: tst_StopTimer()
348
+ RETURN: int, timer ticks of elapsed CPU time since last call to tst_InitTimer
349
+ PURPOSE: stops the timer initialized by previous call to tst_InitTimer
350
+ SEE ALSO: tst_InitTimer, tst_GetTimer, tst_ReportTimer
351
+ "
352
+ {
353
+ tst_Timer = timer - tst_Timer;
354
+ return (tst_Timer);
355
+ }
356
+
357
+ proc tst_GetTimer()
358
+ "USAGE: tst_GetTimer()
359
+ RETURN: int, timer ticks of elapsed CPU time since last call to tst_Init
360
+ NOTE: does NOT stop the time initialized by previous call to tst_InitTimer
361
+ SEE ALSO: tst_InitTimer, tst_GetTimer, tst_ReportTimer
362
+ "
363
+ {
364
+ int tt = timer - tst_Timer;
365
+ return (tt);
366
+ }
367
+
368
+ proc tst_ReportTimer(list #)
369
+ "USAGE: tst_ReportTimer([prefix])
370
+ RETURN: none
371
+ PURPOSE: stops the timer initialized by previous call to tst_InitTimer;
372
+ reports time to tst-output;
373
+ if prefix is given, timer output is prefixed by it.
374
+ SEE ALSO: tst_InitTimer, tst_GetTimer, tst_StopTimer, tst_OutTimer, tst_init
375
+ "
376
+ {
377
+ tst_Timer = timer - tst_Timer;
378
+ tst_OutTimer(tst_Timer, #);
379
+ }
380
+
381
+ proc tst_OutTimer(int tt, list #)
382
+ "USAGE: tst_OutTimer(ticks [, prefix])
383
+ RETURN: none
384
+ PURPOSE: reports value of tt to tst-output;
385
+ if prefix is given, timer output is prefixed by it.
386
+ SEE ALSO: tst_InitTimer, tst_GetTimer, tst_StopTimer, tst_ReportTimer, tst_init
387
+ "
388
+ {
389
+ string prefix = "OutTimer";
390
+
391
+ if (size(#) > 0)
392
+ {
393
+ prefix = string(#[1]);
394
+ }
395
+ tst_status_out(prefix, "tst-Timer", tt);
396
+ }
397
+
398
+ ///////////////////////////////////////////////////////////////////////
399
+
400
+ proc tst_groebnerTest(ideal i, list #)
401
+ "USAGE: tst_groebnerTesti,[v]) : ideal i, [int v]
402
+ RETURN: 1, if groebner command produced \"equal\" std as std command
403
+ 0, otherwise
404
+ Two std's are \"equal\" here, if their redSB's are element-wise equal,
405
+ and if they reduce each other to zero, and if their leading ideals
406
+ are equal
407
+ On success, times of std - groebner is written with tst_ignore, and
408
+ times are added to global variables tst_std_time and
409
+ tst_groebner_time. If v given, and <= 0, short ideal
410
+ characteristic is printed, if v > 0, ideals are printed.
411
+ On failure, Error message and ideals are printed.
412
+ EXAMPLE: example tst_groebner; shows an example
413
+ "
414
+ {
415
+ int st = timer;
416
+ ideal si = std(i);
417
+ st = timer - st;
418
+
419
+ int gt = timer;
420
+ ideal gi = groebner(i);
421
+ gt = timer - gt;
422
+
423
+ if (tst_stdEqual(si, gi))
424
+ {
425
+ tst_ignore(string(st) + " - " + string(gt) + " == " + string(st - gt));
426
+ if (! defined(tst_groebner_time))
427
+ {
428
+ int tst_groebner_time;
429
+ int tst_std_time;
430
+ export tst_groebner_time, tst_std_time;
431
+ }
432
+ tst_std_time = tst_std_time + st;
433
+ tst_groebner_time = tst_groebner_time + gt;
434
+ if (size(#))
435
+ {
436
+ if (typeof(#[1] == "int"))
437
+ {
438
+ if (#[1] <= 0)
439
+ {
440
+ idPrintShort(si, "si");
441
+ idPrintShort(gi, "gi");
442
+ }
443
+ else
444
+ {
445
+ si;
446
+ gi;
447
+ }
448
+ }
449
+ }
450
+ return (1);
451
+ }
452
+ return (0);
453
+ }
454
+ example
455
+ {
456
+ "EXAMPLE: "; echo = 2;
457
+ ring r = 0, (a,b,c,d), lp;
458
+ ideal i = a+b+c+d, ab+ad+bc+cd, abc+abd+acd+bcd, abcd-1; // cyclic 4
459
+ tst_groebnerTest(i);
460
+ tst_groebnerTest(i, 0);
461
+ tst_groebnerTest(i, 1);
462
+ }
463
+
464
+
465
+ //
466
+ // A routine which test for equality of "std-bases"
467
+ //
468
+ proc tst_stdEqual(ideal i1, ideal i2)
469
+ "USAGE: tst_stdEqual(i1, i2) ideal i1, i2
470
+ RETURN 1, if i1 \"equald\" i2 as a std bases
471
+ 0, otherwise
472
+ Two std's are \"equal\" here, if their redSB's are element-wise equal,
473
+ and if they reduce each other to zero, and if their leading ideals
474
+ are equal
475
+ On failure, error message is printed.
476
+ EXAMPLE: example tst_stdEqual; shows an example
477
+ "
478
+ {
479
+ int i;
480
+ int back;
481
+ intvec opts = option(get);
482
+ option(redSB);
483
+
484
+ ideal ri1 = simplify(interred(i1), 1);
485
+ ideal ri2 = simplify(interred(i2), 1);
486
+
487
+ option(set, opts);
488
+
489
+ if (size(ri1) != size(ri2))
490
+ {
491
+ "Error in tst_stdEqual: Reduced sizes differ";
492
+ size(ri1);
493
+ size(ri2);
494
+ return(0);
495
+ }
496
+
497
+ for (i=1; i<=size(ri1); i++)
498
+ {
499
+ if (ri1[i] != ri2[i])
500
+ {
501
+ "Error in tst_stdEqual: " + string(i) + " th polynomials differ";
502
+ ri1[i];
503
+ ri2[i];
504
+ return(0);
505
+ }
506
+ }
507
+
508
+ // reduced SB are now equal
509
+ if (size(reduce(i1, i2, 1)) == 0)
510
+ {
511
+ if (size(reduce(i2, i1, 1)) == 0)
512
+ {
513
+ poly p1, p2;
514
+
515
+ ideal si1 = simplify(i1, 7);
516
+ ideal si2 = simplify(i2, 7);
517
+
518
+ if (size(si1) == size(si2))
519
+ {
520
+ for (i=1; i<=size(si1); i++)
521
+ {
522
+ p1 = p1 + lead(si1[i]);
523
+ p2 = p2 + lead(si2[i]);
524
+ }
525
+ if (p1 != p2)
526
+ {
527
+ "Error in tst_stdEqual: Lead monoms differ:";
528
+ p1;
529
+ p2;
530
+ return(0);
531
+ }
532
+ }
533
+ else
534
+ {
535
+ "Error in tst_stdEqual: size differs:";
536
+ size(si1);
537
+ size(si2);
538
+ return(0);
539
+ }
540
+ }
541
+ else
542
+ {
543
+ "Error in tst_stdEqual: reduce(i2, i1) != 0";
544
+ return(0);
545
+ }
546
+ }
547
+ else
548
+ {
549
+ back = 1; "Error in tst_stdEqual: reduce(i1, i2) != 0";
550
+ return(0);
551
+ }
552
+
553
+ return (1);
554
+ }
555
+ example
556
+ {
557
+ "EXAMPLE: "; echo = 2;
558
+ ring r = 0, (a,b,c,d), lp;
559
+ ideal i = a+b+c+d, ab+ad+bc+cd, abc+abd+acd+bcd, abcd-1; // cyclic 4
560
+ tst_stdEqual(groebner(i), std(i));
561
+ tst_stdEqual(std(i), i);
562
+ }
563
+
564
+ static proc idPrintShort(ideal id, string name)
565
+ {
566
+ "Summary of " + name + " (leading monoms and size of polys):";
567
+ int i;
568
+ for (i = 1; i<=size(id); i++)
569
+ {
570
+ "[" + string(i) + "]: #" + string(size(id[i])) + ":" + string(lead(id[i]));
571
+ }
572
+ }
573
+
574
+
575
+ proc tst_test_res(ideal i, list #)
576
+
577
+ "USAGE: tst_test_res(ideal i, only_lres_and_hres)
578
+ RETURN: 1, if ok; 0 on error
579
+ PURPOSE: Tests sres, lres, hres, mres with betti commands and conversions
580
+ If optional third argument is given, test only lres and hres
581
+ EXAMPLE: example tst_test_res shows an example"
582
+ {
583
+ int ret = 1;
584
+
585
+ if (! homog(i))
586
+ {
587
+ ERROR("ERROR: input ideal needs to be homogeneous ");
588
+ }
589
+
590
+ if (size(#) == 0)
591
+ {
592
+ resolution rs = sres(std(i), 0);
593
+ resolution rm = mres(i,0);
594
+ }
595
+
596
+ resolution rh = hres(i,0);
597
+ resolution rl = lres(i, 0);
598
+
599
+ if (size(#) == 0)
600
+ {
601
+ intmat is = betti(rs);
602
+ intmat im = betti(rm);
603
+ }
604
+
605
+ intmat ih = betti(rh);
606
+ intmat il = betti(rl);
607
+
608
+ if (size(ih) != size(il)){"ERROR: size(ih) != size(il)";return(0);}
609
+ if (size(#) == 0)
610
+ {
611
+ if (size(ih) != size(is)){"ERROR: size(ih) != size(is)";return(0);}
612
+ if (size(ih) != size(im)){"ERROR: size(ih) != size(im)";return(0);}
613
+ }
614
+
615
+ if (ih != il){"ERROR: ih != il";return(0);}
616
+ if (size(#) == 0)
617
+ {
618
+ if (ih != is){"ERROR: ih != is";return(0);}
619
+ if (ih != im){"ERROR: ih != im";return(0);}
620
+ }
621
+
622
+ if (size(#) == 0)
623
+ {
624
+ list ls = list(rs);
625
+ list lm = list(rm);
626
+ }
627
+ list lh = list(rh);
628
+ list ll = list(rl);
629
+
630
+ if (size(#) == 0)
631
+ {
632
+ intmat is_1 = betti(ls);
633
+ intmat im_1 = betti(lm);
634
+ }
635
+ intmat ih_1 = betti(lh);
636
+ intmat il_1 = betti(ll);
637
+
638
+ if (size(ih_1) != size(il_1)){"ERROR: size(ih_1) != size(il_1)";return(0);}
639
+ if (size(#) == 0)
640
+ {
641
+ if (size(ih_1) != size(is_1)){"ERROR: size(ih_1) != size(is_1)";return(0);}
642
+ if (size(ih_1) != size(im_1)){"ERROR: size(ih_1) != size(im_1)";return(0);}
643
+ }
644
+
645
+ if (ih_1 != il_1){"ERROR: ih_1 != il_1";return(0);}
646
+ if (size(#) == 0)
647
+ {
648
+ if (ih_1 != is_1){"ERROR: ih_1 != is_1";return(0);}
649
+ if (ih_1 != im_1){"ERROR: ih_1 != im_1";return(0);}
650
+ }
651
+
652
+
653
+ if (size(ih) != size(ih_1)) {"ERROR: size(ih) != size(ih_1)";return(0);}
654
+ if (ih != ih_1) {"ERROR: ih != ih_1";return(0);}
655
+
656
+ return (ret);
657
+ }
658
+ example
659
+ {
660
+ "EXAMPLE: "; echo = 2;
661
+ ring an=0,(w,x,y,z),(dp,C);
662
+ ideal i=
663
+ 1w2xy+1w2xz+1w2yz+1wxyz+1x2yz+1xy2z+1xyz2,
664
+ 1w4x+1w4z+1w3yz+1w2xyz+1wx2yz+1x2y2z+1xy2z2,
665
+ 1w6+1w5z+1w4xz+1w3xyz+1w2xy2z+1wx2y2z+1x2y2z2;
666
+ tst_test_res(i);
667
+ kill an;
668
+ }
669
+
670
+ /////////////////////////////////////////////////////////////////////////////
671
+ proc tst_rgen_init_weights(int n)
672
+ {
673
+ intvec v = 1..n;
674
+ return (v);
675
+ }
676
+
677
+ proc tst_rgen_init_matrix(int n)
678
+ {
679
+ intmat m[n][n];
680
+ int i;
681
+ // let us emulate lp
682
+ for (i=1; i<= n; i++)
683
+ {
684
+ m[i,i] = 1;
685
+ }
686
+ return (m);
687
+ }
688
+
689
+ proc tst_rgen_generate_block(int n_vars, string simple_ordering, int extra_weights)
690
+ {
691
+ string order = simple_ordering;
692
+ if (extra_weights > n_vars)
693
+ {
694
+ extra_weights = n_vars;
695
+ }
696
+
697
+ if ((simple_ordering[1] == "W") || (simple_ordering[1] == "w"))
698
+ {
699
+ order = order + "(" + string(tst_rgen_init_weights(n_vars)) + ")";
700
+ }
701
+ else
702
+ {
703
+ if (simple_ordering[1] == "M")
704
+ {
705
+ order = order + "(" + string(tst_rgen_init_matrix(n_vars)) + ")";
706
+ }
707
+ else
708
+ {
709
+ order = order + "(" + string(n_vars) + ")";
710
+ }
711
+ }
712
+ if (extra_weights >= 1)
713
+ {
714
+ order = "a(" + string(tst_rgen_init_weights(extra_weights)) + ")," + order;
715
+ }
716
+ return (order);
717
+ }
718
+
719
+ proc tst_rgen_generate_blocks(int n_vars, list simple_orderings, intvec extra_weights)
720
+ {
721
+ int i;
722
+ int j;
723
+ list blocks;
724
+
725
+ for (i=1; i<=size(simple_orderings); i++)
726
+ {
727
+ for (j=1; j<=size(extra_weights); j++)
728
+ {
729
+ blocks = blocks + list(tst_rgen_generate_block(n_vars, simple_orderings[i], extra_weights[j]));
730
+ }
731
+ }
732
+ return (blocks);
733
+ }
734
+
735
+ proc tst_rgen_generate_product_orderings(int n_vars, list simple_orderings, intvec extra_weights, intvec products)
736
+ {
737
+ list p_orderings;
738
+ int i;
739
+ int nn_vars, j, k,l;
740
+ list nb_orderings;
741
+ string n_ordering;
742
+
743
+ for (i=1;i<=size(products);i++)
744
+ {
745
+ if (products[i] > 1 && products[i] <= n_vars)
746
+ {
747
+ nn_vars = n_vars div products[i];
748
+ nb_orderings = tst_rgen_generate_blocks(nn_vars, simple_orderings, extra_weights);
749
+ for (j=1; j<=size(nb_orderings); j++)
750
+ {
751
+ n_ordering = nb_orderings[j];
752
+ for (k=2; k<=products[i]; k++)
753
+ {
754
+ l = (j + k - 1) % size(nb_orderings);
755
+ if (l == 0)
756
+ {
757
+ l = size(nb_orderings);
758
+ }
759
+ n_ordering = n_ordering + "," + nb_orderings[l];
760
+ }
761
+ if (products[i]*nn_vars < n_vars)
762
+ {
763
+ n_ordering = n_ordering + ", lp";
764
+ }
765
+ p_orderings = p_orderings + list(n_ordering);
766
+ }
767
+ }
768
+ else
769
+ {
770
+ if (products[i] == 1)
771
+ {
772
+ p_orderings = p_orderings + tst_rgen_generate_blocks(n_vars, simple_orderings, extra_weights);
773
+ }
774
+ }
775
+ }
776
+ if (size(p_orderings) < 1)
777
+ {
778
+ p_orderings = tst_rgen_generate_blocks(n_vars, simple_orderings, extra_weights);
779
+ }
780
+ return (p_orderings);
781
+ }
782
+
783
+
784
+ proc tst_rgen_init()
785
+ {
786
+ if (! defined(tst_rgen_charstrs))
787
+ {
788
+ list tst_rgen_charstrs;
789
+ export(tst_rgen_charstrs);
790
+ tst_rgen_charstrs = list("32003", "0");
791
+ }
792
+ if (! defined(tst_rgen_nvars))
793
+ {
794
+ intvec tst_rgen_nvars;
795
+ export(tst_rgen_nvars);
796
+ tst_rgen_nvars = 1..10;
797
+ }
798
+ if (! defined(tst_rgen_simple_orderings))
799
+ {
800
+ list tst_rgen_simple_orderings;
801
+ export(tst_rgen_simple_orderings);
802
+ tst_rgen_simple_orderings = list("lp", "dp", "Dp", "ls", "ds", "Ds", "wp","Wp","ws","Ws","M");
803
+ }
804
+ if (! defined(tst_rgen_comp_orderings))
805
+ {
806
+ list tst_rgen_comp_orderings;
807
+ export(tst_rgen_comp_orderings);
808
+ tst_rgen_comp_orderings = list("", "C", "c", "CC", "cc");
809
+ }
810
+ if (! defined(tst_rgen_products))
811
+ {
812
+ intvec tst_rgen_products;
813
+ export(tst_rgen_products);
814
+ tst_rgen_products = 1..3;
815
+ }
816
+ if (! defined(tst_rgen_extra_weights))
817
+ {
818
+ intvec tst_rgen_extra_weights;
819
+ export(tst_rgen_extra_weights);
820
+ tst_rgen_extra_weights = 0..2;
821
+ }
822
+
823
+ if (! defined(tst_rgen_exp_bounds))
824
+ {
825
+ list tst_rgen_exp_bounds;
826
+ export(tst_rgen_exp_bounds);
827
+ }
828
+
829
+ if (! defined(tst_rgen_char_index))
830
+ {
831
+ int tst_rgen_char_index, tst_rgen_var_index, tst_rgen_comp_index, tst_rgen_ordering_index, tst_rgen_exp_bounds_index;
832
+ list tst_rgen_orderings;
833
+ export(tst_rgen_char_index);
834
+ export(tst_rgen_var_index);
835
+ export(tst_rgen_comp_index);
836
+ export(tst_rgen_ordering_index);
837
+ export(tst_rgen_orderings);
838
+ export(tst_rgen_exp_bounds_index);
839
+ }
840
+ tst_rgen_char_index = 1;
841
+ tst_rgen_var_index = 1;
842
+ tst_rgen_comp_index = 1;
843
+ tst_rgen_ordering_index = 0;
844
+ tst_rgen_exp_bounds_index = 1;
845
+ tst_rgen_orderings = tst_rgen_generate_product_orderings(tst_rgen_nvars[1], tst_rgen_simple_orderings, tst_rgen_extra_weights, tst_rgen_products);
846
+ }
847
+
848
+ proc tst_next_ring()
849
+ {
850
+ tst_rgen_ordering_index++;
851
+ if (tst_rgen_ordering_index > size(tst_rgen_orderings))
852
+ {
853
+ tst_rgen_comp_index++;
854
+ if (tst_rgen_comp_index > size(tst_rgen_comp_orderings))
855
+ {
856
+ tst_rgen_exp_bounds_index++;
857
+ if (tst_rgen_exp_bounds_index > size(tst_rgen_exp_bounds))
858
+ {
859
+ tst_rgen_var_index++;
860
+ if (tst_rgen_var_index > size(tst_rgen_nvars))
861
+ {
862
+ tst_rgen_char_index++;
863
+ if (tst_rgen_char_index > size(tst_rgen_charstrs))
864
+ {
865
+ return ("");
866
+ }
867
+ tst_rgen_var_index = 1;
868
+ }
869
+ tst_rgen_exp_bounds_index = 1;
870
+ }
871
+ tst_rgen_comp_index = 1;
872
+ tst_rgen_orderings = tst_rgen_generate_product_orderings(tst_rgen_nvars[tst_rgen_var_index], tst_rgen_simple_orderings, tst_rgen_extra_weights, tst_rgen_products);
873
+ }
874
+ tst_rgen_ordering_index = 1;
875
+ }
876
+
877
+ if (tst_rgen_nvars[tst_rgen_var_index] <= 26)
878
+ {
879
+ string rs = "(" + tst_rgen_charstrs[tst_rgen_char_index] + "),(" + A_Z("a", tst_rgen_nvars[tst_rgen_var_index]) + "),(";
880
+ }
881
+ else
882
+ {
883
+ string rs = "(" + tst_rgen_charstrs[tst_rgen_char_index] + "),(x(1.." + string(tst_rgen_nvars[tst_rgen_var_index]) + ")),(";
884
+ }
885
+
886
+ if (tst_rgen_comp_orderings[tst_rgen_comp_index] == "CC")
887
+ {
888
+ rs = rs + "C," + tst_rgen_orderings[tst_rgen_ordering_index];
889
+ }
890
+ else
891
+ {
892
+ if (tst_rgen_comp_orderings[tst_rgen_comp_index] == "cc")
893
+ {
894
+ rs = rs + "c," + tst_rgen_orderings[tst_rgen_ordering_index];
895
+ }
896
+ else
897
+ {
898
+ if (tst_rgen_comp_orderings[tst_rgen_comp_index] == "C")
899
+ {
900
+ rs = rs + tst_rgen_orderings[tst_rgen_ordering_index] + ", C";
901
+ }
902
+ else
903
+ {
904
+ if (tst_rgen_comp_orderings[tst_rgen_comp_index] == "c")
905
+ {
906
+ rs = rs + tst_rgen_orderings[tst_rgen_ordering_index] + ",c";
907
+ }
908
+ else
909
+ {
910
+ rs = rs + tst_rgen_orderings[tst_rgen_ordering_index];
911
+ }
912
+ }
913
+ }
914
+ }
915
+ if (size(tst_rgen_exp_bounds) > 0)
916
+ {
917
+ if (! defined(tst_rgen_Lring))
918
+ {
919
+ string tst_rgen_Lring;
920
+ export(tst_rgen_Lring);
921
+ }
922
+ tst_rgen_Lring = rs + ",L(" + string(tst_rgen_exp_bounds[tst_rgen_exp_bounds_index]) + "))";
923
+ if (system("version") >= 1309)
924
+ {
925
+ rs = tst_rgen_Lring;
926
+ }
927
+ else
928
+ {
929
+ rs = rs + ")";
930
+ }
931
+ }
932
+ else
933
+ {
934
+ rs = rs + ")";
935
+ }
936
+
937
+ return (rs);
938
+ }
939
+
940
+
941
+ proc tst_FullIdeal()
942
+ {
943
+ ideal id, mid;
944
+ int n_vars = nvars(basering);
945
+ int i,j;
946
+ for (i=1; i<=n_vars; i++)
947
+ {
948
+ mid = maxideal(i);
949
+ id[i] = mid[1];
950
+ for (j=2;j<=size(mid); j++)
951
+ {
952
+ id[i] = id[i] + mid[j];
953
+ }
954
+ }
955
+ return (id);
956
+ }
957
+
958
+ proc tst_cyclic(int n)
959
+ {
960
+ int i, j, k, l;
961
+ ideal id;
962
+
963
+ poly p, q;
964
+ for (i=1; i<n; i++)
965
+ {
966
+ p = 0;
967
+ k = 1;
968
+ for (j=1; j<=n; j++)
969
+ {
970
+ q = var(j);
971
+ k = j + 1;
972
+ if (k > n)
973
+ {
974
+ k=1;
975
+ }
976
+ for (l=2; l <= i; l++)
977
+ {
978
+ q = q*var(k);
979
+ k++;
980
+ if (k > n)
981
+ {
982
+ k=1;
983
+ }
984
+ }
985
+ p = p + q;
986
+ }
987
+ id[i] = p;
988
+ }
989
+
990
+ p = var(1);
991
+ for (i=2;i<=n;i++)
992
+ {
993
+ p = p*var(i);
994
+ }
995
+ id[n] = p -1;
996
+ return (id);
997
+ }
998
+
999
+ proc tst_hom_cyclic(int n)
1000
+ {
1001
+ ideal i = tst_cyclic(n);
1002
+ i[n] = i[n] + 1 + var(n+1)^n;
1003
+ return (i);
1004
+ }
1005
+
1006
+ proc tst_TestMult(ideal id, int how_often, int Module)
1007
+ {
1008
+ int i, j, l, is, s;
1009
+ module m;
1010
+ def ret;
1011
+ poly p;
1012
+ if (Module > 0)
1013
+ {
1014
+ for (i=1; i<= size(id); i++)
1015
+ {
1016
+ m[i] = id[i] + gen(2)*id[i];
1017
+ }
1018
+ ret = m;
1019
+ }
1020
+ else
1021
+ {
1022
+ ret = id;
1023
+ }
1024
+ l = 0;
1025
+ for (i=1; i<= how_often; i++)
1026
+ {
1027
+ l++;
1028
+ if (l > size(id))
1029
+ {
1030
+ l = 1;
1031
+ }
1032
+ for (j=1;j<=size(id);j++)
1033
+ {
1034
+ ret[j] = ret[j]*id[l];
1035
+ }
1036
+ }
1037
+ for (i=1; i<=size(ret); i++)
1038
+ {
1039
+ is = size(ret[i]);
1040
+ s = s + is;
1041
+ string(i) + " : " + string(is) + " : " + string(lead(ret[i]));
1042
+ }
1043
+ "s : " + string(s);
1044
+ }
1045
+
1046
+ proc tst_TestAdd(ideal id, int how_often, int Module)
1047
+ {
1048
+ int i, j, k, l;
1049
+ module m;
1050
+ ideal idl = 1, maxideal(1);
1051
+
1052
+ if (Module > 0)
1053
+ {
1054
+ for (i=1; i<= size(id); i++)
1055
+ {
1056
+ m[i] = id[i] + gen(2)*id[i];
1057
+ }
1058
+ }
1059
+ def r,p;
1060
+ if (Module > 0)
1061
+ {
1062
+ r = m;
1063
+ }
1064
+ else
1065
+ {
1066
+ r = id;
1067
+ }
1068
+ l = 0;
1069
+ for (j=1; j<= how_often; j++)
1070
+ {
1071
+ l++;
1072
+ if (l > size(idl))
1073
+ {
1074
+ l = 1;
1075
+ }
1076
+ for (k=1; k<=size(r); k++)
1077
+ {
1078
+ p = idl[l]*r[k];
1079
+ for (i=1; i<=k;i++)
1080
+ {
1081
+ p = p + r[i];
1082
+ }
1083
+ r[k] = p;
1084
+ }
1085
+ }
1086
+ int is, s;
1087
+ for (i=1; i<=size(r); i++)
1088
+ {
1089
+ is = size(r[i]);
1090
+ s = s + is;
1091
+ string(i) + " : " + string(is) + " : " + string(lead(r[i]));
1092
+ }
1093
+ "s : " + string(s);
1094
+ }
1095
+
1096
+ proc tst_PrintStats(def id)
1097
+ {
1098
+ int i, is, s;
1099
+
1100
+ for (i=1; i<=size(id); i++)
1101
+ {
1102
+ is = size(id[i]);
1103
+ s = s + is;
1104
+ string(i) + " : " + string(is) + " : " + string(lead(id[i]));
1105
+ }
1106
+ "s : " + string(s);
1107
+ }
1108
+