eenv Struct Reference

#include <bernstein_eenv.hpp>

Inheritance diagram for eenv:
eenv_base

List of all members.

Classes

Public Types

Public Member Functions

Static Public Member Functions

Public Attributes

Protected Member Functions


Detailed Description

Definition at line 246 of file bernstein_eenv.hpp.


Member Typedef Documentation

Reimplemented from eenv_base.

Definition at line 248 of file bernstein_eenv.hpp.


Constructor & Destructor Documentation

eenv (  )  [inline]

Definition at line 264 of file bernstein_eenv.hpp.

00264 {};

eenv ( sz_t  szu,
sz_t  szv 
) [inline]

Definition at line 265 of file bernstein_eenv.hpp.

References eenv::_alloc_(), eenv_base::compute_strides(), eenv::m_mxvr, eenv_base::m_nvr, eenv::m_pszs, eenv_base::m_szs, and eenv::m_vrs.

00266     {
00267       _alloc_(2);
00268       m_szs[0] = szu; m_szs[1] = szv;
00269       m_vrs[0] = 0; m_vrs[1] = 1;
00270       m_mxvr = 1;
00271       compute_strides();
00272       m_pszs[-1] = 0;
00273       for ( sz_t v = 0; v < m_nvr; v ++ )
00274         m_pszs[v] = m_pszs[v-1] + m_szs[v];
00275     };

eenv ( sz_t  nvr,
sz_t const *  szs,
sz_t const *  vrs 
) [inline]

Definition at line 277 of file bernstein_eenv.hpp.

References eenv::_alloc_(), eenv_base::compute_strides(), eenv_base::copy(), eenv::m_mxvr, eenv_base::m_nvr, eenv::m_pszs, eenv_base::m_szs, and eenv::m_vrs.

00278     {
00279       _alloc_(nvr);
00280       std::copy(szs,szs+m_nvr,m_szs);
00281       std::copy(vrs,vrs+m_nvr,m_vrs);
00282       compute_strides();
00283       m_pszs[-1] = 0;
00284       m_mxvr = m_vrs[0];
00285       for (sz_t v = 0; v < m_nvr; v ++ ) if ( m_vrs[v] > m_mxvr ) m_mxvr = m_vrs[v];
00286       for ( sz_t v = 0; v < m_nvr; v ++ )
00287         m_pszs[v] = m_pszs[v-1] + m_szs[v];
00288     };

~eenv (  )  [inline]

Definition at line 302 of file bernstein_eenv.hpp.

References eenv_base::m_nvr, eenv_base::m_szs, and eenv_base::nvars().

Referenced by eenv::diff().

00303     {
00304       if ( nvars() ) delete[] m_szs;
00305       m_nvr = 0;
00306     };


Member Function Documentation

void _alloc_ ( sz_t  nvr  )  [inline]

Definition at line 256 of file bernstein_eenv.hpp.

References eenv_base::m_nvr, eenv::m_pszs, eenv_base::m_str, eenv_base::m_szs, and eenv::m_vrs.

Referenced by eenv::diff(), and eenv::eenv().

00257     {
00258       m_nvr  = nvr;  
00259       m_szs  = new sz_t[4*m_nvr+2]; 
00260       m_vrs  = m_szs + m_nvr;
00261       m_str  = m_vrs + m_nvr + 1;
00262       m_pszs = m_str + m_nvr + 1;
00263     };

static void _mvrcvloop_ ( bernstein::eenv oenv,
real_t *  dst,
bernstein::eenv aenv,
real_t *  sra,
bernstein::eenv benv,
real_t *  srb,
unsigned *  asupp = 0,
unsigned  nas = 0,
unsigned *  oasup = 0,
unsigned *  bsupp = 0,
unsigned  nbs = 0,
unsigned *  obsup = 0 
) [inline, static]

operations sous forme monomiale

Definition at line 442 of file bernstein_eenv.hpp.

void compute_strides (  )  [inline, protected, inherited]

Definition at line 29 of file bernstein_eenv.hpp.

References eenv_base::m_nvr, eenv_base::m_str, and eenv_base::m_szs.

Referenced by eenv::diff(), eenv::eenv(), and eenv_base::set_szs().

00030     {
00031       m_str[m_nvr-1] = 1;    
00032       for ( int i = m_nvr-2; i >= -1; i-- ) m_str[i] = m_szs[i+1]*m_str[i+1];
00033     };

void copy ( X *  dst,
real_t const *const   src 
) [inline, inherited]

Definition at line 53 of file bernstein_eenv.hpp.

References eenv_base::data_size().

Referenced by eenv::diff(), eenv::eenv(), eenv_base::eval(), eenv_base::meval(), and eenv_base::monoms_eval().

00053 { std::copy(src, src + data_size(), dst ); };

sz_t data_size (  )  const [inline, inherited]
real_t density ( real_t *  src,
const real_t  prec = 1e-12,
unsigned  nsmp = 0 
) [inline]

Definition at line 360 of file bernstein_eenv.hpp.

References mmx::abs(), eenv_base::nvars(), and eenv::var().

00360         {
00361           if ( c < 0 )  o << "-";
00362           else 
00363             if ( ! first ) o << "+";
00364           o << std::abs(c);
00365           for ( sz_t v = 0; v < nvars(); v ++ )
00366             if ( add[var(v)] ) o << "*x" << var(v) << "^" << add[var(v)];
00367           return true;
00368         };
00369       return false;
00370     };
00371     
00372     template<typename real_t>
00373     void monoms_print( std::ostream& o, real_t * src )
00374     {
00375       unsigned i;

void diff ( eenv e,
sz_t  v 
) [inline]

Definition at line 322 of file bernstein_eenv.hpp.

References eenv::_alloc_(), eenv_base::compute_strides(), eenv_base::copy(), eenv::m_mxvr, eenv_base::m_nvr, eenv_base::m_szs, eenv::m_vrs, eenv_base::nvars(), eenv_base::sz(), and eenv::~eenv().

Referenced by eenv::monoms_derivative().

00323     {
00324       if ( nvars () ) this->~eenv();
00325       _alloc_( e->nvars() );
00326       std::copy( e->m_vrs, e->m_vrs+e->nvars(), m_vrs );
00327       m_mxvr = e->m_mxvr;
00328       for  ( sz_t i = 0; i < m_nvr; m_szs[i] = e->sz(i), i ++ );
00329       m_szs[v]--;
00330       compute_strides();
00331     };

static void elevation ( eenv out,
eenv in,
real_t *  dst,
real_t *  src,
bzenv< real_t > *  bznv = bzenv<real_t>::_default_ 
) [inline, static]

Definition at line 970 of file bernstein_eenv.hpp.

static void elevation ( eenv out,
eenv in 
) [inline, static]

Definition at line 965 of file bernstein_eenv.hpp.

real_t eval ( real_t *  data,
const real_t *  prm,
real_t *  chunk = 0 
) [inline, inherited]

Definition at line 56 of file bernstein_eenv.hpp.

References eenv_base::copy(), eenv_base::data_size(), mmx::brnops::decasteljau(), eenv_base::m_str, eenv_base::m_szs, and eenv_base::nvars().

00057     {
00058       sz_t i,j;
00059       real_t * tmp;
00060       if ( chunk ) tmp = chunk; 
00061       else tmp = new real_t[ data_size() ];
00062       std::copy(data,data+data_size(), tmp );
00063       for ( int v = nvars()-1; v >= 0 ; v -- )
00064         for ( i = 0; i <data_size(); i += m_str[v-1] )
00065           brnops::decasteljau(tmp+i,m_szs[v],prm[v],m_str[v]);
00066       real_t val = tmp[0];
00067       if ( !chunk ) delete[] tmp;
00068       return val;
00069     };

real_t flatness ( real_t *  data,
int  v 
) [inline, inherited]

Definition at line 233 of file bernstein_eenv.hpp.

References eenv_base::data_size(), eenv_base::m_str, eenv_base::m_szs, and mmx::vctops::max().

00234     {
00235       real_t m = 10;
00236       sz_t i,j;
00237       for ( i = 0; i < data_size(); i += m_str[v-1] )
00238         for ( j = i; j < i + m_str[v]; j++ )
00239           std::max(m,flatness(data+j,m_szs[v],m_str[v]) );
00240       return m;
00241     };

void fromMonoms ( real_t *  data,
bzenv< real_t > *  env = bzenv<real_t>::_default_ 
) [inline, inherited]

Definition at line 209 of file bernstein_eenv.hpp.

References eenv_base::fromMonoms(), and eenv_base::m_nvr.

Referenced by eenv_base::fromMonoms().

00209 { for ( sz_t v = 0; v < m_nvr; fromMonoms(data,v,env), v++ ); };

void fromMonoms ( real_t *  data,
sz_t  v,
bzenv< real_t > *  env = bzenv<real_t>::_default_ 
) [inline, inherited]

Definition at line 201 of file bernstein_eenv.hpp.

References eenv_base::data_size(), eenv_base::m_str, and eenv_base::m_szs.

00202     {
00203       sz_t i,j;
00204       for ( i = 0; i < data_size(); i += m_str[v-1] )
00205         for ( j = i; j < i + m_str[v]; j++ )
00206           env->fromMonoms(data+j,m_szs[v],m_str[v]);
00207     };

void hodograph ( real_t *  dst,
real_t *  src,
int  v 
) [inline, inherited]

Definition at line 42 of file bernstein_eenv.hpp.

References eenv_base::data_size(), mmx::brnops::hodograph(), eenv_base::m_str, and eenv_base::m_szs.

00043     {
00044       int i,j;
00045       int k;
00046       int kstr = (m_szs[v]-1)*m_str[v];
00047       for ( k = i = 0; i < data_size(); i += m_str[v-1], k += kstr )
00048         for ( j = 0; j < m_str[v]; j++ )
00049           brnops::hodograph(dst+k+j,src+i+j,m_szs[v],m_str[v]);
00050     };

int indexofvar ( sz_t  gv  )  const [inline]

Definition at line 311 of file bernstein_eenv.hpp.

References eenv_base::m_nvr, and eenv::m_vrs.

00312     {
00313       //      if ( gv < m_vrs[0] ||  gv > m_vrs[m_nvr-1] ) return -1;
00314       // remplacer par dichotomie ?
00315       for ( sz_t v = 0; v < m_nvr; v ++ )
00316         if ( m_vrs[v] == gv ) return v;
00317       return -1;
00318     };

void lrestrict ( real_t *  data,
int  v,
const real_t &  mn 
) [inline, inherited]

Definition at line 173 of file bernstein_eenv.hpp.

References eenv_base::data_size(), mmx::brnops::lrestrict(), eenv_base::m_str, and eenv_base::m_szs.

00174     {
00175       sz_t i,j;
00176       for ( i = 0; i < data_size(); i += m_str[v-1] )
00177         for ( j = i; j < i + m_str[v]; j++ )
00178           brnops::lrestrict(data+j,m_szs[v],mn,m_str[v]);
00179     };

void maxs ( real_t *  _maxs_,
real_t const *const   data 
) const [inline, inherited]

Definition at line 145 of file bernstein_eenv.hpp.

References eenv_base::m_nvr, eenv_base::m_szs, and eenv_base::maxs().

Referenced by eenv_base::maxs().

00146     { for ( sz_t v = 0; v < m_nvr; v ++ ) { maxs(_maxs_,data,v); _maxs_ += m_szs[v];}; };

void maxs ( real_t *  _maxs_,
real_t const *const   data,
sz_t  v 
) const [inline, inherited]

Definition at line 131 of file bernstein_eenv.hpp.

References eenv_base::data_size(), eenv_base::m_str, and eenv_base::m_szs.

00132     {
00133       sz_t p,k,i,j;
00134 
00135       for ( p = 0, k = 0; k < m_szs[v]; k++, p += m_str[v] )
00136         {
00137           _maxs_[k] = data[p];
00138           for ( i = 0; i < data_size(); i += m_str[v-1] )
00139             for ( j = i; j < i + m_str[v]; j ++ )
00140               if ( data[j+p] > _maxs_[k] ) _maxs_[k] = data[j+p];
00141         };
00142     };

static void mcrossp ( eenv res,
eenv a,
eenv b,
real_t **  dst,
real_t **  src_a,
real_t **  src_b 
) [inline, static]

Definition at line 665 of file bernstein_eenv.hpp.

static void mcrossp ( eenv oenv,
real_t **  dst,
eenv aenv,
real_t **  src_a,
eenv benv,
real_t **  src_b,
bool  clear = true,
unsigned *  asupp = 0,
unsigned  nas = 0,
unsigned *  oasup = 0,
unsigned *  bsupp = 0,
unsigned  nbs = 0,
unsigned *  obsup = 0 
) [inline, static]

Definition at line 617 of file bernstein_eenv.hpp.

static void mdiff ( eenv res,
eenv a,
real_t *  dst,
real_t const *const   src,
int  v 
) [inline, static]

Definition at line 334 of file bernstein_eenv.hpp.

References eenv_base::data_size(), mmx::brnops::diff(), eenv_base::m_str, and eenv_base::sz().

Referenced by eenv::monoms_derivative().

00335     {
00336       sz_t is = 0;
00337       for ( sz_t i = 0; i < res->data_size(); i += res->m_str[v-1], is += a->m_str[v-1] )
00338         for ( sz_t j = 0; j < a->m_str[v]; j ++ )
00339           upoldse::diff(dst+i+j,src+is+j,a->sz(v),a->m_str[v]);
00340     };

static void mdotp ( eenv oenv,
real_t *  dst,
eenv aenv,
real_t **  src_a,
eenv benv,
real_t **  src_b,
int  n,
bool  clear = true,
unsigned *  asupp = 0,
unsigned  nas = 0,
unsigned *  oasup = 0,
unsigned *  bsupp = 0,
unsigned  nbs = 0,
unsigned *  obsup = 0 
) [inline, static]

Definition at line 680 of file bernstein_eenv.hpp.

void meval ( X &  res,
real_t *  data,
const X *  prm 
) const [inline, inherited]

Definition at line 90 of file bernstein_eenv.hpp.

References eenv_base::copy(), eenv_base::data_size(), mmx::upoldse_::horner(), eenv_base::m_str, eenv_base::m_szs, and eenv_base::nvars().

00091     {
00092       sz_t i;
00093       X * tmp = new X[ data_size() ];
00094       std::copy(data,data+data_size(),tmp);
00095       for ( int v = nvars()-1; v >= 0 ; v -- )
00096         for ( i = 0; i < data_size(); i += m_str[v-1] )
00097           *(tmp+i) = univariate::horner(tmp+i,m_szs[v],prm[v],m_str[v]);
00098       res = tmp[0];
00099       delete[] tmp;
00100     };

void mins ( real_t *  _mins_,
real_t const *const   data 
) const [inline, inherited]

Definition at line 149 of file bernstein_eenv.hpp.

References eenv_base::m_nvr, eenv_base::m_szs, and eenv_base::mins().

Referenced by eenv_base::mins().

00150     { for ( sz_t v = 0; v < m_nvr; v ++ ) { mins(_mins_,data,v); _mins_ += m_szs[v];}; };

void mins ( real_t *  _mins_,
real_t const *const   data,
sz_t  v 
) const [inline, inherited]

Definition at line 118 of file bernstein_eenv.hpp.

References eenv_base::data_size(), eenv_base::m_str, and eenv_base::m_szs.

00119     {
00120       sz_t p,k,i,j;
00121       for ( p = 0, k = 0; k < m_szs[v]; k++, p += m_str[v] )
00122         {
00123           _mins_[k] = data[p];
00124           for ( i = 0; i < data_size(); i += m_str[v-1] )
00125             for ( j = i; j < i + m_str[v]; j ++ )
00126               if ( data[j+p] < _mins_[k] ) _mins_[k] = data[j+p];
00127         };
00128     };

static void mmul ( eenv oenv,
real_t *  dst,
eenv aenv,
real_t *  src_a,
eenv benv,
real_t *  src_b,
bool  clear = true,
unsigned *  asupp = 0,
unsigned  nas = 0,
unsigned *  oasupp = 0,
unsigned *  bsupp = 0,
unsigned  nbs = 0,
unsigned *  obsupp = 0 
) [inline, static]

Definition at line 583 of file bernstein_eenv.hpp.

static void monoms_crossprod ( eenv res,
eenv a,
eenv b,
real_t **  dst,
real_t **  src_a,
real_t **  src_b 
) [inline, static]

Definition at line 669 of file bernstein_eenv.hpp.

static void monoms_derivative ( eenv res,
eenv a,
real_t **  dst,
real_t **  src,
int  v,
int  n = 1 
) [inline, static]

Definition at line 343 of file bernstein_eenv.hpp.

References eenv_base::data_size(), eenv::diff(), and eenv::mdiff().

00344     {
00345       res->diff(a,v);
00346       for ( int c = 0; c < n; c ++ )
00347         {
00348           dst[c] = new real_t[ res->data_size() ];
00349           mdiff( res, a, dst[c], src[c], v );
00350         };
00351     };

static void monoms_dotprod ( eenv res,
eenv a,
eenv b,
real_t *&  dst,
real_t **  src_a,
real_t **  src_b,
int  n 
) [inline, static]

Definition at line 701 of file bernstein_eenv.hpp.

real_t monoms_eval ( real_t *  data,
const real_t *  prm 
) const [inline, inherited]

Definition at line 103 of file bernstein_eenv.hpp.

References eenv_base::copy(), eenv_base::data_size(), mmx::upoldse_::horner(), eenv_base::m_str, eenv_base::m_szs, and eenv_base::nvars().

00104     {
00105       sz_t i;
00106       real_t * tmp = new real_t[ data_size() ];
00107       std::copy(data,data+data_size(), tmp );
00108       for ( int v = nvars()-1; v >= 0 ; v -- )
00109         for ( i = 0; i < data_size(); i += m_str[v-1] )
00110           *(tmp+i) = upoldse::horner(tmp+i,m_szs[v],prm[v],m_str[v]);
00111       real_t val = tmp[0];
00112       delete[] tmp;
00113       return val;
00114     };

static void monoms_multiply ( bernstein::eenv res,
bernstein::eenv a,
bernstein::eenv b,
real_t *  dst,
real_t *  src_a,
real_t *  src_b 
) [inline, static]

Definition at line 558 of file bernstein_eenv.hpp.

static void monoms_multiply_loop ( eenv o,
eenv a,
eenv b,
real_t *  dst,
real_t *  src_a,
real_t *  src_b 
) [inline, static]

Definition at line 554 of file bernstein_eenv.hpp.

void monoms_print ( std::ostream &  o,
real_t *  src 
) [inline]

Definition at line 936 of file bernstein_eenv.hpp.

static void msimplify ( eenv ienv,
real_t *  data 
) [inline, static]

Definition at line 883 of file bernstein_eenv.hpp.

sz_t nvars (  )  const [inline, inherited]

Definition at line 38 of file bernstein_eenv.hpp.

References eenv_base::m_nvr.

Referenced by eenv::density(), eenv::diff(), eenv_base::eval(), eenv_base::meval(), eenv_base::monoms_eval(), and eenv::~eenv().

00038 { return m_nvr; };

static void oaddress ( bernstein::eenv oenv,
unsigned *  osupp,
bernstein::eenv ienv,
unsigned *  isupp = 0,
unsigned  nsp = 0 
) [inline, static]

Definition at line 418 of file bernstein_eenv.hpp.

00422   {
00423     out << "eenv:";
00424     out << "\n\tszs = ";
00425     vctops::print(env_m.hpp_szs,env_m.hpp_nvr,1,out);
00426     out << "\n\tvrs = ";
00427     vctops::print(env_m.hpp_vrs,env_m.hpp_nvr,1,out);
00428     out << "\n";
00429     out << "\n\ttsz = " << env.data_size() << std::endl;
00430     return out;
00431   };
00432 };
00433 //--------------------------------------------------------------------
00434 } //namespace mmx
00435 /********************************************************************/
00436 #endif //
00437 #endif //

void op_mul ( eenv a,
eenv b 
) [inline]

Definition at line 389 of file bernstein_eenv.hpp.

References eenv::var().

00389             { 
00390               add[var(c)] = 0;  
00391               c--; 
00392               add[var(c)]++; 
00393             };
00394         }
00395       if ( mcount == 0 ) o << "0";
00396     };
00397         
00398     
00399     
00400     
00401     template<typename real_t>
00402     static void elevation( eenv * out, eenv * in )
00403     {
00404       

static void pmmul ( eenv oenv,
real_t **  dst,
eenv aenv,
real_t **  src_a,
eenv benv,
real_t **  src_b,
int  n,
bool  clear = true,
unsigned *  asupp = 0,
unsigned  nas = 0,
unsigned *  oasup = 0,
unsigned *  bsupp = 0,
unsigned  nbs = 0,
unsigned *  obsup = 0 
) [inline, static]

Definition at line 564 of file bernstein_eenv.hpp.

bool print_monom ( std::ostream &  o,
const real_t &  c,
sz_t add,
bool  first 
) [inline]

Definition at line 920 of file bernstein_eenv.hpp.

sz_t psft ( sz_t  v  )  [inline]

Definition at line 300 of file bernstein_eenv.hpp.

References eenv::m_pszs.

00300 { return m_pszs[v-1];}

sz_t psz (  )  [inline]

Definition at line 299 of file bernstein_eenv.hpp.

References eenv_base::m_nvr, and eenv::m_pszs.

00299 { return m_pszs[m_nvr-1]; };

void rrestrict ( real_t *  data,
int  v,
const real_t &  mx 
) [inline, inherited]

Definition at line 182 of file bernstein_eenv.hpp.

References eenv_base::data_size(), eenv_base::m_str, eenv_base::m_szs, and mmx::brnops::rrestrict().

00183     {
00184       int i,j;
00185       for ( i = 0; i < data_size(); i += m_str[v-1] )
00186         for ( j = i; j < i + m_str[v]; j++ )
00187           brnops::rrestrict(data+j,m_szs[v],mx,m_str[v]);
00188     };

static void rvbinoms ( bernstein::eenv ienv,
real_t *  bcff,
unsigned *  isupp = 0,
unsigned  nsp = 0,
bernstein::bzenv< real_t > *  bznv = bzenv<real_t>::_default_ 
) [inline, static]

operations sous forme de bernstein

Definition at line 712 of file bernstein_eenv.hpp.

void scale ( real_t *  data  )  [inline, inherited]

Definition at line 194 of file bernstein_eenv.hpp.

References eenv_base::data_size().

00194 { vctops::scale(data,data_size()); };

void set_szs ( sz_t szs  )  [inline, inherited]

Definition at line 36 of file bernstein_eenv.hpp.

References eenv_base::compute_strides(), and eenv_base::m_szs.

00036 { m_szs = szs; compute_strides();  };    

bool sgnchg ( real_t *  data  )  [inline, inherited]

Definition at line 191 of file bernstein_eenv.hpp.

References eenv_base::data_size().

00191 { return vctops::sgnchg(data,data_size()); };

void split ( real_t *  left,
real_t *  right,
int  v,
const real_t &  t 
) [inline, inherited]

algorithmes de de Casteljau

Definition at line 155 of file bernstein_eenv.hpp.

References eenv_base::data_size(), eenv_base::m_str, and eenv_base::m_szs.

00156     {
00157       int i,j,k;
00158       for ( i = 0; i < data_size(); i += m_str[v-1] )
00159         for ( j = i; j < i + m_str[v]; j++ )
00160           split(left+j,right+j,m_szs[v],m_str[v],t);
00161     };

void split2 ( real_t *  left,
real_t *  right,
int  v 
) [inline, inherited]

Definition at line 164 of file bernstein_eenv.hpp.

References eenv_base::data_size(), eenv_base::m_str, and eenv_base::m_szs.

00165     {
00166       int i,j;
00167       for ( i = 0; i < data_size(); i += m_str[v-1] )
00168         for ( j = i; j < i + m_str[v]; j++ )
00169           split2(left+j,right+j,m_szs[v],m_str[v]);
00170     };

void spmeval ( X &  res,
real_t *  src,
X *  prm,
unsigned *  supp,
unsigned  nsupp 
) const [inline, inherited]

Definition at line 72 of file bernstein_eenv.hpp.

References mmx::add(), eenv_base::m_nvr, and eenv_base::m_szs.

00073     {
00074       sz_t v, lg, d;
00075       unsigned i,add,o;
00076       lg = 0;
00077       for ( v = 0; v < m_nvr; v ++ ) if ( m_szs[v] > m_szs[lg] ) lg = v;
00078       X powers [m_nvr][m_szs[lg]];
00079       X acc;
00080       for ( v = 0; v < m_nvr; v ++ )
00081         for ( powers[v][0] = 1.0, d = 1; d < m_szs[v]; powers[v][d] = prm[v]*powers[v][d-1], d ++ );
00082       res = 0;
00083       for ( i = 0; i < nsupp; res += acc, i ++ )
00084         for ( add = supp[i], acc = src[add], v = m_nvr-1; add; add /= m_szs[v], v -- )
00085           acc *= powers[v][add%m_szs[v]];
00086     };

static void spmmul ( eenv oenv,
real_t *  dst,
eenv aenv,
real_t *  src_a,
eenv benv,
real_t *  src_b,
bool  clear = true,
bool  stats = false 
) [inline, static]

Definition at line 610 of file bernstein_eenv.hpp.

static void spmmul ( eenv oenv,
real_t **  dst,
eenv aenv,
real_t **  src_a,
eenv benv,
real_t **  src_b,
int  n,
bool  clear = true,
bool  stats = false 
) [inline, static]

Definition at line 592 of file bernstein_eenv.hpp.

sz_t stride ( sz_t  v  )  const [inline]

Definition at line 308 of file bernstein_eenv.hpp.

References eenv_base::m_str.

00308 { return m_str[v]; };

unsigned support ( unsigned *  supp,
real_t *  src,
const real_t &  prec = 1e-6 
) [inline]

Definition at line 379 of file bernstein_eenv.hpp.

00382         {
00383           bool b = print_monom(o,src[i],add,first);
00384           if ( first && b ) first = false;
00385           mcount += b;
00386           c = nvars()-1;

void swap ( eenv e  )  [inline]

Definition at line 290 of file bernstein_eenv.hpp.

References eenv::m_mxvr, eenv_base::m_nvr, eenv::m_pszs, eenv_base::m_szs, and eenv::m_vrs.

00291     {
00292       std::swap(m_nvr,e_m.hpp_nvr);
00293       std::swap(m_szs,e_m.hpp_szs);
00294       std::swap(m_vrs,e_m.hpp_vrs);
00295       std::swap(m_pszs,e_m.hpp_pszs);
00296       std::swap(m_mxvr,e_m.hpp_mxvr);
00297     };

sz_t sz ( sz_t  v  )  const [inline, inherited]

Definition at line 37 of file bernstein_eenv.hpp.

References eenv_base::m_szs.

Referenced by eenv::diff(), and eenv::mdiff().

00037 { return m_szs[v]; };

void toMonoms ( real_t *  data,
bzenv< real_t > *  env = bzenv<real_t>::_default_ 
) [inline, inherited]

Definition at line 221 of file bernstein_eenv.hpp.

References eenv_base::m_nvr, and eenv_base::toMonoms().

Referenced by eenv_base::toMonoms().

00221 { for ( sz_t v = 0; v < m_nvr; toMonoms(data,v,env), v ++ ); };

void toMonoms ( real_t *  data,
sz_t  v,
bzenv< real_t > *  env = bzenv<real_t>::_default_ 
) [inline, inherited]

Definition at line 213 of file bernstein_eenv.hpp.

References eenv_base::data_size(), eenv_base::m_str, and eenv_base::m_szs.

00214     {
00215       sz_t i,j;
00216       for ( i = 0; i < data_size(); i += m_str[v-1] )
00217         for ( j = i; j < i + m_str[v]; j++ )
00218           env->toMonoms(data+j,m_szs[v],m_str[v]);
00219     };

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

Definition at line 1003 of file bernstein_eenv.hpp.

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

Definition at line 985 of file bernstein_eenv.hpp.

sz_t var ( sz_t  v  )  const [inline]

Definition at line 309 of file bernstein_eenv.hpp.

References eenv::m_vrs.

Referenced by eenv::density(), and eenv::op_mul().

00309 { return m_vrs[v]; };

static void vmap ( sz_t vmap,
bernstein::eenv o,
bernstein::eenv i 
) [inline, static]

Definition at line 407 of file bernstein_eenv.hpp.

References eenv_base::data_size(), eenv_base::m_str, and eenv_base::m_szs.

00408     {
00409       sz_t io = 0;
00410       sz_t v  = 0;
00411       for ( sz_t i = 0; i < in->data_size(); i += in->m_str[v-1], io += out->m_str[v-1] )
00412         for ( sz_t j = 0; j < in->m_str[v]; j ++ )
00413           bznv->elevate( dst + io + j, src + i + j , in->m_szs[v], in->m_str[v], out->m_str[v], out->m_szs[v]-in->m_szs[v] );
00414     };
00415         
00416     #include "bernstein_eenv_vrestrict.hpp"

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 1012 of file bernstein_eenv.hpp.


Member Data Documentation

Definition at line 255 of file bernstein_eenv.hpp.

Referenced by eenv::diff(), eenv::eenv(), and eenv::swap().

sz_t m_nvr [inherited]

Definition at line 254 of file bernstein_eenv.hpp.

Referenced by eenv::_alloc_(), eenv::eenv(), eenv::psft(), eenv::psz(), and eenv::swap().

sz_t * m_str [inherited]
sz_t * m_szs [inherited]

The documentation for this struct was generated from the following file:

Generated on 6 Dec 2012 for realroot by  doxygen 1.6.1