mirror of https://github.com/CGAL/cgal
101 lines
5.1 KiB
Plaintext
101 lines
5.1 KiB
Plaintext
Concerning the new stuff:
|
||
-------------------------
|
||
- What to do with branches (collinearC3() and power_test()):
|
||
- The epsilon computation type should return ZERO/EQUAL as default.
|
||
This way, collinearC3() works.
|
||
- The user can provide the epsilon variant inside the source code, delimited
|
||
by special symbols /*CGAL_FILTER_BODY ... */. That's the solution for CGAL.
|
||
- Checks that the epsilons have been updated (which will not prove that
|
||
it's correct, but is better than nothing).
|
||
- New Cartesian predicates must also be in CGAL-I for the whole thing to work.
|
||
- /*DEGREE=2*/ attribute to the arguments ?
|
||
- /*CGAL_NO_FILTER*/ attribute instead of //CGAL_FILTER(BEGIN|END) ?
|
||
- Long term: match operator<(a,b) and co ?
|
||
- # of bounds : one per predicate, or one per argument ? give choice.
|
||
- # of epsilons: one per predicate, or one set per sub-predicate ? choice.
|
||
- Check that the compiler optimizes the epsilon computation
|
||
(use __attribute__((const)) for Static_filter_error operators) ?
|
||
- As Fred pointed out: the scheme is not thread safe.
|
||
- Remove the assertions in the original code.
|
||
- In case there are loops, we must take the max() of the epsilons.
|
||
This should not happen often, imho... Wait and see.
|
||
- Move static_infos in src/.
|
||
- Have a ::number_of_failure for the static filters too.
|
||
- Optimize Restricted_double, conditionnaly #define it to "double" ?
|
||
- Replace:
|
||
NEW_bound = std::max(NEW_bound, fabs(px.to_double()));
|
||
by:
|
||
if (NEW_bound < fabs(px.to_double())) NEW_bound = fabs(px.to_double());
|
||
or even, using a .bound() member function:
|
||
if (NEW_bound < px.bound()) NEW_bound = px.bound();
|
||
- Member function access for generical type should be (?):
|
||
.dbl_approx()
|
||
.bound() (basically a bound on: fabs(.dbl_approx()))
|
||
.error()
|
||
|
||
Concerning the code itself:
|
||
---------------------------
|
||
- Mark the cache as "mutable" (see Stroustrup, page 232) ?
|
||
- Replace the NT wrapping, by Filtered_Cartesian<FT>, a new kernel ?
|
||
this would be cleaner, and won't rely on some optimizations in the compiler.
|
||
(same thing for Fixed)
|
||
- Fix Michael's problem with max() and co. At least add a testcase.
|
||
- Get rid of convert_to() ? This is a mess for nothing (benchmark first).
|
||
Target convert_from_to (const Target, const Source) is fine.
|
||
It could maybe be made better this way:
|
||
void convert_from_to(Target &, const Source &) ?
|
||
Suggest that to Stefan for misc.h ?
|
||
? GYGWIN square_root_test() bug: it disappears with -O2. It's a bug in the
|
||
non-inline version of std::sqrt(). Hopefully it is fixed in CygWin 2.95.
|
||
- Essayer "attribute(noreturn)" pour overlap_action().
|
||
- Handle in_smallest_orthogonalcircle_ftC2.h correctly (needs an include)
|
||
- Essayer de bencher avec -fbranch-probabilities ? <20>a pourrait <20>tre pas mal.
|
||
- Expertiser le bench de Stefan... <20> la prochaine version.
|
||
- Drop the class Interval_nt ? It's 230 lines for nothing...
|
||
Or have a boolean template parameter, instead or the derivation ?
|
||
- Filter_Cache: Faire des benchs, et une test-suite qui soit raisonnable.
|
||
Hum, rajouter un bool<6F>en pour calculer le cache seulement sur demande ?
|
||
(<28>a <20>vite de le faire inutilement pour les variables interm<72>diaires,
|
||
mais <20>a prend un chouia plus de place... mais en comparaison du reste...)
|
||
? SUN: Add "-Wa,-xarch=v8plus" to fix the following "error":
|
||
/usr/ccs/bin/as: "/var/tmp/ccBHnU0T.s", line 861: warning: 3 instructions
|
||
required between ldfsr and next FBfcc; nops inserted
|
||
? See the C++ Standard numeric_limits<>, section 18.2.
|
||
? convert_to <20> faire pour: long double, long long (CGAL..._64), CLN.
|
||
- Use friend functions for operator+(IA,IA) (and others), because this way,
|
||
there's no need for a special version for double... That would simplify
|
||
the code, but I need to check it doesn't impact performance first.
|
||
- Have a look at the "function-try-blocks" ?
|
||
- Replace the macros CGAL_IA_SMALLEST/CGAL_IA_LARGEST by consts ? See if it
|
||
impacts performance before.
|
||
- The idea of an CGAL::Ieee_double, which would have corrected operators
|
||
is not so bad. It would save VC++, as well as allow to replace all the
|
||
CGAL_IA_FORCE_TO_DOUBLE. But it would perhaps impact performance and
|
||
compile time...
|
||
|
||
Concerning the script:
|
||
----------------------
|
||
- Produce separate files for declarations and definitions (=> libCGAL).
|
||
- Make it output a test file for each predicate ?
|
||
|
||
Concerning the doc:
|
||
-------------------
|
||
- In the 2.0 HTML doc, my enums are indexed twice.
|
||
probably a cc_manual compliance bug from me.
|
||
Idem, my fct to_double(Ia) is not the same as the others...
|
||
- add a pointer to my MISC'99 paper.
|
||
- Use the new doc format.
|
||
- Document CGAL_IA_STOP_CONSTANT_PROPAGATION ?
|
||
- DOCUMENT the script.
|
||
- DOCUMENT the new static stuff !!!
|
||
- Update the status of the compilers (MipsPro 7.3 and Visual/Borland).
|
||
|
||
Concerning the test-suite:
|
||
--------------------------
|
||
- Check it with GCOV again before the next public release.
|
||
- Add a simple test to check that exceptions do work indeed.
|
||
- Make a more extensive test-suite for the filtered predicates.
|
||
The script could output information to test them generically somehow.
|
||
- test NaNs (and Infs?). Comparisons with these should throw the exception...
|
||
Check that they are correctly propagated (by min(), max(), even operator*...)
|