1 #ifndef synaps_usolve_contfrac_IntervalData_h
2 #define synaps_usolve_contfrac_IntervalData_h
8 template<
class POL>
void div_x(
POL& p,
int k)
10 for(
int i=0;i< int(p.size()-k);i++)
12 for(
int i=p.size()-k; i<(int)p.size();i++)
16 template <
typename RT_,
typename Poly_ >
26 IntervalData(
const RT& a_,
const RT& b_,
const RT& c_,
const RT& d_,
27 const Poly& p_,
unsigned long s_)
28 : a(a_), b(b_), c(c_), d(d_), p(p_), s(s_) {}
34 template <
typename FT >
inline
42 template <
typename RT,
typename Poly >
47 Poly
X = Poly(
"x")*a+Poly(b), Y=Poly(
"x")*c+Poly(d);
55 template<
typename T,
typename F>
57 static inline T
cv (
const F& x) {
return x; }
60 template<
typename T,
typename F>
inline T
64 template<
typename FT,
typename RT,
typename Poly>
96 return (rational(a)/b);
101 template <
typename FT >
102 Interval< FT >
inline
111 template <
typename K >
113 to_FIT(
const typename K::RT& a,
const typename K::RT&
b,
114 const typename K::RT&
c,
const typename K::RT& d,
115 const typename K::FT& B)
117 typedef typename K::RT RT;
118 typedef typename K::FT FT;
125 if ( c == RT(0)) left =
sign(a) * B;
127 else left =
to_FT(a,c);
129 if ( d == RT(0)) right =
sign(b) * B;
131 else right =
to_FT(b,d);
133 return to_FIT( left, right);
137 template <
typename Poly>
inline
144 template <
typename Poly>
inline
150 for (
int i = 0; i <= deg; ++i)
155 template <
typename RT,
typename Poly >
inline
167 template <
typename Poly >
inline
172 for (
int j = deg-1; j >= 0; j--) {
173 for (
int i = j; i < deg; i++) {
183 template <
typename RT,
typename Poly >
inline
196 template <
typename RT,
typename Poly >
inline
206 template <
typename Poly >
inline
211 for (
int j = deg-1; j >= 0; j--) {
212 for (
int i = j; i < deg; i++) {
220 template <
typename RT,
typename Poly >
inline
228 template <
typename RT,
typename Poly,
typename RT2 >
inline
236 template <
typename RT,
typename Poly >
inline
239 RT a =
pow( RT( 2), k);
247 template <
typename RT,
typename Poly >
inline
256 template <
typename RT,
typename Poly >
inline
265 template <
typename RT,
typename Poly,
typename RT2 >
inline
275 template <
typename RT,
typename Poly >
inline
285 template <
typename RT,
typename Poly >
inline
299 #endif //synaps_usolve_contfrac_IntervalData_h
C eval_homogeneous(const R &p, const C &a, const C &b)
Definition: univariate.hpp:526
Cauchy bound.
Definition: univariate_bounds.hpp:163
IntervalData()
Definition: contfrac_intervaldata.hpp:30
texp::rationalof< C >::T to_FT(const C &a, const C &b)
Definition: contfrac_intervaldata.hpp:93
void div_x(POL &p, int k)
Definition: contfrac_intervaldata.hpp:8
T pow(const T &a, int i)
Definition: binomials.hpp:12
const C & b
Definition: Interval_glue.hpp:25
TMPL X
Definition: polynomial_operators.hpp:148
dynamic_exp< E >::degree_t degree(const dynamic_exp< E > &t)
Definition: dynamicexp.hpp:191
void shift(IntervalData< RT, Poly > &ID, const RT &a)
Definition: contfrac_intervaldata.hpp:257
const Interval & I
Definition: Interval_glue.hpp:49
MP swap(const MP &P, int var_i, int var_j)
Definition: sparse_monomials.hpp:988
Interval< FT > to_FIT(const FT &a, const FT &b)
Definition: contfrac_intervaldata.hpp:103
Definition: assign.hpp:48
void scale(IntervalData< RT, Poly > &ID, const RT &a)
Definition: contfrac_intervaldata.hpp:221
FT bound_root(const POLY &p, const Cauchy< FT > &m)
Definition: univariate_bounds.hpp:325
Poly_ Poly
Definition: contfrac_intervaldata.hpp:20
RT a
Definition: contfrac_intervaldata.hpp:22
void reverse(Poly &R, const Poly &P)
Definition: contfrac_intervaldata.hpp:139
static T cv(const F &x)
Definition: contfrac_intervaldata.hpp:57
TMPL void shift(Polynomial &r, const Polynomial &p, int d, int v=0)
Definition: univariate.hpp:318
void inv_scale(IntervalData< RT, Poly > &ID, const RT &a)
Definition: contfrac_intervaldata.hpp:248
RT b
Definition: contfrac_intervaldata.hpp:22
RT c
Definition: contfrac_intervaldata.hpp:22
Definition: contfrac_intervaldata.hpp:17
unsigned long s
Definition: contfrac_intervaldata.hpp:24
kernel_rationalof< typename kernelof< X >::T, _X, typename is_extended< X >::T >::T T
Definition: texp_rationalof.hpp:21
T as(const F &x)
Definition: assign.hpp:51
RT d
Definition: contfrac_intervaldata.hpp:22
IntervalData< RT, Poly > as_interval_data(const RT &a, const RT &b, const RT &c, const RT &d, const Poly &f)
Definition: contfrac_intervaldata.hpp:43
void shift_by_1(Poly &R, const Poly &P)
Definition: contfrac_intervaldata.hpp:168
void scale(R &t, const R &p, const C &l)
Definition: univariate.hpp:812
IntervalData(const RT &a_, const RT &b_, const RT &c_, const RT &d_, const Poly &p_, unsigned long s_)
Definition: contfrac_intervaldata.hpp:26
Definition: polynomial.hpp:37
void reverse_shift(IntervalData< RT, Poly > &I2, const IntervalData< RT, Poly > &ID)
Definition: contfrac_intervaldata.hpp:286
TMPL POL
Definition: polynomial_dual.hpp:74
Interval< FT > as_interval(const FT &a, const FT &b)
Definition: contfrac_intervaldata.hpp:35
Polynomial P
Definition: solver_mv_cf.cpp:24
Generic class for intervals.
Definition: Interval.hpp:44
const C & c
Definition: Interval_glue.hpp:45
Poly p
Definition: contfrac_intervaldata.hpp:23
double C
Definition: solver_mv_fatarcs.cpp:16
int sign(const QQ &a)
Definition: GMP.hpp:60
unsigned sign_variation(Iterator b, Iterator e)
Definition: sign_variation.hpp:27
static Interval< FT > cv(const IntervalData< RT, Poly > &I)
Definition: contfrac_intervaldata.hpp:67
void reverse_shift_homography(IntervalData< RT, Poly > &I2, const IntervalData< RT, Poly > &ID)
Definition: contfrac_intervaldata.hpp:276
RT_ RT
Definition: contfrac_intervaldata.hpp:19
void inv_scale(R &r, const R &p, const C &l)
Definition: univariate.hpp:828