-
Notifications
You must be signed in to change notification settings - Fork 21
Open
Labels
Description
The debugger creates a bug...
The following code:
Interval x(-3,-0.0599999427795410086861060960927716223523);
Interval x_save(x);
Interval m = -2.15;
Interval p = x-m;
x &= p+m;
cout << setprecision(40) << x_save << endl;
cout << setprecision(40) << x << endl;
cout << "is_strict_subset: " << x.is_strict_subset(x_save) << endl;provides, without valgrind:
[-3, -0.059999942779541]
[-3, -0.059999942779541]
is_strict_subset: 0
and with valgrind:
==62032== Memcheck, a memory error detector
==62032== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==62032== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==62032== Command: ./codac_example
==62032==
[-3, -0.059999942779541]
[-3, -0.05999994277954101]
is_strict_subset: 1
==62032==
==62032== HEAP SUMMARY:
==62032== in use at exit: 0 bytes in 0 blocks
==62032== total heap usage: 4 allocs, 4 frees, 74,784 bytes allocated
==62032==
==62032== All heap blocks were freed -- no leaks are possible
==62032==
==62032== For lists of detected and suppressed errors, rerun with: -s
==62032== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Using valgrind, the interval x is contracted after the operation, that should not have any effect.
The bug appears using either GAOL or Filib.
This is probably due to some rouding modes operated by valgrind.
Reactions are currently unavailable