include/realroot/bernstein_eenv_vrestrict.hpp File Reference

Go to the source code of this file.

Functions


Function Documentation

static void v0restrict ( real_t *  rs,
real_t *  ms,
bernstein::eenv *  em,
const real_t &  l 
) [inline, static]

Definition at line 25 of file bernstein_eenv_vrestrict.hpp.

References mmx::sparse::copy(), and v0restrict().

00026 {
00027   int k,i,j;
00028   real_t * ri, * rip;
00029   std::copy(ms,ms+em->data_size(),rs);
00030   v0restrict( rs, em, l );
00031 };

static void v0restrict ( real_t *  rs,
bernstein::eenv *  em,
const real_t &  l 
) [inline, static]

Definition at line 7 of file bernstein_eenv_vrestrict.hpp.

Referenced by v0restrict(), and vrestrict().

00008 {
00009   int k,i,j;
00010   real_t * ri, * rip;
00011   //  std::copy(ms,ms+em->data_size(),rs);
00012   for ( k = em->m_szs[0]-1; k >= 0; k-- )
00013     {
00014       for ( i = 0; i < k; i ++ )
00015         {
00016           ri  = rs + i*em->m_str[0];
00017           rip = ri + em->m_str[0];
00018           for ( j = 0; j < em->m_str[0]; j ++ )
00019             ri[j] = (1.0-l)*ri[j]+l*rip[j];
00020         };
00021     };
00022 };

static void vrestrict ( bernstein::eenv *  oenv,
bernstein::eenv *  ienv,
X *&  dst,
real_t *  src,
sz_t  v,
const X &  prm 
) [inline, static]

Definition at line 34 of file bernstein_eenv_vrestrict.hpp.

References mmx::sparse::copy(), oaddress(), mmx::sparse::swap(), and v0restrict().

00036 {
00037   sz_t nvr = ienv->m_nvr-1;
00038   sz_t c = 0;
00039   sz_t vrs[ienv->m_nvr];
00040   sz_t szs[ienv->m_nvr];
00041   std::copy(ienv->m_vrs,ienv->m_vrs + ienv->m_nvr, vrs );
00042   std::copy(ienv->m_szs,ienv->m_szs + ienv->m_nvr, szs );
00043   std::swap(vrs[v],vrs[0]);
00044   std::swap(szs[v],szs[0]);
00045   bernstein::eenv veenv( ienv->m_nvr, szs, vrs );
00046   unsigned * addr = new unsigned[ ienv->data_size() ];
00047   oaddress( &veenv, addr, ienv, 0, 0 );
00048   X * tmp = new X[ienv->data_size()];
00049   for ( unsigned c = 0;  c < ienv->data_size(); tmp[addr[c]] = src[c], c ++ );
00050   delete[] addr;
00051   v0restrict(tmp,&veenv,prm);
00052   oenv->~eenv();
00053   new(oenv) bernstein::eenv( ienv->m_nvr-1, szs+1, vrs+1 );
00054   dst = new X[oenv->data_size()];
00055   std::copy( tmp, tmp + oenv->data_size(), dst );
00056 };


Generated on 6 Dec 2012 for realroot by  doxygen 1.6.1