---
title: "Magma V2.29-8 Patch Notes"
canonical: "https://docs.magma-maths.org/patchnotes/2.29-8.html"
source: "https://docs.magma-maths.org/patchnotes/2.29-8.md"
---

<a id="magma-v2-29-8-patch-notes"></a>
# Magma V2.29-8 Patch Notes

## 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`](../AlgebraicGeometry/AlgebraicCurves/function_field.md#function-gonalitypreservinglift-crv-fldfun) 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`](../AlgebraicGeometry/AlgebraicSurfaces/srfcs-P3.md#function-as-prmdp) 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`](../LieTheory/LieAlgebras/universal_enveloping_algebras.md#function-universalenvelopingalgebra-alglie) 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`](../CommutativeAlgebra/PolynomialRingIdealOperations/homogenization.md#function-homogenization-rngmpol-rngintelt-boolelt) 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)`](../FiniteGroups/DatabasesOfGroups/smlgps-database.md#function-grpdata-identifygroupbysearch), 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`](../FinitelyPresentedGroups/AutomaticAndHyperbolicGroups/automatic-groups.md#function-isautomaticgroup-grpfp) 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`](../ModularArithmeticGeometry/ModularCurves/mod-crv-quotient.md#function-x0nquotient-rngintelt-rngintelt) when the quotient is an elliptic curve embedded in a high dimensional space. Reported by Oana Padurariu.

## Permutation Groups

- New function [`TwoClosure`](../FiniteGroups/PermutationGroups/actions.md#function-twoclosure-grpperm) 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.
