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

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

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 03 Jun 2026 10:38PM 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

03 Jun 2026 09:50PM UTC coverage: 84.557% (+0.08%) from 84.479%
26915213055

push

github

web-flow
feat(elreal): sin / cos / tan via octant reduction (Phase 7.6, #931) (#1046)

Completes the Phase 7 math suite (#931): forward trigonometry on ZBCL<FpType>.

  sin/cos(x) via octant reduction x = n*(pi/2) + t, |t| <= pi/4: sin/cos of the
  reduced argument from their Maclaurin series (no cancellation for |t| <= pi/4),
  recombined per n mod 4. tan(x) = sin(x) / cos(x). A value near a zero
  (cos(pi/2), sin(pi), cos(3pi/2)) is computed as the series of a tiny reduced
  argument, so it is accurate rather than catastrophically cancelled.

Two foundational fixes were needed to make the reduction 0-overlap-clean:

1) Renormalising reduction (trigonometry.hpp). t = x - n*(pi/2) *cancels* when x
   is near a multiple of pi/2, and a lazy add() leaves the collapsed leading term
   closer than k to the following limb -- a non-0-overlap ZBCL that trips the
   invariant when the series forces it. Build t by pooling the operand blocks and
   renormalising eagerly (priestRenorm) instead.

2) priestRenorm rescue strengthened (threeAdd.hpp). On a wide host (k >= 24) a
   cancellation residual is not restored to 0-overlap by a single Priest pass, nor
   by just one extra pass: the first extra pass folds the cancelling pair
   (shrinking the leading exponent), a second pushes the tail down to a >= k gap,
   e.g. [-191 -192 -246] -> [-195 -246] -> [-195 -249]. So when the single pass is
   not 0-overlap, iterate to a 0-overlap fixpoint (bounded). This extends the
   leading-pair/one-pass rescue from #1044 (PR #1045) to the full cancellation
   class. Narrow hosts (bfloat16 k=8, fp16 k=11) bottom out at the denormal floor
   where iteration cannot converge and only corrupts the lazy structure, so they
   remain on the single Priest pass (gate unchanged) -- byte-identical to before.

Host scope: sin/cos/tan are tested on {double, float}. The sin^2+cos^2 identity at
a near-zero point squares a ~1e-8 component, which needs ~2k bits below the unit
leading term and underflows... (continued)

62 of 62 new or added lines in 2 files covered. (100.0%)

47576 of 56265 relevant lines covered (84.56%)

6016319.88 hits per line

Jobs
ID Job ID Ran Files Coverage
1 26915213055.1 03 Jun 2026 10:37PM UTC 673
84.56
GitHub Action Run
Source Files on build 26915213055
  • Tree
  • List 673
  • Changed 5
  • Source Changed 2
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26915213055
  • ab4d8e4e on github
  • Prev Build on main (#26909111685)
  • Next Build on main (#26919578707)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc