mirror of https://github.com/CGAL/cgal
check that the rounding mode when doing exact computation is to-nearest
This commit is contained in:
parent
106645ec2e
commit
c8624ee0b3
|
|
@ -359,6 +359,8 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Uncertain_conversion_exception&){}
|
catch (Uncertain_conversion_exception&){}
|
||||||
|
Protector protector(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (ek_plane_ptr==nullptr) {
|
if (ek_plane_ptr==nullptr) {
|
||||||
const typename Exact_K::Point_3 ep = to_EK(p);
|
const typename Exact_K::Point_3 ep = to_EK(p);
|
||||||
ek_plane_ptr = new Vector_plus_point<Exact_K>;
|
ek_plane_ptr = new Vector_plus_point<Exact_K>;
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ public:
|
||||||
{}
|
{}
|
||||||
}
|
}
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
return From_Exact( Exact_construction(To_Exact(a1)) );
|
return From_Exact( Exact_construction(To_Exact(a1)) );
|
||||||
}
|
}
|
||||||
template <class A1, class A2>
|
template <class A1, class A2>
|
||||||
|
|
@ -72,6 +73,7 @@ public:
|
||||||
{}
|
{}
|
||||||
}
|
}
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
return From_Exact( Exact_construction(To_Exact(a1),
|
return From_Exact( Exact_construction(To_Exact(a1),
|
||||||
To_Exact(a2)) );
|
To_Exact(a2)) );
|
||||||
}
|
}
|
||||||
|
|
@ -92,6 +94,7 @@ public:
|
||||||
{}
|
{}
|
||||||
}
|
}
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
return From_Exact( Exact_construction(To_Exact(a1),
|
return From_Exact( Exact_construction(To_Exact(a1),
|
||||||
To_Exact(a2),
|
To_Exact(a2),
|
||||||
To_Exact(a3)) );
|
To_Exact(a3)) );
|
||||||
|
|
|
||||||
|
|
@ -103,6 +103,7 @@ Filtered_predicate<EP,AP,C2E,C2A,Protection>::
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> p(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> p(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
return ep(c2e(args)...);
|
return ep(c2e(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@ Filtered_predicate_with_state<EP,AP,C2E,C2A,O1,Protection>::
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> p(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> p(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if(! oep){
|
if(! oep){
|
||||||
#if BOOST_VERSION < 105600
|
#if BOOST_VERSION < 105600
|
||||||
oep = EP(c2e(o1));
|
oep = EP(c2e(o1));
|
||||||
|
|
|
||||||
|
|
@ -803,6 +803,7 @@ struct Lazy_construction_bbox
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
return ec(CGAL::exact(l1));
|
return ec(CGAL::exact(l1));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -851,6 +852,7 @@ struct Lazy_construction_nt {
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
return new Lazy_rep_0<AT,ET,To_interval<ET> >(ec( CGAL::exact(l)... ));
|
return new Lazy_rep_0<AT,ET,To_interval<ET> >(ec( CGAL::exact(l)... ));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1076,6 +1078,7 @@ public:
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
typename R1::ET et;
|
typename R1::ET et;
|
||||||
ec(CGAL::exact(l1), CGAL::exact(l2), et);
|
ec(CGAL::exact(l1), CGAL::exact(l2), et);
|
||||||
r1 = R1(new Lazy_rep_0<typename R1::AT,typename R1::ET,E2A>(et));
|
r1 = R1(new Lazy_rep_0<typename R1::AT,typename R1::ET,E2A>(et));
|
||||||
|
|
@ -1147,6 +1150,7 @@ public:
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
typename R1::ET et1, et2;
|
typename R1::ET et1, et2;
|
||||||
ec(CGAL::exact(l1), CGAL::exact(l2), et1, et2);
|
ec(CGAL::exact(l1), CGAL::exact(l2), et1, et2);
|
||||||
r1 = R1(Handle_1(new Lazy_rep_0<typename R1::AT,typename R1::ET,E2A>(et1)));
|
r1 = R1(Handle_1(new Lazy_rep_0<typename R1::AT,typename R1::ET,E2A>(et1)));
|
||||||
|
|
@ -1205,6 +1209,7 @@ public:
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
// TODO: Instead of using a vector, write an iterator adapter
|
// TODO: Instead of using a vector, write an iterator adapter
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
std::vector<Object> exact_objects;
|
std::vector<Object> exact_objects;
|
||||||
ec(CGAL::exact(l1), CGAL::exact(l2), std::back_inserter(exact_objects));
|
ec(CGAL::exact(l1), CGAL::exact(l2), std::back_inserter(exact_objects));
|
||||||
for (std::vector<Object>::const_iterator oit = exact_objects.begin();
|
for (std::vector<Object>::const_iterator oit = exact_objects.begin();
|
||||||
|
|
@ -1283,6 +1288,7 @@ public:
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
ET eto = ec(CGAL::exact(l1));
|
ET eto = ec(CGAL::exact(l1));
|
||||||
return make_lazy<LK>(eto);
|
return make_lazy<LK>(eto);
|
||||||
}
|
}
|
||||||
|
|
@ -1338,6 +1344,7 @@ public:
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
ET eto = ec(CGAL::exact(l1), CGAL::exact(l2));
|
ET eto = ec(CGAL::exact(l1), CGAL::exact(l2));
|
||||||
return make_lazy<LK>(eto);
|
return make_lazy<LK>(eto);
|
||||||
}
|
}
|
||||||
|
|
@ -1371,6 +1378,7 @@ public:
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
ET eto = ec(CGAL::exact(l1), CGAL::exact(l2), CGAL::exact(l3));
|
ET eto = ec(CGAL::exact(l1), CGAL::exact(l2), CGAL::exact(l3));
|
||||||
return make_lazy<LK>(eto);
|
return make_lazy<LK>(eto);
|
||||||
}
|
}
|
||||||
|
|
@ -1544,7 +1552,7 @@ struct Lazy_construction_variant {
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
ET exact_v = EC()(CGAL::exact(l1), CGAL::exact(l2));
|
ET exact_v = EC()(CGAL::exact(l1), CGAL::exact(l2));
|
||||||
result_type res;
|
result_type res;
|
||||||
|
|
||||||
|
|
@ -1594,7 +1602,7 @@ struct Lazy_construction_variant {
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
ET exact_v = EC()(CGAL::exact(l1), CGAL::exact(l2), CGAL::exact(l3));
|
ET exact_v = EC()(CGAL::exact(l1), CGAL::exact(l2), CGAL::exact(l3));
|
||||||
result_type res;
|
result_type res;
|
||||||
|
|
||||||
|
|
@ -1646,6 +1654,7 @@ struct Lazy_construction<LK, AC, EC, E2A_, true> {
|
||||||
} \
|
} \
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp); \
|
CGAL_BRANCH_PROFILER_BRANCH(tmp); \
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST); \
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST); \
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST); \
|
||||||
return result_type( Handle(new Lazy_rep_0<AT,ET,E2A>(ec( BOOST_PP_ENUM(n, CGAL_LEXACT, _) ))) ); \
|
return result_type( Handle(new Lazy_rep_0<AT,ET,E2A>(ec( BOOST_PP_ENUM(n, CGAL_LEXACT, _) ))) ); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1714,6 +1723,7 @@ struct result<F( BOOST_PP_ENUM_PARAMS(n, T) )> { \
|
||||||
} \
|
} \
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp); \
|
CGAL_BRANCH_PROFILER_BRANCH(tmp); \
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST); \
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST); \
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST); \
|
||||||
return result_type( Handle(new Lazy_rep_0<AT,ET,E2A>(ec( BOOST_PP_ENUM(n, CGAL_LEXACT, _) ))) ); \
|
return result_type( Handle(new Lazy_rep_0<AT,ET,E2A>(ec( BOOST_PP_ENUM(n, CGAL_LEXACT, _) ))) ); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -403,6 +403,7 @@ int orientation(const Extended_point<RT>& p1,
|
||||||
run_exact=true;
|
run_exact=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = orientation_coeff2(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
res = orientation_coeff2(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
||||||
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
||||||
|
|
@ -422,6 +423,7 @@ int orientation(const Extended_point<RT>& p1,
|
||||||
run_exact = true;
|
run_exact = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = orientation_coeff1(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
res = orientation_coeff1(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
||||||
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
||||||
|
|
@ -441,6 +443,7 @@ int orientation(const Extended_point<RT>& p1,
|
||||||
run_exact = true;
|
run_exact = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = orientation_coeff0(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
res = orientation_coeff0(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
||||||
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
||||||
|
|
@ -473,6 +476,7 @@ int compare_x(const Extended_point<RT>& p1,
|
||||||
run_exact = true;
|
run_exact = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = compare_expr(p1.mx(),p1.hw(),p2.mx(),p2.hw());
|
res = compare_expr(p1.mx(),p1.hw(),p2.mx(),p2.hw());
|
||||||
|
|
||||||
|
|
@ -490,6 +494,7 @@ int compare_x(const Extended_point<RT>& p1,
|
||||||
run_exact = true;
|
run_exact = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = compare_expr(p1.nx(),p1.hw(),p2.nx(),p2.hw());
|
res = compare_expr(p1.nx(),p1.hw(),p2.nx(),p2.hw());
|
||||||
return res;
|
return res;
|
||||||
|
|
@ -514,6 +519,7 @@ int compare_y(const Extended_point<RT>& p1,
|
||||||
run_exact = true;
|
run_exact = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = compare_expr(p1.my(),p1.hw(),p2.my(),p2.hw());
|
res = compare_expr(p1.my(),p1.hw(),p2.my(),p2.hw());
|
||||||
if ( res != 0 ) return res;
|
if ( res != 0 ) return res;
|
||||||
|
|
@ -529,6 +535,7 @@ int compare_y(const Extended_point<RT>& p1,
|
||||||
run_exact = true;
|
run_exact = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = compare_expr(p1.ny(),p1.hw(),p2.ny(),p2.hw());
|
res = compare_expr(p1.ny(),p1.hw(),p2.ny(),p2.hw());
|
||||||
return res;
|
return res;
|
||||||
|
|
@ -673,6 +680,7 @@ int compare_pair_dist(
|
||||||
run_exact = true;
|
run_exact = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = cmppd_coeff2(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
res = cmppd_coeff2(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
||||||
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
||||||
|
|
@ -695,6 +703,7 @@ int compare_pair_dist(
|
||||||
run_exact = true;
|
run_exact = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = cmppd_coeff1(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
res = cmppd_coeff1(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
||||||
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
||||||
|
|
@ -716,6 +725,7 @@ int compare_pair_dist(
|
||||||
run_exact = true;
|
run_exact = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = cmppd_coeff0(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
res = cmppd_coeff0(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
||||||
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
||||||
|
|
@ -959,6 +969,7 @@ int orientation(const Extended_direction<RT>& d1,
|
||||||
run_exact=true;
|
run_exact=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = coeff2_dor(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
res = coeff2_dor(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
||||||
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
||||||
|
|
@ -979,6 +990,7 @@ int orientation(const Extended_direction<RT>& d1,
|
||||||
run_exact=true;
|
run_exact=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
res = coeff1_dor(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
res = coeff1_dor(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
||||||
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
||||||
|
|
@ -1000,6 +1012,7 @@ int orientation(const Extended_direction<RT>& d1,
|
||||||
run_exact = true;
|
run_exact = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if(run_exact)
|
if(run_exact)
|
||||||
res = coeff0_dor(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
res = coeff0_dor(p1.mx(),p1.nx(),p1.my(),p1.ny(),p1.hw(),
|
||||||
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
p2.mx(),p2.nx(),p2.my(),p2.ny(),p2.hw(),
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ struct Cartesian_filter_NT : public Base_
|
||||||
if(is_certain(res)) return get_certain(res);
|
if(is_certain(res)) return get_certain(res);
|
||||||
} catch (Uncertain_conversion_exception&) {}
|
} catch (Uncertain_conversion_exception&) {}
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
return p2(std::forward<U>(u)...);
|
return p2(std::forward<U>(u)...);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,7 @@ public:
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> p(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> p(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
return ep(c2e(std::forward<Args>(args))...);
|
return ep(c2e(std::forward<Args>(args))...);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -184,6 +184,7 @@ struct Lazy_construction2 {
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P2(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
return new Lazy_rep_0<AT,ET,E2A>(ec(CGAL::exact(l)...));
|
return new Lazy_rep_0<AT,ET,E2A>(ec(CGAL::exact(l)...));
|
||||||
}
|
}
|
||||||
// FIXME: this forces us to have default constructors for all types, try to make its instantiation lazier
|
// FIXME: this forces us to have default constructors for all types, try to make its instantiation lazier
|
||||||
|
|
|
||||||
|
|
@ -313,7 +313,7 @@ sign(TMC_Vertex_handle vit) const
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<false> P(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<false> P(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
typedef Exact_predicates_exact_constructions_kernel EK;
|
typedef Exact_predicates_exact_constructions_kernel EK;
|
||||||
typedef Skin_surface_traits_3<EK> Exact_skin_surface_traits;
|
typedef Skin_surface_traits_3<EK> Exact_skin_surface_traits;
|
||||||
typedef Skin_surface_base_3<Exact_skin_surface_traits> Exact_skin_surface_base;
|
typedef Skin_surface_base_3<Exact_skin_surface_traits> Exact_skin_surface_base;
|
||||||
|
|
@ -355,6 +355,7 @@ sign(const Bare_point &p, const Cell_info &info) const
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<false> P(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<false> P(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
return construct_surface(info.first,
|
return construct_surface(info.first,
|
||||||
Exact_predicates_exact_constructions_kernel()).sign(p);
|
Exact_predicates_exact_constructions_kernel()).sign(p);
|
||||||
}
|
}
|
||||||
|
|
@ -630,7 +631,7 @@ compare(Cell_info &info1, const Bare_point &p1,
|
||||||
}
|
}
|
||||||
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
CGAL_BRANCH_PROFILER_BRANCH(tmp);
|
||||||
Protect_FPU_rounding<false> P(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<false> P(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
return CGAL_NTS sign(
|
return CGAL_NTS sign(
|
||||||
construct_surface(info1.first,
|
construct_surface(info1.first,
|
||||||
Exact_predicates_exact_constructions_kernel()).value(p1) -
|
Exact_predicates_exact_constructions_kernel()).value(p1) -
|
||||||
|
|
@ -697,6 +698,7 @@ locate_in_tmc(const Bare_point &p0, TMC_Cell_handle start) const
|
||||||
*pts[2], *pts[3]);
|
*pts[2], *pts[3]);
|
||||||
} catch (Uncertain_conversion_exception&) { run_exact=true; }
|
} catch (Uncertain_conversion_exception&) { run_exact=true; }
|
||||||
}
|
}
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
if (run_exact)
|
if (run_exact)
|
||||||
{
|
{
|
||||||
Protect_FPU_rounding<false> P(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<false> P(CGAL_FE_TONEAREST);
|
||||||
|
|
|
||||||
|
|
@ -1210,6 +1210,7 @@ orientation(Tmc_Cell_handle ch)
|
||||||
} catch (Uncertain_conversion_exception&) {}
|
} catch (Uncertain_conversion_exception&) {}
|
||||||
}
|
}
|
||||||
Protect_FPU_rounding<false> P(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<false> P(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
typedef Exact_predicates_exact_constructions_kernel EK;
|
typedef Exact_predicates_exact_constructions_kernel EK;
|
||||||
typedef Cartesian_converter<EK, Tmc_traits> Exact_converter;
|
typedef Cartesian_converter<EK, Tmc_traits> Exact_converter;
|
||||||
typedef Skin_surface_traits_3<EK> Exact_traits;
|
typedef Skin_surface_traits_3<EK> Exact_traits;
|
||||||
|
|
|
||||||
|
|
@ -152,6 +152,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
||||||
|
CGAL_expensive_assertion(FPU_get_cw() == CGAL_FE_TONEAREST);
|
||||||
EC_result_type er = Exact_construction(To_Exact(std::forward<A>(a))...) ;
|
EC_result_type er = Exact_construction(To_Exact(std::forward<A>(a))...) ;
|
||||||
return From_Exact(er);
|
return From_Exact(er);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue