"You can't add apples and oranges". False. You can in the free abelian group generated by an apple and an orange.
Dave Penneys at mathoverflow


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: 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: Binaries:
Here is the user's guide for the latest version:   pdf TeX

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:
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