mirror of https://github.com/CGAL/cgal
92 lines
4.6 KiB
Plaintext
92 lines
4.6 KiB
Plaintext
Concerning the new filters:
|
||
---------------------------
|
||
- What to do with branches (e.g. 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).
|
||
- /*DEGREE=2*/ attribute to the arguments ?
|
||
- /*CGAL_NO_FILTER*/ attribute instead of //CGAL_FILTER(BEGIN|END) ?
|
||
- Long term: match operator<(a,b) and co ?
|
||
- Or use G++ interface as a parser ?
|
||
- # 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 global ::number_of_failure for the static filters too.
|
||
(don't use IA_nt's one)
|
||
- 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()
|
||
- Add a "number of bits" field in Static_filter_error ?
|
||
(so that we get the same thing as Fixed for 24 bits)
|
||
|
||
Concerning the main code:
|
||
-------------------------
|
||
- Turn CGAL_IA_CHECK_RESTRICT into an [expensive] assertion ?
|
||
- volatile should be removed from FPU_empiric_test() now that we enforce this
|
||
everywhere.
|
||
- Move the constant propagation barriers more deeply, where they are needed.
|
||
(i.e. just before the actual FP operations that need to be done at run time)
|
||
- 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)
|
||
- 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 ?
|
||
- Handle in_smallest_orthogonalcircle_ftC2.h correctly (needs an include)
|
||
- Essayer de bencher avec -fbranch-probabilities ? <20>a pourrait <20>tre pas mal.
|
||
- 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.
|
||
? See C9X and http://http.cs.berkeley.edu/~fateman/fp98/korenF/node3.html.
|
||
? convert_to <20> faire pour: long double, long long (CGAL..._64), CLN.
|
||
- Should IA_nt _privately_ derive from IA_nt_advanced ?
|
||
|
||
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 the script, the new static stuff, the Lazy_exact_nt<> ...
|
||
- Add a long_description.txt file, with the directory/file structure of the
|
||
package (see RV's mail in folder "cgal", from 23/9/99).
|
||
|
||
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 NaN propagation. Comparisons with these should throw the exception...
|
||
Check that they are correctly propagated (by min(), max(), even operator*...)
|