algebramix_doc 0.3
|
#include <series_sugar.hpp>
Definition at line 130 of file series_sugar.hpp.
implicit_series_rep | ( | const routine & | fun2, |
const vector< C > & | c2 | ||
) | [inline] |
Definition at line 134 of file series_sugar.hpp.
: Solver_rep (1, singleton_vector (c2)), fun (fun2), c (c2) {}
syntactic expression | ( | const syntactic & | z | ) | const [inline] |
Definition at line 136 of file series_sugar.hpp.
References mmx::flatten().
void Increase_order | ( | nat | l | ) | [virtual, inherited] |
Definition at line 435 of file series_implicit.hpp.
References mmx::increase_order(), and mmx::N().
{ VSeries_rep::Increase_order (l); for (nat i=0; i<N(eqs); i++) increase_order (eqs[i], l); }
Implements solver_series_rep< C, V >.
Definition at line 139 of file series_sugar.hpp.
References solver_series_rep< C, V >::me(), and USeries.
Definition at line 448 of file series_implicit.hpp.
References mmx::unknown_series().
Referenced by implicit_vector_series_rep< C, V >::initialize(), and implicit_series_rep< C, V >::initialize().
{ vector<USeries > r= fill<USeries > (m); for (nat i=0; i<m; i++) r[i]= unknown_series (this, i); return r; }
syntactic name_component | ( | nat | i | ) | [virtual, inherited] |
Definition at line 442 of file series_implicit.hpp.
References mmx::access(), and mmx::flatten().
vector< C > next | ( | ) | [inherited] |
Definition at line 456 of file series_implicit.hpp.
References mmx::C, mmx::insert_and_reduce(), mmx::is_exact_zero(), mmx::N(), Solver_rep, mmx::substitute(), UC, and VC.
{ //mmerr << "Solving " << this->n << "\n"; for (nat i=0; i<N(sys); i++) sys[i]= substitute (sys[i]); VC ret = fill<C> (m); nat done= 0; while (true) { ASSERT (cur_n < this->n + 100, "too large delay in implicit solve"); //mmerr << " Coefficient " << cur_n << "\n"; for (nat j=0; j<N(eqs); j++) { UC c= eqs[j][cur_n]; //mmerr << " Equation " << j << "= " << c << "\n"; insert_and_reduce (sys, c); } //mmerr << " System= " << sys << "\n"; cur_n++; for (nat i=0; i<N(sys); i++) ASSERT (sys[i]->f == ((Solver_rep*) this) && sys[i]->i1 >= this->n * m && sys[i]->i2 > this->n * m, "invalid situation during implicit solving"); while (N(sys) > 0 && done < m) { UC c= sys[N(sys)-1]; if (c->i2 <= this->n * m + done + 1) { nat j1 = c->i1 - this->n * m; nat j2 = min (done, c->i2 - this->n * m); C rhs= c->b; for (nat j=j1; j<j2; j++) rhs += c->s[j-j1] * ret[j]; if (c->i2 <= this->n * m + done) { ASSERT (is_exact_zero (rhs), "contradictory equations"); } else { ret[done]= -rhs / c->s[done-j1]; //mmerr << " Component " << done << "= " << ret[done] << "\n"; done++; } sys.secure (); inside (sys) -> resize (N(sys) - 1); } else break; } if (done == m) return ret; } }
nat cur_n [inherited] |
Definition at line 103 of file series_implicit.hpp.
Definition at line 102 of file series_implicit.hpp.
nat m [inherited] |
Definition at line 101 of file series_implicit.hpp.