You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Originally posted by msokalski August 10, 2022
It seams to me that predicates library can be easily fooled by flipping sign and/or swapping x,y coordinates of a point to form 4 exactly concyclic set of points. Results are not very optimistic ... any thoughts? Do you reproduce same behaviour?
// example where adaptive differs from exact predicate
// adaptive seams to be wrong (I think rising xxx_errbound could fix this)
ax -1.4048103911580639e-11 const double
ay 5.3534412196824579e-12 const double
bx 1.4048103911580639e-11 const double
by -5.3534412196824579e-12 const double
cx -1.4048103911580639e-11 const double
cy -5.3534412196824579e-12 const double
dx -5.3534412196824579e-12 const double
dy -1.4048103911580639e-11 const double
predicates::adaptive::incircle<double> returned 1.5785423408550432e-75 double
predicates::exact::incircle<double> returned 0.0000000000000000 double
crude_xa::incircle<double> returned 0.0000000000000000 double
// ---------------------------------------------------
// example where adaptive & exact predicates seams to be both wrong!
ax -9.1428964336885931e-10 const double
ay -5.2844166345548637e-19 const double
bx -5.2844166345548637e-19 const double
by -9.1428964336885931e-10 const double
cx 5.2844166345548637e-19 const double
cy -9.1428964336885931e-10 const double
dx -5.2844166345548637e-19 const double
dy 9.1428964336885931e-10 const double
predicates::adaptive::incircle<double> returned 1.2392294127517818e-119 double
predicates::exact::incircle<double> returned 1.2392294127517818e-119 double
crude_xa::incircle<double> returned 0.0000000000000000 double
EDIT:
adding a more representative set of 4 points (both adaptive and exact predicates seams to be wrong here):
I've narrowed the problem to the Dekker's product function. Forcing use of std::fma() solves the problem, probably at the cost of performance drop on platforms not having fma in hardware.
The text was updated successfully, but these errors were encountered:
Discussed in #99
Originally posted by msokalski August 10, 2022
It seams to me that predicates library can be easily fooled by flipping sign and/or swapping x,y coordinates of a point to form 4 exactly concyclic set of points. Results are not very optimistic ... any thoughts? Do you reproduce same behaviour?
EDIT:
adding a more representative set of 4 points (both adaptive and exact predicates seams to be wrong here):
I've narrowed the problem to the Dekker's product function. Forcing use of std::fma() solves the problem, probably at the cost of performance drop on platforms not having fma in hardware.
The text was updated successfully, but these errors were encountered: