47 template<
unsigned int Precision>
52 template<
unsigned int Precision>
59 template<
unsigned int Precision>
64 template<
unsigned int Precision>
69 template<
unsigned int Precision>
76 template<
unsigned int Precision>
122 template<
unsigned int Precision>
143 tau.setbounds(0, minmn-1);
149 for(i=0; i<=k-1; i++)
156 reflections::generatereflection<Precision>(t, m-
i, tmp);
158 ap::vmove(a.getcolumn(i, i, m-1), t.getvector(1, m-i));
166 reflections::applyreflectionfromtheleft<Precision>(a,
tau(i), t,
i, m-1, i+1, n-1, work);
192 template<
unsigned int Precision>
209 if( m<=0 || n<=0 || qcolumns<=0 )
219 q.setbounds(0, m-1, 0, qcolumns-1);
222 for(i=0; i<=m-1; i++)
224 for(j=0; j<=qcolumns-1; j++)
240 for(i=k-1; i>=0; i--)
248 reflections::applyreflectionfromtheleft<Precision>(q,
tau(i),
v,
i, m-1, 0, qcolumns-1, work);
268 template<
unsigned int Precision>
283 r.setbounds(0, m-1, 0, n-1);
284 for(i=0; i<=n-1; i++)
288 for(i=1; i<=m-1; i++)
290 ap::vmove(r.getrow(i, 0, n-1), r.getrow(0, 0, n-1));
292 for(i=0; i<=k-1; i++)
294 ap::vmove(r.getrow(i, i, n-1), a.getrow(i, i, n-1));
302 template<
unsigned int Precision>
320 tau.setbounds(1, minmn);
334 reflections::generatereflection<Precision>(t, mmip1, tmp);
336 ap::vmove(a.getcolumn(i, i, m), t.getvector(1, mmip1));
344 reflections::applyreflectionfromtheleft<Precision>(a,
tau(i), t,
i,
m, i+1, n, work);
353 template<
unsigned int Precision>
371 if( m==0 || n==0 || qcolumns==0 )
381 q.setbounds(1, m, 1, qcolumns);
386 for(j=1; j<=qcolumns; j++)
411 reflections::applyreflectionfromtheleft<Precision>(q,
tau(i),
v,
i,
m, 1, qcolumns, work);
419 template<
unsigned int Precision>
440 q.setbounds(1, m, 1, m);
441 r.setbounds(1, m, 1, n);
446 qrdecomposition<Precision>(a,
m, n,
tau);
457 ap::vmove(r.getrow(i, 1, n), r.getrow(1, 1, n));
461 ap::vmove(r.getrow(i, i, n), a.getrow(i, i, n));
467 unpackqfromqr<Precision>(a,
m, n,
tau,
m, q);
void rmatrixqr(ap::template_2d_array< amp::ampf< Precision > > &a, int m, int n, ap::template_1d_array< amp::ampf< Precision > > &tau)
void unpackqfromqr(const ap::template_2d_array< amp::ampf< Precision > > &a, int m, int n, const ap::template_1d_array< amp::ampf< Precision > > &tau, int qcolumns, ap::template_2d_array< amp::ampf< Precision > > &q)
static void make_assertion(bool bClause)
void qrdecompositionunpacked(ap::template_2d_array< amp::ampf< Precision > > a, int m, int n, ap::template_2d_array< amp::ampf< Precision > > &q, ap::template_2d_array< amp::ampf< Precision > > &r)
void tau(int **points, int sizePoints, int k)
int minint(int m1, int m2)
void setbounds(int iLow, int iHigh)
const Variable & v
< [in] a sqrfree bivariate poly
void rmatrixqrunpackq(const ap::template_2d_array< amp::ampf< Precision > > &a, int m, int n, const ap::template_1d_array< amp::ampf< Precision > > &tau, int qcolumns, ap::template_2d_array< amp::ampf< Precision > > &q)
raw_vector< T > getvector(int iStart, int iEnd)
void rmatrixqrunpackr(const ap::template_2d_array< amp::ampf< Precision > > &a, int m, int n, ap::template_2d_array< amp::ampf< Precision > > &r)
void qrdecomposition(ap::template_2d_array< amp::ampf< Precision > > &a, int m, int n, ap::template_1d_array< amp::ampf< Precision > > &tau)
void vmove(raw_vector< T > vdst, const_raw_vector< T > vsrc)