Box representation. More...
#include <solver_mv_monomial_box_rep.hpp>
Box representation.
Definition at line 40 of file solver_mv_monomial_box_rep.hpp.
box_rep | ( | ) | [inline] |
Definition at line 88 of file solver_mv_monomial_box_rep.hpp.
Referenced by box_rep< POL >::safe_split(), and box_rep< POL >::subdivide().
box_rep | ( | Seq< POL > & | sys, | |
homography_mv< C > & | h | |||
) | [inline] |
Definition at line 90 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::S, homography_mv< real >::size(), and box_rep< POL >::update_data().
00091 { 00092 hg = h ; 00093 dim= h.size(); 00094 S= sys; 00095 00096 update_data(); 00097 };
Definition at line 100 of file solver_mv_monomial_box_rep.hpp.
References homography_mv< real >::colapse(), box_rep< POL >::homography(), box_rep< POL >::middle(), box_rep< POL >::nbvar(), box_rep< POL >::S, homography_mv< real >::shift_hom(), and box_rep< POL >::system().
00101 { 00102 dim= b.nbvar(); 00103 hg = b.homography(); 00104 00105 hg.shift_hom(b.middle(i) ,i); 00106 hg.colapse(); 00107 00108 S= b.system(); 00109 };
Definition at line 112 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::S.
00113 { 00114 dim=d; 00115 hg = homography_mv<C>(dim) ; 00116 //hg = homography_mv<int>(dim) ; 00117 S= sys; 00118 }
~box_rep | ( | ) | [inline] |
Definition at line 121 of file solver_mv_monomial_box_rep.hpp.
void contract_box | ( | const C & | t, | |
const int & | v | |||
) | [inline] |
x_v = t*x_v
Definition at line 503 of file solver_mv_monomial_box_rep.hpp.
References homography_mv< real >::contract_hom(), mmx::tensor::contraction(), mmx::rep(), box_rep< POL >::S, and Seq< C, R >::size().
Referenced by box_rep< POL >::subdivide().
00504 { 00505 unsigned i; 00506 00507 for (i = 0; i < S.size() ; ++i) 00508 contraction( S[i].rep() , t, v); 00509 00510 //update homography 00511 hg.contract_hom(t,v); 00512 };
C det | ( | C ** | matrix, | |
int | order | |||
) | [inline] |
Definition at line 203 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::submatrix().
Definition at line 235 of file solver_mv_monomial_box_rep.hpp.
00236 { 00237 FT l, r; 00238 Seq<Interval<FT> > s ; 00239 00240 for ( unsigned i=0; i!=dim; ++i ) 00241 { 00242 //lim to 0 00243 if ( hg[i].b!=0 && hg[i].d!=0 ) 00244 l= as<FT>(hg[i].b)/as<FT>(hg[i].d); 00245 else if ( hg[i].d==0 ) 00246 l= 10000000; 00247 else if ( hg[i].b==0 ) 00248 l= 0 ; 00249 else 00250 l= as<FT>(hg[i].a)/as<FT>(hg[i].c) ; 00251 00252 //lim to inf 00253 if ( hg[i].a!=0 && hg[i].c!=0 ) 00254 r= as<FT>(hg[i].a)/as<FT>(hg[i].c); 00255 else if ( hg[i].c==0 ) 00256 r=10000000; 00257 else if ( hg[i].a==0 ) 00258 r= 0 ; 00259 else 00260 r= as<FT>(hg[i].b)/as<FT>(hg[i].d); 00261 00262 if ( l<=r ) s << Interval<FT>(l,r); 00263 else s << Interval<FT>(r,l); 00264 } 00265 return s; 00266 }
Definition at line 312 of file solver_mv_monomial_box_rep.hpp.
References assert, mmx::rep(), box_rep< POL >::S, and Seq< C, R >::size().
Referenced by box_rep< POL >::exclude1(), box_rep< POL >::include1(), box_rep< POL >::include2(), box_rep< POL >::include3(), box_rep< POL >::is_root(), and box_rep< POL >::signof().
00313 { 00314 assert( t.size()==dim ); 00315 Seq<FT> res; 00316 FT ev; 00317 for ( unsigned i=0; i!=S.size() ; ++i ) 00318 { 00319 tensor::eval( ev , S[i].rep(), t, dim ); 00320 res<< ev; 00321 } 00322 return res; 00323 }
bool exclude1 | ( | Seq< POL * > & | S0 | ) | [inline] |
Exclusion criteria (inteval arithmetic).
Definition at line 641 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::eval(), Interval< T, r >::M, Interval< T, r >::m, box_rep< POL >::nbpol(), and mmx::rep().
00642 { 00643 Interval<FT> ev; 00644 Seq<Interval<FT> > dom; 00645 dom= domain<FT>(); 00646 00647 for (unsigned i=0; i!=nbpol(); ++i) 00648 { 00649 tensor::eval( ev , S0[i]->rep(), 00650 dom , dim ); 00651 if ( ev.m*ev.M > 0 ) 00652 { 00653 // std::cout<<i<<" ev"<< 00654 // dom<<"\nf= "<< *(S0[1])<< 00655 // "\n f([])= " <<ev<<std::endl; 00656 // if (td!=0) 00657 // std::cout<<"!!!!!!----td: "<<td <<std::endl; 00658 return true; 00659 } 00660 00661 } 00662 return false; 00663 };
homography_mv<C> hom | ( | ) | [inline] |
Definition at line 231 of file solver_mv_monomial_box_rep.hpp.
homography_mv<C> homography | ( | ) | [inline] |
Definition at line 151 of file solver_mv_monomial_box_rep.hpp.
Referenced by box_rep< POL >::box_rep().
bool include1 | ( | polynomial< double, with< MonomialTensor > > * | J | ) | [inline] |
Inclusion criteria (Miranda Test).
Definition at line 554 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::eval(), Interval< T, r >::M, Interval< T, r >::m, box_rep< POL >::miranda_test(), and POL.
00555 { 00556 Interval<double> ev; 00557 unsigned i,j,c; 00558 POL u,l; 00559 00560 bool t[dim][dim]; 00561 00562 tensor::eval( ev , J->rep() , 00563 this->template domain<double>() , dim ); 00564 if ( ev.m*ev.M < 0 ) 00565 return false; 00566 00567 for (i=0; i!=dim;++i) 00568 for (j=0; j!=dim;++j) 00569 t[i][j]= miranda_test(i,j); 00570 00571 c=0; 00572 for (i=0; i!=dim;++i) 00573 for (j=0; j!=dim;++j) 00574 if (t[i][j]==true) 00575 { 00576 c++; break; 00577 } 00578 if (c<dim) return false; 00579 00580 c=0; 00581 for (i=0; i!=dim;++i) 00582 for (j=0; j!=dim;++j) 00583 if (t[j][i]==true) 00584 { 00585 c++; break; 00586 } 00587 if (c<dim) return false; 00588 00589 // std::cout<<"INCLUDE. ev="<<ev<<", c="<<c <<std::endl; 00590 00591 return true; 00592 };
bool include2 | ( | polynomial< double, with< MonomialTensor > > * | J | ) | [inline] |
Inclusion criteria (Jacobian+Topological Degree).
Definition at line 595 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::eval(), Interval< T, r >::M, and Interval< T, r >::m.
00596 { 00597 Interval<double> ev; 00598 00599 tensor::eval( ev , J->rep() , 00600 this->domain<double>(), dim ); 00601 00602 // if ( this->width<double>() > 0.001 ) 00603 if ( ev.m*ev.M < 0 ) 00604 return false; 00605 00606 //td= this->topological_degree_2d<double>(); 00607 //if ( (td==-1 || td==1) ) 00608 //{ std::cout<<"INCLUDE. ev="<<ev<<", td="<<td <<std::endl; 00609 //this->print(); } 00610 00611 return ( 0 ); 00612 }
bool include3 | ( | polynomial< double, with< MonomialTensor > > * | J | ) | [inline] |
Inclusion criteria based on Rump's test.
Definition at line 615 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::eval(), Interval< T, r >::M, and Interval< T, r >::m.
00616 { 00617 //evaluate df_i(B) of the box = M_i 00618 // check if -Ji(c)*f(c) + (I-Ji(c)*M)*B 00619 // is contaied in B. 00620 00621 Interval<double> ev; 00622 00623 tensor::eval( ev , J->rep() , 00624 this->domain<double>(), dim ); 00625 00626 // if ( this->width<double>() > 0.001 ) 00627 if ( ev.m*ev.M < 0 ) 00628 return false; 00629 00630 //td= this->topological_degree_2d<double>(); 00631 //if ( (td==-1 || td==1) ) 00632 //{ std::cout<<"INCLUDE. ev="<<ev<<", td="<<td <<std::endl; 00633 //this->print(); } 00634 00635 return ( 0 ); 00636 }
bool is_root | ( | Seq< C > | t | ) | [inline] |
Definition at line 326 of file solver_mv_monomial_box_rep.hpp.
References assert, box_rep< POL >::eval(), mmx::rep(), box_rep< POL >::S, and Seq< C, R >::size().
00327 { 00328 assert( t.size()==dim ); 00329 C ev; 00330 for ( unsigned i=0; i!=S.size() ; ++i ) 00331 { 00332 tensor::eval( ev , S[i].rep() , t , dim ); 00333 if ( ev != 0 ) 00334 return false; 00335 } 00336 return true; 00337 }
C l_bound | ( | const int | v | ) | [inline] |
Lower integer bound for v-th coords of the positive roots.
Definition at line 365 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::maxs(), box_rep< POL >::mins(), POL, box_rep< POL >::S, and Seq< C, R >::size().
Referenced by box_rep< POL >::reduce_domain().
00366 { 00367 C l(0) ; 00368 unsigned i; 00369 POL m0, m1 ; 00370 00371 for (i=0; i!=S.size(); ++i ) // for all polys 00372 { 00373 m1= maxs( & S[i] , v); 00374 m0= mins( & S[i] , v); 00375 //std::cout<< m1<< " , "<< m0 << std::endl; 00376 00377 if ( m0( C(0) ) > 0 ) 00378 l= solver<ring<C,MonomialTensor>, CFfirstFloor>::template solve<C>(m0); 00379 // l= as<C>( solver<ring<double,Bernstein>, Bspline>::first_root(m0) ); 00380 else if ( m1( C(0) ) < 0 ) 00381 l= solver<ring<C,MonomialTensor>, CFfirstFloor>::template solve<C>(m1); 00382 // l= as<C>( solver<ring<double,Bernstein>, Bspline>::first_root(m1) ); 00383 } 00384 return l; 00385 };
POL lface | ( | const int & | i, | |
const int & | v | |||
) | [inline] |
Definition at line 693 of file solver_mv_monomial_box_rep.hpp.
References mmx::tensor::face(), POL, mmx::tensor::rename_var(), and box_rep< POL >::S.
00694 { 00695 POL t; 00696 00697 tensor::face(t, S[i], v , 0 ); 00698 rename_var( t.rep() , 1-v, 0 ) ; //1-v works for 2D only 00699 00700 return t; 00701 };
POL maxs | ( | POL * | f, | |
int | v | |||
) | [inline] |
Definition at line 396 of file solver_mv_monomial_box_rep.hpp.
References POL.
Referenced by box_rep< POL >::l_bound().
00397 { 00398 POL h(0,f->rep().szs()[v]-1,0) ;//var is always x0 00399 tensor::maxs(h.rep(), f->rep(), v ); 00400 return h; 00401 };
C middle | ( | int | i | ) | [inline] |
Definition at line 276 of file solver_mv_monomial_box_rep.hpp.
References floor().
00277 { 00278 C t; 00279 t= as<C>( floor( as<double>(hg[i].d/hg[i].c) )); //floor 00280 //if ( t==C(0) ) t=t+1; 00281 return (t+1); 00282 }
Seq<C> middle | ( | ) | [inline] |
Definition at line 268 of file solver_mv_monomial_box_rep.hpp.
References floor().
Referenced by box_rep< POL >::box_rep(), box_rep< POL >::subdiv_center(), and box_rep< POL >::update_data().
00269 { 00270 Seq<C> m; 00271 for ( unsigned i=0; i!=dim; ++i ) 00272 m << as<C>( floor( as<double>(hg[i].d/hg[i].c) )) ; //floor 00273 return (m); 00274 }
POL mins | ( | POL * | f, | |
int | v | |||
) | [inline] |
Definition at line 388 of file solver_mv_monomial_box_rep.hpp.
References POL.
Referenced by box_rep< POL >::l_bound().
00389 { 00390 POL h(0,f->rep().szs()[v]-1,0) ;//var is always x0 00391 tensor::mins(h.rep(), f->rep(), v ); 00392 return h; 00393 };
bool miranda_test | ( | const int | i, | |
const int | j | |||
) | [inline] |
Definition at line 539 of file solver_mv_monomial_box_rep.hpp.
References mmx::tensor::face(), mmx::realroot::no_variation(), POL, and box_rep< POL >::S.
Referenced by box_rep< POL >::include1().
00540 { 00541 POL u,l; 00542 00543 tensor::face(l, S[i], j, 0); 00544 tensor::face(u, S[i], j, 1); 00545 00546 return ( no_variation(l) && 00547 no_variation(u) && 00548 (l[0]>0)!=(u[0]>0) ); 00549 };
unsigned nbpol | ( | ) | [inline] |
Definition at line 154 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::S, and Seq< C, R >::size().
Referenced by box_rep< POL >::exclude1().
00154 { return S.size(); }
unsigned nbvar | ( | ) | [inline] |
Definition at line 153 of file solver_mv_monomial_box_rep.hpp.
Referenced by box_rep< POL >::box_rep().
Definition at line 286 of file solver_mv_monomial_box_rep.hpp.
References assert, and Seq< C, R >::size().
Referenced by box_rep< POL >::update_data().
00287 { 00288 assert( t.size()==dim ); 00289 Seq<FT> m; 00290 for ( unsigned i=0; i!=dim; ++i ) 00291 m << ( as<FT>(hg[i].a)*(t[i]) + as<FT>(hg[i].b) ) / 00292 ( as<FT>(hg[i].c)*(t[i]) + as<FT>(hg[i].d) ) ; 00293 return m; 00294 }
void print | ( | ) | [inline] |
Definition at line 712 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::system().
00713 { 00714 std::cout << "-------------Box---------------" << "\n" ; 00715 std::cout << system() << "\n"; 00716 for (unsigned i=0; i!=dim;++i) 00717 std::cout<< "("<<hg[i].a <<"x + " << hg[i].b<<")/("<<hg[i].c<<"x+ "<<hg[i].d << ")"<<std::endl; ; 00718 //std::cout<<"td="<<tdeg()<<std::endl; 00719 // std::cout << this->template domain<QQ>()<<"\n" ; 00720 std::cout << this->template domain<double>()<<"\n" ; 00721 std::cout << "-------------------------------" << "\n" ; 00722 };
bool reduce_domain | ( | ) | [inline] |
Reduce the domain from below using integer lower bound.
Definition at line 341 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::l_bound(), box_rep< POL >::shift_box(), and box_rep< POL >::update_data().
00342 { 00343 C lb; 00344 unsigned i; 00345 bool flag= false; // true iff reduction takes place 00346 00347 Seq<C> track; 00348 00349 //Compute lower bound and shift system 00350 for ( i=0; i<dim ;++i) // for all vars 00351 { 00352 lb= l_bound(i); 00353 track<< lb; 00354 if ( lb!=0 ) 00355 { 00356 this->shift_box(lb,i); 00357 update_data(); 00358 flag= true; 00359 } 00360 } 00361 return flag; 00362 };
Definition at line 123 of file solver_mv_monomial_box_rep.hpp.
References homography_mv< real >::contract_hom(), mmx::tensor::contraction(), mmx::reciprocal(), homography_mv< real >::reciprocal_hom(), mmx::rep(), box_rep< POL >::S, mmx::shift(), homography_mv< real >::shift_hom(), Seq< C, R >::size(), box_rep< POL >::update_data(), and box_rep< POL >::width().
00124 { 00125 //Seq<Interval<int> > dom; 00126 //let::assign(dom,dom0); 00127 00128 unsigned i,j; 00129 00130 for (i=0; i!=dim; i++) 00131 { 00132 hg.shift_hom ( dom0[i].m , i ); 00133 hg.contract_hom ( dom0[i].width(), i ); 00134 hg.reciprocal_hom( 1 , i ); 00135 hg.shift_hom ( 1 , i ); 00136 hg.reciprocal_hom( 1 , i );//mirror again 00137 for (j=0; j!=S.size(); j++) 00138 { 00139 shift ( S[j].rep(), dom0[i].m , i); 00140 contraction( S[j].rep(), dom0[i].width(), i); 00141 reciprocal ( S[j].rep(), i); 00142 shift ( S[j].rep(), C(1), i); 00143 reciprocal ( S[j].rep(), i);//mirror again 00144 } 00145 } 00146 update_data(); 00147 }
void reverse_and_shift_box | ( | const int & | v | ) | [inline] |
Definition at line 525 of file solver_mv_monomial_box_rep.hpp.
References mmx::reciprocal(), homography_mv< real >::reciprocal_hom(), mmx::rep(), box_rep< POL >::S, mmx::shift(), homography_mv< real >::shift_hom(), and Seq< C, R >::size().
Referenced by box_rep< POL >::subdivide().
void reverse_box | ( | const int & | v | ) | [inline] |
Definition at line 515 of file solver_mv_monomial_box_rep.hpp.
References mmx::reciprocal(), homography_mv< real >::reciprocal_hom(), mmx::rep(), box_rep< POL >::S, and Seq< C, R >::size().
Referenced by box_rep< POL >::subdivide().
00516 { 00517 for (unsigned i = 0; i < S.size() ; ++i) //for all polys 00518 reciprocal( S[i].rep() , v); 00519 00520 //update homography 00521 hg.reciprocal_hom(1,v); 00522 };
POL rface | ( | const int & | i, | |
const int & | v | |||
) | [inline] |
Definition at line 703 of file solver_mv_monomial_box_rep.hpp.
References mmx::tensor::face(), POL, mmx::tensor::rename_var(), and box_rep< POL >::S.
00704 { 00705 POL tmp; 00706 tensor::face(tmp, S[i], v , 1 ); 00707 rename_var( tmp.rep() , 1-v, 0 ) ; //1-v works for 2D only 00708 00709 return tmp; 00710 };
void safe_split | ( | const int & | v, | |
C | m = C(1) | |||
) | [inline] |
Subdivide in direction v only.
Definition at line 436 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::box_rep().
void shift_box | ( | const C & | t, | |
const int & | v = 0 | |||
) | [inline] |
Shift the system by t in direction v.
Definition at line 491 of file solver_mv_monomial_box_rep.hpp.
References mmx::rep(), box_rep< POL >::S, mmx::shift(), homography_mv< real >::shift_hom(), and Seq< C, R >::size().
Referenced by box_rep< POL >::reduce_domain(), and box_rep< POL >::subdivide().
int signof | ( | polynomial< double, with< MonomialTensor > > * | p | ) | [inline] |
Definition at line 216 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::eval().
00217 { 00218 00219 Interval<double> ev; 00220 //int dim= p->nbvar(); 00221 00222 tensor::eval( ev , p->rep() , 00223 this->template domain<double>() , dim ); 00224 00225 if (ev< .1e-15) return (0); 00226 return (ev>0?1:-1); 00227 }
Seq<C> subdiv_center | ( | const unsigned & | i | ) | [inline] |
Definition at line 296 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::middle(), and Seq< C, R >::resize().
Referenced by box_rep< POL >::subdiv_point().
00297 { 00298 Seq<C> tt; 00299 // Seq<double> t; 00300 tt.resize( dim ); 00301 tt[i]= this->middle(i); 00302 00303 return tt; 00304 }
Seq<double> subdiv_point | ( | const unsigned & | i | ) | [inline] |
Definition at line 306 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::subdiv_center().
00307 { 00308 return this->template point<double>(this->subdiv_center(i)); 00309 }
void subdivide | ( | const int & | v, | |
C & | m, | |||
STACK & | stck | |||
) | [inline] |
Subdivide in direction v and at point x_v=m.
Definition at line 470 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::box_rep(), box_rep< POL >::contract_box(), box_rep< POL >::reverse_and_shift_box(), box_rep< POL >::reverse_box(), box_rep< POL >::shift_box(), and box_rep< POL >::update_data().
00471 { 00472 box_rep * b; 00473 box_rep tmp(*this); 00474 00475 // left box 00476 b = new box_rep( tmp ) ; 00477 b->contract_box( m ,v); 00478 b->reverse_and_shift_box(v); 00479 b->reverse_box( v); //mirror back 00480 b->update_data(); 00481 stck.push ( b ); 00482 00483 // right box 00484 b = new box_rep( tmp ) ; 00485 b->shift_box( m, v); 00486 b->update_data(); 00487 stck.push ( b ); 00488 };
void subdivide | ( | const int & | v, | |
STACK & | stck, | |||
C | m = C(1) | |||
) | [inline] |
Subdivide in direction v only.
Definition at line 450 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::box_rep(), box_rep< POL >::contract_box(), box_rep< POL >::reverse_and_shift_box(), box_rep< POL >::shift_box(), and box_rep< POL >::update_data().
00451 { 00452 box_rep * b; 00453 00454 // right box 00455 b = new box_rep( *this ) ; 00456 b->shift_box( m ,v); 00457 b->update_data(); 00458 stck.push ( b ); 00459 00460 // left box 00461 b = new box_rep( *this ) ; 00462 b->contract_box(m,v); 00463 b->reverse_and_shift_box(v); 00464 //b->reverse_box( v); // produces thin boxes 00465 b->update_data(); 00466 stck.push ( b ); 00467 };
void subdivide | ( | STACK & | stck | ) | [inline] |
Subdivide in all directions.
Definition at line 405 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::box_rep(), box_rep< POL >::reverse_and_shift_box(), box_rep< POL >::shift_box(), and box_rep< POL >::update_data().
00406 { 00407 int i; 00408 Seq<int> ind(dim); 00409 box_rep * b; 00410 00411 for (;;) 00412 { 00413 // copy box 00414 b = new box_rep( *this ) ; 00415 00416 // transform box 00417 for (i = 0; i < dim ; ++i) // for all vars 00418 if ( ind[i] ) 00419 b->shift_box(1,i); 00420 else 00421 b->reverse_and_shift_box(i); 00422 b->update_data(); 00423 00424 // push box in stack 00425 stck.push ( b ); 00426 00427 // next 00428 for (i = 0; i < dim ; ++i) 00429 if (++ind[i] <2 ) break; else ind[i]=0 ; 00430 if (i == dim ) break; 00431 } 00432 };
int** submatrix | ( | C ** | matrix, | |
int | order, | |||
int | i, | |||
int | j | |||
) | [inline] |
Definition at line 178 of file solver_mv_monomial_box_rep.hpp.
Referenced by box_rep< POL >::det().
00179 { 00180 00181 C **subm; 00182 int p, q; // Indexes for matrix 00183 int a = 0, b; // Indexes for subm 00184 subm = new int* [order - 1]; 00185 00186 for(p = 0; p < order; p++) { 00187 if(p==i) continue; //Skip ith row 00188 subm[a] = new C[order - 1]; 00189 00190 b = 0; 00191 00192 for(q = 0; q< order; q++) { 00193 if(q==j) continue; //Skip jth column 00194 subm[a][b++] = matrix[p][q]; 00195 } 00196 a++; //Increment row index 00197 } 00198 return subm; 00199 }
POL system | ( | const int | i | ) | [inline] |
Definition at line 232 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::S.
00232 { return S[i]; }
POL system | ( | unsigned | i | ) | [inline] |
Definition at line 152 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::S.
00152 { return S[i]; }
Seq<POL> system | ( | ) | [inline] |
Accessors.
Definition at line 150 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::S.
Referenced by box_rep< POL >::box_rep(), and box_rep< POL >::print().
00150 { return S; }
void update_data | ( | ) | [inline] |
Definition at line 57 of file solver_mv_monomial_box_rep.hpp.
References box_rep< POL >::middle(), box_rep< POL >::point(), box_rep< POL >::S, and Seq< C, R >::size().
Referenced by box_rep< POL >::box_rep(), box_rep< POL >::reduce_domain(), box_rep< POL >::restrict(), and box_rep< POL >::subdivide().
00058 { 00059 00060 //C t; 00061 00062 // scale coefficients 00063 #ifdef DIVISION 00064 for( unsigned i=0; i<S.size(); i++ ){ 00065 t= *std::max_element( (S[i]).begin(), (S[i]).end() ); 00066 S[i]= S[i]/t; 00067 } 00068 #endif 00069 00070 // Precondition 00071 Seq<double> c= this->point( this->middle() ) ; 00072 //double *fc, *jc, *ijc; 00073 Seq<POL> S1= S; 00074 00075 // DPOL * J= jacobian(S1); 00076 00077 // jc= eval_poly_matrix( c, J, dim); // Jacobian evaluated on c 00078 // ijc= new double[dim*dim]; 00079 // linear::LUinverse(ijc, jc, dim); 00080 00081 // for( unsigned i=0; i<dim; i++ ){ 00082 // S[i]=0; 00083 // for( unsigned j=0; j<dim; j++ ) 00084 // S[i] += ijc[i*dim+j] * S1[j] ; 00085 // } 00086 }
FT volume | ( | ) | [inline] |
Definition at line 157 of file solver_mv_monomial_box_rep.hpp.
References Seq< C, R >::size(), and box_rep< POL >::width().
00158 { 00159 Seq<Interval<FT> > s; 00160 FT v(1); 00161 00162 s= domain<FT>(); 00163 00164 for (unsigned i=0; i!=s.size(); i++ ) 00165 v *= s[i].width(); 00166 00167 return v; 00168 }
FT width | ( | unsigned & | t | ) | [inline] |
The width, corresponding max projection returned in t.
Definition at line 677 of file solver_mv_monomial_box_rep.hpp.
References Seq< C, R >::size(), and box_rep< POL >::width().
00678 { 00679 unsigned i; 00680 FT w; 00681 Seq<Interval<FT> > s ; 00682 00683 s= domain<FT>(); 00684 w= s[0].width(); t= 0; 00685 00686 for ( i=0; i!=s.size(); ++i ) 00687 if ( s[i].width() > w) 00688 { w=s[i].width() ; t=i; } 00689 00690 return w; 00691 };
FT width | ( | ) | [inline] |
The width of the box (max of projection widths).
Definition at line 667 of file solver_mv_monomial_box_rep.hpp.
Referenced by box_rep< POL >::restrict(), box_rep< POL >::volume(), and box_rep< POL >::width().
Definition at line 55 of file solver_mv_monomial_box_rep.hpp.
Referenced by box_rep< POL >::box_rep(), box_rep< POL >::contract_box(), box_rep< POL >::eval(), box_rep< POL >::is_root(), box_rep< POL >::l_bound(), box_rep< POL >::lface(), box_rep< POL >::miranda_test(), box_rep< POL >::nbpol(), box_rep< POL >::restrict(), box_rep< POL >::reverse_and_shift_box(), box_rep< POL >::reverse_box(), box_rep< POL >::rface(), box_rep< POL >::shift_box(), box_rep< POL >::system(), and box_rep< POL >::update_data().