---
title: "Magma V2.20-4 Patch Notes"
canonical: "https://docs.magma-maths.org/patchnotes/2.20-4.html"
source: "https://docs.magma-maths.org/patchnotes/2.20-4.md"
---

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

## Abelian Extensions of Function Fields

- Fix [`SMaximalOrder`](../GlobalFields/ClassFieldTheoryForGlobalFunctionFields/witt-rings.md#function-smaximalorder-rngwittelt-plcfunelt) to be an S-maximal over order of the equation order.
- The computation of maximal orders of Artin–Schreier—Witt extensions has been sped up by using the chinese remainder theorem instead of strong approximation when this is faster and also by reducing the length of the sequences input into either of these algorithms.
- Arithmetic with Witt vectors has been made more efficient.

## Aggregates

- Some improvements have been made to the speed of basic operations on sequences in the common case where there are no undefined elements.

## Algebraic Curves

- A bug in testing for ordinariness of plane curves has been fixed. This was causing [`HasOnlyOrdinarySingularities`](../AlgebraicGeometry/AlgebraicCurves/curves.md#function-hasonlyordinarysingularities-crvpln) to sometimes return that a non-ordinary curve was ordinary and caused errors in some other curve intrinsics that test for ordinariness and use a different algorithm in the ordinary case. Reported by J. Jahnel.

## Algebraic Function Fields

- The defining polynomials of equation orders of function fields whose defining polynomials are non-monic or non-integral have been improved.
- A check for zero ideals has been added when computing HNF bases of ideals. Reported by M. Kirschmer.
- The parameter `Strict` has been added to [`StrongApproximation([PlcFunElt], [FldFunGElt], [RngIntElt])`](../GlobalFields/ClassFieldTheoryForGlobalFunctionFields/related.md#function-strongapproximation-divfunelt-plcfunelt-fldfunelt). Its default value is [`false`](../MagmaLanguage/StatementsAndExpressions/boolean.md#literal-literal-false-false).
- The intrinsic `ChineseRemainderTheorem([PlcFunElt], [FldFunGElt], [RngIntElt])` has been added.
- Some decompositions of places have been sped up by using CRT instead of strong approximation.

## Algebraic Number Fields

- A check for zero ideals has been added when computing HNF bases of ideals. Reported by M. Kirschmer.

## Commutative Algebra

- Inefficiencies in computing primary decomposition of a class of ideals over number fields have been fixed.  Reported by F. Favale.

## Elliptic Curves

- A bug in point-counting over finite fields with SEA which was causing sporadic runtime errors has been fixed. Reported by Craig Costello.

## Hypergeometric Motives

- The hypergeometric motive package continues to be developed in various ways. Most significant is this patch release is the removal of the swapping of the ALPHA and BETA arrays. This affects a few other intrinsics such as `Twist`, which also no longer swaps the arrays.
- Magma now contains the first part of a database for $t=1$ degenerations. The intent is that the data at wild primes should be pre-computed here, when the user calls `LSeries`(H,1). Every case of degree up through 4 is now included. Furthermore, except for degree 4 and weight 2, an associated object is now available via [`Identify`](../ArithmeticGeometry/HypergeometricMotives/Functionality.md#function-identify-hypgeomdata-rngqzelt) (two cases of degree 4 and weight 3 are also elided, as the level, namely 5400, of the modular forms is too large, and bogs down the computation).
- The `LSeries` intrinsic for hypergeometric data now has a `ZetaOrder` vararg that allows the user to specify that the $L$-series is expected to have a factor of the Riemann $\zeta$-function (possibly shifted) raised to the given power.
- Some minor problems with deformations at $t=1$ and the [`Identify`](../ArithmeticGeometry/HypergeometricMotives/Functionality.md#function-identify-hypgeomdata-rngqzelt) function were patched. Similarly with `EulerFactor` at $t=1$.

## L-Series

- A printing error with `HodgeStructure` has been fixed.
- A bug with `EulerFactor` of an L-series of a modular form has been corrected. Additionally, the L-series of a 1-dimensional modular symbol space is now possible.
- A fix to `TensorProduct` has been made, to ameliorate problems when the user has specified a trivial Euler factor (1) of one of the constituents as an integer rather than pedantically as a polynomial.
- A bug was fixed in the general `SymmetricPower` intrinsic, which had caused a crash due to a incorrect argument passed to `HodgeStructure`. This intrinsic has also had its `BadEulerFactors` vararg be replaced by the more common `BadPrimes`, though the former is still retained for compatibility.
- The `TensorProduct` intrinsic with two arguments can now take the `BadPrimes` info as a vararg, rather than having this be a third argument (as with `ExcFactors` – the latter is also still available).

## Lattices and Quadratic Forms

- Magma should now use Damien Stehle’s LLL implementation in (almost) all cases. Previously, it was being used for all applications of `LLL` to a matrix, but not for `LLL` when applied to a lattice given by real input rather than exact input.  Reported by M. Kirschmer.
- A fix was made to the intrinsic [`WittInvariants`](../LatticesQuadraticForms/QuadraticForms/local-invariants.md#function-wittinvariants-rngmpolelt) so that the set of bad primes is now consistent with the Handbook description.

## Linear Programming

- Fixed an occasional crash during garbage collection of `LP` objects. Reported by A. Munemasa.

## Matrices

- The mutation operators `+:=` and `-:=` have been extended to work when the objects on both sides are compatible matrices which may have different types.  Problem reported by A. Maurischat.

## Schemes

- A bug with lifting the origin with [`IsolatedPointsLifter`](../AlgebraicGeometry/Schemes/scheme-isolated-points.md#function-isolatedpointslifter-sch-seqenum) (due to erroneous use of `Precision` rater than `AbsolutePrecision`) was fixed. Reported by A.-S. Elsenhans and J. Jahnel.

## p-adics

- `IsZero` has been fixed for p-adics. `IsZero(Zero(K))` is now [`true`](../MagmaLanguage/StatementsAndExpressions/boolean.md#literal-literal-true-true).
- Checking equality with zero for p-adics, in expressions such as “0 eq pAdicRing(11)!0” now are [`true`](../MagmaLanguage/StatementsAndExpressions/boolean.md#literal-literal-true-true), even when assigning the result to a variable. Previously, in the latter case (of assigning a result), the Magma interpreter would try to use special is_zero code that would incorrectly return [`false`](../MagmaLanguage/StatementsAndExpressions/boolean.md#literal-literal-false-false).
