Modular arithmetic can be used to compute exactly, at low cost, a set of simplecomputations.
These include most geometric predicates, that need to be checkedexactly, and especially, the sign of determinants and more general polynomialexpressions. Modular arithmetic resides on the Chinese Remainder Theorem, whichstates that, when computing an integer expression, you only have to compute itmodulo several relatively prime integers called the modulis. The true integervalue can then be deduced, but also only its sign, in a simple and efficientmaner. The main drawback with modular arithmetic is its static nature, becausewe need to have a bound on the result to be sure that we preserve ourselves fromoverflows (that can’t be detected easily while computing).
The smaller thisknown bound is, the less computations we have to do. We have developped a set ofefficient tools to deal with these problems, and we propose a filtered approach,that is, an approximate computation using floating point arithmetic, followed,in the bad case, by a modular computation of the expression of which we know abound, thanks to the floating point computation we have just done. Theoreticalwork has been done in common with , , Victor Pan and. See the bibliography fordetails. At the moment, only the tools to compute without filters are available.The aim is now to build a compiler, that produces exact geometric predicateswith the following scheme: filter + modular computation.
This approach is notcompulsory optimal in all cases, but it has the advantage of simpleness in mostgeometric tests, because it’s general enough. Concerning the implementation, theModular Package contains routines to compute sign of determinants and polynomialexpressions, using modular arithmetic. It is already usable, to compute signs ofdeterminants, in any dimension, with integer entries of less than 53 bits. Inthe near future, we plan to add a floating point filter before the modularcomputation.