1. Base Reference Document
OpenAxiom is a descendent of the AXIOM computer algebra system as described by Richard Jenks and Robert Sutor in AXIOM: The Scientific Computation System. That book is the base reference document for OpenAxiom.
2. Changes From The Base Document
2.1. OpenAxiom-1.4.0
This release introduces the following changes from the base document2.1.1 Interpreter
2.1.2. Compiler
- The compiler now accepts interpreter-style unnamed functions.
- The compiler now generate far better (Lisp) codes for Spad libraries or scripts. The compiler now applies more aggressive (but sound) optimizations, including domain inlining, type propagations.
- The compiler now accepts interpreter-style unnamed functions.
- Parameterized macros are now supported by the compiler.
- The compiler now support exception handling. In particular,
the
try/finallyprogramming construct was added to support reliable resource management (e.g. opening/closing or creating/removing files.)
2.1.3. Algebra
In addition to novelties in OpenAxiom-1.3.0, the following types have been added to OpenAxiom-1.4.0:- The category
BooleanLogichas been added. It is now extended byPropositionalLogicandBitAggregate. The domainSingleIntegernow satisfiesBooleanLogic. - It it now possible to obtain the string representation of
a
DoubleFloatvalue. The functionstring: DoubleFloat -> %was added to the domainString - A function
matrixis now exported by the categoryMatrixCategoryto allow construction of matrices whose entries can be succinctely described by a function. For instance, the 4-by-4 Hilbert matrix may be expressed asm: Matrix Fraction Integer := matrix(4,4,(i,j) +-> 1/(i+j))Note that the third argument is a function that computes the value of the(i,j)th entry. - The category
StringCategorywas removed as it was essentially redundant with the categoryStringAggregate. - The category
MappingCategoryis now part of the algebra as a builtin category constructor. - The following operators
less?: (%,NonNegativeInteger) -> Boolean more?: (%,NonNegativeInteger) -> Boolean size?: (%,NonNegativeInteger) -> Booleanhave been moved from the categoryAggregatetoStreamAggregatewhere they seem more appropriate. - The domain
InnerTaylorSeriesnow satisfies the categoryBiModule. - The domains
FreeModuleandOrderedFreeMonoidnow satisfy the newly addedFreeMonoidCategory. - The list of domains for OpenAxiom program manipulation has been expanded.
- Support for range and segment bindings now includes
RangeBinding.