cgal/Packages/Interval_arithmetic/TODO

92 lines
4.6 KiB
Plaintext
Raw Blame History

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*...)