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

stillwater-sc / universal / 26238163779
84%
master: 84%

Build:
Build:
LAST BUILD BRANCH: fix/issue-ci-ereal-regression-runtime
DEFAULT BRANCH: master
Ran 21 May 2026 04:38PM UTC
Jobs 1
Files 651
Run time 4min
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

21 May 2026 04:11PM UTC coverage: 84.234% (+0.001%) from 84.233%
26238163779

push

github

web-flow
feat(elreal): Phase E.5 -- inverse trig family with depth-1 derivative refinement (#897)

Phase E.5 of epic #873 (resolves #891). Four inverse trigonometric
functions: asin, acos, atan, atan2. Same uniform pattern as E.3/E.4:
std library at depth 0, derivative-based correction at depth 1.

Per-function derivatives:
  d/dx asin(x)  =  1 / sqrt(1 - x^2)     valid for |x| < 1
  d/dx acos(x)  = -1 / sqrt(1 - x^2)     valid for |x| < 1
  d/dx atan(x)  =  1 / (1 + x^2)         always finite
  d  atan2(y,x): partials
    d/dy =  x / (x^2 + y^2)
    d/dx = -y / (x^2 + y^2)

Edge cases (per IEEE-754 / std lib):
  asin/acos at |x| > 1     -> NaN
  asin/acos at |x| = 1     -> well-defined, derivative diverges; depth-1
                              skipped
  atan(+/-inf)             -> +/-pi/2 (well-defined; depth-1 = 0 since
                              the derivative goes to 0)
  atan2(0, 0)              -> 0 (C convention; depth-1 skipped)

Note: this phase does NOT require pi-based range reduction. The std lib
handles all the work at depth 0, and the derivatives are closed-form
rational expressions in the argument(s). Range reduction is the hard
problem in forward trig (Phase E.6), not inverse trig.

Tests under elastic/elreal/math/inverse_trig.cpp:
  - Anchor values (atan(0)=0, atan(1)=pi/4, asin(+/-1)=+/-pi/2,
    acos(-1)=pi)
  - atan2 four-quadrant: (0,1)=0, (1,0)=pi/2, (0,-1)=pi, (-1,0)=-pi/2,
    (1,1)=pi/4, (1,-1)=3pi/4
  - Cross-validation vs std::asin/acos/atan
  - asin/acos at |x|>1 = NaN
  - atan(+/-inf) = +/-pi/2
  - asin(x) + acos(x) == pi/2 identity
  - atan2(y, x>0) == atan(y/x) consistency
  - NaN propagation through all four
  - Depth-1 propagation on rational input

21 elreal binaries (1 new + 20 prior) PASS on gcc 13 and clang.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

46943 of 55729 relevant lines covered (84.23%)

5276106.15 hits per line

Coverage Regressions

Lines Coverage ∆ File
10
31.43
-3.57% include/sw/universal/verification/test_suite_randoms.hpp
Jobs
ID Job ID Ran Files Coverage
1 26238163779.1 21 May 2026 04:38PM UTC 651
84.23
GitHub Action Run
Source Files on build 26238163779
  • Tree
  • List 651
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26238163779
  • 315b5807 on github
  • Prev Build on main (#26231867755)
  • Next Build on main (#26240649255)
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