Core Concepts
This article presents a MATLAB simulator for level-index arithmetic, a number system designed to address the issues caused by underflows and overflows in floating-point representations.
Abstract
The content introduces level-index (LI) arithmetic, a number system proposed in the 1980s to address the problems of underflows and overflows in floating-point representations. LI arithmetic does not expand the set of representable numbers but spaces out the numbers of large magnitude even more than floating-point to move the infinities further away from zero.
The article presents a custom precision simulator in MATLAB for exploring the performance of LI arithmetic. Key highlights:
Encoding of LI numbers: The authors discuss how to encode LI numbers in a limited precision word length, with a sign bit, a reciprocal sign bit, a level, and an index.
Comparison of small LI systems: The authors compare a 5-bit unsigned SLI representation with a 5-bit unsigned binary floating-point system, highlighting the differences in the range and distribution of representable values.
LI arithmetic operations: The article outlines the algorithms for performing addition, subtraction, multiplication, and division with LI numbers, based on the work of Clenshaw, Olver, and Turner.
MATLAB implementation: The authors have implemented a simulator for SLI arithmetic in MATLAB, providing details on the sli object and its properties.
Experiments: The article presents experiments comparing the accuracy of a 16-bit SLI representation (sli-2.12) with binary16 and bfloat16 floating-point representations, as well as the backward error in matrix-vector multiplication.
The simulator is intended to enable the research community to experimentally study the LI number system and explore its potential applications, particularly in areas like machine learning where narrow bit-width representations are desired but floating-point underflow/overflow can cause difficulties.