Opened 16 years ago
Closed 16 years ago
#725 closed Bugs (Invalid)
floating point comparison algorithm
| Reported by: | nobody | Owned by: | Gennadiy Rozental |
|---|---|---|---|
| Milestone: | Component: | test | |
| Version: | None | Severity: | |
| Keywords: | Cc: |
Description
The floating point comparison algorithm does not seem
to work if one of the floating points is zero and the
other one is close to zero. Here's the code sample
I've used:
close_at_tolerance<double> checker(0.01);
const double a = 0.0;
const double b = 0.0000001;
bool res = checker(a, b);
if (!res)
{
std::cerr << "ERROR" << std::endl;
}
I think the following check must be added in the
close_at_tolerance<FPT>::operator() function:
bool operator()( FPT left, FPT right ) const
{
if (left == 0.0 || right == 0.0)
{
return (p_fraction_tolerance.get() >
tt_detail::fpt_abs(left-right));
}
// ...
}
My email address is "tom.vanroey@vito.be".
Note:
See TracTickets
for help on using tickets.
