Albert
is an extremely useful and efficient C program for computations in relatively
free nonassociative algebras.
It was written around 1990 by
David Pokrass Jacobs with help
of few others.
Albert version 3.0 was released at 1994. Albert version 4.0 was released at
September 2008 with the sole change to be able to compile it with the modern
(at the time) gcc. At 2014, Albert started to be
developed further by
Kent Vander Velden, with lot of improvements, notably parallelization.
The following describes another fork of Albert 3.0/4.0, done by me mainly around
2009-2010. While Vander Velden's version seems to be more superior, this fork is
kept here for historical purposes.
Albert 3.0 computes over a prime field of characteristic up to 251 and is an
interactive program.
I have slightly modified it in the following ways:
Allowed to compute over prime fields of large characteristics
(up to 263 - 1) and over rationals (via GMP; in fact, any C/C++
library implementing arithmetic over a suitable field can be used now with a
little additional efffort).
Improved interface: using GNU readline;
to facilitate non-interactive processing, exposed it through a C++ library;
possibility of output in GAP format.
Fixed few minor glitches here and there.
All the Albert core algorithms were not modified; some data structures were
converted to C++ standard library containers, similarly how it was done in
Vander Velden's version.
The latest Albert versions, dubbed 4.0M*:
Source:
current version, planned for 4.0M7: support for
OpenBSD, started work to allow UI for number fields (non-integer coefficients),
changed command line parameters and some Albert commands. It probably will
require a few extra libraries to compile, notably,
LiDIA.
4.0M6, released January 10, 2019:
fixed a crash on big identities.
Here are old Albert versions.
Here is a description of the C++ library interface
for versions 4.0M4 and earlier. The current implementation is different and is
not documented.
Requirements to build the latest version of Albert: any relatively modern
Unix(-like) system with GNU make, gcc or compatible (such as LLVM/clang),
GMP, and
readline
(on Debian, RedHat, Cygwin, or similar systems which use packaging, this amounts
to installing packages named like gcc-c++/g++, (lib)gmp-devel,
and (lib)readline-devel). To build Albert binary, type make.
To build Albert static library, type make libalbert.a.
To run a test, type make test; test runs a few minutes (about 8 minutes
on Macbook Air with 1.8 GHz Intel Core i5).
Some things to take into account:
On systems where both gcc and clang might be available (MacOS, OpenBSD), be sure
that all the libraries you compile against are compiled with the same complier
(either gcc, or clang). gcc and clang are binary incompatible and cannot be
mixed.
On some systems (OpenBSD), GNU make may be invoked as gmake.
On OpenBSD, use ereadline instead of readline. The makefile (called
GNUmakefile) makes some attempt to do that automatically, but in case
of need please edit the makefile as you see fit.
To run test, Perl is required.
The latest version of Albert was built and tested on Linux, MacOS, OpenBSD, and
Cygwin. Some of the previous versions were built and tested also on MinGW. The library was not tested for the latest version, and some previous versions
were tested on Linux and Cygwin.
Thanks are due to Dima Pasechnik
for useful advices and for providing access to OpenBSD.
Should you have comments or questions about this modified version of Albert,
do not hesitate to contact me.
Created: Tue Mar 10 2009
Last modified: Fri Aug 12 07:11:25 CEST 2022