passagemath-singular 10.6.31rc3__cp314-cp314-musllinux_1_2_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 (493) hide show
  1. PySingular.cpython-314-x86_64-linux-musl.so +0 -0
  2. passagemath_singular-10.6.31rc3.dist-info/METADATA +183 -0
  3. passagemath_singular-10.6.31rc3.dist-info/RECORD +493 -0
  4. passagemath_singular-10.6.31rc3.dist-info/WHEEL +5 -0
  5. passagemath_singular-10.6.31rc3.dist-info/top_level.txt +3 -0
  6. passagemath_singular.libs/libSingular-4-67059f19.4.1.so +0 -0
  7. passagemath_singular.libs/libcddgmp-30166d29.so.0.1.3 +0 -0
  8. passagemath_singular.libs/libfactory-4-9d37bcf4.4.1.so +0 -0
  9. passagemath_singular.libs/libflint-fd6f12fc.so.21.0.0 +0 -0
  10. passagemath_singular.libs/libgcc_s-0cd532bd.so.1 +0 -0
  11. passagemath_singular.libs/libgf2x-9e30c3e3.so.3.0.0 +0 -0
  12. passagemath_singular.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  13. passagemath_singular.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  14. passagemath_singular.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  15. passagemath_singular.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  16. passagemath_singular.libs/libncursesw-9c9e32c3.so.6.5 +0 -0
  17. passagemath_singular.libs/libntl-26885ca2.so.44.0.1 +0 -0
  18. passagemath_singular.libs/libomalloc-0-e9ff96db.9.6.so +0 -0
  19. passagemath_singular.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  20. passagemath_singular.libs/libpolys-4-8bcf8e7d.4.1.so +0 -0
  21. passagemath_singular.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  22. passagemath_singular.libs/libreadline-06542304.so.8.2 +0 -0
  23. passagemath_singular.libs/libsingular_resources-4-73bf7623.4.1.so +0 -0
  24. passagemath_singular.libs/libstdc++-5d72f927.so.6.0.33 +0 -0
  25. sage/algebras/all__sagemath_singular.py +3 -0
  26. sage/algebras/fusion_rings/all.py +19 -0
  27. sage/algebras/fusion_rings/f_matrix.py +2448 -0
  28. sage/algebras/fusion_rings/fast_parallel_fmats_methods.cpython-314-x86_64-linux-musl.so +0 -0
  29. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pxd +5 -0
  30. sage/algebras/fusion_rings/fast_parallel_fmats_methods.pyx +538 -0
  31. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.cpython-314-x86_64-linux-musl.so +0 -0
  32. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pxd +3 -0
  33. sage/algebras/fusion_rings/fast_parallel_fusion_ring_braid_repn.pyx +331 -0
  34. sage/algebras/fusion_rings/fusion_double.py +899 -0
  35. sage/algebras/fusion_rings/fusion_ring.py +1580 -0
  36. sage/algebras/fusion_rings/poly_tup_engine.cpython-314-x86_64-linux-musl.so +0 -0
  37. sage/algebras/fusion_rings/poly_tup_engine.pxd +24 -0
  38. sage/algebras/fusion_rings/poly_tup_engine.pyx +579 -0
  39. sage/algebras/fusion_rings/shm_managers.cpython-314-x86_64-linux-musl.so +0 -0
  40. sage/algebras/fusion_rings/shm_managers.pxd +24 -0
  41. sage/algebras/fusion_rings/shm_managers.pyx +780 -0
  42. sage/algebras/letterplace/all.py +1 -0
  43. sage/algebras/letterplace/free_algebra_element_letterplace.cpython-314-x86_64-linux-musl.so +0 -0
  44. sage/algebras/letterplace/free_algebra_element_letterplace.pxd +18 -0
  45. sage/algebras/letterplace/free_algebra_element_letterplace.pyx +755 -0
  46. sage/algebras/letterplace/free_algebra_letterplace.cpython-314-x86_64-linux-musl.so +0 -0
  47. sage/algebras/letterplace/free_algebra_letterplace.pxd +35 -0
  48. sage/algebras/letterplace/free_algebra_letterplace.pyx +914 -0
  49. sage/algebras/letterplace/letterplace_ideal.cpython-314-x86_64-linux-musl.so +0 -0
  50. sage/algebras/letterplace/letterplace_ideal.pyx +408 -0
  51. sage/algebras/quatalg/all.py +2 -0
  52. sage/algebras/quatalg/quaternion_algebra.py +4778 -0
  53. sage/algebras/quatalg/quaternion_algebra_cython.cpython-314-x86_64-linux-musl.so +0 -0
  54. sage/algebras/quatalg/quaternion_algebra_cython.pyx +261 -0
  55. sage/algebras/quatalg/quaternion_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  56. sage/algebras/quatalg/quaternion_algebra_element.pxd +29 -0
  57. sage/algebras/quatalg/quaternion_algebra_element.pyx +2176 -0
  58. sage/all__sagemath_singular.py +11 -0
  59. sage/ext_data/all__sagemath_singular.py +1 -0
  60. sage/ext_data/singular/function_field/core.lib +98 -0
  61. sage/interfaces/all__sagemath_singular.py +1 -0
  62. sage/interfaces/singular.py +2835 -0
  63. sage/libs/all__sagemath_singular.py +1 -0
  64. sage/libs/singular/__init__.py +1 -0
  65. sage/libs/singular/decl.pxd +1168 -0
  66. sage/libs/singular/function.cpython-314-x86_64-linux-musl.so +0 -0
  67. sage/libs/singular/function.pxd +87 -0
  68. sage/libs/singular/function.pyx +1901 -0
  69. sage/libs/singular/function_factory.py +61 -0
  70. sage/libs/singular/groebner_strategy.cpython-314-x86_64-linux-musl.so +0 -0
  71. sage/libs/singular/groebner_strategy.pxd +22 -0
  72. sage/libs/singular/groebner_strategy.pyx +582 -0
  73. sage/libs/singular/option.cpython-314-x86_64-linux-musl.so +0 -0
  74. sage/libs/singular/option.pyx +671 -0
  75. sage/libs/singular/polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  76. sage/libs/singular/polynomial.pxd +39 -0
  77. sage/libs/singular/polynomial.pyx +661 -0
  78. sage/libs/singular/ring.cpython-314-x86_64-linux-musl.so +0 -0
  79. sage/libs/singular/ring.pxd +58 -0
  80. sage/libs/singular/ring.pyx +893 -0
  81. sage/libs/singular/singular.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/libs/singular/singular.pxd +72 -0
  83. sage/libs/singular/singular.pyx +1944 -0
  84. sage/libs/singular/standard_options.py +145 -0
  85. sage/matrix/all__sagemath_singular.py +1 -0
  86. sage/matrix/matrix_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  87. sage/matrix/matrix_mpolynomial_dense.pxd +7 -0
  88. sage/matrix/matrix_mpolynomial_dense.pyx +615 -0
  89. sage/rings/all__sagemath_singular.py +1 -0
  90. sage/rings/function_field/all__sagemath_singular.py +1 -0
  91. sage/rings/function_field/derivations_polymod.py +911 -0
  92. sage/rings/function_field/element_polymod.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/rings/function_field/element_polymod.pyx +406 -0
  94. sage/rings/function_field/function_field_polymod.py +2611 -0
  95. sage/rings/function_field/ideal_polymod.py +1775 -0
  96. sage/rings/function_field/order_polymod.py +1475 -0
  97. sage/rings/function_field/place_polymod.py +681 -0
  98. sage/rings/polynomial/all__sagemath_singular.py +1 -0
  99. sage/rings/polynomial/multi_polynomial_ideal_libsingular.cpython-314-x86_64-linux-musl.so +0 -0
  100. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pxd +5 -0
  101. sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx +339 -0
  102. sage/rings/polynomial/multi_polynomial_libsingular.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/rings/polynomial/multi_polynomial_libsingular.pxd +30 -0
  104. sage/rings/polynomial/multi_polynomial_libsingular.pyx +6277 -0
  105. sage/rings/polynomial/plural.cpython-314-x86_64-linux-musl.so +0 -0
  106. sage/rings/polynomial/plural.pxd +48 -0
  107. sage/rings/polynomial/plural.pyx +3171 -0
  108. sage/symbolic/all__sagemath_singular.py +1 -0
  109. sage/symbolic/comparison_impl.pxi +428 -0
  110. sage/symbolic/constants_c_impl.pxi +178 -0
  111. sage/symbolic/expression.cpython-314-x86_64-linux-musl.so +0 -0
  112. sage/symbolic/expression.pxd +7 -0
  113. sage/symbolic/expression.pyx +14200 -0
  114. sage/symbolic/getitem_impl.pxi +202 -0
  115. sage/symbolic/pynac.pxi +572 -0
  116. sage/symbolic/pynac_constant_impl.pxi +133 -0
  117. sage/symbolic/pynac_function_impl.pxi +206 -0
  118. sage/symbolic/pynac_impl.pxi +2576 -0
  119. sage/symbolic/pynac_wrap.h +124 -0
  120. sage/symbolic/series_impl.pxi +272 -0
  121. sage/symbolic/substitution_map_impl.pxi +94 -0
  122. sage_wheels/bin/ESingular +0 -0
  123. sage_wheels/bin/Singular +0 -0
  124. sage_wheels/bin/TSingular +0 -0
  125. sage_wheels/lib/singular/MOD/cohomo.la +41 -0
  126. sage_wheels/lib/singular/MOD/cohomo.so +0 -0
  127. sage_wheels/lib/singular/MOD/customstd.la +41 -0
  128. sage_wheels/lib/singular/MOD/customstd.so +0 -0
  129. sage_wheels/lib/singular/MOD/freealgebra.la +41 -0
  130. sage_wheels/lib/singular/MOD/freealgebra.so +0 -0
  131. sage_wheels/lib/singular/MOD/gfanlib.la +41 -0
  132. sage_wheels/lib/singular/MOD/gfanlib.so +0 -0
  133. sage_wheels/lib/singular/MOD/gitfan.la +41 -0
  134. sage_wheels/lib/singular/MOD/gitfan.so +0 -0
  135. sage_wheels/lib/singular/MOD/interval.la +41 -0
  136. sage_wheels/lib/singular/MOD/interval.so +0 -0
  137. sage_wheels/lib/singular/MOD/loctriv.la +41 -0
  138. sage_wheels/lib/singular/MOD/loctriv.so +0 -0
  139. sage_wheels/lib/singular/MOD/machinelearning.la +41 -0
  140. sage_wheels/lib/singular/MOD/machinelearning.so +0 -0
  141. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.la +41 -0
  142. sage_wheels/lib/singular/MOD/p_Procs_FieldGeneral.so +0 -0
  143. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.la +41 -0
  144. sage_wheels/lib/singular/MOD/p_Procs_FieldIndep.so +0 -0
  145. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.la +41 -0
  146. sage_wheels/lib/singular/MOD/p_Procs_FieldQ.so +0 -0
  147. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.la +41 -0
  148. sage_wheels/lib/singular/MOD/p_Procs_FieldZp.so +0 -0
  149. sage_wheels/lib/singular/MOD/partialgb.la +41 -0
  150. sage_wheels/lib/singular/MOD/partialgb.so +0 -0
  151. sage_wheels/lib/singular/MOD/pyobject.la +41 -0
  152. sage_wheels/lib/singular/MOD/pyobject.so +0 -0
  153. sage_wheels/lib/singular/MOD/singmathic.la +41 -0
  154. sage_wheels/lib/singular/MOD/singmathic.so +0 -0
  155. sage_wheels/lib/singular/MOD/sispasm.la +41 -0
  156. sage_wheels/lib/singular/MOD/sispasm.so +0 -0
  157. sage_wheels/lib/singular/MOD/subsets.la +41 -0
  158. sage_wheels/lib/singular/MOD/subsets.so +0 -0
  159. sage_wheels/lib/singular/MOD/systhreads.la +41 -0
  160. sage_wheels/lib/singular/MOD/systhreads.so +0 -0
  161. sage_wheels/lib/singular/MOD/syzextra.la +41 -0
  162. sage_wheels/lib/singular/MOD/syzextra.so +0 -0
  163. sage_wheels/libexec/singular/MOD/change_cost +0 -0
  164. sage_wheels/libexec/singular/MOD/singularsurf +11 -0
  165. sage_wheels/libexec/singular/MOD/singularsurf_jupyter +9 -0
  166. sage_wheels/libexec/singular/MOD/singularsurf_win +10 -0
  167. sage_wheels/libexec/singular/MOD/solve_IP +0 -0
  168. sage_wheels/libexec/singular/MOD/surfex +16 -0
  169. sage_wheels/libexec/singular/MOD/toric_ideal +0 -0
  170. sage_wheels/share/factory/gftables/10201 +342 -0
  171. sage_wheels/share/factory/gftables/1024 +37 -0
  172. sage_wheels/share/factory/gftables/10609 +356 -0
  173. sage_wheels/share/factory/gftables/11449 +384 -0
  174. sage_wheels/share/factory/gftables/11881 +398 -0
  175. sage_wheels/share/factory/gftables/121 +6 -0
  176. sage_wheels/share/factory/gftables/12167 +408 -0
  177. sage_wheels/share/factory/gftables/125 +7 -0
  178. sage_wheels/share/factory/gftables/12769 +428 -0
  179. sage_wheels/share/factory/gftables/128 +7 -0
  180. sage_wheels/share/factory/gftables/1331 +47 -0
  181. sage_wheels/share/factory/gftables/1369 +48 -0
  182. sage_wheels/share/factory/gftables/14641 +490 -0
  183. sage_wheels/share/factory/gftables/15625 +523 -0
  184. sage_wheels/share/factory/gftables/16 +3 -0
  185. sage_wheels/share/factory/gftables/16129 +540 -0
  186. sage_wheels/share/factory/gftables/16384 +549 -0
  187. sage_wheels/share/factory/gftables/16807 +563 -0
  188. sage_wheels/share/factory/gftables/1681 +58 -0
  189. sage_wheels/share/factory/gftables/169 +8 -0
  190. sage_wheels/share/factory/gftables/17161 +574 -0
  191. sage_wheels/share/factory/gftables/1849 +64 -0
  192. sage_wheels/share/factory/gftables/18769 +628 -0
  193. sage_wheels/share/factory/gftables/19321 +646 -0
  194. sage_wheels/share/factory/gftables/19683 +659 -0
  195. sage_wheels/share/factory/gftables/2048 +71 -0
  196. sage_wheels/share/factory/gftables/2187 +75 -0
  197. sage_wheels/share/factory/gftables/2197 +76 -0
  198. sage_wheels/share/factory/gftables/2209 +76 -0
  199. sage_wheels/share/factory/gftables/22201 +742 -0
  200. sage_wheels/share/factory/gftables/22801 +762 -0
  201. sage_wheels/share/factory/gftables/2401 +82 -0
  202. sage_wheels/share/factory/gftables/243 +11 -0
  203. sage_wheels/share/factory/gftables/24389 +815 -0
  204. sage_wheels/share/factory/gftables/24649 +824 -0
  205. sage_wheels/share/factory/gftables/25 +3 -0
  206. sage_wheels/share/factory/gftables/256 +11 -0
  207. sage_wheels/share/factory/gftables/26569 +888 -0
  208. sage_wheels/share/factory/gftables/27 +3 -0
  209. sage_wheels/share/factory/gftables/27889 +932 -0
  210. sage_wheels/share/factory/gftables/2809 +96 -0
  211. sage_wheels/share/factory/gftables/28561 +954 -0
  212. sage_wheels/share/factory/gftables/289 +12 -0
  213. sage_wheels/share/factory/gftables/29791 +995 -0
  214. sage_wheels/share/factory/gftables/29929 +1000 -0
  215. sage_wheels/share/factory/gftables/3125 +107 -0
  216. sage_wheels/share/factory/gftables/32 +4 -0
  217. sage_wheels/share/factory/gftables/32041 +1070 -0
  218. sage_wheels/share/factory/gftables/32761 +1094 -0
  219. sage_wheels/share/factory/gftables/32768 +1095 -0
  220. sage_wheels/share/factory/gftables/343 +14 -0
  221. sage_wheels/share/factory/gftables/3481 +118 -0
  222. sage_wheels/share/factory/gftables/361 +14 -0
  223. sage_wheels/share/factory/gftables/36481 +1218 -0
  224. sage_wheels/share/factory/gftables/3721 +126 -0
  225. sage_wheels/share/factory/gftables/37249 +1244 -0
  226. sage_wheels/share/factory/gftables/38809 +1296 -0
  227. sage_wheels/share/factory/gftables/39601 +1322 -0
  228. sage_wheels/share/factory/gftables/4 +3 -0
  229. sage_wheels/share/factory/gftables/4096 +139 -0
  230. sage_wheels/share/factory/gftables/44521 +1486 -0
  231. sage_wheels/share/factory/gftables/4489 +152 -0
  232. sage_wheels/share/factory/gftables/49 +4 -0
  233. sage_wheels/share/factory/gftables/4913 +166 -0
  234. sage_wheels/share/factory/gftables/49729 +1660 -0
  235. sage_wheels/share/factory/gftables/5041 +170 -0
  236. sage_wheels/share/factory/gftables/50653 +1691 -0
  237. sage_wheels/share/factory/gftables/512 +20 -0
  238. sage_wheels/share/factory/gftables/51529 +1720 -0
  239. sage_wheels/share/factory/gftables/52441 +1750 -0
  240. sage_wheels/share/factory/gftables/529 +20 -0
  241. sage_wheels/share/factory/gftables/5329 +180 -0
  242. sage_wheels/share/factory/gftables/54289 +1812 -0
  243. sage_wheels/share/factory/gftables/57121 +1906 -0
  244. sage_wheels/share/factory/gftables/58081 +1938 -0
  245. sage_wheels/share/factory/gftables/59049 +1971 -0
  246. sage_wheels/share/factory/gftables/6241 +210 -0
  247. sage_wheels/share/factory/gftables/625 +23 -0
  248. sage_wheels/share/factory/gftables/63001 +2102 -0
  249. sage_wheels/share/factory/gftables/64 +5 -0
  250. sage_wheels/share/factory/gftables/6561 +221 -0
  251. sage_wheels/share/factory/gftables/6859 +231 -0
  252. sage_wheels/share/factory/gftables/6889 +232 -0
  253. sage_wheels/share/factory/gftables/729 +27 -0
  254. sage_wheels/share/factory/gftables/7921 +266 -0
  255. sage_wheels/share/factory/gftables/8 +3 -0
  256. sage_wheels/share/factory/gftables/81 +5 -0
  257. sage_wheels/share/factory/gftables/8192 +276 -0
  258. sage_wheels/share/factory/gftables/841 +30 -0
  259. sage_wheels/share/factory/gftables/9 +3 -0
  260. sage_wheels/share/factory/gftables/9409 +316 -0
  261. sage_wheels/share/factory/gftables/961 +34 -0
  262. sage_wheels/share/info/singular.info +191898 -0
  263. sage_wheels/share/singular/LIB/GND.lib +1359 -0
  264. sage_wheels/share/singular/LIB/JMBTest.lib +976 -0
  265. sage_wheels/share/singular/LIB/JMSConst.lib +1363 -0
  266. sage_wheels/share/singular/LIB/KVequiv.lib +699 -0
  267. sage_wheels/share/singular/LIB/SingularityDBM.lib +491 -0
  268. sage_wheels/share/singular/LIB/VecField.lib +1542 -0
  269. sage_wheels/share/singular/LIB/absfact.lib +959 -0
  270. sage_wheels/share/singular/LIB/ainvar.lib +730 -0
  271. sage_wheels/share/singular/LIB/aksaka.lib +419 -0
  272. sage_wheels/share/singular/LIB/alexpoly.lib +2542 -0
  273. sage_wheels/share/singular/LIB/algebra.lib +1193 -0
  274. sage_wheels/share/singular/LIB/all.lib +136 -0
  275. sage_wheels/share/singular/LIB/arcpoint.lib +514 -0
  276. sage_wheels/share/singular/LIB/arnold.lib +4553 -0
  277. sage_wheels/share/singular/LIB/arnoldclassify.lib +2058 -0
  278. sage_wheels/share/singular/LIB/arr.lib +3486 -0
  279. sage_wheels/share/singular/LIB/assprimeszerodim.lib +755 -0
  280. sage_wheels/share/singular/LIB/autgradalg.lib +3361 -0
  281. sage_wheels/share/singular/LIB/bfun.lib +1964 -0
  282. sage_wheels/share/singular/LIB/bimodules.lib +774 -0
  283. sage_wheels/share/singular/LIB/brillnoether.lib +226 -0
  284. sage_wheels/share/singular/LIB/brnoeth.lib +5017 -0
  285. sage_wheels/share/singular/LIB/central.lib +2169 -0
  286. sage_wheels/share/singular/LIB/chern.lib +4162 -0
  287. sage_wheels/share/singular/LIB/cimonom.lib +571 -0
  288. sage_wheels/share/singular/LIB/cisimplicial.lib +1835 -0
  289. sage_wheels/share/singular/LIB/classify.lib +3239 -0
  290. sage_wheels/share/singular/LIB/classify2.lib +1462 -0
  291. sage_wheels/share/singular/LIB/classifyMapGerms.lib +1515 -0
  292. sage_wheels/share/singular/LIB/classify_aeq.lib +3253 -0
  293. sage_wheels/share/singular/LIB/classifyceq.lib +2092 -0
  294. sage_wheels/share/singular/LIB/classifyci.lib +1133 -0
  295. sage_wheels/share/singular/LIB/combinat.lib +91 -0
  296. sage_wheels/share/singular/LIB/compregb.lib +276 -0
  297. sage_wheels/share/singular/LIB/control.lib +1636 -0
  298. sage_wheels/share/singular/LIB/crypto.lib +3795 -0
  299. sage_wheels/share/singular/LIB/curveInv.lib +667 -0
  300. sage_wheels/share/singular/LIB/curvepar.lib +1817 -0
  301. sage_wheels/share/singular/LIB/customstd.lib +100 -0
  302. sage_wheels/share/singular/LIB/deRham.lib +5979 -0
  303. sage_wheels/share/singular/LIB/decodegb.lib +2134 -0
  304. sage_wheels/share/singular/LIB/decomp.lib +1655 -0
  305. sage_wheels/share/singular/LIB/deflation.lib +872 -0
  306. sage_wheels/share/singular/LIB/deform.lib +925 -0
  307. sage_wheels/share/singular/LIB/difform.lib +3055 -0
  308. sage_wheels/share/singular/LIB/divisors.lib +750 -0
  309. sage_wheels/share/singular/LIB/dmod.lib +5817 -0
  310. sage_wheels/share/singular/LIB/dmodapp.lib +3269 -0
  311. sage_wheels/share/singular/LIB/dmodideal.lib +1211 -0
  312. sage_wheels/share/singular/LIB/dmodloc.lib +2645 -0
  313. sage_wheels/share/singular/LIB/dmodvar.lib +818 -0
  314. sage_wheels/share/singular/LIB/dummy.lib +17 -0
  315. sage_wheels/share/singular/LIB/elim.lib +1009 -0
  316. sage_wheels/share/singular/LIB/ellipticcovers.lib +548 -0
  317. sage_wheels/share/singular/LIB/enumpoints.lib +146 -0
  318. sage_wheels/share/singular/LIB/equising.lib +2127 -0
  319. sage_wheels/share/singular/LIB/ffmodstd.lib +2384 -0
  320. sage_wheels/share/singular/LIB/ffsolve.lib +1289 -0
  321. sage_wheels/share/singular/LIB/findifs.lib +778 -0
  322. sage_wheels/share/singular/LIB/finitediff.lib +1768 -0
  323. sage_wheels/share/singular/LIB/finvar.lib +7989 -0
  324. sage_wheels/share/singular/LIB/fpadim.lib +2429 -0
  325. sage_wheels/share/singular/LIB/fpalgebras.lib +1666 -0
  326. sage_wheels/share/singular/LIB/fpaprops.lib +1462 -0
  327. sage_wheels/share/singular/LIB/freegb.lib +3853 -0
  328. sage_wheels/share/singular/LIB/general.lib +1350 -0
  329. sage_wheels/share/singular/LIB/gfan.lib +1768 -0
  330. sage_wheels/share/singular/LIB/gitfan.lib +3130 -0
  331. sage_wheels/share/singular/LIB/gkdim.lib +99 -0
  332. sage_wheels/share/singular/LIB/gmspoly.lib +589 -0
  333. sage_wheels/share/singular/LIB/gmssing.lib +1739 -0
  334. sage_wheels/share/singular/LIB/goettsche.lib +909 -0
  335. sage_wheels/share/singular/LIB/graal.lib +1366 -0
  336. sage_wheels/share/singular/LIB/gradedModules.lib +2541 -0
  337. sage_wheels/share/singular/LIB/graphics.lib +360 -0
  338. sage_wheels/share/singular/LIB/grobcov.lib +7706 -0
  339. sage_wheels/share/singular/LIB/groups.lib +1123 -0
  340. sage_wheels/share/singular/LIB/grwalk.lib +507 -0
  341. sage_wheels/share/singular/LIB/hdepth.lib +194 -0
  342. sage_wheels/share/singular/LIB/help.cnf +57 -0
  343. sage_wheels/share/singular/LIB/hess.lib +1946 -0
  344. sage_wheels/share/singular/LIB/hnoether.lib +4292 -0
  345. sage_wheels/share/singular/LIB/hodge.lib +400 -0
  346. sage_wheels/share/singular/LIB/homolog.lib +1965 -0
  347. sage_wheels/share/singular/LIB/hyperel.lib +975 -0
  348. sage_wheels/share/singular/LIB/inout.lib +679 -0
  349. sage_wheels/share/singular/LIB/integralbasis.lib +6224 -0
  350. sage_wheels/share/singular/LIB/interval.lib +1418 -0
  351. sage_wheels/share/singular/LIB/intprog.lib +778 -0
  352. sage_wheels/share/singular/LIB/invar.lib +443 -0
  353. sage_wheels/share/singular/LIB/involut.lib +980 -0
  354. sage_wheels/share/singular/LIB/jacobson.lib +1215 -0
  355. sage_wheels/share/singular/LIB/kskernel.lib +534 -0
  356. sage_wheels/share/singular/LIB/latex.lib +3146 -0
  357. sage_wheels/share/singular/LIB/lejeune.lib +651 -0
  358. sage_wheels/share/singular/LIB/linalg.lib +2040 -0
  359. sage_wheels/share/singular/LIB/locnormal.lib +212 -0
  360. sage_wheels/share/singular/LIB/lrcalc.lib +526 -0
  361. sage_wheels/share/singular/LIB/makedbm.lib +294 -0
  362. sage_wheels/share/singular/LIB/mathml.lib +813 -0
  363. sage_wheels/share/singular/LIB/matrix.lib +1372 -0
  364. sage_wheels/share/singular/LIB/maxlike.lib +1132 -0
  365. sage_wheels/share/singular/LIB/methods.lib +212 -0
  366. sage_wheels/share/singular/LIB/moddiq.lib +322 -0
  367. sage_wheels/share/singular/LIB/modfinduni.lib +181 -0
  368. sage_wheels/share/singular/LIB/modnormal.lib +218 -0
  369. sage_wheels/share/singular/LIB/modprimdec.lib +1278 -0
  370. sage_wheels/share/singular/LIB/modquotient.lib +269 -0
  371. sage_wheels/share/singular/LIB/modstd.lib +1024 -0
  372. sage_wheels/share/singular/LIB/modular.lib +545 -0
  373. sage_wheels/share/singular/LIB/modules.lib +2561 -0
  374. sage_wheels/share/singular/LIB/modwalk.lib +609 -0
  375. sage_wheels/share/singular/LIB/mondromy.lib +1016 -0
  376. sage_wheels/share/singular/LIB/monomialideal.lib +3851 -0
  377. sage_wheels/share/singular/LIB/mprimdec.lib +2353 -0
  378. sage_wheels/share/singular/LIB/mregular.lib +1863 -0
  379. sage_wheels/share/singular/LIB/multigrading.lib +5629 -0
  380. sage_wheels/share/singular/LIB/ncHilb.lib +777 -0
  381. sage_wheels/share/singular/LIB/ncModslimgb.lib +791 -0
  382. sage_wheels/share/singular/LIB/ncalg.lib +16311 -0
  383. sage_wheels/share/singular/LIB/ncall.lib +31 -0
  384. sage_wheels/share/singular/LIB/ncdecomp.lib +468 -0
  385. sage_wheels/share/singular/LIB/ncfactor.lib +13371 -0
  386. sage_wheels/share/singular/LIB/ncfrac.lib +1023 -0
  387. sage_wheels/share/singular/LIB/nchilbert.lib +448 -0
  388. sage_wheels/share/singular/LIB/nchomolog.lib +759 -0
  389. sage_wheels/share/singular/LIB/ncloc.lib +361 -0
  390. sage_wheels/share/singular/LIB/ncpreim.lib +795 -0
  391. sage_wheels/share/singular/LIB/ncrat.lib +2849 -0
  392. sage_wheels/share/singular/LIB/nctools.lib +1887 -0
  393. sage_wheels/share/singular/LIB/nets.lib +1456 -0
  394. sage_wheels/share/singular/LIB/nfmodstd.lib +1000 -0
  395. sage_wheels/share/singular/LIB/nfmodsyz.lib +732 -0
  396. sage_wheels/share/singular/LIB/noether.lib +1106 -0
  397. sage_wheels/share/singular/LIB/normal.lib +8700 -0
  398. sage_wheels/share/singular/LIB/normaliz.lib +2226 -0
  399. sage_wheels/share/singular/LIB/ntsolve.lib +362 -0
  400. sage_wheels/share/singular/LIB/numerAlg.lib +560 -0
  401. sage_wheels/share/singular/LIB/numerDecom.lib +2261 -0
  402. sage_wheels/share/singular/LIB/olga.lib +1933 -0
  403. sage_wheels/share/singular/LIB/orbitparam.lib +351 -0
  404. sage_wheels/share/singular/LIB/parallel.lib +319 -0
  405. sage_wheels/share/singular/LIB/paraplanecurves.lib +3110 -0
  406. sage_wheels/share/singular/LIB/perron.lib +202 -0
  407. sage_wheels/share/singular/LIB/pfd.lib +2223 -0
  408. sage_wheels/share/singular/LIB/phindex.lib +642 -0
  409. sage_wheels/share/singular/LIB/pointid.lib +673 -0
  410. sage_wheels/share/singular/LIB/polybori.lib +1430 -0
  411. sage_wheels/share/singular/LIB/polyclass.lib +525 -0
  412. sage_wheels/share/singular/LIB/polylib.lib +1174 -0
  413. sage_wheels/share/singular/LIB/polymake.lib +1902 -0
  414. sage_wheels/share/singular/LIB/presolve.lib +1533 -0
  415. sage_wheels/share/singular/LIB/primdec.lib +9576 -0
  416. sage_wheels/share/singular/LIB/primdecint.lib +1782 -0
  417. sage_wheels/share/singular/LIB/primitiv.lib +401 -0
  418. sage_wheels/share/singular/LIB/puiseuxexpansions.lib +1631 -0
  419. sage_wheels/share/singular/LIB/purityfiltration.lib +960 -0
  420. sage_wheels/share/singular/LIB/qhmoduli.lib +1561 -0
  421. sage_wheels/share/singular/LIB/qmatrix.lib +293 -0
  422. sage_wheels/share/singular/LIB/random.lib +455 -0
  423. sage_wheels/share/singular/LIB/ratgb.lib +489 -0
  424. sage_wheels/share/singular/LIB/realclassify.lib +5759 -0
  425. sage_wheels/share/singular/LIB/realizationMatroids.lib +772 -0
  426. sage_wheels/share/singular/LIB/realrad.lib +1197 -0
  427. sage_wheels/share/singular/LIB/recover.lib +2628 -0
  428. sage_wheels/share/singular/LIB/redcgs.lib +3984 -0
  429. sage_wheels/share/singular/LIB/reesclos.lib +465 -0
  430. sage_wheels/share/singular/LIB/resbinomial.lib +2802 -0
  431. sage_wheels/share/singular/LIB/resgraph.lib +789 -0
  432. sage_wheels/share/singular/LIB/resjung.lib +820 -0
  433. sage_wheels/share/singular/LIB/resolve.lib +5110 -0
  434. sage_wheels/share/singular/LIB/resources.lib +170 -0
  435. sage_wheels/share/singular/LIB/reszeta.lib +5473 -0
  436. sage_wheels/share/singular/LIB/ring.lib +1328 -0
  437. sage_wheels/share/singular/LIB/ringgb.lib +343 -0
  438. sage_wheels/share/singular/LIB/rinvar.lib +1153 -0
  439. sage_wheels/share/singular/LIB/rootisolation.lib +1481 -0
  440. sage_wheels/share/singular/LIB/rootsmr.lib +709 -0
  441. sage_wheels/share/singular/LIB/rootsur.lib +886 -0
  442. sage_wheels/share/singular/LIB/rstandard.lib +607 -0
  443. sage_wheels/share/singular/LIB/rwalk.lib +336 -0
  444. sage_wheels/share/singular/LIB/sagbi.lib +1353 -0
  445. sage_wheels/share/singular/LIB/sagbiNormaliz.lib +1622 -0
  446. sage_wheels/share/singular/LIB/sagbiNormaliz0.lib +1498 -0
  447. sage_wheels/share/singular/LIB/sagbigrob.lib +449 -0
  448. sage_wheels/share/singular/LIB/schreyer.lib +321 -0
  449. sage_wheels/share/singular/LIB/schubert.lib +2551 -0
  450. sage_wheels/share/singular/LIB/sets.lib +524 -0
  451. sage_wheels/share/singular/LIB/sheafcoh.lib +1663 -0
  452. sage_wheels/share/singular/LIB/signcond.lib +437 -0
  453. sage_wheels/share/singular/LIB/sing.lib +1094 -0
  454. sage_wheels/share/singular/LIB/sing4ti2.lib +419 -0
  455. sage_wheels/share/singular/LIB/solve.lib +2243 -0
  456. sage_wheels/share/singular/LIB/spcurve.lib +1077 -0
  457. sage_wheels/share/singular/LIB/spectrum.lib +62 -0
  458. sage_wheels/share/singular/LIB/sresext.lib +757 -0
  459. sage_wheels/share/singular/LIB/ssi.lib +143 -0
  460. sage_wheels/share/singular/LIB/standard.lib +2769 -0
  461. sage_wheels/share/singular/LIB/stanleyreisner.lib +473 -0
  462. sage_wheels/share/singular/LIB/stdmodule.lib +547 -0
  463. sage_wheels/share/singular/LIB/stratify.lib +1070 -0
  464. sage_wheels/share/singular/LIB/surf.lib +506 -0
  465. sage_wheels/share/singular/LIB/surf_jupyter.lib +223 -0
  466. sage_wheels/share/singular/LIB/surfacesignature.lib +522 -0
  467. sage_wheels/share/singular/LIB/surfex.lib +1462 -0
  468. sage_wheels/share/singular/LIB/swalk.lib +877 -0
  469. sage_wheels/share/singular/LIB/symodstd.lib +1570 -0
  470. sage_wheels/share/singular/LIB/systhreads.lib +74 -0
  471. sage_wheels/share/singular/LIB/tasks.lib +1324 -0
  472. sage_wheels/share/singular/LIB/tateProdCplxNegGrad.lib +2412 -0
  473. sage_wheels/share/singular/LIB/teachstd.lib +858 -0
  474. sage_wheels/share/singular/LIB/template.lib +116 -0
  475. sage_wheels/share/singular/LIB/toric.lib +1119 -0
  476. sage_wheels/share/singular/LIB/transformation.lib +116 -0
  477. sage_wheels/share/singular/LIB/triang.lib +1197 -0
  478. sage_wheels/share/singular/LIB/tropical.lib +8741 -0
  479. sage_wheels/share/singular/LIB/tropicalEllipticCovers.lib +2922 -0
  480. sage_wheels/share/singular/LIB/tropicalNewton.lib +1128 -0
  481. sage_wheels/share/singular/LIB/tst.lib +1108 -0
  482. sage_wheels/share/singular/LIB/weierstr.lib +241 -0
  483. sage_wheels/share/singular/LIB/zeroset.lib +1478 -0
  484. sage_wheels/share/singular/emacs/.emacs-general +184 -0
  485. sage_wheels/share/singular/emacs/.emacs-singular +234 -0
  486. sage_wheels/share/singular/emacs/COPYING +44 -0
  487. sage_wheels/share/singular/emacs/cmd-cmpl.el +241 -0
  488. sage_wheels/share/singular/emacs/ex-cmpl.el +1681 -0
  489. sage_wheels/share/singular/emacs/hlp-cmpl.el +4318 -0
  490. sage_wheels/share/singular/emacs/lib-cmpl.el +179 -0
  491. sage_wheels/share/singular/emacs/singular.el +4273 -0
  492. sage_wheels/share/singular/emacs/singular.xpm +39 -0
  493. sage_wheels/share/singular/singular.idx +5002 -0
@@ -0,0 +1,778 @@
1
+ //////////////////////////////////////////////////////////////////////////////
2
+ version="version findifs.lib 4.1.2.0 Feb_2019 "; // $Id: 9ab6ceb805215f814b823776d95a90cdfcbe6d74 $
3
+ category="System and Control Theory";
4
+ info="
5
+ LIBRARY: findifs.lib Tools for the finite difference schemes
6
+ AUTHORS: Viktor Levandovskyy, levandov@math.rwth-aachen.de
7
+
8
+ OVERVIEW:
9
+ We provide the presentation of difference operators in a polynomial,
10
+ semi-factorized and a nodal form. Running @code{findifs_example();}
11
+ will demonstrate, how we generate finite difference schemes of linear PDEs
12
+ from given approximations.
13
+
14
+ Theory: The method we use have been developed by V. Levandovskyy and Bernd Martin. The
15
+ computation of a finite difference scheme of a given single linear partial
16
+ differential equation with constant coefficients with a given approximation
17
+ rules boils down to the computation of a Groebner basis of a submodule of
18
+ a free module with respect to the ordering, eliminating module components.
19
+
20
+
21
+ Support: SpezialForschungsBereich F1301 of the Austrian FWF
22
+
23
+ PROCEDURES:
24
+ findifs_example(); contains a guided explanation of our approach
25
+ decoef(P,n); decompose polynomial P into summands with respect to the number n
26
+ difpoly2tex(S,P[,Q]); present the difference scheme in the nodal form
27
+
28
+
29
+ exp2pt(P[,L]); convert a polynomial M into the TeX format, in nodal form
30
+ texcoef(n); converts the number n into TeX
31
+ npar(n); search for 'n' among the parameters and returns its number
32
+ magnitude(P); compute the square of the magnitude of a complex expression
33
+ replace(s,what,with); replace in s all the substrings with a given string
34
+ xchange(w,a,b); exchange two substrings in a given string
35
+
36
+ SEE ALSO: latex_lib, finitediff_lib
37
+ ";
38
+
39
+
40
+ LIB "latex.lib";
41
+ LIB "polylib.lib";
42
+
43
+ proc tst_findif()
44
+ {
45
+ example decoef;
46
+ example difpoly2tex;
47
+ example exp2pt;
48
+ example texcoef;
49
+ example npar;
50
+ example magnitude;
51
+ example replace;
52
+ example xchange;
53
+ }
54
+
55
+ // static procs:
56
+ // par2tex(s); convert special characters to TeX in s
57
+ // mon2pt(P[,L]); convert a monomial M into the TeX format, in nodal form
58
+
59
+
60
+ // 1. GLOBAL ASSUME: in the ring we have first Tx, then Tt: [FIXED, not needed anymore]!
61
+ // 2. map vars other than Tx,Tt to parameters instead or just ignore them [?]
62
+ // 3. clear the things with brackets
63
+ // 4. todo: content resp lcmZ, gcdZ
64
+
65
+ proc xchange(string where, string a, string b)
66
+ "USAGE: xchange(w,a,b); w,a,b strings
67
+ RETURN: string
68
+ PURPOSE: exchanges substring 'a' with a substring 'b' in the string w
69
+ NOTE:
70
+ EXAMPLE: example xchange; shows examples
71
+ "{
72
+ // replaces a<->b in where
73
+ // assume they are of the same size [? seems to work]
74
+ string s = "H";
75
+ string t;
76
+ t = replace(where,a,s);
77
+ t = replace(t,b,a);
78
+ t = replace(t,s,b);
79
+ return(t);
80
+ }
81
+ example
82
+ {
83
+ " EXAMPLE:"; echo=2;
84
+ ring r = (0,dt,dh,A),Tt,dp;
85
+ poly p = (Tt*dt+dh+1)^2+2*A;
86
+ string s = texpoly("",p);
87
+ s;
88
+ string t = xchange(s,"dh","dt");
89
+ t;
90
+ }
91
+
92
+ static proc par2tex(string s)
93
+ "USAGE: par2tex(s); s a string
94
+ RETURN: string
95
+ PURPOSE: converts special characters to TeX in s
96
+ NOTE: the convention is the following:
97
+ 'Tx' goes to 'T_x',
98
+ 'dx' to '\\tri x' (the same for dt, dy, dz),
99
+ 'theta', 'ro', 'A', 'V' are converted to greek letters.
100
+ EXAMPLE: example par2tex; shows examples
101
+ "{
102
+ // can be done with the help of latex_lib
103
+
104
+ // s is a tex string with a poly
105
+ // replace theta with \theta
106
+ // A with \lambda
107
+ // dt with \tri t
108
+ // dh with \tri h
109
+ // Tx with T_x, Ty with T_y
110
+ // Tt with T_t
111
+ // V with \nu
112
+ // ro with \rho
113
+ // dx with \tri x
114
+ // dy with \tri y
115
+ string t = s;
116
+ t = replace(t,"Tt","T_t");
117
+ t = replace(t,"Tx","T_x");
118
+ t = replace(t,"Ty","T_y");
119
+ t = replace(t,"dt","\\tri t");
120
+ t = replace(t,"dh","\\tri h");
121
+ t = replace(t,"dx","\\tri x");
122
+ t = replace(t,"dy","\\tri y");
123
+ t = replace(t,"theta","\\theta");
124
+ t = replace(t,"A","\\lambda");
125
+ t = replace(t,"V","\\nu");
126
+ t = replace(t,"ro","\\rho");
127
+ return(t);
128
+ }
129
+ example
130
+ {
131
+ " EXAMPLE:"; echo=2;
132
+ ring r = (0,dt,theta,A),Tt,dp;
133
+ poly p = (Tt*dt+theta+1)^2+2*A;
134
+ string s = texfactorize("",p);
135
+ s;
136
+ par2tex(s);
137
+ string T = texfactorize("",p*(-theta*A));
138
+ par2tex(T);
139
+ }
140
+
141
+ proc replace(string s, string what, string with)
142
+ "USAGE: replace(s,what,with); s,what,with strings
143
+ RETURN: string
144
+ PURPOSE: replaces in 's' all the substrings 'what' with substring 'with'
145
+ NOTE:
146
+ EXAMPLE: example replace; shows examples
147
+ "{
148
+ // clear: replace in s, "what" with "with"
149
+ int ss = size(s);
150
+ int cn = find(s,what);
151
+ if ( (cn==0) || (cn>ss))
152
+ {
153
+ return(s);
154
+ }
155
+ int gn = 0; // global counter
156
+ int sw = size(what);
157
+ int swith = size(with);
158
+ string out="";
159
+ string tmp;
160
+ gn = 0;
161
+ while(cn!=0)
162
+ {
163
+ // "cn:"; cn;
164
+ // "gn"; gn;
165
+ tmp = "";
166
+ if (cn>gn)
167
+ {
168
+ tmp = s[gn..cn-1];
169
+ }
170
+ // "tmp:";tmp;
171
+ // out = out+tmp+" "+with;
172
+ out = out+tmp+with;
173
+ // "out:";out;
174
+ gn = cn + sw;
175
+ if (gn>ss)
176
+ {
177
+ // ( (gn>ss) || ((sw>1) && (gn >= ss)) )
178
+ // no need to append smth
179
+ return(out);
180
+ }
181
+ // if (gn == ss)
182
+ // {
183
+
184
+ // }
185
+ cn = find(s,what,gn);
186
+ }
187
+ // and now, append the rest of s
188
+ // out = out + " "+ s[gn..ss];
189
+ out = out + s[gn..ss];
190
+ return(out);
191
+ }
192
+ example
193
+ {
194
+ " EXAMPLE:"; echo=2;
195
+ ring r = (0,dt,theta),Tt,dp;
196
+ poly p = (Tt*dt+theta+1)^2+2;
197
+ string s = texfactorize("",p);
198
+ s;
199
+ s = replace(s,"Tt","T_t"); s;
200
+ s = replace(s,"dt","\\tri t"); s;
201
+ s = replace(s,"theta","\\theta"); s;
202
+ }
203
+
204
+ proc exp2pt(poly P, list #)
205
+ "USAGE: exp2pt(P[,L]); P poly, L an optional list of strings
206
+ RETURN: string
207
+ PURPOSE: convert a polynomial M into the TeX format, in nodal form
208
+ ASSUME: coefficients must not be fractional
209
+ NOTE: an optional list L contains a string, which will replace the default
210
+ value 'u' for the discretized function
211
+ EXAMPLE: example exp2pt; shows examples
212
+ "{
213
+ // given poly in vars [now Tx,Tt are fixed],
214
+ // create Tex expression for points of lattice
215
+ // coeffs must not be fractional
216
+ string varnm = "u";
217
+ if (size(#) > 0)
218
+ {
219
+ if (typeof(#[1])=="string")
220
+ {
221
+ varnm = string(#[1]);
222
+ }
223
+ }
224
+ // varnm;
225
+ string rz,mz;
226
+ while (P!=0)
227
+ {
228
+ mz = mon2pt(P,varnm);
229
+ if (mz[1]=="-")
230
+ {
231
+ rz = rz+mz;
232
+ }
233
+ else
234
+ {
235
+ rz = rz + "+" + mz;
236
+ }
237
+ P = P-lead(P);
238
+ }
239
+ rz = rz[2..size(rz)];
240
+ return(rz);
241
+ }
242
+ example
243
+ {
244
+ " EXAMPLE:"; echo=2;
245
+ ring r = (0,dh,dt),(Tx,Tt),dp;
246
+ poly M = (4*dh*Tx^2+1)*(Tt-1)^2;
247
+ print(exp2pt(M));
248
+ print(exp2pt(M,"F"));
249
+ }
250
+
251
+ static proc mon2pt(poly M, string V)
252
+ "USAGE: mon2pt(M,V); M poly, V a string
253
+ RETURN: string
254
+ PURPOSE: convert a monomial M into the TeX format, nodal form
255
+ EXAMPLE: example mon2pt; shows examples
256
+ "{
257
+ // searches for Tx, then Tt
258
+ // monomial to the lattice point conversion
259
+ // c*X^a*Y^b --> c*U^{n+a}_{j+b}
260
+ number cM = leadcoef(M);
261
+ intvec e = leadexp(M);
262
+ // int a = e[2]; // convention: first Tx, then Tt
263
+ // int b = e[1];
264
+ int i;
265
+ int a , b, c = 0,0,0;
266
+ int ia,ib,ic = 0,0,0;
267
+ int nv = nvars(basering);
268
+ string s;
269
+ for (i=1; i<=nv ; i++)
270
+ {
271
+ s = string(var(i));
272
+ if (s=="Tt") { a = e[i]; ia = i;}
273
+ if (s=="Tx") { b = e[i]; ib = i;}
274
+ if (s=="Ty") { c = e[i]; ic = i;}
275
+ }
276
+ // if (ia==0) {"Error:Tt not found!"; return("");}
277
+ // if (ib==0) {"Error:Tx not found!"; return("");}
278
+ // if (ic==0) {"Error:Ty not found!"; return("");}
279
+ // string tc = texobj("",c); // why not texpoly?
280
+ string tc = texcoef(cM);
281
+ string rs;
282
+ if (cM==-1)
283
+ {
284
+ rs = "-";
285
+ }
286
+ if (cM^2 != 1)
287
+ {
288
+ // we don't need 1 or -1 as coeffs
289
+ // rs = clTex(tc)+" ";
290
+ // rs = par2tex(rmDol(tc))+" ";
291
+ rs = par2tex(tc)+" ";
292
+ }
293
+ // a = 0 or b = 0
294
+ rs = rs + V +"^{n";
295
+ if (a!=0)
296
+ {
297
+ rs = rs +"+"+string(a);
298
+ }
299
+ rs = rs +"}_{j";
300
+ if (b!=0)
301
+ {
302
+ rs = rs +"+"+string(b);
303
+ }
304
+ if (c!=0)
305
+ {
306
+ rs = rs + ",k+";
307
+ rs = rs + string(c);
308
+ }
309
+ rs = rs +"}";
310
+ return(rs);
311
+ }
312
+ example
313
+ {
314
+ "EXAMPLE:"; echo=2;
315
+ ring r = (0,dh,dt),(Tx,Tt),dp;
316
+ poly M = (4*dh^2-dt)*Tx^3*Tt;
317
+ print(mon2pt(M,"u"));
318
+ poly N = ((dh-dt)/(dh+dt))*Tx^2*Tt^2;
319
+ print(mon2pt(N,"f"));
320
+ ring r2 = (0,dh,dt),(Tx,Ty,Tt),dp;
321
+ poly M = (4*dh^2-dt)*Tx^3*Ty^2*Tt;
322
+ print(mon2pt(M,"u"));
323
+ }
324
+
325
+ proc npar(number n)
326
+ "USAGE: npar(n); n a number
327
+ RETURN: int
328
+ PURPOSE: searches for 'n' among the parameters and returns its number
329
+ EXAMPLE: example npar; shows examples
330
+ "{
331
+ // searches for n amongst parameters
332
+ // and returns its number
333
+ int i,j=0,0;
334
+ list L = ringlist(basering);
335
+ list M = L[1][2]; // pars
336
+ string sn = string(n);
337
+ sn = sn[2..size(sn)-1];
338
+ for (i=1; i<=size(M);i++)
339
+ {
340
+ if (M[i] == sn)
341
+ {
342
+ j = i;
343
+ }
344
+ }
345
+ if (j==0)
346
+ {
347
+ "Incorrect parameter";
348
+ }
349
+ return(j);
350
+ }
351
+ example
352
+ {
353
+ "EXAMPLE:"; echo=2;
354
+ ring r = (0,dh,dt,theta,A),t,dp;
355
+ npar(dh);
356
+ number T = theta;
357
+ npar(T);
358
+ npar(dh^2);
359
+ }
360
+
361
+ proc decoef(poly P, number n)
362
+ "USAGE: decoef(P,n); P a poly, n a number
363
+ RETURN: ideal
364
+ PURPOSE: decompose polynomial P into summands with respect
365
+ to the presence of the number n in the coefficients
366
+ NOTE: n is usually a parameter with no power
367
+ EXAMPLE: example decoef; shows examples
368
+ "{
369
+ // decomposes polynomial into summands
370
+ // w.r.t. the presence of a number n in coeffs
371
+ // returns ideal
372
+ def br = basering;
373
+ int i,j=0,0;
374
+ int pos = npar(n);
375
+ if ((pos==0) || (P==0))
376
+ {
377
+ return(0);
378
+ }
379
+ pos = pos + nvars(basering);
380
+ // map all pars except to vars, provided no things are in denominator
381
+ number con = content(P);
382
+ con = numerator(con);
383
+ P = cleardenom(P); //destroys content!
384
+ P = con*P; // restore the numerator part of the content
385
+ list M = ringlist(basering);
386
+ list L = M[1..4];
387
+ list Pars = L[1][2];
388
+ list Vars = L[2] + Pars;
389
+ L[1] = L[1][1]; // characteristic
390
+ L[2] = Vars;
391
+ // for non-comm things: don't need nc but graded algebra
392
+ // list templ;
393
+ // L[5] = templ;
394
+ // L[6] = templ;
395
+ def @R = ring(L);
396
+ setring @R;
397
+ poly P = imap(br,P);
398
+ poly P0 = subst(P,var(pos),0);
399
+ poly P1 = P - P0;
400
+ ideal I = P0,P1;
401
+ setring br;
402
+ ideal I = imap(@R,I);
403
+ kill @R;
404
+ // check: P0+P1==P
405
+ poly Q = I[1]+I[2];
406
+ if (P!=Q)
407
+ {
408
+ "Warning: problem in decoef";
409
+ }
410
+ return(I);
411
+ // subtract the pure part from orig and check if n is remained there
412
+ }
413
+ example
414
+ {
415
+ " EXAMPLE:"; echo=2;
416
+ ring r = (0,dh,dt),(Tx,Tt),dp;
417
+ poly P = (4*dh^2-dt)*Tx^3*Tt + dt*dh*Tt^2 + dh*Tt;
418
+ decoef(P,dt);
419
+ decoef(P,dh);
420
+ }
421
+
422
+ proc texcoef(number n)
423
+ "USAGE: texcoef(n); n a number
424
+ RETURN: string
425
+ PURPOSE: converts the number n into TeX format
426
+ NOTE: if n is a polynomial, texcoef adds extra brackets and performs some space substitutions
427
+ EXAMPLE: example texcoef; shows examples
428
+ "{
429
+ // makes tex from n
430
+ // and uses substitutions
431
+ // if n is a polynomial, adds brackets
432
+ number D = denominator(n);
433
+ int DenIsOne = 0;
434
+ if ( D==number(1) )
435
+ {
436
+ DenIsOne = 1;
437
+ }
438
+ string sd = texpoly("",D);
439
+ sd = rmDol(sd);
440
+ sd = par2tex(sd);
441
+ number N = numerator(n);
442
+ string sn = texpoly("",N);
443
+ sn = rmDol(sn);
444
+ sn = par2tex(sn);
445
+ string sout="";
446
+ int i;
447
+ int NisPoly = 0;
448
+ if (DenIsOne)
449
+ {
450
+ sout = sn;
451
+ for(i=1; i<=size(sout); i++)
452
+ {
453
+ if ( (sout[i]=="+") || (sout[i]=="-") )
454
+ {
455
+ NisPoly = 1;
456
+ }
457
+ }
458
+ if (NisPoly)
459
+ {
460
+ sout = "("+sout+")";
461
+ }
462
+ }
463
+ else
464
+ {
465
+ sout = "\\frac{"+sn+"}{"+sd+"}";
466
+ }
467
+ return(sout);
468
+ }
469
+ example
470
+ {
471
+ " EXAMPLE:"; echo=2;
472
+ ring r = (0,dh,dt),(Tx,Tt),dp;
473
+ number n1,n2,n3 = dt/(4*dh^2-dt),(dt+dh)^2, 1/dh;
474
+ n1; texcoef(n1);
475
+ n2; texcoef(n2);
476
+ n3; texcoef(n3);
477
+ }
478
+
479
+ static proc rmDol(string s)
480
+ {
481
+ // removes $s and _no_ (s on appearance
482
+ int i = size(s);
483
+ if (s[1] == "$") { s = s[2..i]; i--;}
484
+ if (s[1] == "(") { s = s[2..i]; i--;}
485
+ if (s[i] == "$") { s = s[1..i-1]; i--;}
486
+ if (s[i] == ")") { s = s[1..i-1];}
487
+ return(s);
488
+ }
489
+
490
+ proc difpoly2tex(ideal S, list P, list #)
491
+ "USAGE: difpoly2tex(S,P[,Q]); S an ideal, P and optional Q are lists
492
+ RETURN: string
493
+ PURPOSE: present the difference scheme in the nodal form
494
+ ASSUME: ideal S is the result of @code{decoef} procedure
495
+ NOTE: a list P may be empty or may contain parameters, which will not
496
+ appear in denominators
497
+ @* an optional list Q represents the part of the scheme, depending
498
+ on other function, than the major part
499
+ EXAMPLE: example difpoly2tex; shows examples
500
+ "
501
+ {
502
+ // S = sum s_i = orig diff poly or
503
+ // the result of decoef
504
+ // P = list of pars (numbers) not to be divided with, may be empty
505
+ // # is an optional list of polys, repr. the part dep. on "f", not on "u"
506
+ // S = simplify(S,2); // destroys the leadcoef
507
+ // rescan S and remove 0s from it
508
+ int i;
509
+ ideal T;
510
+ int ss = ncols(S);
511
+ int j=1;
512
+ for(i=1; i<=ss; i++)
513
+ {
514
+ if (S[i]!=0)
515
+ {
516
+ T[j]=S[i];
517
+ j++;
518
+ }
519
+ }
520
+ S = T;
521
+ ss = j-1;
522
+ int GotF = 1;
523
+ list F;
524
+ if (size(#)>0)
525
+ {
526
+ F = #;
527
+ if ( (size(F)==1) && (F[1]==0) )
528
+ {
529
+ GotF = 0;
530
+ }
531
+ }
532
+ else
533
+ {
534
+ GotF = 0;
535
+ }
536
+ int sf = size(F);
537
+
538
+ ideal SC;
539
+ int sp = size(P);
540
+ intvec np;
541
+ int GotP = 1;
542
+ if (sp==0)
543
+ {
544
+ GotP = 0;
545
+ }
546
+ if (sp==1)
547
+ {
548
+ if (P[1]==0)
549
+ {
550
+ GotP = 0;
551
+ }
552
+ }
553
+ if (GotP)
554
+ {
555
+ for (i=1; i<=sp; i++)
556
+ {
557
+ np[i] = npar(P[i])+ nvars(basering);
558
+ }
559
+ }
560
+ for (i=1; i<=ss; i++)
561
+ {
562
+ SC[i] = leadcoef(S[i]);
563
+ }
564
+ if (GotF)
565
+ {
566
+ for (i=1; i<=sf; i++)
567
+ {
568
+ SC[ss+i] = leadcoef(F[i]);
569
+ }
570
+ }
571
+ def br = basering;
572
+ // map all pars except to vars, provided no things are in denominator
573
+ list M = ringlist(basering);
574
+ list L = M[1..4]; // erase nc part
575
+ list Pars = L[1][2];
576
+ list Vars = L[2] + Pars;
577
+ L[1] = L[1][1]; // characteristic
578
+ L[2] = Vars;
579
+
580
+ def @R = ring(L);
581
+ setring @R;
582
+ ideal SC = imap(br,SC);
583
+ if (GotP)
584
+ {
585
+ for (i=1; i<=sp; i++)
586
+ {
587
+ SC = subst(SC,var(np[i]),1);
588
+ }
589
+ }
590
+ poly q=1;
591
+ q = lcm(q,SC);
592
+ setring br;
593
+ poly q = imap(@R,q);
594
+ number lq = leadcoef(q);
595
+ // lq;
596
+ number tmp;
597
+ string sout="";
598
+ string vname = "u";
599
+ for (i=1; i<=ss; i++)
600
+ {
601
+ tmp = leadcoef(S[i]);
602
+ S[i] = S[i]/tmp;
603
+ tmp = tmp/lq;
604
+ sout = sout +"+ "+texcoef(tmp)+"\\cdot ("+exp2pt(S[i])+")";
605
+ }
606
+ if (GotF)
607
+ {
608
+ vname = "p"; //"f";
609
+ for (i=1; i<=sf; i++)
610
+ {
611
+ tmp = leadcoef(F[i]);
612
+ F[i] = F[i]/tmp;
613
+ tmp = tmp/lq;
614
+ sout = sout +"+ "+texcoef(tmp)+"\\cdot ("+exp2pt(F[i],vname)+")";
615
+ }
616
+ }
617
+ sout = sout[3..size(sout)]; //rm first +
618
+ return(sout);
619
+ }
620
+ example
621
+ {
622
+ "EXAMPLE:"; echo=2;
623
+ ring r = (0,dh,dt,V),(Tx,Tt),dp;
624
+ poly M = (4*dh*Tx+dt)^2*(Tt-1) + V*Tt*Tx;
625
+ ideal I = decoef(M,dt);
626
+ list L; L[1] = V;
627
+ difpoly2tex(I,L);
628
+ poly G = V*dh^2*(Tt-Tx)^2;
629
+ difpoly2tex(I,L,G);
630
+ }
631
+
632
+
633
+ proc magnitude(poly P)
634
+ "USAGE: magnitude(P); P a poly
635
+ RETURN: poly
636
+ PURPOSE: compute the square of the magnitude of a complex expression
637
+ ASSUME: i is the variable of a basering
638
+ EXAMPLE: example magnitude; shows examples
639
+ "
640
+ {
641
+ // check whether i is present among the vars
642
+ list L = ringlist(basering)[2]; // vars
643
+ int j; int cnt = 0;
644
+ for(j=size(L);j>0;j--)
645
+ {
646
+ if (L[j] == "i")
647
+ {
648
+ cnt = 1; break;
649
+ }
650
+ }
651
+ if (!cnt)
652
+ {
653
+ ERROR("a variable called i is expected in basering");
654
+ }
655
+ // i is present, check that i^2+1=0;
656
+ // if (NF(i^2+1,std(0)) != 0)
657
+ // {
658
+ // "Warning: i^2+1=0 does not hold. Reduce the output manually";
659
+ // }
660
+ poly re = subst(P,i,0);
661
+ poly im = (P - re)/i;
662
+ return(re^2+im^2);
663
+ }
664
+ example
665
+ {
666
+ "EXAMPLE:"; echo=2;
667
+ ring r = (0,d),(g,i,sin,cos),dp;
668
+ poly P = d*i*sin - g*cos +d^2*i;
669
+ NF( magnitude(P), std(i^2+1) );
670
+ }
671
+
672
+
673
+ static proc clTex(string s)
674
+ // removes beginning and ending $'s
675
+ {
676
+ string t;
677
+ if (size(s)>2)
678
+ {
679
+ // why -3?
680
+ t = s[2..(size(s)-3)];
681
+ }
682
+ return(t);
683
+ }
684
+
685
+ static proc simfrac(poly up, poly down)
686
+ {
687
+ // simplifies a fraction up/down
688
+ // into the form up/down = RT[1] + RT[2]/down
689
+ list LL = division(up,down);
690
+ list RT;
691
+ RT[1] = LL[1][1,1]; // integer part
692
+ RT[2] = L[2][1]; // new numerator
693
+ return(RT);
694
+ }
695
+
696
+ proc findifs_example()
697
+ "USAGE: findifs_example();
698
+ RETURN: nothing (demo)
699
+ PURPOSE: demonstration of our approach and this library
700
+ EXAMPLE: example findifs_example; shows examples
701
+ "
702
+ {
703
+
704
+ "* Equation: u_tt - A^2 u_xx -B^2 u_yy = 0; A,B are constants";
705
+ "* we employ three central differences";
706
+ "* the vector we act on is (u_xx, u_yy, u_tt, u)^T";
707
+ "* Set up the ring: ";
708
+ "ring r = (0,A,B,dt,dx,dy),(Tx,Ty,Tt),(c,dp);";
709
+ ring r = (0,A,B,dt,dx,dy),(Tx,Ty,Tt),(c,dp);
710
+ "* Set up the matrix with equation and approximations: ";
711
+ "matrix M[4][4] =";
712
+ " // direct equation:";
713
+ " -A^2, -B^2, 1, 0,";
714
+ " // central difference u_tt";
715
+ " 0, 0, -dt^2*Tt, (Tt-1)^2,";
716
+ " // central difference u_xx";
717
+ " -dx^2*Tx, 0, 0, (Tx-1)^2,";
718
+ " // central difference u_yy";
719
+ " 0, -dy^2*Ty, 0, (Ty-1)^2;";
720
+ matrix M[4][4] =
721
+ // direct equation:
722
+ -A^2, -B^2, 1, 0,
723
+ // central difference u_tt
724
+ 0, 0, -dt^2*Tt, (Tt-1)^2,
725
+ // central difference u_xx
726
+ -dx^2*Tx, 0, 0, (Tx-1)^2,
727
+ // central difference u_yy
728
+ 0, -dy^2*Ty, 0, (Ty-1)^2;
729
+ //=========================================
730
+ // CHECK THE CORRECTNESS OF EQUATIONS AS INPUT:
731
+ ring rX = (0,A,B,dt,dx,dy,Tx,Ty,Tt),(Uxx, Uyy,Utt, U),(c,Dp);
732
+ matrix M = imap(r,M);
733
+ vector X = [Uxx, Uyy, Utt, U];
734
+ "* Print the differential form of equations: ";
735
+ print(M*X);
736
+ // END CHECK
737
+ //=========================================
738
+ setring r;
739
+ "* Perform the elimination of module components:";
740
+ " module R = transpose(M);";
741
+ " module S = std(R);";
742
+ module R = transpose(M);
743
+ module S = std(R);
744
+ " * See the result of Groebner bases: generators are columns";
745
+ " print(S);";
746
+ print(S);
747
+ " * So, only the first column has its nonzero element in the last component";
748
+ " * Hence, this polynomial is the scheme";
749
+ " poly p = S[4,1];" ;
750
+ poly p = S[4,1]; // by elimination of module components
751
+ " print(p); ";
752
+ print(p);
753
+ list L; L[1]=A;L[2] = B;
754
+ ideal I = decoef(p,dt); // make splitting w.r.t. the appearance of dt
755
+ "* Create the nodal of the scheme in TeX format: ";
756
+ " ideal I = decoef(p,dt);";
757
+ " difpoly2tex(I,L);";
758
+ difpoly2tex(I,L); // the nodal form of the scheme in TeX
759
+ "* Preparations for the semi-factorized form: ";
760
+ poly pi1 = subst(I[2],B,0);
761
+ poly pi2 = I[2] - pi1;
762
+ " poly pi1 = subst(I[2],B,0);";
763
+ " poly pi2 = I[2] - pi1;";
764
+ "* Show the semi-factorized form of the scheme: 1st summand";
765
+ " factorize(I[1]); ";
766
+ factorize(I[1]); // semi-factorized form of the scheme: 1st summand
767
+ "* Show the semi-factorized form of the scheme: 2nd summand";
768
+ " factorize(pi1);";
769
+ factorize(pi1); // semi-factorized form of the scheme: 2nd summand
770
+ "* Show the semi-factorized form of the scheme: 3rd summand";
771
+ " factorize(pi1);";
772
+ factorize(pi2); // semi-factorized form of the scheme: 3rd summand
773
+ }
774
+ example
775
+ {
776
+ "EXAMPLE:"; echo=1;
777
+ findifs_example();
778
+ }