Change log for Magma V2.29-8 (Released 10/6/2026)

Aggregates

·Printing of multisets now respects the print level properly for elements with multiplicity greater than 1. Reported by Markus Grassl.

Algebraic Curves

·RandomGenus5CurveNonTrigonal hung forever over fields of characteristic 2. It now reports a clear error instead.

·GonalityPreservingLift on a non-trigonal genus-5 curve over a field of characteristic 2 used to fail with an internal "Division by zero". It now reports a clear characteristic-2 error.

Algebraic Function Fields

·A crash when constructing an ideal of an order of an algebraic function field using a sequence containing one zero has been fixed. Reported by Florian Hess.

·Print names are now automatically assigned to the algebraic function field constructed to be a rational function field if the rational function field has print names assigned. Reported by Florian Hess.

·Coercion into algebraic function fields has been extended/improved so that evaluation of polynomials at elements of such fields (with automatic coercion) now behaves correctly. Reported by Shiva Chidambaram.

Algebraic Number Fields

·The efficiency of memory management has been improved when deleting many number fields. Reported by Andrew Sutherland.

·Embedding information is now reliably retained between fields and subfields constructed from them.

Algebraic Surfaces

·The BettiNumber intrinsic for elliptic surfaces over a non-rational base curve now uses the correct genus contributions.

·We improved ParametrizeDelPezzo for smooth degree-5 surfaces by trying all 5 choices of removal quadric in the pair-of-points construction.

Algebras

·A bug in sub<> for non-associative algebras, where products of basis elements were not included, has been fixed. Reported by Justin McIlroy.

·Signature matching and dispatch has been fixed so that multiplication of a polynomials defined over an algebra and a scalar in the algebra now behaves correctly. Reported by Przemyslaw Koprowsk.

·A crash arising from incorrect memory handling in the function UniversalEnvelopingAlgebra has been fixed.

Automatic Groups

·New function IsConjugate to test conjugacy for infinite-order elements of a hyperbolic group.

Basic Algebras

·The algorithm to compute a basic algebra from a presentation has been significantly improved by the use of sparse matrices; this can also save memory. Reported by David Benson.

Coding Theory

·Fixed a race condition in the threaded WeightDistribution algorithm.

Commutative Algebra

·Unexpected behaviour in the Homogenization function for multivariate polynomials ideals has been fixed. Reported by Daniele Taufer.

·A crash when computing homogeneous Groebner bases has been fixed. Reported by Sachi Hashimoto.

·A bug where PrimaryDecomposition could create ideals which did not have properly reduced Groebner bases has been fixed.

·A hang in Radical testing for ideals with many variables in small characteristic has been fixed. Reported by Steve Huang.

·The FGLM algorithm now selects most monomial orders for the target order (when the Al := "FGLM" parameter is given). Requested by Eric Rains.

·New function NumberField(A) for affine algebra A (in the case that A is a field) has been added. Requested by Eric Rains.

Finite Groups

·Added intrinsic IdentifyGroupBySearch(G), which returns the <#G, k> label of G in the small groups database by iterating the database with cheap invariants (derived subgroup order, exponent, centre order, etc.) followed by an IsIsomorphic check. This is a fallback for orders such as 1152 and 1536 for which CanIdentifyGroup returns false. The error raised by IdentifyGroup on such orders now mentions this fallback. Reported by Dan Yasaki.

·Functions like CosetAction for matrix groups defined over quotient rings of orders of number fields are now properly supported. Reported by Steve Huang.

·A small bug in maximal subgroups for Sp(8,4) has been fixed. Reported by Tim Burness.

·New function WordInGenerators which uses an algorithm of Minkwitz to try to write elements of a finite permutation or matrix group as a reasonably short word in the user generators.

Finitely Presented Groups

·Fixed a crash in IsAutomaticGroup and AutomaticGroup that could abort Magma when the system temporary directory path was long.

Invariant Rings

·A hang in PrimaryInvariants for diagonal matrix groups has been fixed. Reported by David Benson.

Lattices

·A crash in IsIsometric for integral lattices has been fixed. Reported by Jeremy Rouse.

Local Fields

·Precision when constructing Eltseq of an element in a ramified extension has been improved. Reported by Kevin Keating.

·Precision when coercing an element sequence into a local field has been improved. Reported by Kevin Keating.

Matrices

·Fixed a precision bug in numerical complex linear algebra (Solution, Kernel, Rank) where an internal random-unitary generator was passed the wrong parent and used a heap-state-dependent precision, causing results to vary in the last bits across sessions.

·The algorithms to compute the echelon form or nullspace of a matrix defined over the quotient of a maximal order of a number field by any ideal is now supported properly for the first time. Reported by Dan Yasaki.

·A crash in Determinant for matrices defined over quaternion algebras has been fixed. Reported by Lewis Combes.

Matrix Groups

·Algorithms for matrix groups defined over quaternion algebras are now supported properly. Reported by Markus Grassl.

Modular Curves

·Implemented faster version of X0NQuotient when the quotient is an elliptic curve embedded in a high dimensional space. Reported by Oana Padurariu.

Permutation Groups

·New function TwoClosure to compute the two-closure of a transitive permutation group.

Quadratic Fields

·The Conductor of some quadratic orders has been fixed to match the documentation and equivalent computations. Reported by Anthony Henderson.

Representation Theory

·A bug in Complement(M, S) for G-modules M,S (where the base ring was not a finite field, the integer ring or the rational field) has been fixed. Reported by Justin McIlroy.

System

·The command-line usage and documentation now describe all user-facing startup options, and -h, -? and â€“help now display the usage message and exit successfully.

·Blank lines are now preserved in strings even when reading from standard input (in particular when in a terminal).

·A fix has been made so infinite recursion (causing a crash) in traceback printing on errors is now avoided.

·A fix in traceback printing has been made so that whenever an error occurs while printing a function argument, the argument is abbreviated and the original error message is now clearly printed properly. Reported by David Roe.