My Project  UNKNOWN_GIT_VERSION
Functions
qr Namespace Reference

Functions

template<unsigned int Precision>
void rmatrixqr (ap::template_2d_array< amp::ampf< Precision > > &a, int m, int n, ap::template_1d_array< amp::ampf< Precision > > &tau)
 
template<unsigned int Precision>
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)
 
template<unsigned int Precision>
void rmatrixqrunpackr (const ap::template_2d_array< amp::ampf< Precision > > &a, int m, int n, ap::template_2d_array< amp::ampf< Precision > > &r)
 
template<unsigned int Precision>
void qrdecomposition (ap::template_2d_array< amp::ampf< Precision > > &a, int m, int n, ap::template_1d_array< amp::ampf< Precision > > &tau)
 
template<unsigned int Precision>
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)
 
template<unsigned int Precision>
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)
 

Function Documentation

◆ qrdecomposition()

template<unsigned int Precision>
void qr::qrdecomposition ( ap::template_2d_array< amp::ampf< Precision > > &  a,
int  m,
int  n,
ap::template_1d_array< amp::ampf< Precision > > &  tau 
)

Definition at line 339 of file qr.h.

339  {
340 
341  //
342  // Apply H(i) to A(i:m,i+1:n) from the left
343  //
344  reflections::applyreflectionfromtheleft<Precision>(a, tau(i), t, i, m, i+1, n, work);
345  }
346  }
347  }
348 
349 
350  /*************************************************************************
351  Obsolete 1-based subroutine. See RMatrixQRUnpackQ for 0-based replacement.
352  *************************************************************************/
353  template<unsigned int Precision>
355  int m,
356  int n,
358  int qcolumns,
360  {
361  int i;
362  int j;
363  int k;
364  int minmn;
367  int vm;
368 
369 
370  ap::ap_error::make_assertion(qcolumns<=m);
371  if( m==0 || n==0 || qcolumns==0 )
372  {
373  return;
374  }
375 
376  //
377  // init
378  //
379  minmn = ap::minint(m, n);
380  k = ap::minint(minmn, qcolumns);
381  q.setbounds(1, m, 1, qcolumns);
382  v.setbounds(1, m);
383  work.setbounds(1, qcolumns);

◆ qrdecompositionunpacked()

template<unsigned int Precision>
void qr::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 
)

Definition at line 456 of file qr.h.

456  {
457  ap::vmove(r.getrow(i, 1, n), r.getrow(1, 1, n));
458  }
459  for(i=1; i<=k; i++)
460  {
461  ap::vmove(r.getrow(i, i, n), a.getrow(i, i, n));
462  }
463 
464  //
465  // Q
466  //
467  unpackqfromqr<Precision>(a, m, n, tau, m, q);
468  }
469 } // namespace
470 
471 #endif

◆ rmatrixqr()

template<unsigned int Precision>
void qr::rmatrixqr ( ap::template_2d_array< amp::ampf< Precision > > &  a,
int  m,
int  n,
ap::template_1d_array< amp::ampf< Precision > > &  tau 
)

Definition at line 159 of file qr.h.

161  {
162 
163  //
164  // Apply H(i) to A(i:m-1,i+1:n-1) from the left
165  //
166  reflections::applyreflectionfromtheleft<Precision>(a, tau(i), t, i, m-1, i+1, n-1, work);
167  }
168  }
169  }
170 
171 
172  /*************************************************************************
173  Partial unpacking of matrix Q from the QR decomposition of a matrix A
174 
175  Input parameters:
176  A - matrices Q and R in compact form.
177  Output of RMatrixQR subroutine.
178  M - number of rows in given matrix A. M>=0.
179  N - number of columns in given matrix A. N>=0.
180  Tau - scalar factors which are used to form Q.
181  Output of the RMatrixQR subroutine.
182  QColumns - required number of columns of matrix Q. M>=QColumns>=0.
183 
184  Output parameters:
185  Q - first QColumns columns of matrix Q.
186  Array whose indexes range within [0..M-1, 0..QColumns-1].
187  If QColumns=0, the array remains unchanged.
188 
189  -- ALGLIB --
190  Copyright 2005 by Bochkanov Sergey
191  *************************************************************************/
192  template<unsigned int Precision>
194  int m,
195  int n,
197  int qcolumns,
199  {
200  int i;
201  int j;
202  int k;
203  int minmn;

◆ rmatrixqrunpackq()

template<unsigned int Precision>
void qr::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 
)

Definition at line 229 of file qr.h.

231  {
232  q(i,j) = 0;
233  }
234  }
235  }
236 
237  //
238  // unpack Q
239  //
240  for(i=k-1; i>=0; i--)
241  {
242 
243  //
244  // Apply H(i)
245  //
246  ap::vmove(v.getvector(1, m-i), a.getcolumn(i, i, m-1));
247  v(1) = 1;
248  reflections::applyreflectionfromtheleft<Precision>(q, tau(i), v, i, m-1, 0, qcolumns-1, work);
249  }
250  }
251 
252 
253  /*************************************************************************
254  Unpacking of matrix R from the QR decomposition of a matrix A
255 
256  Input parameters:
257  A - matrices Q and R in compact form.
258  Output of RMatrixQR subroutine.
259  M - number of rows in given matrix A. M>=0.
260  N - number of columns in given matrix A. N>=0.
261 
262  Output parameters:
263  R - matrix R, array[0..M-1, 0..N-1].
264 
265  -- ALGLIB --
266  Copyright 2005 by Bochkanov Sergey
267  *************************************************************************/
268  template<unsigned int Precision>
270  int m,
271  int n,
273  {
274  int i;
275  int k;
276 
277 
278  if( m<=0 || n<=0 )
279  {
280  return;
281  }
282  k = ap::minint(m, n);
283  r.setbounds(0, m-1, 0, n-1);
284  for(i=0; i<=n-1; i++)
285  {
286  r(0,i) = 0;

◆ rmatrixqrunpackr()

template<unsigned int Precision>
void qr::rmatrixqrunpackr ( const ap::template_2d_array< amp::ampf< Precision > > &  a,
int  m,
int  n,
ap::template_2d_array< amp::ampf< Precision > > &  r 
)

Definition at line 305 of file qr.h.

307  {
310  int i;
311  int k;
312  int mmip1;
313  int minmn;
315 
316 
317  minmn = ap::minint(m, n);
318  work.setbounds(1, n);
319  t.setbounds(1, m);
320  tau.setbounds(1, minmn);
321 
322  //
323  // Test the input arguments
324  //
325  k = ap::minint(m, n);
326  for(i=1; i<=k; i++)
327  {
328 
329  //
330  // Generate elementary reflector H(i) to annihilate A(i+1:m,i)
331  //
332  mmip1 = m-i+1;

◆ unpackqfromqr()

template<unsigned int Precision>
void qr::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 
)

Definition at line 390 of file qr.h.

393  {
394  q(i,j) = 0;
395  }
396  }
397  }
398 
399  //
400  // unpack Q
401  //
402  for(i=k; i>=1; i--)
403  {
404 
405  //
406  // Apply H(i)
407  //
408  vm = m-i+1;
409  ap::vmove(v.getvector(1, vm), a.getcolumn(i, i, m));
410  v(1) = 1;
411  reflections::applyreflectionfromtheleft<Precision>(q, tau(i), v, i, m, 1, qcolumns, work);
412  }
413  }
414 
415 
416  /*************************************************************************
417  Obsolete 1-based subroutine. See RMatrixQR for 0-based replacement.
418  *************************************************************************/
419  template<unsigned int Precision>
421  int m,
422  int n,
425  {
426  int i;
427  int k;
431 
432 
433  k = ap::minint(m, n);
434  if( n<=0 )
435  {
436  return;
437  }
438  work.setbounds(1, m);
439  v.setbounds(1, m);
440  q.setbounds(1, m, 1, m);
441  r.setbounds(1, m, 1, n);
442 
443  //
444  // QRDecomposition
445  //
446  qrdecomposition<Precision>(a, m, n, tau);
447 
448  //
449  // R
ap::vmove
void vmove(raw_vector< T > vdst, const_raw_vector< T > vsrc)
Definition: ap.h:242
j
int j
Definition: facHensel.cc:105
k
int k
Definition: cfEzgcd.cc:92
ap::template_1d_array
Definition: ap.h:661
ap::template_2d_array
Definition: ap.h:811
qr::unpackqfromqr
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)
Definition: qr.h:390
amp::ampf
Definition: amp.h:82
ap::template_2d_array::setbounds
void setbounds(int iLow1, int iHigh1, int iLow2, int iHigh2)
Definition: ap.h:897
qr::rmatrixqrunpackr
void rmatrixqrunpackr(const ap::template_2d_array< amp::ampf< Precision > > &a, int m, int n, ap::template_2d_array< amp::ampf< Precision > > &r)
Definition: qr.h:305
ap::template_2d_array::getcolumn
raw_vector< T > getcolumn(int iColumn, int iRowStart, int iRowEnd)
Definition: ap.h:938
i
int i
Definition: cfEzgcd.cc:125
ap::template_2d_array::getrow
raw_vector< T > getrow(int iRow, int iColumnStart, int iColumnEnd)
Definition: ap.h:946
ap::minint
int minint(int m1, int m2)
Definition: ap.cpp:167
ap::ap_error::make_assertion
static void make_assertion(bool bClause)
Definition: ap.h:61
qr::qrdecompositionunpacked
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)
Definition: qr.h:456
tau
void tau(int **points, int sizePoints, int k)
Definition: cfNewtonPolygon.cc:461
m
int m
Definition: cfEzgcd.cc:121
ap::template_1d_array::setbounds
void setbounds(int iLow, int iHigh)
Definition: ap.h:742
v
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
qr::rmatrixqrunpackq
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)
Definition: qr.h:229