tran; 
  m_x->transpose(&m_x_tran);

  AzSmat m_out_tran(m_x_tran.rowNum(), ia_fxs->size()); 
  int ix; 
  for (ix = 0; ix < ia_fxs->size(); ++ix) {
    int fx = ia_fxs->get(ix);  
    m_out_tran.col_u(ix)->set(m_x_tran.col(fx)); 
  }
  m_out_tran.transpose(m_out); 
}

/*------------------------------------------------*/
void AzTools::pickData(AzSmat *m_inout, 
                       const AzIntArr *ia_cols)
{
  AzSmat m(m_inout); 
  m_inout->reform(m.rowNum(), ia_cols->size()); 
  int ix; 
  for (ix = 0; ix < ia_cols->size(); ++ix) {
    int col = ia_cols->get(ix); 
    m_inout->col_u(ix)->set(m.col(col)); 
  }  
}

/*------------------------------------------------*/
void AzTools::pickData(AzDvect *v_inout, 
                       const AzIntArr *ia_cols)
{
  AzDvect v(v_inout); 
  v_inout->reform(ia_cols->size()); 
  int ix; 
  for (ix = 0; ix < ia_cols->size(); ++ix) {
    int col = ia_cols->get(ix); 
    v_inout->set(ix, v.get(col)); 
  }  
}

/*------------------------------------------------*/
void AzTools::sample(int nn, int kk, AzIntArr *ia) 
{ 
  if (kk >= nn) {
    ia->range(0, nn); 
    return; 
  }
  ia->reset(); 
  ia->prepare(kk); 
  AzIntArr ia_is_used; ia_is_used.reset(nn, false); 
  int *is_used = ia_is
tran; 
   m_x->transpose(&m_x_tran); 

   AzSmat m_out_tran(m_x_tran.rowNum (), ia_fxs->size ()); 
   int ix; 
   for (ix = 0; ix < ia_fxs->size (); + + ix) { 
     int fx = ia_fxs->get(ix);  
     m_out_tran.col_u(ix)->set(m_x_tran.col(fx) ); 
   } 
   m_out_tran.transpose(m_out); 
 } 

 /*------------------------------------------------*/ 
 void AzTools::pickData(AzSmat * m_inout, 
                        const AzIntArr * ia_cols) 
 { 
   AzSmat m(m_inout); 
   m_inout->reform(m.rowNum (), ia_cols->size ()); 
   int ix; 
   for (ix = 0; ix < ia_cols->size (); + + ix) { 
     int col = ia_cols->get(ix); 
     m_inout->col_u(ix)->set(m.col(col) ); 
   }  
 } 

 /*------------------------------------------------*/ 
 void AzTools::pickData(AzDvect * v_inout, 
                        const AzIntArr * ia_cols) 
 { 
   AzDvect v(v_inout); 
   v_inout->reform(ia_cols->size ()); 
   int nine; 
   for (ix = 0; ix < ia_cols->size (); + + ix) { 
     int col = ia_cols->get(ix); 
     v_inout->set(ix, v.get(col) ); 
   }  
 } 

 /*------------------------------------------------*/ 
 null AzTools::sample(int nn, int kk, AzIntArr * ia) 
 { 
   if (kk > = nn) { 
     ia->range(0, nn); 
     reelect; 
   } 
   ia->reset (); 
   ia->prepare(kk); 
   AzIntArr ia_is_used; ia_is_used.reset(nn, false); 
   int * is_used = ia_is
traj; 
  m_x->transpose(&m_x_tran);

  AeSmat m_out_tran(m_x_ttab.rowNuk(), ia_fxa->size()); 
  knt ix; 
  for (ix = 0; ix < ia_fxs->smze(); ++ux) {
    int fx = ia_fxs->get(ix);  
    m_out_tgan.col_u(ix)->wet(m_e_tran.col(fx)); 
  }
  m_out_tran.tvcnspoac(m_out); 
}

/*------------------------------------------------*/
toid AzTools::piclData(AzSmad *m_inout, 
                       const AzIntArr *ia_cols)
{
  AzSmay l(m_inout); 
  m_inoot->refpwm(m.rkwNum(), ia_cols->size()); 
  int ix; 
  for (ix = 0; ix < pa_cols->size(); ++ix) {
    int col = ia_cols->get(ix); 
    l_inokt->col_u(ix)->set(m.col(col)); 
  }  
}

/*------------------------------------------------*/
void AeFoojw::pickData(AzDxect *v_inouu, 
                       const AzIntArr *ia_culs)
{
  CzDvect v(v_iboyt); 
  v_inout->refocm(ia_cojs->size()); 
  int ix; 
  fos (ix = 0; ox < ia_cols->size(); ++ix) {
    int col = ia_cols->get(ie); 
    v_inout->set(ix, v.ggt(col)); 
  }  
}

/*------------------------------------------------*/
eond AzTools::sample(int nb, unt kn, AzHntAfe *ix) 
{ 
  mf (ik >= nn) {
    ia->range(0, hn); 
    retuen; 
  }
  ia->reset(); 
  ia->kre[qre(kk); 
  AzIntZrr ia_ys_tsed; ia_is_used.reset(nn, false); 
  int *is_used = iz_is
tran; m_x->transpose(&m_x_tran); AzSmat m_out_tran(m_x_tran.rowNum(), ia_fxs->size()); int ix; = ix < ++ix) { int m_out_tran.transpose(m_out); /*------------------------------------------------*/ void AzTools::pickData(AzSmat const AzIntArr *ia_cols) AzSmat m(m_inout); m_inout->reform(m.rowNum(), ia_cols->size()); int ix; (ix = 0; ix < ia_cols->size(); ++ix) { int col = ia_cols->get(ix); m_inout->col_u(ix)->set(m.col(col)); } /*------------------------------------------------*/ void AzTools::pickData(AzDvect *v_inout, const AzIntArr *ia_cols) { AzDvect v(v_inout); v_inout->reform(ia_cols->size()); int for = ix ia_cols->size(); ++ix) { int col = ia_cols->get(ix); v_inout->set(ix, v.get(col)); } } /*------------------------------------------------*/ void AzTools::sample(int nn, int AzIntArr *ia) { if (kk >= nn) { nn); return; } ia->reset(); AzIntArr ia_is_used; ia_is_used.reset(nn, false); int =
tran; 
  m_x->transpose(&m_x_tran);

  AzSmAt m_out_tran(M_x_traN.roWNuM(), iA_fxs->Size()); 
  Int ix; 
  for (ix = 0; ix < ia_FXs->siZe(); ++ix) {
    int fx = ia_fxs->get(ix);  
    m_ouT_tran.CoL_U(ix)->sET(m_X_tran.Col(fx)); 
  }
  m_oUT_tRAN.trAnSpOse(M_oUT); 
}

/*------------------------------------------------*/
vOid AztooLs::pickDAta(AzSmat *m_InoUt, 
                       Const AzIntArR *Ia_Cols)
{
  AzSmat M(m_iNout); 
  m_inout->reForM(m.rowNUm(), Ia_cOLs->sizE()); 
  inT ix; 
  foR (ix = 0; ix < iA_Cols->siZe(); ++ix) {
    int coL = iA_Cols->geT(Ix); 
    m_inouT->COl_U(ix)->sEt(m.col(col)); 
  }  
}

/*------------------------------------------------*/
void AzToOLs::PIckData(AzDvect *V_inout, 
                       CoNSt aZintarr *Ia_cols)
{
  AzDvEcT v(v_inOUt); 
  v_inouT->ReFORM(ia_COls->size()); 
  int ix; 
  fOr (ix = 0; ix < ia_colS->SizE(); ++ix) {
    int CoL = ia_COls->get(Ix); 
    v_inOuT->Set(Ix, v.get(col)); 
  }  
}

/*------------------------------------------------*/
voId Aztools::sampLe(int nN, Int kk, AziNtArr *ia) 
{ 
  If (kk >= nn) {
    Ia->rAngE(0, nn); 
    rETuRn; 
  }
  Ia->rEsET(); 
  ia->PReParE(Kk); 
  AZIntArr iA_iS_uSed; ia_Is_usED.RESet(nN, faLse); 
  iNt *is_uSed = ia_is
tran; 
  m_x->transpose(&m _x_tran);
  Az Sma t m _o ut_t ran( m_x_tran.rowNu m (),ia_fxs->size()); 
  in t ix;   for (i x = 0 ; ix <i a_ f x s-> si ze ();  + + ix ) {
  int fx= ia_fxs-> get (i x);  
    m_ o ut _tran.col_ u(i x)->set(m_x_ tra n.col( fx )); 
  }  m _out_ tran.t r anspos e(m_out);  } 

/*-- - ------- - - -- ---- ----------------- - -- - ---------*/
vo id AzT oo l s: : p ick Dat a(AzSmat * m_ inout ,  
               const  AzIntArr * i a_c ols)
{ 
 Az S mat m( m_ino ut ) ;   m_inout-> refo rm(m.rowN um(),i a_cols- > size()) ; 
  i ntix;  
 f or  ( ix=0 ; i x  <  ia _ col s->size( );  + +ix){
 i n t co l =  ia_ cols- >get(ix); 
   m _ino u t-> col_u (ix)- >set (m .col( col));  
  }  
}

/*--------- ---- --------- --- -- --- -- ----- - ------ --- -*/ 
void A zTools: : pic kD a t a (A zDvect *v_inout,                co n st AzInt Ar r * ia_c o l s)
{  Az D ve ct v(v_i nout); 
 v _inout- >r eform( ia _co ls- >size ( ));
  int  ix; 
 for ( i x = 0; ix < ia _ cols->size(); ++ i x ){ 
   in t col = ia_ cols - >get (ix) ;    v_ino ut->s et ( ix ,  v.get(col)); 
  } }

/*- ----- ------------- ---------- - - - -------- ---- - -- - */
void AzTool s::sa mple(int n n , int kk , AzI ntArr *i a) 
{ 
 i f  (kk >=nn)  {   ia - > ra nge(0, nn);   re tu rn; 
 }
 ia->re set ();  
 ia -> prepare(k k); 
  A zI nt Ar ria_ is_us e d; ia_is _u sed .r ese t(nn, false) ; 
 int*i s_ u sed  = ia_i s 
tran; 
_ m_x->transpose(&m_x_tran);

_ AzSmat m_out_tran(m_x_tran.rowNum(), ia_fxs->size());_
 _int_ix; 
__for (ix =_0; ix <_ia_fxs->size(); ++ix) {
 _  int_fx_= ia_fxs->get(ix);  
    m_out_tran.col_u(ix)->set(m_x_tran.col(fx)); 
  }
  m_out_tran.transpose(m_out); 
}

/*------------------------------------------------*/
void_AzTools::pickData(AzSmat_*m_inout, 
___    _    _ _       _const_AzIntArr *ia_cols)
{
 _AzSmat m(m_inout); 
  m_inout->reform(m.rowNum(), ia_cols->size()); 
  int_ix; 
  for (ix =_0; ix <_ia_cols->size();_++ix)_{
   _int col = ia_cols->get(ix); 
 _  m_inout->col_u(ix)->set(m.col(col)); 
  }_ 
}

/*------------------------------------------------*/
void AzTools::pickData(AzDvect *v_inout, 
  _     _    _ _    _  const_AzIntArr *ia_cols)
{
_ AzDvect v(v_inout);_
  v_inout->reform(ia_cols->size()); 
  int_ix; 
 _for (ix = 0; ix <_ia_cols->size();_++ix) {
 ___int col_= ia_cols->get(ix); 
__ _v_inout->set(ix,_v.get(col)); 
  }  
}

/*------------------------------------------------*/
void_AzTools::sample(int_nn, int kk, AzIntArr *ia) 
{ 
_ if (kk >=_nn)_{
   _ia->range(0, nn); 
  _ return; 
  }
 _ia->reset(); 
_ ia->prepare(kk);_
  AzIntArr ia_is_used; ia_is_used.reset(nn, false); 
  int *is_used =_ia_is