• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stillwater-sc / universal / 30181958815
85%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 26 Jul 2026 01:32AM UTC
Jobs 1
Files 637
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

26 Jul 2026 12:54AM UTC coverage: 85.444% (-0.04%) from 85.481%
30181958815

push

github

web-flow
fix(quire): NaR-state propagation + gated overflow (no-throw config) (#1228)

* fix(quire): NaR-state propagation + gated overflow (no-throw config)

The quire threw unconditionally on NaR and out-of-range operands, ignoring the
QUIRE_THROW_ARITHMETIC_EXCEPTION macro that quire.hpp already declared. A build
that opted out of arithmetic exceptions (POSIT_THROW_ARITHMETIC_EXCEPTION 0)
still aborted the moment a NaR reached the accumulator via quire_mul -- breaking
C-ABI shims, noexcept, and -fno-exceptions contexts. (#1226)

Two complementary fixes:

1. NaR state (issue fix #2). The quire gains a sticky non-finite flag (_nan). A
   NaR/Inf/NaN operand sets it instead of throwing; it propagates through further
   accumulation (no-op once set), is cleared by a fresh finite assignment, and
   surfaces back through quire_resolve as the number system's NaR/NaN. This makes
   NaR a value -- matching scalar posit -- and removes the special case rather
   than making it configurable, so NaR never throws in either configuration.
   Comparisons treat a NaR quire as unordered (IEEE-style). Also fixes a latent
   bug: the noexcept SpecificValue ctor used to throw, i.e. call std::terminate.

2. Overflow gate (issue fix #1). The operand_too_large/small_for_quire throws are
   now gated behind QUIRE_THROW_ARITHMETIC_EXCEPTION; in the opt-out build an
   out-of-range operand is skipped (leaves the running sum intact) instead of
   throwing. Each number-system umbrella (posit, cfloat, lns, fixpnt, dbns) now
   forwards its *_THROW_ARITHMETIC_EXCEPTION to QUIRE_THROW_ARITHMETIC_EXCEPTION,
   mirroring the existing BLOCKTRIPLE forwarding.

NaR is surfaced on resolve for posit (setnar), cfloat/lns/dbns (setnan); fixpnt
has no non-finite encoding and never produces a NaR operand, so it is unchanged.

Regression test numeric/quire/posit/nar_propagation.cpp: NaR propagation,
stickiness, clear-on-assign, unordered comparisons, and resolve-to-NaR.

Verified gcc + clang: new tes... (continued)

82 of 95 new or added lines in 6 files covered. (86.32%)

30 existing lines in 4 files now uncovered.

46827 of 54804 relevant lines covered (85.44%)

6775790.62 hits per line

Uncovered Changes

Lines Coverage ∆ File
9
85.71
numeric/quire/posit/nar_propagation.cpp
4
88.45
-8.63% include/sw/universal/number/quire/quire_impl.hpp

Coverage Regressions

Lines Coverage ∆ File
19
88.45
-8.63% include/sw/universal/number/quire/quire_impl.hpp
8
93.73
-0.47% include/sw/universal/number/cfloat/cfloat_impl.hpp
2
89.78
-0.55% include/sw/universal/number/posito/posito_impl.hpp
1
80.58
-0.22% include/sw/universal/number/posit1/specialized/posit_16_1.hpp
Jobs
ID Job ID Ran Files Coverage
1 30181958815.1 26 Jul 2026 01:32AM UTC 637
85.44
GitHub Action Run
Source Files on build 30181958815
  • Tree
  • List 637
  • Changed 9
  • Source Changed 5
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30181958815
  • c34dc576 on github
  • Prev Build on main (#30157508388)
  • Next Build on main (#30214419157)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc