SXEmacs supports several of the available arithmetical and mathematical libraries. Wherever possible, it is attempted to introduce a transparency layer, such that one library can be exchanged by another when both provide equal or similar functionality. This layering allow emacs lisp and C programmers to minimise their efforts by using a standardised interface.
On the other hand, it is attempted to additionally bring all library-specific features into the emacs lisp environment. That way emacs lisp (and also C) programmers can easily use certain functions which are contained in only one specific library.
Some of the functionality provided by libraries is even re-implemented in C in order to allow emacs lisp programmers to use such functions even if the external library is not available. This may sound a little obscure, but it is important to establish a consistent and convenient concept of number types in the emacs lisp environment once the enhanced number type support is enabled.
We start this section with a quick overview of what is available out there, and what is additionally available due to re-implementation.
|• GNU-MP:||The GNU multi-precision arithmetic library (GMP).|
|• BSD-MP:||The BSD multi-precision library.|
|• MPFR:||Multi-precision floats with correct. rounding (based on GMP).|
|• MPC:||Multi-precision complex numbers with correct rounding (based on MPFR).|
|• Pseudocomplex Numbers:||A native SXEmacs implementation of complex numbers (based on MPF/MPFR).|
|• Pseudogaussian Numbers:||A native SXEmacs implementation of Gaussian numbers (based on MPZ).|
|• Residue Class Rings:||A native SXEmacs implementation of residue class rings (based on MPZ)|
|• Quaternions:||A native SXEmacs implementation of the quaternionic division algebra.|
|• Octonions:||A native SXEmacs implementation of the octonions division algebra.|
|• Algebraic Numbers:||A native SXEmacs implementation of algebraic numbers (based on GMP).|
|• Modules/Lattices:||A native SXEmacs implementation of lattices (Z-modules).|