11 #include "linpkg/array2d.H"
12 #include "linpkg/MATRIX.H"
13 #include "linpkg/MatRef.H"
26 CoeffOf(
const POL & p,
const typename POL::monom_t & mono)
28 typedef typename POL::coeff_t coeff_t;
29 typename POL::const_iterator m;
30 for(m = p.begin(); !IsComparable((*m),mono) && m!= p.end(); m++);
39 template<
class R>
void build(R & A,
typename R::index_t nl,
40 typename R::index_t nc,
typename R::index_t
nz);
50 typename R::index_t nc,
typename R::index_t
nz)
65 template<
class POL,
class RM>
66 MatRef<RM>
MatrixOf(
const list<POL> & L, RM M,
char t=
'N')
68 typedef typename POL::monom_t monom_t;
72 for(list<POL>::const_iterator pi = L.begin(); pi != L.end(); ++pi){
73 for(
typename POL::const_iterator m = pi->begin(); m!= pi->end(); m++)
82 map<monom_t,int>
index;
84 for(
typename POL::iterator m = s.begin(); m!=s.end(); m++){
90 for(list<POL>::const_iterator pi = L.begin(); pi != L.end(); ++pi)
97 for(list<POL>::const_iterator pi = L.begin(); pi != L.end(); ++pi)
99 for(
typename POL::const_iterator m = pi->begin(); m!=pi->end(); m++)
101 (*res)(l,index[*m])=m->GetCoeff();
105 return MatRef<RM>(res);
109 for(list<POL>::const_iterator pi = L.begin(); pi != L.end(); ++pi){
110 for(
typename POL::const_iterator m = pi->begin(); m!=pi->end(); m++)
112 (*res)(index[*m],l)=m->GetCoeff();
116 return MatRef<RM>(res);
128 template <
class POL,
class RM>
131 const list<typename POL::monom_t> & lm,
134 typedef typename POL::monom_t monom_t;
136 map<monom_t,int>
index;
139 for(list<monom_t>::const_iterator m = lm.begin(); m!=lm.end(); m++){
145 RM* res=
new RM(L.size(),l-1);
147 for(list<POL>::const_iterator pi = L.begin(); pi != L.end(); ++pi)
149 for(
typename POL::const_iterator m = pi->begin(); m!=pi->end(); m++)
151 if((c=index[*m])) (*res)(l,c-1)=m->GetCoeff();
155 return MatRef<RM>(res);
157 RM* res=
new RM(l-1,L.size());
159 for(list<POL>::const_iterator pi = L.begin(); pi != L.end(); ++pi){
160 for(
typename POL::const_iterator m = pi->begin(); m!=pi->end(); m++)
162 if((c=index[*m])) (*res)(c-1,l)=m->GetCoeff();
166 return MatRef<RM>(res);
174 template <
class POL,
class C>
177 const list<typename POL::monom_t> & lm,
178 umfpack<C>
r,
char t=
'N')
180 typedef umfpack<C> R;
181 typedef typename POL::monom_t monom_t;
183 map<monom_t,int>
index;
186 for(list<monom_t>::const_iterator m = lm.begin(); m!=lm.end(); m++){
191 for(list<POL>::const_iterator pi = L.begin(); pi != L.end(); ++pi)
192 for(
typename POL::const_iterator m = pi->begin(); m!=pi->end(); m++)
199 R* res=
new R(nr,nc,nz);
201 for(list<POL>::const_iterator pi = L.begin(); pi != L.end(); ++pi)
203 for(
typename POL::const_iterator m = pi->begin(); m!=pi->end(); m++)
206 res->tab_[
k] = m->GetCoeff();
208 res->index_[k+
nz]=
i-1;
214 return MatRef<R>(res);
217 #endif // _SpUMFMat_H_
218 #endif // _MatrixOf_H_
Definition: MatrixOf.hpp:37
void build(R &A, typename R::index_t nl, typename R::index_t nc, typename R::index_t nz)
Definition: MatrixOf.hpp:49
POL::coeff_t CoeffOf(const POL &p, const typename POL::monom_t &mono)
Definition: MatrixOf.hpp:26
MSKconetypee MSKrealt MSKint32t MSKint32t j
Definition: mosek.h:2421
MSKint32t k
Definition: mosek.h:2713
MSKCONST char MSKint32t MSKint32t * index
Definition: mosek.h:2860
MSKrealt * c
Definition: mosek.h:2678
MSKint32t MSKint32t MSKint32t i
Definition: mosek.h:2278
MSKint64t * nz
Definition: mosek.h:3998
MSKrescodee r
Definition: mosek.h:2321
MatRef< RM > MatrixOf(const list< POL > &L, RM M, char t='N')
Definition: MatrixOf.hpp:66