diff --git a/Packages/Number_types/changes.txt b/Packages/Number_types/changes.txt index 04b62c552ae..3cce16bd9a1 100644 --- a/Packages/Number_types/changes.txt +++ b/Packages/Number_types/changes.txt @@ -1,3 +1,6 @@ +4.15 (28 May 01) +- to_interval(leda_integer) improvement, by Michael Seel. + 4.14 (1 Mar 01) - Added operator% to Gmpz. diff --git a/Packages/Number_types/include/CGAL/leda_integer.h b/Packages/Number_types/include/CGAL/leda_integer.h index 40311c776da..bf6fbcac8a4 100644 --- a/Packages/Number_types/include/CGAL/leda_integer.h +++ b/Packages/Number_types/include/CGAL/leda_integer.h @@ -20,40 +20,20 @@ // coordinator : MPI, Saarbruecken () // ====================================================================== - -#ifndef CGAL_INTEGER_H -#define CGAL_INTEGER_H +#ifndef CGAL_LEDA_INTEGER_H +#define CGAL_LEDA_INTEGER_H #include - -// #ifndef IO_IO_TAGS_H -// #include -// #endif // IO_IO_TAGS_H -// #ifndef CGAL_NUMBER_TYPE_TAGS_H -// #include -// #endif // CGAL_NUMBER_TYPE_TAGS_H - -/* -#if !defined(LEDA_ROOT_INCL_ID) -#define LEDA_ROOT_INCL_ID 349063 -#include -#endif -*/ - -#ifndef CGAL_PROTECT_LEDA_INTEGER_H #include -#define CGAL_PROTECT_LEDA_INTEGER_H -#endif // CGAL_PROTECT_LEDA_INTEGER_H CGAL_BEGIN_NAMESPACE - #ifndef CGAL_CFG_NO_NAMESPACE inline double to_double(const leda_integer & i) { return i.to_double(); } -#endif // CGAL_CFG_NO_NAMESPACE +#endif inline Number_tag @@ -80,27 +60,23 @@ inline Sign sign(const leda_integer& n) { return (Sign)::sign(n); } -#endif // CGAL_CFG_NO_NAMESPACE +#endif inline Interval_base to_interval (const leda_integer & z) { Protect_FPU_rounding P (CGAL_FE_TONEAREST); - Interval_nt_advanced approx (z.to_double()); - FPU_set_cw(CGAL_FE_UPWARD); - return approx + Interval_base::Smallest; + double cn = CGAL::to_double(n); + leda_integer pn = ( n>0 ? n : -n); + if ( pn.iszero() || log(pn) < 53 ) + return Interval_base(cn); + else { + FPU_set_cw(CGAL_FE_UPWARD); + return Interval_base(cn)+Interval_base::Smallest; + } } - CGAL_END_NAMESPACE - -/* -#if LEDA_ROOT_INCL_ID == 349063 -#undef LEDA_ROOT_INCL_ID -#include -#endif -*/ - -#endif // CGAL_INTEGER_H +#endif // CGAL_LEDA_INTEGER_H