GAP 4.4 Update 8 (September 2006)
New or improved functionality

A function Positions with underlying operation
PositionsOp, which returns the list
of all positions at which a given object appears in a given list.

LogFFE
now returns fail
when the element is not a power of the base.

It is now allowed to continue long integers, strings or identifiers by
ending a line with a backslash or with a backslash and carriage return
character. So, files with GAP code and
DOS/Windowsstyle line breaks are now valid input on all architectures.

The command line for starting the session and the system environment are now
available in GAPInfo.SystemCommandLine and
GAPInfo.SystemEnvironment.

Names of all bound global variables and all component names are available
on GAP level.

Added a few new Conway polynomials computed by Kate Minola and John Bray.

There is a new concept of random sources, see IsRandomSource, which provides random number
generators which are independent of each other.
There is kernel code for the Mersenne twister random number generator
(based on the code by Makoto Matsumoto distributed
here).
It provides fast 32 bit pseudo random integers with a period of length
2^199371
and a 623dimensional equidistribution. The library methods for random
elements of lists and for random (long) integers (Random(low, high)) are using the Mersenne twister now.

In line editing mode (usual input mode without n option) in lines starting
with gap> , > or
brk> this beginning part is immediately
removed. This is a convenient feature that allows one to cut and paste
input lines from other sessions or from manual examples into the current
session.
Fixed bugs which could produce wrong results

The function
Decomposition returned coefficient vectors also in certain
situations where in fact no decomposition exists.
This happened only if the matrix entered as the first argument
contained irrational values
and a row in the matrix entered as the second argument did not respect the
algebraic conjugacy relations between the columns of the first argument.
So there was no problem for the usual cases that the two matrices are
integral or that they are lists of Brauer characters. [Reported by Jürgen Müller]

PC group homomorphisms can claim a wrong kernel after composition. [Reported by Serge Bouc]

The return value of
OctaveAlgebra had an inconsistent
defining structure constants table for the case of coefficients fields
not containing the integer zero. [Reported by Gábor Nagy]

The manual guarantees that a conjugator automorphism has a conjugating
element in the group if possible. This was not guaranteed.

StabChain
for symmetric groups gave a wrong result if fixed points were
prescribed for base.

Contrary to what is documented the function
POW_OBJ_INT returned an immutable result for
POW_OBJ_INT(m,1) for a mutable object
m. This is triggered by the code
m^1.

PseudoRandom for a group
had a problem if the group had lots of equal
generators. The produced elements were extremely poorly distributed in
that case. This is now fixed for the case that elements of the group
can easily be sorted.

Fixed the bug that the type of a blist was
computed wrongly: The
type previously had IS_PLIST_REP instead
of IS_BLIST_REP in its filter list.

Orbits
did not respect a special PositionCanonical method for right
transversals. [Reported by Steve Costenoble]

Wrong results for GcdInt for some arguments on 64 bit systems only.
[Reported by Robert Morse]

When prescribing a subgroup to be included, the low index algorithm for fp
groups sometimes returned subgroups which are in fact conjugate. (No
subgroups are missing.) [Reported by Ignaz Soroko]
Fixed bugs which could lead to crashes

The command line option x allowed
arguments > 256 which
can then result in internal buffers overflowing. Now bigger numbers
in the argument are equivalent to x 256.
[Reported by Michael Hartley]
Other fixed bugs

Two special methods for the operation
CompositionMapping2 were not correct,
such that composing (and multiplying) certain group homomorphisms
did not work. [Reported by Peter Mayr]

In the definition of
FrobeniusCharacterValue, it had been stated erroneously
that the value must lie in the field of p^{n}th roots of unity;
the correct condition is that the value must lie in the field of
(p^{n}1)th roots of unity. [Reported by Jack Schmidt]

The function
DirectProduct failed when one of the factors was known to be
infinite.

For a linear action homomorphism PreImageElm
was very slow because there was no good method to check for injectivity,
which is needed for nearly all good methods for
PreImageElm. This change adds such a new
method for IsInjective. [Reported by Akos Seress]

Rare errors in the complement routine for permutation groups.

Blocks code now uses jellyfishstyle random elements to avoid bad Schreier
trees.

A method for IsPolycyclicGroup has been added.
Such a method was missing so far.

Corrected EpimorphismSchurCover to handle
the trivial group correctly.
Added new methods that follow immediately from computing
the Schur Cover of a group. The attribute
Epicentre, the operations
NonabelianExteriorSquare and
EpimorphismNonabelianExteriorSquare, and
the property IsCentralFactor are added to the
library with documentation and references.

Display the correct expression in a call stack trace
if an operation was called somewhere up due to the evaluation
of a unary or binary operation.

Made StripMemory an operation rather than a
global function. Added ForgetMemory operation.

Adjust things slightly to make later conversion to new vectors/matrices
easier. Nothing of this should be visible.

Corrected some details in the documentation of the GAP language. [Reported by Alexander Konovalov]

Now PositionSorted is much faster on long mutable
plain lists. (The former operation is substituted by a function and a new
operation PositionSortedOp.) [Reported by Radu Silviu]

Now it is possible to switch repeated warnings off when working with
iterative polynomial rings.
