#include <series_sugar.hpp>
Definition at line 157 of file series_sugar.hpp.
implicit_vector_series_rep | ( | const routine & | fun2, | |
const vector< vector< C > > & | c2 | |||
) | [inline] |
Definition at line 161 of file series_sugar.hpp.
00162 : 00163 Solver_rep (N(c2[0]), c2), fun (fun2), c (c2) {} syntactic expression (const syntactic& z) const {
syntactic expression | ( | const syntactic & | z | ) | const [inline] |
Definition at line 164 of file series_sugar.hpp.
References mmx::flatten().
void Increase_order | ( | nat | l | ) | [inline, virtual, inherited] |
Definition at line 435 of file series_implicit.hpp.
References solver_series_rep< C, V >::eqs, mmx::increase_order(), and mmx::N().
00435 { 00436 VSeries_rep::Increase_order (l); 00437 for (nat i=0; i<N(eqs); i++) 00438 increase_order (eqs[i], l); 00439 }
Implements solver_series_rep< C, V >.
Definition at line 167 of file series_sugar.hpp.
References solver_series_rep< C, V >::me().
00167 { 00168 /* 00169 vector<USeries> mmm= this->me (); 00170 for (nat i=0; i<N(mmm); i++) 00171 for (nat j=0; j<3; j++) 00172 mmerr << i << ", " << j << " -> " << mmm[i][j] << "\n"; 00173 */ 00174 vector<generic> in = 00175 as<vector<generic> > (this->me ()); 00176 vector<generic> out= 00177 as<vector<generic> > (fun->apply (as<generic> (in))); 00178 /* 00179 vector<USeries> rrr= as<vector<USeries > > (out); 00180 for (nat i=0; i<N(rrr); i++) 00181 for (nat j=0; j<3; j++) 00182 mmerr << i << ", " << j << " -> " << rrr[i][j] << "\n"; 00183 */ 00184 return as<vector<USeries > > (out); }
Definition at line 448 of file series_implicit.hpp.
References solver_series_rep< C, V >::m, and mmx::unknown_series().
Referenced by implicit_vector_series_rep< C, V >::initialize(), and implicit_series_rep< C, V >::initialize().
00448 { 00449 vector<USeries > r= fill<USeries > (m); 00450 for (nat i=0; i<m; i++) 00451 r[i]= unknown_series (this, i); 00452 return r; 00453 }
syntactic name_component | ( | nat | i | ) | [inline, virtual, inherited] |
Definition at line 442 of file series_implicit.hpp.
References mmx::access(), mmx::flatten(), and solver_series_rep< C, V >::m.
vector< C > next | ( | ) | [inline, inherited] |
Definition at line 456 of file series_implicit.hpp.
References mmx::C, solver_series_rep< C, V >::cur_n, solver_series_rep< C, V >::eqs, mmx::insert_and_reduce(), mmx::is_exact_zero(), solver_series_rep< C, V >::m, min(), mmx::N(), Solver_rep, mmx::substitute(), solver_series_rep< C, V >::sys, UC, and VC.
00456 { 00457 //mmerr << "Solving " << this->n << "\n"; 00458 for (nat i=0; i<N(sys); i++) 00459 sys[i]= substitute (sys[i]); 00460 VC ret = fill<C> (m); 00461 nat done= 0; 00462 while (true) { 00463 ASSERT (cur_n < this->n + 100, "too large delay in implicit solve"); 00464 //mmerr << " Coefficient " << cur_n << "\n"; 00465 for (nat j=0; j<N(eqs); j++) { 00466 UC c= eqs[j][cur_n]; 00467 //mmerr << " Equation " << j << "= " << c << "\n"; 00468 insert_and_reduce (sys, c); 00469 } 00470 //mmerr << " System= " << sys << "\n"; 00471 cur_n++; 00472 for (nat i=0; i<N(sys); i++) 00473 ASSERT (sys[i]->f == ((Solver_rep*) this) && 00474 sys[i]->i1 >= this->n * m && sys[i]->i2 > this->n * m, 00475 "invalid situation during implicit solving"); 00476 while (N(sys) > 0 && done < m) { 00477 UC c= sys[N(sys)-1]; 00478 if (c->i2 <= this->n * m + done + 1) { 00479 nat j1 = c->i1 - this->n * m; 00480 nat j2 = min (done, c->i2 - this->n * m); 00481 C rhs= c->b; 00482 for (nat j=j1; j<j2; j++) 00483 rhs += c->s[j-j1] * ret[j]; 00484 if (c->i2 <= this->n * m + done) { 00485 ASSERT (is_exact_zero (rhs), "contradictory equations"); } 00486 else { 00487 ret[done]= -rhs / c->s[done-j1]; 00488 //mmerr << " Component " << done << "= " << ret[done] << "\n"; 00489 done++; 00490 } 00491 sys.secure (); 00492 inside (sys) -> resize (N(sys) - 1); 00493 } 00494 else break; 00495 } 00496 if (done == m) return ret; 00497 } 00498 }
nat cur_n [inherited] |
Definition at line 103 of file series_implicit.hpp.
Referenced by solver_series_rep< C, V >::next().
Definition at line 102 of file series_implicit.hpp.
Referenced by solver_series_rep< C, V >::Increase_order(), and solver_series_rep< C, V >::next().
nat m [inherited] |
Definition at line 101 of file series_implicit.hpp.
Referenced by solver_series_rep< C, V >::me(), solver_series_rep< C, V >::name_component(), and solver_series_rep< C, V >::next().
Definition at line 104 of file series_implicit.hpp.
Referenced by solver_series_rep< C, V >::next().