6 #ifndef realroot_SOLVE_SBDSLV_SUPPORT_HPP
7 #define realroot_SOLVE_SBDSLV_SUPPORT_HPP
19 template<
class _
interval_ >
static inline
20 bool check( _interval_
const *
const,
int ) {
return true; };
21 template<
class _
interval_ >
inline
22 void output( _interval_
const *
const dmns, sz_t nvars )
27 for ( sz_t i = 0; i < nvars; i ++ )
28 m_v.push_back( dmns[i].lower() ),
29 m_v.push_back( dmns[i].upper() );
33 template<
class real_t >
34 unsigned clean_result( real_t * isols,
int nvars,
int nsols,
const real_t& prec )
38 if ( nsols == 0 )
return 0;
39 for ( a = 0; a < nsols*nvars; isols[a] = (isols[2*a]+isols[2*a+1])/2.0, a ++ ) ;
41 for ( n = 1, c = 0, a = 0; a < nsols*nvars; a += nvars )
43 for ( cd = 0, i = 0; i < nvars; cd =
std::max(cd,
std::abs((isols+c)[i]-(isols+a)[i])), i ++ ) ;
46 double fa = ((double)n)/(n+1);
47 double fb = ((double)1.0)/(n+1);
48 for (
int i = 0; i < nvars; i ++ ) (isols+c)[i] = fa*(isols+
c)[i]+fb*(isols+a)[i];
58 return (c+nvars)/nvars;
system_ctrl(V &v)
Definition: system_support.hpp:18
Definition: system_support.hpp:14
static bool check(_interval_ const *const, int)
Definition: system_support.hpp:20
TMPL void copy(Polynomial &r, const Polynomial &a)
Copy of a in r.
Definition: sparse_monomials.hpp:613
void output(_interval_ const *const dmns, sz_t nvars)
Definition: system_support.hpp:22
int sz_t
Definition: system_support.hpp:16
unsigned clean_result(real_t *isols, int nvars, int nsols, const real_t &prec)
Definition: system_support.hpp:34
void abs(Interval< C, r > &x, const Interval< C, r > &a)
Definition: Interval_fcts.hpp:185
V & m_v
Definition: system_support.hpp:17
const C & c
Definition: Interval_glue.hpp:45
Interval< T, r > max(const Interval< T, r > &a, const Interval< T, r > &b)
Definition: Interval_fcts.hpp:135