-
-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Open
Description
Describe the bug
I love Catch2 and use it daily!
The only thing I regularly wrestle with is the usability around small numbers around zero.
For example, I just had this matcher fail:
REQUIRE_THAT (result, Catch::Matchers::Approx<float> ({ 0.0, 1.0f, -0.0f, -1.0 }));
with this (unhelpful) expansion:
with expansion:
{ 0.0f, 1.0f, -0.0f, 0.0f } is approx: { 0.0f, 1.0f, -0.0f, -1.0f }
I wasn't sure which number was the problem, nor how much it's off by. Is it possible to add a margin here? Or to output the full representation of the number?
On additional manual inspection, negative 0 was actually -0.0000000874228f.
So then I wrote
float value = -0.0000000874228f;
REQUIRE_THAT (value, Catch::Matchers::WithinRel (0.0f, 0.001f));
which fails with
-0.0f and 0 are within 0.1% of each other
which is incorrect.
I moved the decimal and wrote
REQUIRE_THAT (value, Catch::Matchers::WithinRel (0.0f, 0.1f));
Which fails with
-0.0f and 0 are within 10% of each other
Maybe I'm confused about WithinRel usage?
It seems that WithinAbs is nice and happy, I'll stick with that for now. Not sure how to make the vector version happy...
Platform information:
- Catch version: v3.3.2
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels