14 #define REP poly.rep()
15 #define SIZE poly.size()
16 #define TODOUBLE as<double>
35 domain(
int n ){ int_t unit(
C(0),
C(1) );
for(
int i = 0; i < n; i++){I<<unit;}; };
36 domain( int_t intxy ){ I<<intxy<<intxy; };
37 domain( int_t intx , int_t inty ){ I<<intx<<inty; };
42 for(
unsigned i = 0; i < I.
size(); i++){d++;}
49 for(
unsigned i = 0; i < I.
size(); i++){
56 for(
unsigned i = 0; i < I.
size(); i++){
63 for(
unsigned i = 0; i < I.
size(); i++){
70 for(
unsigned i = 0; i < I.
size(); i++){
71 v[i]= I[i].center();};
78 for(
unsigned i = 0; i < I.
size(); i++){
84 { std::cout.precision(digits);
87 std::cout <<
"diam: " <<diam()<<std::endl;
97 Interval<C> Ixl(I[0].m , cx), Ixr(cx , I[0].M), Iyl(I[1].m , cy), Iyr(cy, I[1].M);
135 arc_rep(){pts[0]=vec_t(); pts[1]=vec_t(); pts[2]=vec_t();};
138 if(p0.size()!=0 && p1.size()!=0 && p2.size()!=0 )
140 else{pts[0]=p0; pts[1]=p1; pts[2]=p2;}; }
else{pts[0]=p0; pts[1]=p1; pts[2]=p2;}
144 if(p[0].
size()!=0 && p[1].
size()!=0 && p[2].
size()!=0 ){
145 if(
matrat(
v_minus(p[1],p[0]),
v_minus(p[2],p[0]) )[1]> coeff_t(0)){pts[0]=p[2]; pts[1]=p[1]; pts[2]=p[0];}
146 else{pts[0]=p[0]; pts[1]=p[1]; pts[2]=p[2];}; }
else{pts[0]=p[0]; pts[1]=p[1]; pts[2]=p[2];}
163 if( (coeff_t(1)-w*w) > coeff_t(0) && w!=coeff_t(0) ){
179 coeff_t ehx=
dot(cvec,
vec(pts[2][1]-pts[0][1],(coeff_t)(-1)*pts[0][0]-pts[2][0]));
180 coeff_t ehy=
dot(cvec,
vec(pts[0][0]-pts[2][0],(coeff_t)(-1)*pts[0][1]-pts[2][1]));
181 coeff_t ehc=
dot(cvec,
vec(pts[0][1]*pts[2][0]-pts[0][0]*pts[2][1],
182 pts[0][0]*pts[2][0]+pts[0][1]*pts[2][1]));
184 seq_t eh; eh<<eh2<<ehx<<ehy<<ehc;
195 pt=
vec(coeff_t(-1),coeff_t(-1));
196 coeffx<<pts[0][0]<< midc()[0]*weight()<< pts[2][0];
197 coeffy<<pts[0][1]<< midc()[1]*weight()<<pts[2][1];
198 wvec<<coeff_t(1)<< weight()<<coeff_t(1);
199 coeff_t t=0, cx,cy,w;
201 if (var==0 && (coeffx[2]-coeffx[0])!=0)
203 t=(coeffx[0]-coeffx[1])/(coeffx[2]-coeffx[0]);
205 else if (var==1 && (coeffy[2]-coeffy[0])!=0 )
207 t=(coeffy[0]-coeffy[1])/(coeffy[2]-coeffy[0]);
214 pt=
vec( cx/w , cy/w );
230 for( i=0; i<3; i++){newp[i]=vec_t(); };
233 if( w==coeff_t(1)){
for( i=0; i<3; i++){ newp[i]=
v_plus(pts[i],
v_mul(r/l,pp)); } }
236 ( r + l/(coeff_t(2)*
sqrt( coeff_t(1)-w*w ) )) > coeff_t(0)
242 v_div(pts[2],coeff_t(2))
255 v_mul(coeff_t(2)*r/l,
257 v_div(pts[0],coeff_t(2))
269 mo=
solve2(ehrat[0],ehrat[2],ehrat[3]);
270 for( j=0; j<2; j++){
if(
is_unit1(mo[j])){isp<<
vec(coeff_t(0),mo[j]);};};
271 mo=
solve2(ehrat[0],ehrat[2],ehrat[0]+ehrat[1]+ehrat[3]);
272 for( j=0; j<2; j++){
if(
is_unit1(mo[j])){isp<<
vec(coeff_t(1),mo[j]);};};
273 mo=
solve2(ehrat[0],ehrat[1],ehrat[3]);
274 for( j=0; j<2; j++){
if(
is_unit1(mo[j])){isp<<
vec(mo[j],coeff_t(0));};};
275 mo=
solve2(ehrat[0],ehrat[1],ehrat[0]+ehrat[2]+ehrat[3]);
276 for( j=0; j<2; j++){
if(
is_unit1(mo[j])){isp<<
vec(mo[j],coeff_t(1));};};
278 if (isp.
size()==0){newp[0]=vec_t(); }
else{
280 for( j=1; j<isp.
size(); j++)
284 if (isp.
size()==0){newp[2]=vec_t(); }
else{
286 for( j=1; j<isp.
size(); j++)
323 box_rep(bernstein_t p){box_t bb; poly=p; box=bb; };
358 for(
unsigned i = 0 ; i < face_p.size() ; i++){
359 if( stc*
sign(face_p.rep()[i]) == -1 ){
360 stc =
sign(face_p.rep()[i]);
event++;
362 else if ( stc == 0 &&
sign(face_p.rep()[i])!=0 ){
363 stc =
sign(face_p.rep()[i]);
366 if(event==1){
return true;}
else{
return false;};
376 for(
int i = 0; i < n ; i++){
377 if( e==0 ){ j=i; }
else{j=n-i-1;}
378 if( coeff_t(0)!=(list[j]) ){
389 vec_t evc=
vec(coeff_t(c1),coeff_t(c2));
391 eval(v, poly.rep(), evc );
392 bernstein_t face_p, face_q;
398 if (first_nonzero(face_p, c1)*first_nonzero(face_q, c2) < 0){
return true; }
else{
return false; };
400 }
else{
return false;};
406 if(edge_event( 0, 0)){elist<<
vec(coeff_t(0),coeff_t(0))<<
vec(coeff_t(1),coeff_t(0));}
407 if(edge_event( 0, 1)){elist<<
vec(coeff_t(0),coeff_t(1))<<
vec(coeff_t(1),coeff_t(1));}
408 if(edge_event( 1, 0)){elist<<
vec(coeff_t(0),coeff_t(0))<<
vec(coeff_t(0),coeff_t(1));}
409 if(edge_event( 1, 1)){elist<<
vec(coeff_t(1),coeff_t(0))<<
vec(coeff_t(1),coeff_t(1));}
411 if(corner_event( 0, 0)){elist<<
vec(coeff_t(0),coeff_t(0))<<vec_t();}
412 if(corner_event( 0, 1)){elist<<
vec(coeff_t(0),coeff_t(1))<<vec_t();}
413 if(corner_event( 1, 0)){elist<<
vec(coeff_t(1),coeff_t(0))<<vec_t();}
414 if(corner_event( 1, 1)){elist<<
vec(coeff_t(1),coeff_t(1))<<vec_t();}
422 bernstein_t p0 =
diff(poly,0);
423 bernstein_t p1 =
diff(poly,1);
425 bernstein_t gradx0 = p0;
426 bernstein_t gradx1 = p1;
429 mul(gradx0.rep(),p0.rep());
430 mul(gradx1.rep(),p1.rep());
431 add(grad.rep(),gradx0.rep(),gradx1.rep());
438 bernstein_t neww, bxt, byt, bwt, num, polyco;
439 monom_t monomp, newnom, xt, yt, wt;
442 v<<coeff_t(1)<<circ.
weight()<<coeff_t(1);
454 v<<coeff_t(1)<<circ.
weight()<<coeff_t(1);
C coeff_t
Definition: fatarcs.hpp:310
std::vector< C > v_mul(C q, std::vector< C > p)
Definition: fatarcs_fcts.hpp:75
bool corner_event(int c1, int c2)
Definition: fatarcs.hpp:388
bool not_empty()
Definition: fatarcs.hpp:338
Sequence of terms with reference counter.
Definition: Seq.hpp:28
arc_rep< coeff_t > offset(coeff_t r)
Definition: fatarcs.hpp:221
T pow(const T &a, int i)
Definition: binomials.hpp:12
vec_t pts[3]
Definition: fatarcs.hpp:131
TMPL Polynomial diff(const Polynomial &pol, int v)
Multivariate Polynomial Differentiation.
Definition: polynomial_fcts.hpp:99
dynamic_exp< E >::degree_t degree(const dynamic_exp< E > &t)
Definition: dynamicexp.hpp:191
domain(int_t intxy)
Definition: fatarcs.hpp:36
C abs_max_coeff(polynomial< C, with< Bernstein > > poly)
Definition: fatarcs_fcts.hpp:248
domain(int n)
Definition: fatarcs.hpp:35
coeff_t max_eval(arc_rep_t circ)
Definition: fatarcs.hpp:437
bool edge_event(int var, int n)
Definition: fatarcs.hpp:349
Result eval(const Polynomial &polynomial, const Parameters ¶meters)
Multivariate Polynomial Evaluation.
Definition: polynomial_fcts.hpp:135
void print(int digits)
Definition: fatarcs.hpp:83
std::vector< coeff_t > vec_t
Definition: fatarcs.hpp:123
polynomial< coeff_t,with< MonomialTensor > > monom_t
Definition: fatarcs.hpp:314
R & rep(R &r)
Definition: shared_object.hpp:180
domain< coeff_t > box_t
Definition: fatarcs.hpp:125
std::vector< C > rotl(std::vector< C > p)
Definition: fatarcs_fcts.hpp:32
Definition: fatarcs.hpp:307
self_t & clear()
Definition: Seq.hpp:117
void restrict(bernstein< C > &rst, int v, const T &a, const T &b)
Definition: tensor_bernstein_fcts.hpp:347
Definition: fatarcs.hpp:23
void split(domain< C > *ch)
Definition: fatarcs.hpp:91
std::vector< coeff_t > vec_t
Definition: fatarcs.hpp:311
std::vector< C > vec_t
Definition: fatarcs.hpp:27
Seq< coeff_t > seq_t
Definition: fatarcs.hpp:124
bool is_arc(arc_rep< C > c)
Definition: fatarcs_fcts.hpp:415
void mul(Interval< C, r > &a, const C &x)
Definition: Interval_fcts.hpp:259
void assign(monomials< C > &monoms, const bernstein< C > &controls)
Definition: tensor_bernstein_fcts.hpp:267
domain()
Definition: fatarcs.hpp:34
int first_nonzero(bernstein_t list, int e)
Definition: fatarcs.hpp:370
C min_coeff(polynomial< C, with< Bernstein > > poly)
Definition: fatarcs_fcts.hpp:217
void eval(Result &result, const bernstein< Coeff > &controls, const Parameters ¶meters)
Definition: tensor_bernstein_fcts.hpp:195
std::vector< C > v_div(std::vector< C > p, C q)
Definition: fatarcs_fcts.hpp:66
size_type size() const
Definition: Seq.hpp:166
box_t box
Definition: fatarcs.hpp:318
coeff_t weight()
Definition: fatarcs.hpp:152
seqint_t I
Definition: fatarcs.hpp:31
C coeff_t
Definition: fatarcs.hpp:122
seq_t arc_eq()
Definition: fatarcs.hpp:173
#define TODOUBLE
Definition: fatarcs.hpp:16
vec_t llc()
Definition: fatarcs.hpp:54
bool is_small(C p)
Definition: fatarcs_fcts.hpp:110
box_rep(bernstein_t p)
Definition: fatarcs.hpp:323
Seq< C > delta()
Definition: fatarcs.hpp:76
vec_t critpt(int var)
Definition: fatarcs.hpp:191
TMPL void face(Polynomial &r, const Polynomial &p, int v, int f)
Definition: polynomial_fcts.hpp:188
Seq< C > solve2(C a, C b, C c)
Definition: fatarcs_fcts.hpp:124
Definition: polynomial.hpp:37
ZZ size(const ZZ &z)
Definition: GMPXX.hpp:67
polynomial< coeff_t,with< MonomialTensor > > monom_t
Definition: fatarcs.hpp:127
arc_rep< coeff_t > arc_rep_t
Definition: fatarcs.hpp:315
void heval(Result &result, const monomials< Coeff > &monoms, const Parameters ¶meters)
Definition: tensor_monomials_fcts.hpp:148
C diam()
Definition: fatarcs.hpp:47
domain(int_t intx, int_t inty)
Definition: fatarcs.hpp:37
scalar< T > sqrt(const scalar< T > &b)
Definition: scalar.hpp:501
arc_rep(vec_t p[3])
Definition: fatarcs.hpp:143
vec_t midc()
Definition: fatarcs.hpp:157
bool is_unit1(C p)
Definition: fatarcs_fcts.hpp:138
std::vector< C > vec(const C c1, const C c2)
Definition: fatarcs_fcts.hpp:25
domain< coeff_t > box_t
Definition: fatarcs.hpp:312
C dot(std::vector< C > p, std::vector< C > q)
Definition: fatarcs_fcts.hpp:37
polynomial< coeff_t,with< Bernstein > > bernstein_t
Definition: fatarcs.hpp:313
vec_t urc()
Definition: fatarcs.hpp:61
Generic class for intervals.
Definition: Interval.hpp:44
arc_rep(vec_t p0, vec_t p1, vec_t p2)
Definition: fatarcs.hpp:137
polynomial< coeff_t,with< Bernstein > > bernstein_t
Definition: fatarcs.hpp:126
Definition: fatarcs.hpp:119
double C
Definition: solver_mv_fatarcs.cpp:16
coeff_t min_grad()
Definition: fatarcs.hpp:420
std::vector< C > matrat(std::vector< C > v1, std::vector< C > v2)
Definition: fatarcs_fcts.hpp:89
vec_t center()
Definition: fatarcs.hpp:68
int sign(const QQ &a)
Definition: GMP.hpp:60
C dim()
Definition: fatarcs.hpp:40
bernstein_t poly
Definition: fatarcs.hpp:319
Seq< Interval< C > > seqint_t
Definition: fatarcs.hpp:26
void assign(A &a, const B &b)
Generic definition of the assignement function.
Definition: assign.hpp:97
C max_coeff(polynomial< C, with< Bernstein > > poly)
Definition: fatarcs_fcts.hpp:232
std::vector< C > v_plus(std::vector< C > p, std::vector< C > q)
Definition: fatarcs_fcts.hpp:46
C v_length(std::vector< C > p)
Definition: fatarcs_fcts.hpp:84
Seq< vec_t > event_list()
Definition: fatarcs.hpp:404
void add(dynamic_exp< E > &r, const dynamic_exp< E > &A, const dynamic_exp< E > &B)
Definition: dynamicexp.hpp:295
polynomial< C,with< Bernstein > > seq2b(Seq< C > coeffseq)
Definition: fatarcs_fcts.hpp:190
std::vector< C > v_minus(std::vector< C > p, std::vector< C > q)
Definition: fatarcs_fcts.hpp:56
Interval< C > int_t
Definition: fatarcs.hpp:25
box_rep(bernstein_t p, box_t bb)
Definition: fatarcs.hpp:324
arc_rep()
Definition: fatarcs.hpp:135