<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" "https://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" article-type="research-article" dtd-version="1.2" xml:lang="en">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">IJCMG</journal-id>
<journal-title-group><journal-title>International Journal of Computational Mathematics and Geometry</journal-title></journal-title-group>
<publisher><publisher-name>Thomson &amp; Ryberg Publications</publisher-name></publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.62715/ijcmg.2026.v1.i1.pp13-18</article-id>
<article-id pub-id-type="publisher-id">4dd37ae544</article-id>
<article-categories><subj-group subj-group-type="heading"><subject>Methodology Article</subject></subj-group></article-categories>
<title-group><article-title>A Robust Predicate Library for Delaunay Triangulation on Mixed-Precision Hardware</article-title></title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes"><name><surname>Ellery</surname><given-names>Anahit</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1">*</xref></contrib>
<contrib contrib-type="author"><name><surname>Venkatesan</surname><given-names>Neha</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref></contrib>
<contrib contrib-type="author"><name><surname>Yamamoto</surname><given-names>Fernanda</given-names></name><xref ref-type="aff" rid="aff3"><sup>3</sup></xref></contrib>
<aff id="aff1"><label>1</label>Department of Mathematics, Thames Graduate Institute of Mathematics, Serbia</aff>
<aff id="aff2"><label>2</label>Department of Mathematics, Bharathapuzha Graduate Institute of Mathematics, Netherlands</aff>
<aff id="aff3"><label>3</label>Department of Mathematics, Chaliyar Graduate Institute of Mathematics, Bulgaria</aff>
</contrib-group>
<author-notes><corresp id="cor1">* Correspondence: <email>anahit.ellery@thames.edu</email></corresp></author-notes>
<pub-date pub-type="epub" iso-8601-date="2026-08-17"><day>17</day><month>08</month><year>2026</year></pub-date>
<volume>1</volume>
<issue>1</issue>
<fpage>13</fpage>
<lpage>18</lpage>
<history>
<date date-type="received" iso-8601-date="2026-04-27"><day>27</day><month>04</month><year>2026</year></date>
<date date-type="accepted" iso-8601-date="2026-06-25"><day>25</day><month>06</month><year>2026</year></date>
</history>
<permissions><copyright-statement>© 2026 The Author(s)</copyright-statement><copyright-year>2026</copyright-year><license license-type="open-access" xlink:href="https://creativecommons.org/licenses/by/4.0/"><license-p>This is an open access article distributed under the Creative Commons Attribution 4.0 International License (CC BY 4.0).</license-p></license></permissions>
<self-uri xlink:href="https://trpub.org/article.php?id=4dd37ae544"/>
<abstract><p>Delaunay triangulation depends on two sign computations, the orientation test and the in-circle or in-sphere test, and an incorrect sign can make an otherwise correct algorithm loop, crash or return an invalid mesh. Robust predicates for conventional double-precision processors have been available since the 1990s. They assume that binary64 arithmetic with round-to-nearest is the fast native format, an assumption that no longer holds on graphics processors and accelerators where single or half precision is the efficient format, double precision is slow or emulated, and fused multiply-add and subnormal handling vary between devices. This article proposes the design of a predicate library for that setting. It consists of an explicit input contract and a cascade of four stages: a semi-static filter in the narrow native format, a filter in double precision that exploits exact products of narrow operands, adaptive evaluation with floating-point expansions built from error-free transformations, and an exact fallback, followed by symbolic perturbation for degenerate inputs. Each stage is described with the condition under which it certifies a sign and the hardware property it relies on. A verification plan is included. The design is a proposal assembled from published techniques and has not been implemented or benchmarked here.</p></abstract>
<kwd-group kwd-group-type="author">
<kwd>Geometric predicates</kwd>
<kwd>Delaunay triangulation</kwd>
<kwd>Floating-point filters</kwd>
<kwd>Mixed-precision arithmetic</kwd>
<kwd>Error-free transformations</kwd>
<kwd>Exact geometric computation</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="sec1"><title>1. Introduction</title>
<p>A triangulation of a point set is Delaunay when no point lies inside the circumscribing circle, or sphere, of any simplex, the empty sphere condition introduced by Delaunay (1934). Algorithms that construct such triangulations, whether incremental, divide-and-conquer or flip-based, take all their geometric decisions through two predicates (Guibas and Stolfi, 1985). The orientation test asks on which side of a line or plane a point lies. The in-circle or in-sphere test asks whether a point lies inside, on or outside the circle or sphere through the others. Both are the sign of a small determinant of the input coordinates.</p>
<p>Evaluated in floating-point arithmetic, such a determinant can come out with the wrong sign when its true value is close to zero. The consequences are out of proportion to the size of the error. Kettner et al. (2008) exhibit small inputs on which a textbook incremental algorithm, run with a naive floating-point orientation test, produces a wrong result or fails to terminate. The accepted cure is the exact geometric computation paradigm: the predicates must return the sign of the exact determinant, whatever arithmetic is used internally (Yap, 1997).</p>
<p>The best known implementation of that paradigm is the set of adaptive predicates of Shewchuk (1997), written for processors on which double precision is the native format. Triangulation codes now also run on graphics processors and other accelerators, where the fast format is narrower and the arithmetic environment is less uniform. This article proposes a design for a predicate library suited to such mixed-precision hardware. It describes a method and the reasoning behind it. No implementation is evaluated, and no performance claims are made.</p>
</sec>
<sec id="sec2"><title>2. Background</title>
<p>The design combines three bodies of established work: the analysis of rounding error in the predicates, the filtering techniques that avoid exact arithmetic in easy cases, and the error-free transformations from which exact arithmetic can be built out of ordinary floating-point operations.</p>
<sec id="sec2-2"><title>2.1. Rounding and the IEEE formats</title>
<p>The IEEE 754 standard defines binary formats with significands of 11, 24 and 53 bits, known as binary16, binary32 and binary64, and requires that each basic operation return the correctly rounded result (IEEE, 2019). Correct rounding is what makes rigorous error bounds possible: the computed result of one operation differs from the exact one by at most half a unit in the last place, and bounds for a whole expression follow by the standard techniques described by Higham (2002). Goldberg (1991) remains a clear account of where the guarantees end, for example when a compiler keeps intermediate values in a wider register or reorders operations.</p>
</sec>
<sec id="sec2-3"><title>2.2. Filters</title>
<p>A filter evaluates the determinant in fast arithmetic together with a bound on the accumulated error, and accepts the sign when the magnitude of the computed value exceeds the bound. Static filters derive the bound before run time from assumed limits on the coordinates, as in the integer-coordinate analysis of Fortune and Van Wyk (1996). Semi-static filters scale a precomputed constant by the magnitude of the actual operands. Dynamic filters compute the bound alongside the value, usually with interval arithmetic (Brönnimann et al., 2001). Devillers and Pion (2003) show how these are layered for Delaunay predicates so that almost all calls are settled by the cheapest test. The general principle, cheap tests first and costly ones only on failure, is often called cascading.</p>
</sec>
<sec id="sec2-4"><title>2.3. Error-free transformations and expansions</title>
<p>The sum of two floating-point numbers can be written exactly as a floating-point result plus a floating-point error term, and the error term can be computed with a few further additions. One such algorithm is due to Knuth (Knuth, 1997), and a faster one that requires the operands to be ordered by magnitude, together with a splitting technique that gives the analogous result for products, is due to Dekker (1971). Chaining these transformations yields expansions, sums of floating-point components that represent a number exactly, an idea developed by Priest (1991) and made adaptive by Shewchuk (1997). Where a fused multiply-add is available, the error of a product costs a single extra operation (Muller et al., 2018).</p>
</sec>
</sec>
<sec id="sec3"><title>3. What Changes on Mixed-Precision Hardware</title>
<p>Four assumptions behind the classical predicates need to be revisited. The first is the working format. Coordinates on an accelerator are commonly stored in binary32, sometimes in binary16 for compressed geometry, and double-precision operations may be markedly slower or absent. The second is the fused multiply-add. It changes the rounding of expressions that a compiler contracts silently, which can invalidate an error bound derived for separate multiplication and addition. The third is the treatment of subnormal numbers, which some devices flush to zero by default, breaking the exactness of error-free transformations near the underflow threshold. The fourth is control flow: data-parallel execution penalizes branches, so that a cascade in which different inputs leave at different stages has to be organized differently from a scalar routine.</p>
<p>Mixed precision also offers an opportunity that uniform double precision lacks. The product of two binary32 numbers has at most 48 significant bits and is therefore exactly representable in binary64, barring overflow and underflow. Narrow inputs evaluated in a wider format thus lose nothing in their first multiplications. This is the principle on which mixed-precision methods in numerical linear algebra are built (Higham and Mary, 2022), and it can be used in geometric predicates in the same way.</p>
</sec>
<sec id="sec4"><title>4. The Proposed Design</title>
<p>The library is organized as an input contract followed by four evaluation stages and a tie-breaking rule. Figure 1 shows the arrangement, and Table 1 states for each stage the arithmetic it uses, the condition under which it returns a certified sign, and the hardware property on which its correctness depends. A call descends to the next stage only when the current one cannot certify the sign.</p>
<table-wrap id="tbl1"><label>Table 1</label><caption><p>Stages of the proposed predicate cascade</p></caption><table frame="hsides" rules="groups"><thead><tr><th>Stage</th><th>Arithmetic</th><th>Certifies the sign when</th><th>Relies on</th></tr></thead><tbody><tr><td>A. Narrow filter</td><td>Native format, straight-line code</td><td>Computed magnitude exceeds a semi-static bound</td><td>Correct rounding; no contraction</td></tr><tr><td>B. Wide filter</td><td>binary64, or double-word arithmetic where binary64 is absent</td><td>Magnitude exceeds a tighter bound</td><td>Exact products of narrow operands</td></tr><tr><td>C. Adaptive expansions</td><td>Error-free transformations in the widest native format</td><td>Partial expansion exceeds its remaining error bound</td><td>Round-to-nearest; subnormals kept</td></tr><tr><td>D. Exact fallback</td><td>Full expansions or multiword integers</td><td>Always, including a true zero</td><td>Integer or exact floating-point operations</td></tr><tr><td>Tie-breaking</td><td>Comparison of point indices</td><td>Exact determinant is zero</td><td>Consistent global indexing</td></tr></tbody></table></table-wrap>
<fig id="fig1"><label>Figure 1</label><caption><p>Layers of the proposed predicate library; a call moves down only when a stage cannot certify the sign</p></caption><graphic xlink:href="IJCMG_V1I1_2026_03_Figure1.png" mimetype="image" mime-subtype="png"/></fig>
<sec id="sec4-2"><title>4.1. Input contract</title>
<p>Each point set passed to the library carries a descriptor stating the format of its coordinates and, optionally, a bounding box and a grid spacing. The descriptor selects the constants used by the filters. If the coordinates are known to be multiples of a grid spacing within a bounded box, they are scaled integers of known bit length, and the bit length required by each determinant is known in advance: roughly twice the coordinate length for the planar orientation test and four times for the in-circle test, plus a few guard bits. Inputs without such guarantees are treated as arbitrary values of their format. Not-a-number and infinite coordinates are rejected at this point and never inside a predicate.</p>
</sec>
<sec id="sec4-3"><title>4.2. Stage A: semi-static filter in the native format</title>
<p>The determinant is evaluated in the fast narrow format by branch-free code, after translating the points so that one of them is the origin. In parallel the same expression is evaluated on absolute values, and the result is multiplied by a constant derived from a forward error analysis of the expression in that format. The sign is accepted if the magnitude of the determinant exceeds this bound. The stage is written so that it can be applied to a whole batch of simplices at once, with the undecided ones compacted into a list for the next stage. Contraction into fused multiply-adds must be disabled for this code, or else the constant must be derived for the contracted form.</p>
</sec>
<sec id="sec4-4"><title>4.3. Stage B: filter in a wider format</title>
<p>Undecided calls are re-evaluated in binary64. For binary32 inputs the coordinate differences are formed in binary64, where they are exact whenever the operands are close enough in exponent for the result to fit in 53 bits, a condition the bounding box and grid in the input contract can guarantee. The first products are then nearly exact, and the error bound shrinks by many orders of magnitude compared with Stage A. On devices without binary64 the same stage is implemented with double-word arithmetic, in which each quantity is held as an unevaluated sum of two binary32 numbers and manipulated by error-free transformations (Muller et al., 2018), and the bound is adjusted accordingly.</p>
</sec>
<sec id="sec4-5"><title>4.4. Stage C: adaptive expansion arithmetic</title>
<p>The few calls that remain are close to degenerate. They are evaluated with expansions in the widest native format, following the adaptive scheme of Shewchuk (1997): the determinant is computed in successively more accurate approximations, each reusing the components already obtained, and evaluation stops as soon as the approximation exceeds its remaining error bound. Products use the fused multiply-add when the device provides a correctly rounded one and Dekker&#x27;s splitting otherwise. The stage requires round-to-nearest and gradual underflow, and the library should verify both when it is initialized instead of assuming them.</p>
</sec>
<sec id="sec4-6"><title>4.5. Stage D and tie-breaking</title>
<p>If the adaptive stage runs to completion without certifying a nonzero sign, the full expansion has been computed and its sign is the exact answer. For grid inputs an alternative is multiword integer arithmetic of the length fixed by the input contract. A result of exactly zero means that the points are collinear, cocircular or the higher-dimensional equivalent. The library then applies a symbolic perturbation in the manner of the simulation of simplicity of Edelsbrunner and Mücke (1990), resolving the tie by comparing the global indices of the points, so that the triangulation algorithm never sees a degenerate case and the output is uniquely defined. Lévy (2016) describes a toolkit that generates filters, expansions and perturbation code from one formula, and the same generative approach is recommended here, since hand-written variants of one determinant are a known source of errors.</p>
</sec>
</sec>
<sec id="sec5"><title>5. Verification Plan</title>
<p>A predicate library is useful only if its claim of exactness can be checked. The proposal is to test at three levels. Each error-free transformation is tested for exactness against multiword integer arithmetic on operands chosen to stress carries, cancellation and the underflow boundary. Each predicate is then compared with an exact rational evaluation on inputs that are deliberately near-degenerate: points on a common line or circle perturbed by one unit in the last place, in the style of the failure-inducing examples of Kettner et al. (2008). Finally the device itself is probed at start-up for rounding mode, subnormal support, fused multiply-add behaviour and contraction, and the library refuses to run, or selects a slower safe path, when a required property is absent.</p>
</sec>
<sec id="sec6"><title>6. Limitations and What Remains to Be Shown</title>
<p>The design set out here is a proposal and has not been validated. Its correctness rests on error bounds that have to be derived, and preferably machine-checked, for each predicate in each format, and a mistake in a single constant would defeat the purpose. Its efficiency rests on the expectation that the narrow filter settles the large majority of calls. That is plausible for well-distributed inputs, since the narrow format leaves fewer bits of margin but most configurations are far from degenerate, yet for inputs with many nearly cocircular points, such as samples of spheres or regular grids, the proportion of calls reaching the later stages may be high. Only measurement on real devices can settle this.</p>
<p>Two further limits should be stated. The library guarantees correct predicates on the coordinates as stored, and says nothing about the error committed when those coordinates were rounded from other data. And it covers predicates only. Constructions such as circumcentres, which Voronoi diagrams and mesh refinement require, cannot be made exact in fixed-size floating-point formats and need separate treatment.</p>
</sec>
<sec id="sec7"><title>7. Conclusion</title>
<p>Exact predicates for Delaunay triangulation need not be confined to double-precision processors. A cascade that starts in the narrow native format, widens where widening makes products exact, and falls back on expansion arithmetic and symbolic perturbation can in principle deliver exact signs on hardware whose fast arithmetic is single precision. The components are all established. What this article adds is their arrangement around an explicit input contract and an explicit list of the hardware properties each stage depends on. Implementation, formal verification of the error bounds and measurement on current accelerators are the necessary next steps.</p>
</sec>
<sec id="sec8"><title>Conflict of interest</title>
<p>To be declared by the author(s) before publication.</p>
</sec>
<sec id="sec9"><title>Funding</title>
<p>To be declared by the author(s) before publication.</p>
</sec>
</body>
<back>
<ref-list><title>References</title>
<ref id="ref1"><label>1</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Brönnimann, H., Burnikel, C. and Pion, S.</string-name></person-group> (<year>2001</year>). <article-title>Interval arithmetic yields efficient dynamic filters for computational geometry</article-title>. <source>Discrete Applied Mathematics</source>, <volume>109(1-2)</volume>, <fpage>25-47</fpage></mixed-citation></ref>
<ref id="ref2"><label>2</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Dekker, T.J.</string-name></person-group> (<year>1971</year>). <article-title>A floating-point technique for extending the available precision</article-title>. <source>Numerische Mathematik</source>, <volume>18(3)</volume>, <fpage>224-242</fpage></mixed-citation></ref>
<ref id="ref3"><label>3</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Delaunay, B.</string-name></person-group> (<year>1934</year>). <article-title>Sur la sphère vide</article-title>. <source>Izvestia Akademii Nauk SSSR, Otdelenie Matematicheskikh i Estestvennykh Nauk</source>, <volume>7</volume>, <fpage>793-800</fpage></mixed-citation></ref>
<ref id="ref4"><label>4</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Devillers, O. and Pion, S.</string-name></person-group> (<year>2003</year>). <article-title>Efficient exact geometric predicates for Delaunay triangulations</article-title>. <source>Proceedings of the 5th Workshop on Algorithm Engineering and Experiments (ALENEX)</source></mixed-citation></ref>
<ref id="ref5"><label>5</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Edelsbrunner, H. and Mücke, E.P.</string-name></person-group> (<year>1990</year>). <article-title>Simulation of simplicity: A technique to cope with degenerate cases in geometric algorithms</article-title>. <source>ACM Transactions on Graphics</source>, <volume>9(1)</volume>, <fpage>66-104</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1145/77635.77639">https://doi.org/10.1145/77635.77639</ext-link></mixed-citation></ref>
<ref id="ref6"><label>6</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Fortune, S. and Van Wyk, C.J.</string-name></person-group> (<year>1996</year>). <article-title>Static analysis yields efficient exact integer arithmetic for computational geometry</article-title>. <source>ACM Transactions on Graphics</source>, <volume>15(3)</volume>, <fpage>223-248</fpage></mixed-citation></ref>
<ref id="ref7"><label>7</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Goldberg, D.</string-name></person-group> (<year>1991</year>). <article-title>What every computer scientist should know about floating-point arithmetic</article-title>. <source>ACM Computing Surveys</source>, <volume>23(1)</volume>, <fpage>5-48</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1145/103162.103163">https://doi.org/10.1145/103162.103163</ext-link></mixed-citation></ref>
<ref id="ref8"><label>8</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Guibas, L. and Stolfi, J.</string-name></person-group> (<year>1985</year>). <article-title>Primitives for the manipulation of general subdivisions and the computation of Voronoi diagrams</article-title>. <source>ACM Transactions on Graphics</source>, <volume>4(2)</volume>, <fpage>74-123</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1145/282918.282923">https://doi.org/10.1145/282918.282923</ext-link></mixed-citation></ref>
<ref id="ref9"><label>9</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Higham, N.J.</string-name></person-group> (<year>2002</year>). <article-title>Accuracy and Stability of Numerical Algorithms</article-title>. <source>2nd edition. Society for Industrial and Applied Mathematics, Philadelphia</source></mixed-citation></ref>
<ref id="ref10"><label>10</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Higham, N.J. and Mary, T.</string-name></person-group> (<year>2022</year>). <article-title>Mixed precision algorithms in numerical linear algebra</article-title>. <source>Acta Numerica</source>, <volume>31</volume>, <fpage>347-414</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1017/S0962492922000022">https://doi.org/10.1017/S0962492922000022</ext-link></mixed-citation></ref>
<ref id="ref11"><label>11</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>IEEE</string-name></person-group> (<year>2019</year>). <article-title>IEEE Standard for Floating-Point Arithmetic, IEEE Std 754-2019</article-title>. <source>Institute of Electrical and Electronics Engineers, New York</source></mixed-citation></ref>
<ref id="ref12"><label>12</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Kettner, L., Mehlhorn, K., Pion, S., Schirra, S. and Yap, C.</string-name></person-group> (<year>2008</year>). <article-title>Classroom examples of robustness problems in geometric computations</article-title>. <source>Computational Geometry</source>, <volume>40(1)</volume>, <fpage>61-78</fpage></mixed-citation></ref>
<ref id="ref13"><label>13</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Knuth, D.E.</string-name></person-group> (<year>1997</year>). <article-title>The Art of Computer Programming, Volume 2: Seminumerical Algorithms</article-title>. <source>3rd edition. Addison-Wesley, Reading, MA</source></mixed-citation></ref>
<ref id="ref14"><label>14</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Lévy, B.</string-name></person-group> (<year>2016</year>). <article-title>Robustness and efficiency of geometric programs: The Predicate Construction Kit (PCK)</article-title>. <source>Computer-Aided Design</source>, <volume>72</volume>, <fpage>3-12</fpage></mixed-citation></ref>
<ref id="ref15"><label>15</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Muller, J.-M., Brunie, N., de Dinechin, F., Jeannerod, C.-P., Joldes, M., Lefèvre, V., Melquiond, G., Revol, N. and Torres, S.</string-name></person-group> (<year>2018</year>). <article-title>Handbook of Floating-Point Arithmetic</article-title>. <source>2nd edition. Birkhäuser, Cham</source></mixed-citation></ref>
<ref id="ref16"><label>16</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Priest, D.M.</string-name></person-group> (<year>1991</year>). <article-title>Algorithms for arbitrary precision floating point arithmetic</article-title>. <source>Proceedings of the 10th IEEE Symposium on Computer Arithmetic</source>, <fpage>132-143</fpage></mixed-citation></ref>
<ref id="ref17"><label>17</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Shewchuk, J.R.</string-name></person-group> (<year>1997</year>). <article-title>Adaptive precision floating-point arithmetic and fast robust geometric predicates</article-title>. <source>Discrete &amp; Computational Geometry</source>, <volume>18(3)</volume>, <fpage>305-363</fpage> <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1007/PL00009321">https://doi.org/10.1007/PL00009321</ext-link></mixed-citation></ref>
<ref id="ref18"><label>18</label><mixed-citation publication-type="other"><person-group person-group-type="author"><string-name>Yap, C.-K.</string-name></person-group> (<year>1997</year>). <article-title>Towards exact geometric computation</article-title>. <source>Computational Geometry</source>, <volume>7(1-2)</volume>, <fpage>3-23</fpage></mixed-citation></ref>
</ref-list>
</back>
</article>