{
  "abstract": "Writing error-free floating-point programs is a challenging task, especially for programmers who lack a strong background in numerical analysis and rounding-error propagation. State-of-the-art techniques typically aim to bound such errors using static or dynamic analysis. However, only a few tools explicitly address critical floating-point pitfalls such as absorption and catastrophic cancellation. These anomalies represent situations in which rounding errors are significantly amplified, causing the semantics of the finite-precision computation to deviate substantially from the real-number semantics. In this article, we present FPScan, a novel tool to formally define and detect both catastrophic cancellation and absorption in floating-point programs. Our approach starts with a custom static analyzer based on abstract interpretation to infer the order of magnitude of all program variables. This magnitude information is then used to build a set of first-order constraints that model error propagation and numerical precision within the program. Finally, we employ an off-the-shelf SMT solver to determine whether the program exhibits any of these critical numerical pitfalls. Experiments were conducted on FPBench, a well-known benchmark suite of floating-point programs, to evaluate the effectiveness of our tool. We also present a comparison with state-of-the-art tools regarding soundness and analysis time.",
  "abstract_shown": true,
  "affiliations": [],
  "article_type": null,
  "arxiv": "2609.07492",
  "author_total": 3,
  "authors": [
    {
      "name": "Julien Bortolussi"
    },
    {
      "name": "Dorra Ben Khalifa"
    },
    {
      "name": "Pierre-Loïc Garoche"
    }
  ],
  "bibtex": "https://research.draconitic.com/paper/3we93rkfnktc4.bib",
  "cited_by": 0,
  "doi": "10.48550/arxiv.2609.07492",
  "fulltext_url": null,
  "id": "3we93rkfnktc4",
  "issns": [],
  "landing_url": "https://arxiv.org/abs/2609.07492",
  "language": null,
  "licence": "CC-BY-NC-SA-4.0",
  "licence_label": "CC BY-NC-SA 4.0",
  "licence_source": "article",
  "licence_url": "http://creativecommons.org/licenses/by-nc-sa/4.0/",
  "metadata_licence": "CC0-1.0",
  "native_subjects": [
    [
      "arxiv",
      "cs.NA"
    ],
    [
      "arxiv",
      "cs.SE"
    ],
    [
      "arxiv",
      "math.NA"
    ],
    [
      "openalex",
      "1703|Numerical Methods and Algorithms"
    ]
  ],
  "openalex": "W7212056375",
  "pdf_url": "https://arxiv.org/pdf/2609.07492",
  "pmcid": null,
  "pmid": null,
  "published": "2026-09-07",
  "publisher": null,
  "ris": "https://research.draconitic.com/paper/3we93rkfnktc4.ris",
  "sources": [
    {
      "first_seen": "2026-10-30T12:19:58Z",
      "native_id": "2609.07492",
      "source": "arxiv",
      "url": "https://arxiv.org/abs/2609.07492"
    }
  ],
  "subjects": [
    {
      "field": "mathematics",
      "origin": "arxiv:math.NA",
      "subfield": "numerical-analysis"
    }
  ],
  "title": "FPScan: An Automated Constraint-Based Analyzer for Floating-Point Anomaly Detection",
  "title_text": "FPScan: An Automated Constraint-Based Analyzer for Floating-Point Anomaly Detection",
  "type": "preprint",
  "updated_at": "2026-10-30T12:19:58Z",
  "url": "https://research.draconitic.com/paper/3we93rkfnktc4",
  "venue": "arXiv",
  "versions": []
}