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

stillwater-sc / universal / 35352604718
86%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 18 Sep 2026 02:24PM UTC
Jobs 1
Files 673
Run time 2min
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

18 Sep 2026 01:50PM UTC coverage: 85.882% (+0.06%) from 85.82%
35352604718

push

github

web-flow
fix: ereal integer conversion and pown, posit text functions (#1552)

Two ereal defects and three posit ones, batched for one CI round.

ereal's convert_signed() and convert_unsigned() were `// TBD` for every
non-zero value, and all ten integer constructors and assignment operators go
through them, so ereal(5), ereal(-7) and `e = 42` were all zero. Below 2^53 an
integer goes into one limb exactly; above it, it is split at 32 bits into two
exact doubles whose sum is the integer. The magnitude of a signed value is
taken unsigned, so the most negative value converts like any other, and a
signed plain char goes to the signed path rather than being read as a value
near 2^64 (#1460).

pown(ereal, int) negated a negative exponent in signed arithmetic, which is
undefined for INT_MIN. The magnitude is now taken unsigned and the reciprocal
applied once at the end (#1466).

posit's quadrant() classified by sign before looking for zero or NaR, so zero
came back SE and NaR NW, and to_base2_scientific() decoded both as if they had
fields. hex_format() wrote "16.1x0x40'00p", which is not the documented
nbits.esxNN...NNp form and which parse() rejected, so the native format did not
round-trip at any width; parse() also read the digits through a uint64_t that
dropped every bit above 63. It now writes the documented form, parse() reads
the full width, and the old form still parses (#1391).

The three field operator>> overloads were defined on a const reference where
their friends were declared on a non-const one, and relied on an input
operator and a member that do not exist. They compiled only because nothing
instantiated them; deleted (#1411). operator<<(positFraction) pre-incremented
where to_string() post-increments, and dropped the last valid bit (#1412).

Nine mutations of the fixed code were each caught by the new tests.

BEHAVIOUR-CHANGE: an ereal constructed or assigned from a non-zero integer
holds that integer instead of zero; posit quadrant() returns "0" an... (continued)

57 of 60 new or added lines in 3 files covered. (95.0%)

3 existing lines in 1 file now uncovered.

44859 of 52233 relevant lines covered (85.88%)

8772233.27 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
85.1
1.93% include/sw/universal/number/ereal/ereal_impl.hpp
1
93.09
6.67% include/sw/universal/number/posit/manipulators.hpp

Coverage Regressions

Lines Coverage ∆ File
3
93.09
6.67% include/sw/universal/number/posit/manipulators.hpp
Jobs
ID Job ID Ran Files Coverage
1 35352604718.1 18 Sep 2026 02:24PM UTC 673
85.88
GitHub Action Run
Source Files on build 35352604718
  • Tree
  • List 673
  • Changed 7
  • Source Changed 6
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35352604718
  • 5fb30354 on github
  • Prev Build on main (#35320181350)
  • Next Build on main (#35364986399)
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