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,959 @@
1
+ ////////////////////////////////////////////////////////////////////////////////
2
+ version="version absfact.lib 4.1.2.0 Feb_2019 "; // $Id: 493e1bf99c9c2c29fe49fb584d903890e4d93d57 $
3
+ category="Factorization";
4
+ info="
5
+ LIBRARY: absfact.lib Absolute factorization for characteristic 0
6
+ AUTHORS: Wolfram Decker, decker at math.uni-sb.de
7
+ Gregoire Lecerf, lecerf at math.uvsq.fr
8
+ Gerhard Pfister, pfister at mathematik.uni-kl.de
9
+ Martin Lee, mlee at mathematik.uni-kl.de
10
+
11
+ OVERVIEW:
12
+ A library for computing the absolute factorization of multivariate
13
+ polynomials f with coefficients in a field K of characteristic zero.
14
+ Using Trager's idea, the implemented algorithm computes an absolutely
15
+ irreducible factor by factorizing over some finite extension field L
16
+ (which is chosen such that V(f) has a smooth point with coordinates in L).
17
+ Then a minimal extension field is determined making use of the
18
+ Rothstein-Trager partial fraction decomposition algorithm.
19
+ absFactorizeBCG uses the algorithm of Bertone, Cheze and Galligo for bivariate
20
+ polynomials and similar ideas as above to reduce to this case.
21
+
22
+ REFERENCES:
23
+ G. Cheze, G. Lecerf: Lifting and recombination techniques for absolute
24
+ factorization. Journal of Complexity, 23(3):380-420, 2007.
25
+ C. Bertone, G. Cheze, and A. Galligo: Modular las vegas algorithms for
26
+ polynomial absolute factorization. J. Symb. Comput.,
27
+ 45(12):1280-1295, December 2010
28
+
29
+ KEYWORDS: factorization; absolute factorization.
30
+ SEE ALSO: factorize
31
+
32
+ PROCEDURES:
33
+ absFactorize(); absolute factorization of poly
34
+ absFactorizeBCG(); absolute factorization of poly
35
+ ";
36
+
37
+ ////////////////////////////////////////////////////////////////////
38
+ static proc partialDegree(poly p, int i)
39
+ "USAGE: partialDegree(p,i); p poly, i int
40
+ RETURN: int, the degree of p in the i-th variable
41
+ "
42
+ {
43
+ int n = nvars(basering);
44
+ intvec tmp;
45
+ tmp[n] = 0;
46
+ tmp[i] = 1;
47
+ return(deg(p,tmp));
48
+ }
49
+ ////////////////////////////////////////////////////////////////////
50
+ static proc belongTo(string s, list l)
51
+ "USAGE: belongTo(s,l); s string, l list
52
+ RETURN: 1 if s belongs to l, 0 otherwise
53
+ "
54
+ {
55
+ string tmp;
56
+ for(int i = 1; i <= size(l); i++) {
57
+ tmp = l[i];
58
+ if (tmp == s) {
59
+ return(1);
60
+ }
61
+ }
62
+ return(0);
63
+ }
64
+ ////////////////////////////////////////////////////////////////////
65
+ static proc variableWithSmallestPositiveDegree(poly p)
66
+ "USAGE: variableWithSmallestPositiveDegree(p); p poly
67
+ RETURN: int; 0 if p is constant. Otherwise, the index of the
68
+ variable which has the smallest positive degree in p.
69
+ "
70
+ {
71
+ int n = nvars(basering);
72
+ int v = 0;
73
+ int d = deg(p);
74
+ int d_loc;
75
+ for(int i = 1; i <= n; i++) {
76
+ d_loc = partialDegree(p, i);
77
+ if (d_loc >= 1 and d_loc <= d) {
78
+ v = i;
79
+ d = d_loc;
80
+ }
81
+ }
82
+ return(v);
83
+ }
84
+ ////////////////////////////////////////////////////////////////////
85
+ static proc smallestProperSimpleFactor(poly p)
86
+ "USAGE: smallestProperSimpleFactor(p); p poly
87
+ RETURN: poly: a proper irreducible simple factor of p of smallest
88
+ degree. If no such factor exists, 0 is returned.
89
+ "
90
+ {
91
+ list p_facts = factorize(p);
92
+ int s = size(p_facts[1]);
93
+ int d = deg(p)+1;
94
+ poly q = 0;
95
+ poly f;
96
+ int e;
97
+ for(int i = 1; i <= s; i++)
98
+ {
99
+ f = p_facts[1][i];
100
+ e = deg(f);
101
+ if (e >= 1 and e < d and p_facts[2][i] == 1)
102
+ {
103
+ q = f / leadcoef(f);
104
+ d = e;
105
+ }
106
+ }
107
+ return(q);
108
+ }
109
+ ////////////////////////////////////////////////////////////////////
110
+ static proc smallestProperFactor(poly p)
111
+ "USAGE: smallestProperFactor(p); p poly
112
+ RETURN: poly: a proper irreducible factor of p of smallest degree.
113
+ If p is constant, 0 is returned.
114
+ "
115
+ {
116
+ list p_facts = factorize(p);
117
+ int s = size(p_facts[1]);
118
+ int d = deg(p)+1;
119
+ poly q = 0;
120
+ poly f;
121
+ int e;
122
+ for(int i = 1; i <= s; i++)
123
+ {
124
+ f = p_facts[1][i];
125
+ e = deg(f);
126
+ if (e >= 1 and e < d)
127
+ {
128
+ q = f / leadcoef(f);
129
+ d = e;
130
+ }
131
+ }
132
+ return(q);
133
+ }
134
+ ////////////////////////////////////////////////////////////////////
135
+ static proc extensionContainingSmoothPoint(poly p, int m)
136
+ "USAGE: extensionContainingSmoothPoint(p,m); p poly, m int
137
+ RETURN: poly: an irreducible univariate polynomial that defines an
138
+ algebraic extension of the current ground field that contains
139
+ a smooth point of the hypersurface defined by p=0.
140
+ "
141
+ {
142
+ int n = nvars(basering) - 1;
143
+ poly q = 0;
144
+ int i;
145
+ list a;
146
+ for(i=1;i<=n+1;i++){a[i] = 0;}
147
+ a[m] = var(n+1);
148
+ // The list a is to be taken with random entries in [-e, e].
149
+ // Every 10 * n trial, e is incremented by 1.
150
+ int e = 1;
151
+ int nbtrial = 0;
152
+ map h;
153
+ while (q == 0)
154
+ {
155
+ h = basering, a[1..n+1];
156
+ q = smallestProperSimpleFactor(h(p));
157
+ for(i = 1; i <= n ; i = i + 1)
158
+ {
159
+ if (i != m)
160
+ {
161
+ a[i] = random(-e, e);
162
+ }
163
+ }
164
+ nbtrial++;
165
+ if (nbtrial >= 10 * n)
166
+ {
167
+ e = e + 1;
168
+ nbtrial = 0;
169
+ }
170
+ }
171
+ return(q);
172
+ }
173
+ ////////////////////////////////////////////////////////////////////
174
+ static proc RothsteinTragerResultant(poly g, poly f, int m)
175
+ "USAGE: RothsteinTragerResultant(g,f,m); g,f poly, m int
176
+ RETURN: poly
177
+ NOTE: To be called by the RothsteinTrager procedure only.
178
+ "
179
+ {
180
+ def MPz = basering;
181
+ int n = nvars(MPz) - 1;
182
+ int d = partialDegree(f, m);
183
+ poly df = diff(f, var(m));
184
+ list a;
185
+ int i;
186
+ for(i=1;i<=n+1;i++){ a[i] = 0; }
187
+ a[m] = var(m);
188
+ poly q = 0;
189
+ int e = 1;
190
+ int nbtrial = 0;
191
+ map h;
192
+ while (q == 0)
193
+ {
194
+ h = MPz, a[1..n+1];
195
+ q = resultant(h(f), h(df) * var(n+1) - h(g), var(m));
196
+ if (deg(q) == d)
197
+ {
198
+ return(q/leadcoef(q));
199
+ }
200
+ q = 0;
201
+ for(i = 1; i <= n ; i++)
202
+ {
203
+ if (i != m)
204
+ {
205
+ a[i] = random(-e, e);
206
+ }
207
+ }
208
+ nbtrial++;
209
+ if (nbtrial >= 10 * n)
210
+ {
211
+ e++;
212
+ nbtrial = 0;
213
+ }
214
+ }
215
+ }
216
+ ////////////////////////////////////////////////////////////////////
217
+ static proc RothsteinTrager(list g, poly p, int m, int expectedDegQ)
218
+ "USAGE: RothsteinTrager(g,p,m,d); g list, p poly, m,d int
219
+ RETURN: list L consisting of two entries of type poly
220
+ NOTE: the return value is the Rothstein-Trager partial fraction
221
+ decomposition of the quotient s/p, where s is a generic linear
222
+ combination of the elements of g. The genericity via d
223
+ (the expected degree of L[1]).
224
+ "
225
+ {
226
+ def MPz = basering;
227
+ int n = nvars(MPz) - 1;
228
+ poly dp = diff(p, var(m));
229
+ int r = size(g);
230
+ list a;
231
+ int i;
232
+ for(i=1;i<=r;i++){a[i] = 0;}
233
+ a[r] = 1;
234
+ int nbtrial = 0;
235
+ int e = 1;
236
+ poly s;
237
+ poly q;
238
+ while (1)
239
+ {
240
+ s = 0;
241
+ for(i = 1; i <= r; i++){s = s + a[i] * g[i];}
242
+ q = RothsteinTragerResultant(s, p, m);
243
+ q = smallestProperFactor(q);
244
+ if (deg(q) == expectedDegQ)
245
+ {
246
+ // Go into the quotient by q(z)=0
247
+ ring MP_z = (0,var(n+1)), (x(1..n)), dp;
248
+ list lMP_z = ringlist(MP_z);
249
+ lMP_z[1][4] = ideal(imap(MPz,q));
250
+ list tmp = ringlist(MPz)[2];
251
+ lMP_z[2] = list(tmp[1..n]);
252
+ def MPq = ring(lMP_z);
253
+ setring(MPq);
254
+ poly f = gcd(imap(MPz, p), par(1) * imap(MPz, dp) - imap(MPz, s));
255
+ f = f / leadcoef(f);
256
+ setring(MPz);
257
+ return(list(q, imap(MPq, f)));
258
+ }
259
+ for(i = 1; i <= r ; i++)
260
+ {
261
+ a[i] = random(-e, e);
262
+ }
263
+ nbtrial++;
264
+ if (nbtrial >= 10 * r)
265
+ {
266
+ e++;
267
+ nbtrial = 0;
268
+ }
269
+ }
270
+ }
271
+ ////////////////////////////////////////////////////////////////////
272
+ static proc absFactorizeIrreducible(poly p)
273
+ "USAGE: absFactorizeIrreducible(p); p poly
274
+ ASSUME: p is an irreducible polynomial that does not depend on the last
275
+ variable @z of the basering.
276
+ RETURN: list L of two polynomials: q=L[1] is an irreducible polynomial of
277
+ minimal degree in @z such that p has an absolute factor
278
+ over K[@z]/<q>, and f represents such an absolute factor.
279
+ "
280
+ {
281
+ int dblevel = printlevel - voice + 2;
282
+ dbprint(dblevel,"Entering absfact.lib::absFactorizeIrreducible with ",p);
283
+ def MPz = basering;
284
+ int d = deg(p);
285
+ int n = nvars(MPz) - 1;
286
+
287
+ if (d < 1)
288
+ {
289
+ return(list(var(n+1), p));
290
+ }
291
+ int m = variableWithSmallestPositiveDegree(p);
292
+ // var(m) is now considered as the main variable.
293
+
294
+ poly q = extensionContainingSmoothPoint(p, m);
295
+ int r = deg(q);
296
+ if (r == 1)
297
+ {
298
+ return(list(var(n+1), p));
299
+ }
300
+
301
+ list tmp = ringlist(MPz)[2];
302
+ // Go into the quotient by q(z)=0
303
+ ring MP_z = (0,var(n+1)), (x(1..n)), dp;
304
+ list lMP_z = ringlist(MP_z);
305
+ lMP_z[1][4] = ideal(imap(MPz,q));
306
+ lMP_z[2] = list(tmp[1..n]);
307
+ def MPq = ring(lMP_z);
308
+ setring(MPq);
309
+ dbprint(dblevel-1,"Factoring in algebraic extension");
310
+ // "Factoring p in the algebraic extension...";
311
+ poly p_loc = imap(MPz, p);
312
+ poly f = smallestProperSimpleFactor(p_loc);
313
+ int degf = deg(f);
314
+
315
+ if (degf == d)
316
+ {
317
+ setring(MPz);
318
+ return(list(var(n+1), p));
319
+ }
320
+
321
+ if (degf * r == d)
322
+ {
323
+ setring(MPz);
324
+ return(list(q, imap(MPq, f)));
325
+ }
326
+ dbprint(dblevel-1,"Absolutely irreducible factor found");
327
+ dbprint(dblevel,"Minimizing field extension");
328
+ // "Need to find a minimal extension";
329
+ poly co_f = p_loc / f;
330
+ poly e = diff(f, var(m)) * co_f;
331
+ setring(MPz);
332
+ poly e = imap(MPq, e);
333
+ list g;
334
+ int i;
335
+ for(i = 1; i <= r; i++)
336
+ {
337
+ g[i] = subst(e, var(n+1), 0);
338
+ e = diff(e, var(n+1));
339
+ }
340
+ return(RothsteinTrager(g, p, m, d div degf));
341
+ }
342
+
343
+ ////////////////////////////////////////////////////////////////////
344
+ proc absFactorize(poly p, list #)
345
+ "USAGE: absFactorize(p [,s]); p poly, s string
346
+ ASSUME: coefficient field is the field of rational numbers or a
347
+ transcendental extension thereof
348
+ RETURN: ring @code{R} which is obtained from the current basering
349
+ by adding a new parameter (if a string @code{s} is given as a
350
+ second input, the new parameter gets this string as name). The ring
351
+ @code{R} comes with a list @code{absolute_factors} with the
352
+ following entries:
353
+ @format
354
+ absolute_factors[1]: ideal (the absolute factors)
355
+ absolute_factors[2]: intvec (the multiplicities)
356
+ absolute_factors[3]: ideal (the minimal polynomials)
357
+ absolute_factors[4]: int (total number of nontriv. absolute factors)
358
+ @end format
359
+ The entry @code{absolute_factors[1][1]} is a constant, the
360
+ entry @code{absolute_factors[3][1]} is the parameter added to the
361
+ current ring.@*
362
+ Each of the remaining entries @code{absolute_factors[1][j]} stands for
363
+ a class of conjugated absolute factors. The corresponding entry
364
+ @code{absolute_factors[3][j]} is the minimal polynomial of the
365
+ field extension over which the factor is minimally defined (its degree
366
+ is the number of conjugates in the class). If the entry
367
+ @code{absolute_factors[3][j]} coincides with @code{absolute_factors[3][1]},
368
+ no field extension was necessary for the @code{j}th (class of)
369
+ absolute factor(s).
370
+ NOTE: All factors are presented denominator- and content-free. The constant
371
+ factor (first entry) is chosen such that the product of all (!) the
372
+ (denominator- and content-free) absolute factors of @code{p} equals
373
+ @code{p / absolute_factors[1][1]}.
374
+ SEE ALSO: factorize, absPrimdecGTZ
375
+ EXAMPLE: example absFactorize; shows an example
376
+ "
377
+ {
378
+ int dblevel = printlevel - voice + 2;
379
+ dbprint(dblevel,"Entering absfact.lib::absFactorize with ",p);
380
+ def MP = basering;
381
+ int i;
382
+ if (char(MP) != 0)
383
+ {
384
+ ERROR("// absfact.lib::absFactorize is only implemented for "+
385
+ "characteristic 0");
386
+ }
387
+ if(minpoly!=0)
388
+ {
389
+ ERROR("// absfact.lib::absFactorize is not implemented for algebraic "
390
+ +"extensions");
391
+ }
392
+
393
+ int n = nvars(MP);
394
+ int pa=npars(MP);
395
+ list lMP= ringlist(MP);
396
+ list buflMP= lMP;
397
+ intvec vv,vk;
398
+ for(i=1;i<=n;i++){vv[i]=1;}
399
+ vk=vv,1;
400
+
401
+ //if the basering has parameters, add the parameters to the variables
402
+ //takes care about coefficients and possible denominators
403
+ if(pa>0)
404
+ {
405
+ poly qh=cleardenom(p);
406
+ if (p==0)
407
+ {
408
+ number cok=0;
409
+ }
410
+ else
411
+ {
412
+ number cok=leadcoef(p)/leadcoef(qh);
413
+ }
414
+ p=qh;
415
+ string sp;
416
+ for(i=1;i<=npars(basering);i++)
417
+ {
418
+ sp=string(par(i));
419
+ sp=sp[2..size(sp)-1];
420
+ lMP[2][n+i]=sp;
421
+ vv=vv,1;
422
+ }
423
+ lMP[1]=0;
424
+ n=n+npars(MP);
425
+ }
426
+
427
+ // MPz is obtained by adding the new variable @z to MP
428
+ // ordering is wp(1...1)
429
+ // All the above subroutines work in MPz
430
+ string newvar;
431
+ if(size(#)>0)
432
+ {
433
+ if(typeof(#[1])=="string")
434
+ {
435
+ newvar=#[1];
436
+ }
437
+ else
438
+ {
439
+ newvar = "a";
440
+ }
441
+ }
442
+ else
443
+ {
444
+ newvar = "a";
445
+ }
446
+ if (newvar=="a")
447
+ {
448
+ if(belongTo(newvar, lMP[2])||defined(a)){newvar = "b";}
449
+ if(belongTo(newvar, lMP[2])||defined(b)){newvar = "c";}
450
+ if(belongTo(newvar, lMP[2])||defined(c)){newvar = "@c";}
451
+ while(belongTo(newvar, lMP[2]))
452
+ {
453
+ newvar = "@" + newvar;
454
+ }
455
+ }
456
+ lMP[2][n+1] = newvar;
457
+
458
+ // new ordering
459
+ vv=vv,1;
460
+ list orst;
461
+ orst[1]=list("wp",vv);
462
+ orst[2]=list("C",0);
463
+ lMP[3]=orst;
464
+
465
+ def MPz = ring(lMP);
466
+ setring(MPz);
467
+ poly p=imap(MP,p);
468
+
469
+ // special treatment in the homogeneous case, dropping one variable
470
+ // by substituting the first variable by 1
471
+ int ho=homog(p);
472
+ if(ho)
473
+ {
474
+ int dh=deg(p);
475
+ p=subst(p,var(1),1);
476
+ int di=deg(p);
477
+ }
478
+ list rat_facts = factorize(p);
479
+ int s = size(rat_facts[1]);
480
+ list tmpf; // absolute factors
481
+ intvec tmpm; // respective multiplicities
482
+ tmpf[1] = list(var(n+1), leadcoef(imap(MP,p)));
483
+ tmpm[1] = 1;
484
+ poly tmp;
485
+ for(i = 2; i <= s; i++)
486
+ {
487
+ tmp = rat_facts[1][i];
488
+ tmp = tmp / leadcoef(tmp);
489
+ tmpf[i] = absFactorizeIrreducible(tmp);
490
+ tmpm[i] = rat_facts[2][i];
491
+ }
492
+ // the homogeneous case, homogenizing the result
493
+ // the new variable has to have degree 0
494
+ // need to change the ring
495
+ if(ho)
496
+ {
497
+ list ll=ringlist(MPz);
498
+ vv[size(vv)]=0;
499
+ ll[3][1][2]=vv;
500
+ def MPhelp=ring(ll);
501
+ setring(MPhelp);
502
+ list tmpf=imap(MPz,tmpf);
503
+ for(i=2;i<=size(tmpf);i++)
504
+ {
505
+ tmpf[i][2]=homog(tmpf[i][2],var(1));
506
+ }
507
+ if(dh>di)
508
+ {
509
+ tmpf[size(tmpf)+1]=list(var(n+1),var(1));
510
+ tmpm[size(tmpm)+1]=dh-di;
511
+ }
512
+ setring(MPz);
513
+ tmpf=imap(MPhelp,tmpf);
514
+ }
515
+ // in case of parameters we have to go back to the old ring
516
+ // taking care about constant factors
517
+ if(pa)
518
+ {
519
+ setring(MP);
520
+ n=nvars(MP);
521
+ list lM=ringlist(MP);
522
+ orst[1]=list("wp",vk);
523
+ orst[2]=list("C",0);
524
+ lM[2][n+1] = newvar;
525
+ lM[3]=orst;
526
+ def MPout=ring(lM);
527
+ setring(MPout);
528
+ list tmpf=imap(MPz,tmpf);
529
+ number cok=imap(MP,cok);
530
+ tmpf[1][2]=cok*tmpf[1][2];
531
+ }
532
+ else
533
+ {
534
+ def MPout=MPz;
535
+ }
536
+ // if we want the output as string
537
+ if(size(#)>0)
538
+ {
539
+ if(typeof(#[1])=="int")
540
+ {
541
+ if(#[1]==77)
542
+ { // undocumented feature for Gerhard's absPrimdecGTZ
543
+ if (size(tmpf)<2){ list abs_fac = list(var(n+1),poly(1)); }
544
+ else { list abs_fac=tmpf[2..size(tmpf)]; }
545
+ abs_fac=abs_fac,newvar;
546
+ string result = string(abs_fac);
547
+ setring(MP);
548
+ return(result);
549
+ }
550
+ }
551
+ }
552
+ // preparing the output for SINGULAR standard
553
+ // a list: factors(ideal),multiplicities(intvec),minpolys(ideal),
554
+ // number of factors in the absolute factorization
555
+ // the output(except the coefficient) should have no denominators
556
+ // and no content
557
+ ideal facts,minpols;
558
+ intvec mults;
559
+ int nfacts;
560
+ number co=1;
561
+ minpols[1]=tmpf[1][1];
562
+ facts[1]=tmpf[1][2]; //the coefficient
563
+ for(i=2;i<=size(tmpf);i++)
564
+ {
565
+ minpols[i]=cleardenom(tmpf[i][1]);
566
+ facts[i]=cleardenom(tmpf[i][2]);
567
+ co=co*(leadcoef(tmpf[i][2])/leadcoef(facts[i]))^(deg(minpols[i])*tmpm[i]);
568
+ }
569
+ facts[1]=facts[1]*co;
570
+ for(i=1;i<=size(tmpm);i++)
571
+ {
572
+ mults[i]=tmpm[i];
573
+ }
574
+ for(i=2;i<=size(mults);i++)
575
+ {
576
+ nfacts=nfacts+mults[i]*deg(minpols[i]);
577
+ }
578
+ list absolute_factors=facts,mults,minpols,nfacts;
579
+
580
+ // create ring with extra parameter `newvar` for output:
581
+ setring(MP);
582
+ list Lout=ringlist(MP);
583
+ if(!pa)
584
+ {
585
+ list Lpar=list(char(MP),list(newvar),list(list("lp",intvec(1))),ideal(0));
586
+ }
587
+ else
588
+ {
589
+ list Lpar=Lout[1];
590
+ Lpar[2][size(Lpar[2])+1]=newvar;
591
+ vv=Lpar[3][1][2];
592
+ vv=vv,1;
593
+ Lpar[3][1][2]=vv;
594
+ }
595
+ Lout[1]=Lpar;
596
+ def MPo=ring(Lout);
597
+ setring(MPo);
598
+ list absolute_factors=imap(MPout,absolute_factors);
599
+ export absolute_factors;
600
+ setring(MP);
601
+
602
+ dbprint( printlevel-voice+3,"
603
+ // 'absFactorize' created a ring, in which a list absolute_factors (the
604
+ // absolute factors) is stored.
605
+ // To access the list of absolute factors, type (if the name S was assigned
606
+ // to the return value):
607
+ // setring(S); absolute_factors;
608
+ ");
609
+ return(MPo);
610
+ }
611
+ example
612
+ {
613
+ "EXAMPLE:"; echo = 2;
614
+ ring R = (0), (x,y), lp;
615
+ poly p = (-7*x^2 + 2*x*y^2 + 6*x + y^4 + 14*y^2 + 47)*(5x2+y2)^3*(x-y)^4;
616
+ def S = absFactorize(p) ;
617
+ setring(S);
618
+ absolute_factors;
619
+ }
620
+
621
+ ////////////////////////////////////////////////////////////////////////////////
622
+ proc absFactorizeBCG(poly p, list #)
623
+ "USAGE: absFactorizeBCG(p [,s]); p poly, s string
624
+ ASSUME: coefficient field is the field of rational numbers or a
625
+ transcendental extension thereof
626
+ RETURN: ring @code{R} which is obtained from the current basering
627
+ by adding a new parameter (if a string @code{s} is given as a
628
+ second input, the new parameter gets this string as name). The ring
629
+ @code{R} comes with a list @code{absolute_factors} with the
630
+ following entries:
631
+ @format
632
+ absolute_factors[1]: ideal (the absolute factors)
633
+ absolute_factors[2]: intvec (the multiplicities)
634
+ absolute_factors[3]: ideal (the minimal polynomials)
635
+ absolute_factors[4]: int (total number of nontriv. absolute factors)
636
+ @end format
637
+ The entry @code{absolute_factors[1][1]} is a constant, the
638
+ entry @code{absolute_factors[3][1]} is the parameter added to the
639
+ current ring.@*
640
+ Each of the remaining entries @code{absolute_factors[1][j]} stands for
641
+ a class of conjugated absolute factors. The corresponding entry
642
+ @code{absolute_factors[3][j]} is the minimal polynomial of the
643
+ field extension over which the factor is minimally defined (its degree
644
+ is the number of conjugates in the class). If the entry
645
+ @code{absolute_factors[3][j]} coincides with @code{absolute_factors[3][1]},
646
+ no field extension was necessary for the @code{j}th (class of)
647
+ absolute factor(s).
648
+ NOTE: All factors are presented denominator- and content-free. The constant
649
+ factor (first entry) is chosen such that the product of all (!) the
650
+ (denominator- and content-free) absolute factors of @code{p} equals
651
+ @code{p / absolute_factors[1][1]}.
652
+ SEE ALSO: factorize, absPrimdecGTZ, absFactorize
653
+ EXAMPLE: example absFactorizeBCG; shows an example
654
+ "
655
+ {
656
+ int dblevel = printlevel - voice + 2;
657
+ dbprint(dblevel,"Entering absfact.lib::absFactorizeBCG with ",p);
658
+ def MP = basering;
659
+ int i;
660
+ if (char(MP) != 0)
661
+ {
662
+ ERROR("// absfact.lib::absFactorizeBCG is only implemented for "+
663
+ "characteristic 0");
664
+ }
665
+ if(minpoly!=0)
666
+ {
667
+ ERROR("// absfact.lib::absFactorizeBCG is not implemented for algebraic "
668
+ +"extensions");
669
+ }
670
+
671
+ int n = nvars(MP);
672
+ int pa=npars(MP);
673
+ list lMP= ringlist(MP);
674
+ intvec vv,vk;
675
+ for(i=1;i<=n;i++){vv[i]=1;}
676
+ vk=vv,1;
677
+
678
+ //if the basering has parameters, add the parameters to the variables
679
+ //takes care about coefficients and possible denominators
680
+ if(pa>0)
681
+ {
682
+ poly qh=cleardenom(p);
683
+ if (p==0)
684
+ {
685
+ number cok=0;
686
+ }
687
+ else
688
+ {
689
+ number cok=leadcoef(p)/leadcoef(qh);
690
+ }
691
+ p=qh;
692
+ string sp;
693
+ for(i=1;i<=npars(basering);i++)
694
+ {
695
+ sp=string(par(i));
696
+ sp=sp[2..size(sp)-1];
697
+ lMP[2][n+i]=sp;
698
+ vv=vv,1;
699
+ }
700
+ lMP[1]=0;
701
+ n=n+npars(MP);
702
+ }
703
+
704
+ // MPz is obtained by adding the new variable @z to MP
705
+ // ordering is wp(1...1)
706
+ // All the above subroutines work in MPz
707
+ string newvar;
708
+ if(size(#)>0)
709
+ {
710
+ if(typeof(#[1])=="string")
711
+ {
712
+ newvar=#[1];
713
+ }
714
+ else
715
+ {
716
+ newvar = "a";
717
+ }
718
+ }
719
+ else
720
+ {
721
+ newvar = "a";
722
+ }
723
+ if (newvar=="a")
724
+ {
725
+ if(belongTo(newvar, lMP[2])||defined(a)){newvar = "b";}
726
+ if(belongTo(newvar, lMP[2])||defined(b)){newvar = "c";}
727
+ if(belongTo(newvar, lMP[2])||defined(c)){newvar = "@c";}
728
+ while(belongTo(newvar, lMP[2]))
729
+ {
730
+ newvar = "@" + newvar;
731
+ }
732
+ }
733
+
734
+ // create ring with extra parameter `newvar` for output:
735
+ setring(MP);
736
+ list Lout=ringlist(MP);
737
+ if(!pa)
738
+ {
739
+ list Lpar=list(char(MP),list(newvar),list(list("lp",intvec(1))),ideal(0));
740
+ }
741
+ else
742
+ {
743
+ list Lpar=Lout[1];
744
+ Lpar[2][size(Lpar[2])+1]=newvar;
745
+ vv=Lpar[3][1][2];
746
+ vv=vv,1;
747
+ Lpar[3][1][2]=vv;
748
+ }
749
+ Lout[1]=Lpar;
750
+ def MPo=ring(Lout);
751
+ setring(MPo);
752
+
753
+ poly p=imap(MP,p);
754
+
755
+ // special treatment in the homogeneous case, dropping one variable
756
+ // by substituting the first variable by 1
757
+ int ho=homog(p);
758
+ if(ho)
759
+ {
760
+ int dh=deg(p);
761
+ p=subst(p,var(1),1);
762
+ int di=deg(p);
763
+ }
764
+
765
+ list tmpf=system ("absFact", p);
766
+
767
+ // the homogeneous case, homogenizing the result
768
+ // the new variable has to have degree 0
769
+ // need to change the ring
770
+ if(ho)
771
+ {
772
+ list ll=ringlist(MPo);
773
+ vv[size(vv)]=0;
774
+ ll[3][1][2]=vv;
775
+ def MPhelp=ring(ll);
776
+ setring(MPhelp);
777
+ list tmpf=imap(MPo,tmpf);
778
+ for(i=2;i<=size(tmpf[1]);i++)
779
+ {
780
+ tmpf[1][i]=homog(tmpf[1][i],var(1));
781
+ }
782
+ if(dh>di)
783
+ {
784
+ tmpf[1][size(tmpf[1])+1]=var(1);
785
+ tmpf[2][size(tmpf[2])+1]=dh-di;
786
+ tmpf[3][size(tmpf[3])+1]=par(npars(MPo));
787
+ tmpf[4]= tmpf[4]+dh-di;
788
+ }
789
+ setring(MPo);
790
+ tmpf=imap(MPhelp,tmpf);
791
+ }
792
+
793
+ if (pa)
794
+ {
795
+ number cok=imap(MP,cok);
796
+ tmpf[1][1]=cok*tmpf[1][1];
797
+ }
798
+
799
+ // if we want the output as string
800
+ if(size(#)>0)
801
+ {
802
+ if(typeof(#[1])=="int")
803
+ {
804
+ if(#[1]==77)
805
+ { // undocumented feature for Gerhard's absPrimdecGTZ
806
+ if (size(tmpf[1])<2){ list abs_fac = list(var(n+1),poly(1)); }
807
+ else
808
+ {
809
+ list abs_fac= tmpf[3][2];
810
+ abs_fac= abs_fac, tmpf[1][2];
811
+ for (i= 3; i <= size(tmpf[1]); i++)
812
+ {
813
+ abs_fac=abs_fac,tmpf[3][i];
814
+ abs_fac=abs_fac,tmpf[1][i];
815
+ }
816
+ }
817
+ abs_fac=abs_fac,newvar;
818
+ string result = string(abs_fac);
819
+ setring(MP);
820
+ return(result);
821
+ }
822
+ }
823
+ }
824
+
825
+ list absolute_factors= tmpf;
826
+ export absolute_factors;
827
+ setring(MP);
828
+
829
+ dbprint( printlevel-voice+3,"
830
+ // 'absFactorizeBCG' created a ring, in which a list absolute_factors (the
831
+ // absolute factors) is stored.
832
+ // To access the list of absolute factors, type (if the name S was assigned
833
+ // to the return value):
834
+ // setring(S); absolute_factors;
835
+ ");
836
+ return(MPo);
837
+ }
838
+ example
839
+ {
840
+ "EXAMPLE:"; echo = 2;
841
+ ring R = (0), (x,y), lp;
842
+ poly p = (-7*x^2 + 2*x*y^2 + 6*x + y^4 + 14*y^2 + 47)*(5x2+y2)^3*(x-y)^4;
843
+ def S = absFactorizeBCG(p) ;
844
+ setring(S);
845
+ absolute_factors;
846
+ }
847
+
848
+
849
+ /*
850
+ ring r=0,(x,t),dp;
851
+ poly p=x^4+(t^3-2t^2-2t)*x^3-(t^5-2t^4-t^2-2t-1)*x^2
852
+ -(t^6-4t^5+t^4+6t^3+2t^2)*x+(t^6-4t^5+2t^4+4t^3+t^2);
853
+ def S = absFactorize(p,"s");
854
+ setring(S);
855
+ absolute_factors;
856
+
857
+ ring r1=(0,a,b),(x,y),dp;
858
+ poly p=(a3-a2b+27ab3-27b4)/(a+b5)*x2+(a2+27b3)*y;
859
+ def S = absFactorize(p);
860
+ setring(S);
861
+ absolute_factors;
862
+
863
+ ring r2=0,(x,y,z,w),dp;
864
+ poly f=(x2+y2+z2)^2+w4;
865
+ def S =absFactorize(f);
866
+ setring(S);
867
+ absolute_factors;
868
+
869
+ ring r=0,(x),dp;
870
+ poly p=0;
871
+ def S = absFactorize(p);
872
+ setring(S);
873
+ absolute_factors;
874
+
875
+ ring r=0,(x),dp;
876
+ poly p=7/11;
877
+ def S = absFactorize(p);
878
+ setring(S);
879
+ absolute_factors;
880
+
881
+ ring r=(0,a,b),(x,y),dp;
882
+ poly p=0;
883
+ def S = absFactorize(p);
884
+ setring(S);
885
+ absolute_factors;
886
+
887
+ ring r=(0,a,b),(x,y),dp;
888
+ poly p=(a+1)/b;
889
+ def S = absFactorize(p);
890
+ setring(S);
891
+ absolute_factors;
892
+
893
+ ring r=(0,a,b),(x,y),dp;
894
+ poly p=(a+1)/b*x;
895
+ def S = absFactorize(p,"s");
896
+ setring(S);
897
+ absolute_factors;
898
+
899
+ ring r=(0,a,b),(x,y),dp;
900
+ poly p=(a+1)/b*x + 1;
901
+ def S = absFactorize(p,"s");
902
+ setring(S);
903
+ absolute_factors;
904
+
905
+ ring r=(0,a,b),(x,y),dp;
906
+ poly p=(a+1)/b*x + y;
907
+ def S = absFactorize(p,"s");
908
+ setring(S);
909
+ absolute_factors;
910
+
911
+ ring r=0,(x,t),dp;
912
+ poly p=x^4+(t^3-2t^2-2t)*x^3-(t^5-2t^4-t^2-2t-1)*x^2
913
+ -(t^6-4t^5+t^4+6t^3+2t^2)*x+(t^6-4t^5+2t^4+4t^3+t^2);
914
+ def S = absFactorize(p,"s");
915
+ setring(S);
916
+ absolute_factors;
917
+
918
+ ring r1=(0,a,b),(x,y),dp;
919
+ poly p=(a3-a2b+27ab3-27b4)/(a+b5)*x2+(a2+27b3)*y;
920
+ def S = absFactorize(p);
921
+ setring(S);
922
+ absolute_factors;
923
+
924
+ ring r2=0,(x,y,z,w),dp;
925
+ poly f=(x2+y2+z2)^2+w4;
926
+ def S =absFactorize(f);
927
+ setring(S);
928
+ absolute_factors;
929
+
930
+ ring r3=0,(x,y,z,w),dp;
931
+ poly f=(x2+y2+z2)^4+w8;
932
+ def S =absFactorize(f);
933
+ setring(S);
934
+ absolute_factors;
935
+
936
+ ring r4=0,(x,y),dp;
937
+ poly f=y6-(2x2-2x-14)*y4-(4x3+35x2-6x-47)*y2+14x4-12x3-94x2;
938
+ def S=absFactorize(f);
939
+ setring(S);
940
+ absolute_factors;
941
+
942
+ ring R1 = 0, x, dp;
943
+ def S1 = absFactorize(x4-2);
944
+ setring(S1);
945
+ absolute_factors;
946
+
947
+ ring R3 = 0, (x,y), dp;
948
+ poly f = x2y4+y6+2x3y2+2xy4-7x4+7x2y2+14y4+6x3+6xy2+47x2+47y2;
949
+ def S3 = absFactorize(f);
950
+ setring(S3);
951
+ absolute_factors;
952
+
953
+ ring R4 = 0, (x,y), dp;
954
+ poly f = y4+2*xy2-7*x2+14*y2+6*x+47;
955
+ def S4 = absFactorize(f);
956
+ setring(S4);
957
+ absolute_factors;
958
+
959
+ */