We describe lrsarith which is a small fixed precision and hybrid arithmetic C library for integers and rationals that we developed for use in the lrslib library for polyhedral computation. Using a generic set of operations, a program can be compiled with either 64-bit or 128-bit (if available) fixed precision, with an extended precision library such as GMP or the built-in MP routines. A simple scheme checks for overflow and either terminates the program or, in hybrid mode, changes to a higher precision arithmetic. Implementing these arithmetics in lrslib resulted in only minimal changes to the original code. We give computational results using lrs and mplrs, vertex/facet enumeration codes in lrslib, using 64 and 128 bit fixed integer arithmetic with and without overflow checking, GMP arithmetic, lrsarith hybrid arithmetic with both GMP and MP, and FLINT hybrid arithmetic. We give a small self-contained example C program using the lrsarith package in both fixed precision and hybrid mode.
翻译:我们描述 Lrararith 是一个小的固定精密和混合算术 C 库, 用于我们为多元计算而开发的 lislib 库的整数和理性。 我们使用一套通用的操作, 程序可以用64比特或128比特( 如果有的话) 固定精确度来编集, 并配有诸如 GMP 或 内置的 MP 常规等扩展精密库。 一个简单的计划检查溢出和终止程序, 或者以混合模式修改程序。 在 lrslib 中应用这些算术只对原始代码做了最低限度的修改。 我们用 lrrrs 和 mplrprs、 verex/ 脸谱码在 lrslib 中提供计算结果, 使用64 和 128 位固定整数算术, 使用 GMP 算术、 lrcarith 混合算术, 与 GMP 和 MP 和 FLINT 混合算术。 我们用 lrsarith 包以固定精准和混合方式提供一个小的自成样的 C 程序。