This repository collects the C, C++, and MATLAB codes and scripts to reproduce the experiments in [1]. The whole suite can be run with
make experiments
provided that all the relevant Dependencies mentioned below are available. Experiments that were present in previous drafts of the manuscript but are not included in the latest version can be run with the command
make experiments_extra
All experiments require that CPFloat be available. The GitHub repository is cloned automatically, and the relevant portions of CPFloat are compiled when needed.
The C experiments require the GNU MPFR library [3] and the FloatX library [2].
The MATLAB experiments depend on the chop function [4], on the FLOATP_Toolbox, and on the Matlab/Octave toolbox for Reliable Computing (INTLAB) [5].
[1] Massimiliano Fasi and Mantas Mikaitis. CPFloat: A C library for emulating low-precision arithmetic. MIMS EPrint 2020.22, Manchester Institute for Mathematical Sciences, The University of Manchester, UK, October 2020. Revised April 2022.
[2] Goran Flegar, Florian Scheidegger, Vedran Novaković, Giovani Mariani, Andrés E. Tomás, A. Cristiano I. Malossi, and Enrique S. Quintana-Ortí. FloatX: A C++ library for customized floating-point arithmetic, ACM Trans. Math. Software, 45(4), 1-23, 2019.
[3] Laurent Fousse, Guillaume Hanrot, Vincent Lefèvre, Patrick Pélissier, and Paul Zimmermann. 2007. MPFR: A multiple-precision binary floating-point library with correct rounding, ACM Trans. Math. Software, 33(2), 13:1–13:15, 2007.
[4] Nicholas J. Higham and Srikara Pranesh, Simulating low precision floating-point arithmetic, SIAM J. Sci. Comput., 41, C585-C602, 2019.
[5] Siegfried M. Rump. INTLAB — INTerval LABoratory. In Developments in Reliable Computing, Tibor Csendes editor, Springer-Verlag, Dordrecht, Netherlands, 77–104, 1999.
The GNU MPFR Library is distributed under the terms of the GNU Lesser General Public License (GNU Lesser GPL), Version 3 or later (Version 2.1 or later for MPFR versions until 2.4.x).
The FloatX Library is distributed under the terms of the Apache License, Version 2.0.
The MATLAB function chop
is distributed under the terms of the BSD 2-Clause "Simplified" License.
The FLOATP Toolbox is distributed under an informal license and without any warranty.
The Matlab/Octave toolbox for Reliable Computing (INTLAB) is proprietary software.