Recent Releases of syngular
syngular - v0.5.1
[0.5.1] - 2025-06-03
Added
- Block weighted ordering interface to singular, tuple of 'wp(weight:length)'
Changed
- Improved support for Gaussian rational field (Q[i])
- Improves serialization for Field and Polynomial
Fixed
- An issue with pseudo-randomness of slices
- An issue with Monomial string parsing
- Python
Published by GDeLaurentis 12 months ago
syngular - v0.5.0
[0.5.0] - 2025-04-23
Added
RingPointrepresents a point in the chosen ring, can be used to evaluate expressions, generate slices and can be manipulated to be near a variety. Naming may change, e.g. toVariety. Analogous to the phase space objectParticlesfrom lips package in the context of HEP computations, but (quotient) ring agnostic.QaliasesField('rational', 0, 0),QialiasesField('gaussian rational', 0, 0)Ring.univariate_slicecan build an univariate slice in any (quotient) ring, implements arXi:2408.12686 eqs. 3.10 and 3.11.Ideal.indepSetandIdeal.dimcan now be leant semi-numerically by generating a point on the variety. This is untested for ideals of non-uniform dimension, it likely picks a highest dimensional component.
Changed
Ideal.primeTestDLP(or equivalentlyIdeal.test_primality) now acceptsseminumerical_dim_computation=False,nbr_points=100keyword arguments. The former, when set to True, drastically improves capability of checking primality (uses the semi-numerical learning of the dimension, to avoid complicated Groebner bases).- Improved capabilities of ring-agnostic
MonomialandPolynomial, now used as backhands toTermsobject representing rational functions in the python package antares(-hep on the pypi). New optional settings are:FORCECDOTS, to force printing of multiplication symbol, defaults toFalse;CDOTCHAR, to choose the multiplication symbol, defaults to·.*or(white space) are also supported;UNICODEPOWERS, to choose whether powers are written as unicode symbols, defaults toTrue;NORMALIZE_POWERS_PATTERNS, will transform variables pulling out powers, e.g.re.compile(r"(mt)(\d+)")will forcemt2to be treated asmt^2.
Fixed
- CD PyPI
- Python
Published by GDeLaurentis about 1 year ago
syngular - v0.4.0
[0.4.0] - 2025-03-7
Added
- Improved functionality of
test_primality, which can now handle ideals without linear projections. Theastuplekwarg if set to True will return a pair of booleans with the answers to (is primary, is prime) point_on_varietykeyword argumentindepSet='force guess'skips attempting to compute the independet set. While this only saves 3 seconds, it is noticeable when generating thousands of points.syngular.DEBUGallows to inspect Singular's output when set to True.
Changed
Ideal.dimrecycles the cachedIdeal.groebner_basis, instead of computing a fresh standard basis. Unclear if Singularstdorgroebneris better here, but at least now caching is used.
Fixed
point_on_varietycatchesTimeoutErrorwhich may be raised if the Groebner basis is complicated even for the semi-numerical ideal.
- Python
Published by GDeLaurentis about 1 year ago
syngular - v0.3.0
[0.3.0] - 2025-02-10
Added
Ideal.guess_indep_setguesses an independent set by estimating the codimension of the ideal. The codimension is always estimated to be either the true value, or bigger. If a bigger codimension than the true one is estimated, the true (co)dimension of the ideal will be learnt in while generating thepoint_on_variety. Tries not to return obviously wrong guesses (all generators must have at least 1 dependent variable).Ideal.dim_in_full_ringattribute is used to keep track of the dimension while moving in and out of quotient rings.TemporarySettingallows to locally set values for settings with context manager syntax (with ...).Polynomial.variablesyields all appearing variables.
Changed
point_on_varietydefault behavior is to iteratively guess a correct idependent set, rather than compute it. This avoids having to compute a Groebner basis of the fully analytical ideal. New behaviour is much faster for complicated ideals. Still checks if independent set can be computed cheaply (within 3 seconds), and if so avoids guessing.Ideal.dimis now a property with setter and getter. The Singular computation is triggered only if-dimis None. For instance, the dimension is learned during thepoint_on_varietycomputation without actually computing a GB.
Fixed
- Fixing issue where missing Singular installation would prevent importing syngular.
- Python
Published by GDeLaurentis over 1 year ago
syngular - v0.2.5
[0.2.5] - 2024-12-31
Added
Field.random_squaregenerates a random perfect square in a field.- Experimental new feature to bypass
indepSetgeneration forpoint_on_variety(to be improved). For now it needs to be supplied as kwarg and it has to be a validindepSetwhich takes the ideal directly down to a zero dimensional one.
Fixed
KeyboardInterrupte.g. from a Jupyter notebook should now kill Singular child processes.- Fixed issue where
satchanged tosat_with_expin Singular (unclear if in 4.3.2 or 4.4).
- Python
Published by GDeLaurentis over 1 year ago
syngular - v0.2.4
[0.2.4] - 2024-12-18
Added
zero_idealandrandom_pointfunctions forRingclass.DEGBOUNDsparameters containing list of degree bounds to use in iterated computations.
Changed
- Improved stability of
point_on_varietywhen using arbitrary precision floats.
Fixed
- Fixed issue when parsing complex floats with imaginary part in scientific notation.
- Fixed bug in primality test where if the deg. bounded computation was inconclusive the deg. bounded Groebner basis was still being using in the computation without a degree bound, causing erroneous failures.
- Python
Published by GDeLaurentis over 1 year ago
syngular - v0.2.3
[0.2.3] - 2024-08-20
Added
- Added warning to
point_on_varietyifdirectionsare specified when the field is a finite field (and thus the directions cannot be imposed). - Support for
wpweighted reverse lex order from Singular. test_primalityallows to skip to a givenprojection_number(optional keyword argument)
Fixed
- Fixed issue where TIMEOUT was not being correctly set after removing mutableint.
- Fixed issue in README where the example could not be copy-pasted into code (missing quotation marks).
Deprecated
- Python 3.8 no longer supported.
- Python
Published by GDeLaurentis almost 2 years ago
syngular - v0.2.2
[0.2.2] - 2024-06-06
Added
- Custom
MonomialandPolynomialclasses, to better handle polynomials with coefficients in any of $\mathbb{C}, \mathbb{F}p, \mathbb{Q}p$. - DOI.
Ideal.point_on_varietynow checks whether the provideddirectionsare consistent with the given variety.- Added support for rational field,
Field('rational', 0, 0). - Tentatively introducing shorter aliases for field names, such as
C,QpandFp. - Continuous deployment of Documentation via GitHub Pages.
- CI checks several python versions.
Changed
Ideal.point_on_varietyno longer relies onsympyfor parsing the polynomials, resulting in a drastic performance boost for complicated systems of polynomials. Interface should be unchanged.- Splitting CI Test and CI Lint.
- Breaking:
syngular.TIMEOUTandsyngular.DEGBOUNDare now normal integers (instead of mutableints) (.set()will not work any longer). Removedmutableintbecause it breaks with python3.12 and might not be needed in the first place.
Fixed
- Improved logic for call to
Singularwith long commands requiring the writing of a file. As a consequence, parallelised calls should now have much better stability.
Deprecated
Field.random_elementis now deprecated. UseField.randominstead.
- Python
Published by GDeLaurentis almost 2 years ago
syngular - v0.2.1
[0.2.1] - 2024-05-04
Added
QRingis an alias forQuotientRing.test_primalityaccepts optionalkwarg,iterated_degbound_computation, with defult valueFalse. Behaviour is unchanged on default setting. If set toTrue, the codimensions of ideals involving f-poly factors are computed with subsequently looser degree bounds, until either a given degree (18) is exceeded or the codim is greater than that of the original ideal. Use is recommended only for ideals that are expected to be prime and for which the computation without degree bound fails.
Changed
- Default
max_triesforIdeal.point_on_varietyincreased to 100 from 10: needed when generating a large number of points.
Fixed
- Occasinally, when generating a
point_on_varietywith multi-precision complex (mpc) thelex_groebner_basiscomputation can return the unit ideal, due to precision loss. Introduced a newRootPrecisionErrorexception and added this to the retry logic.
- Python
Published by GDeLaurentis about 2 years ago
syngular - v0.2.0
v0.2.0 - 2023-12-27
Added
- Ideal method to generate points of varieties,
Ideal.point_on_variety. - Field object (moved from lips)
Fixed
- Syntax consistency when printing polynomials over rings with single-character variables (forced
short=0always). - Import path in Singular for
poly.libis nowpolylib.lib.
- Python
Published by GDeLaurentis over 2 years ago