realroot_doc 0.1.1
|
#include <bernstein_eenv.hpp>
Definition at line 246 of file bernstein_eenv.hpp.
typedef eenv_base::sz_t sz_t |
Reimplemented from eenv_base.
Definition at line 248 of file bernstein_eenv.hpp.
eenv | ( | ) | [inline] |
Definition at line 264 of file bernstein_eenv.hpp.
{};
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.
~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().
void _alloc_ | ( | sz_t | nvr | ) | [inline] |
Definition at line 256 of file bernstein_eenv.hpp.
References eenv_base::m_nvr.
Referenced by eenv::diff(), eenv::eenv(), and eenv::mcrossp().
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 91 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().
{ sz_t i; X * tmp = new X[ data_size() ]; std::copy(data,data+data_size(),tmp); for ( int v = nvars()-1; v >= 0 ; v -- ) for ( i = 0; i < data_size(); i += m_str[v-1] ) *(tmp+i) = univariate::horner(tmp+i,m_szs[v],prm[v],m_str[v]); res = tmp[0]; delete[] tmp; }; template<typename real_t> real_t monoms_eval( real_t * data, const real_t * prm ) const { sz_t i; real_t * tmp = new real_t[ data_size() ]; std::copy(data,data+data_size(), tmp ); for ( int v = nvars()-1; v >= 0 ; v -- ) for ( i = 0; i < data_size(); i += m_str[v-1] ) *(tmp+i) = upoldse::horner(tmp+i,m_szs[v],prm[v],m_str[v]); real_t val = tmp[0]; delete[] tmp; return val; }; template<typename real_t> void mins( real_t * _mins_, real_t const * const data, sz_t v ) const { sz_t p,k,i,j; for ( p = 0, k = 0; k < m_szs[v]; k++, p += m_str[v] ) { _mins_[k] = data[p]; for ( i = 0; i < data_size(); i += m_str[v-1] ) for ( j = i; j < i + m_str[v]; j ++ ) if ( data[j+p] < _mins_[k] ) _mins_[k] = data[j+p]; }; }; template<typename real_t> void maxs( real_t * _maxs_, real_t const * const data, sz_t v ) const { sz_t p,k,i,j; for ( p = 0, k = 0; k < m_szs[v]; k++, p += m_str[v] ) { _maxs_[k] = data[p]; for ( i = 0; i < data_size(); i += m_str[v-1] ) for ( j = i; j < i + m_str[v]; j ++ ) if ( data[j+p] > _maxs_[k] ) _maxs_[k] = data[j+p]; }; }; template<typename real_t> inline void maxs( real_t * _maxs_, real_t const * const data ) const { for ( sz_t v = 0; v < m_nvr; v ++ ) { maxs(_maxs_,data,v); _maxs_ += m_szs[v];}; }; template<typename real_t> inline void mins( real_t * _mins_, real_t const * const data ) const { for ( sz_t v = 0; v < m_nvr; v ++ ) { mins(_mins_,data,v); _mins_ += m_szs[v];}; }; template<typename real_t> void split( real_t * left, real_t * right, int v, const real_t& t ) { int i,j,k; for ( i = 0; i < data_size(); i += m_str[v-1] ) for ( j = i; j < i + m_str[v]; j++ ) split(left+j,right+j,m_szs[v],m_str[v],t); }; template<typename real_t> void split2( real_t * left, real_t * right, int v ) { int i,j; for ( i = 0; i < data_size(); i += m_str[v-1] ) for ( j = i; j < i + m_str[v]; j++ ) split2(left+j,right+j,m_szs[v],m_str[v]); }; template<typename real_t> void lrestrict( real_t * data, int v, const real_t& mn ) { sz_t i,j; for ( i = 0; i < data_size(); i += m_str[v-1] ) for ( j = i; j < i + m_str[v]; j++ ) brnops::lrestrict(data+j,m_szs[v],mn,m_str[v]); }; template<typename real_t> void rrestrict( real_t * data, int v, const real_t& mx )
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::eenv(), eenv::mcrossp(), and eenv_base::set_szs().
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::_mvrcvloop_(), eenv::diff(), eenv::eenv(), eenv_base::monoms_eval(), and eenv::vmap().
sz_t data_size | ( | ) | const [inline, inherited] |
Definition at line 39 of file bernstein_eenv.hpp.
References eenv_base::m_str.
Referenced by eenv::_mvrcvloop_(), eenv_base::copy(), eenv::elevation(), eenv_base::flatness(), eenv_base::hodograph(), eenv_base::lrestrict(), eenv_base::maxs(), eenv::mdiff(), eenv_base::mins(), eenv::monoms_derivative(), eenv_base::monoms_eval(), eenv::monoms_print(), mmx::bernstein::operator<<(), eenv_base::rrestrict(), eenv_base::scale(), eenv_base::sgnchg(), eenv_base::split(), eenv_base::split2(), eenv_base::toMonoms(), and eenv::vmap().
{ return m_str[-1]; };
real_t density | ( | real_t * | src, |
const real_t | prec = 1e-12 , |
||
unsigned | nsmp = 0 |
||
) | [inline] |
Definition at line 9 of file bernstein_eenv.hpp.
{ //-------------------------------------------------------------------- #ifndef _valueof_ #define _valueof_(x) std::cout << #x" = " << (x) << std::endl; #endif namespace bernstein { struct eenv_base
Definition at line 322 of file bernstein_eenv.hpp.
References eenv::_alloc_(), 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().
Definition at line 402 of file bernstein_eenv.hpp.
{ };
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 407 of file bernstein_eenv.hpp.
References eenv_base::data_size(), eenv_base::m_str, and eenv_base::m_szs.
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.
{ sz_t i,j; real_t * tmp; if ( chunk ) tmp = chunk; else tmp = new real_t[ data_size() ]; std::copy(data,data+data_size(), tmp ); for ( int v = nvars()-1; v >= 0 ; v -- ) for ( i = 0; i <data_size(); i += m_str[v-1] ) brnops::decasteljau(tmp+i,m_szs[v],prm[v],m_str[v]); real_t val = tmp[0]; if ( !chunk ) delete[] tmp; return val; };
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().
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().
{ for ( sz_t v = 0; v < m_nvr; fromMonoms(data,v,env), v++ ); };
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.
int indexofvar | ( | sz_t | gv | ) | const [inline] |
Definition at line 311 of file bernstein_eenv.hpp.
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.
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().
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.
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 266 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.
{ _alloc_(2); m_szs[0] = szu; m_szs[1] = szv; m_vrs[0] = 0; m_vrs[1] = 1; m_mxvr = 1; compute_strides(); m_pszs[-1] = 0; for ( sz_t v = 0; v < m_nvr; v ++ ) m_pszs[v] = m_pszs[v-1] + m_szs[v]; }; eenv( sz_t nvr, sz_t const * szs, sz_t const * vrs ) { _alloc_(nvr); std::copy(szs,szs+m_nvr,m_szs); std::copy(vrs,vrs+m_nvr,m_vrs); compute_strides(); m_pszs[-1] = 0; m_mxvr = m_vrs[0]; for (sz_t v = 0; v < m_nvr; v ++ ) if ( m_vrs[v] > m_mxvr ) m_mxvr = m_vrs[v]; for ( sz_t v = 0; v < m_nvr; v ++ ) m_pszs[v] = m_pszs[v-1] + m_szs[v]; };
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 314 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().
{ sz_t is = 0; for ( sz_t i = 0; i < res->data_size(); i += res->m_str[v-1], is += a->m_str[v-1] ) for ( sz_t j = 0; j < a->m_str[v]; j ++ ) upoldse::diff(dst+i+j,src+is+j,a->sz(v),a->m_str[v]); };
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 329 of file bernstein_eenv.hpp.
{ sz_t is = 0; for ( sz_t i = 0; i < res->data_size(); i += res->m_str[v-1], is += a->m_str[v-1] ) for ( sz_t j = 0; j < a->m_str[v]; j ++ ) upoldse::diff(dst+i+j,src+is+j,a->sz(v),a->m_str[v]); }; template<typename real_t> static void monoms_derivative(eenv * res, eenv * a, real_t ** dst, real_t ** src, int v, int n = 1 ) { res->diff(a,v); for ( int c = 0; c < n; c ++ ) {
void meval | ( | X & | res, |
real_t * | data, | ||
const X * | prm | ||
) | const [inline, inherited] |
Definition at line 90 of file bernstein_eenv.hpp.
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().
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.
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 318 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().
{ res->diff(a,v); for ( int c = 0; c < n; c ++ ) { dst[c] = new real_t[ res->data_size() ]; mdiff( res, a, dst[c], src[c], v ); }; };
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 350 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().
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 207 of file bernstein_eenv.hpp.
{ for ( sz_t v = 0; v < m_nvr; fromMonoms(data,v,env), v++ ); };
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 203 of file bernstein_eenv.hpp.
void monoms_print | ( | std::ostream & | o, |
real_t * | src | ||
) | [inline] |
Definition at line 373 of file bernstein_eenv.hpp.
References eenv_base::data_size(), mmx::vct::fill(), eenv::m_mxvr, eenv_base::m_szs, eenv_base::nvars(), eenv::print_monom(), and eenv::var().
{ unsigned i; unsigned mcount = 0; int c; sz_t add[m_mxvr+1]; std::fill(add,add+m_mxvr+1,0); bool first = true; for ( i = 0; i < data_size(); i ++ ) { bool b = print_monom(o,src[i],add,first); if ( first && b ) first = false; mcount += b; c = nvars()-1; add[var(c)]++; while ( c >0 && (add[var(c)] == m_szs[c])) { add[var(c)] = 0; c--; add[var(c)]++; }; } if ( mcount == 0 ) o << "0"; };
static void msimplify | ( | eenv * | ienv, |
real_t * | data | ||
) | [inline, static] |
Definition at line 8 of file bernstein_eenv.hpp.
{ //-------------------------------------------------------------------- #ifndef _valueof_ #define _valueof_(x) std::cout << #x" = " << (x) << std::endl; #endif namespace bernstein { struct eenv_base { typedef int sz_t; sz_t m_nvr, * m_szs, * m_str; protected: inline void compute_strides() { m_str[m_nvr-1] = 1; for ( int i = m_nvr-2; i >= -1; i-- ) m_str[i] = m_szs[i+1]*m_str[i+1]; }; public: eenv_base( sz_t nvr = 0 ) { m_nvr = nvr; }; inline void set_szs( sz_t * szs ) { m_szs = szs; compute_strides(); }; inline sz_t sz( sz_t v ) const { return m_szs[v]; }; inline sz_t nvars() const { return m_nvr; }; inline sz_t data_size() const { return m_str[-1]; }; template<typename real_t> void hodograph( real_t * dst, real_t * src, int v )
sz_t nvars | ( | ) | const [inline, inherited] |
Definition at line 38 of file bernstein_eenv.hpp.
Referenced by eenv::_mvrcvloop_(), eenv::diff(), eenv_base::monoms_eval(), eenv::monoms_print(), eenv::vmap(), and eenv::~eenv().
{ 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 67 of file bernstein_eenv.hpp.
{ sz_t v, lg, d; unsigned i,add,o; lg = 0; for ( v = 0; v < m_nvr; v ++ ) if ( m_szs[v] > m_szs[lg] ) lg = v; X powers [m_nvr][m_szs[lg]]; X acc; for ( v = 0; v < m_nvr; v ++ ) for ( powers[v][0] = 1.0, d = 1; d < m_szs[v]; powers[v][d] = prm[v]*powers[v][d-1], d ++ ); res = 0; for ( i = 0; i < nsupp; res += acc, i ++ ) for ( add = supp[i], acc = src[add], v = m_nvr-1; add; add /= m_szs[v], v -- ) acc *= powers[v][add%m_szs[v]]; };
Definition at line 38 of file bernstein_eenv.hpp.
References eenv_base::m_nvr.
{ return m_nvr; }; inline sz_t data_size() const { return m_str[-1]; }; template<typename real_t> void hodograph( real_t * dst, real_t * src, int v ) { int i,j; int k; int kstr = (m_szs[v]-1)*m_str[v]; for ( k = i = 0; i < data_size(); i += m_str[v-1], k += kstr ) for ( j = 0; j < m_str[v]; j++ ) brnops::hodograph(dst+k+j,src+i+j,m_szs[v],m_str[v]); }; template<typename X, typename real_t> void copy( X * dst, real_t const * const src ) { std::copy(src, src + data_size(), dst ); };
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 213 of file bernstein_eenv.hpp.
{ sz_t i,j; for ( i = 0; i < data_size(); i += m_str[v-1] ) for ( j = i; j < i + m_str[v]; j++ ) env->toMonoms(data+j,m_szs[v],m_str[v]); }; template< typename real_t > /* conversion complete */ inline void toMonoms( real_t * data, bzenv<real_t> * env = bzenv<real_t>::_default_ ) { for ( sz_t v = 0; v < m_nvr; toMonoms(data,v,env), v ++ ); }; // template< typename real_t > // void mshift( real_t * data, real_t * prm ) // { // sz_t i,j; // for ( i = 0; i < data_size(); i += m_str[v-1] ) // for ( j = i; j < i + m_str[v]; j++ ) // upoldse::shift(data+j,m_szs[v],m_str[v],prm[v]);
bool print_monom | ( | std::ostream & | o, |
const real_t & | c, | ||
sz_t * | add, | ||
bool | first | ||
) | [inline] |
Definition at line 357 of file bernstein_eenv.hpp.
Referenced by eenv::monoms_print().
sz_t psz | ( | ) | [inline] |
Definition at line 299 of file bernstein_eenv.hpp.
References eenv_base::m_nvr, and eenv::m_pszs.
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().
{ int i,j; for ( i = 0; i < data_size(); i += m_str[v-1] ) for ( j = i; j < i + m_str[v]; j++ ) brnops::rrestrict(data+j,m_szs[v],mx,m_str[v]); };
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] |
void scale | ( | real_t * | data | ) | [inline, inherited] |
Definition at line 194 of file bernstein_eenv.hpp.
References eenv_base::data_size().
{ 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.
{ 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().
{ 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.
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.
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.
{ sz_t v, lg, d; unsigned i,add,o; lg = 0; for ( v = 0; v < m_nvr; v ++ ) if ( m_szs[v] > m_szs[lg] ) lg = v; X powers [m_nvr][m_szs[lg]]; X acc; for ( v = 0; v < m_nvr; v ++ ) for ( powers[v][0] = 1.0, d = 1; d < m_szs[v]; powers[v][d] = prm[v]*powers[v][d-1], d ++ ); res = 0; for ( i = 0; i < nsupp; res += acc, i ++ ) for ( add = supp[i], acc = src[add], v = m_nvr-1; add; add /= m_szs[v], v -- ) acc *= powers[v][add%m_szs[v]]; };
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 241 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, | ||
bool | clear = true , |
||
bool | stats = false |
||
) | [inline, static] |
Definition at line 259 of file bernstein_eenv.hpp.
{};
Definition at line 308 of file bernstein_eenv.hpp.
References eenv_base::m_str.
{ return m_str[v]; };
unsigned support | ( | unsigned * | supp, |
real_t * | src, | ||
const real_t & | prec = 1e-6 |
||
) | [inline] |
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.
Definition at line 37 of file bernstein_eenv.hpp.
References eenv_base::m_szs.
Referenced by eenv::diff(), and eenv::mdiff().
{ 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().
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.
static void v0restrict | ( | real_t * | rs, |
bernstein::eenv * | em, | ||
const real_t & | l | ||
) | [inline, static] |
Definition at line 8 of file bernstein_eenv.hpp.
{ //-------------------------------------------------------------------- #ifndef _valueof_ #define _valueof_(x) std::cout << #x" = " << (x) << std::endl; #endif namespace bernstein {
static void v0restrict | ( | real_t * | rs, |
real_t * | ms, | ||
bernstein::eenv * | em, | ||
const real_t & | l | ||
) | [inline, static] |
Definition at line 26 of file bernstein_eenv.hpp.
Definition at line 309 of file bernstein_eenv.hpp.
References eenv::m_vrs.
Referenced by eenv::monoms_print().
{ return m_vrs[v]; };
static void vmap | ( | sz_t * | vmap, |
bernstein::eenv * | o, | ||
bernstein::eenv * | i | ||
) | [inline, static] |
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().
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 35 of file bernstein_eenv.hpp.
References eenv_base::m_nvr.
{ m_nvr = nvr; }; inline void set_szs( sz_t * szs ) { m_szs = szs; compute_strides(); }; inline sz_t sz( sz_t v ) const { return m_szs[v]; }; inline sz_t nvars() const { return m_nvr; }; inline sz_t data_size() const { return m_str[-1]; }; template<typename real_t> void hodograph( real_t * dst, real_t * src, int v ) { int i,j; int k; int kstr = (m_szs[v]-1)*m_str[v]; for ( k = i = 0; i < data_size(); i += m_str[v-1], k += kstr ) for ( j = 0; j < m_str[v]; j++ ) brnops::hodograph(dst+k+j,src+i+j,m_szs[v],m_str[v]); }; template<typename X, typename real_t> void copy( X * dst, real_t const * const src ) { std::copy(src, src + data_size(), dst ); }; template<typename real_t> real_t eval( real_t * data, const real_t * prm, real_t * chunk = 0 ) {
Definition at line 255 of file bernstein_eenv.hpp.
Referenced by eenv::diff(), eenv::eenv(), eenv::mcrossp(), eenv::monoms_print(), and eenv::swap().
Definition at line 27 of file bernstein_eenv.hpp.
Referenced by eenv::_alloc_(), eenv_base::compute_strides(), eenv::diff(), eenv::eenv(), eenv_base::fromMonoms(), eenv_base::maxs(), eenv::mcrossp(), eenv_base::mins(), eenv::op_mul(), eenv::psz(), eenv_base::spmeval(), eenv::swap(), eenv_base::toMonoms(), eenv::vrestrict(), and eenv::~eenv().
Definition at line 254 of file bernstein_eenv.hpp.
Referenced by eenv::eenv(), eenv::mcrossp(), eenv::psft(), eenv::psz(), and eenv::swap().
Definition at line 27 of file bernstein_eenv.hpp.
Referenced by eenv::_mvrcvloop_(), eenv_base::compute_strides(), eenv_base::data_size(), eenv::elevation(), eenv_base::flatness(), eenv_base::hodograph(), eenv_base::lrestrict(), eenv_base::maxs(), eenv::mdiff(), eenv_base::mins(), eenv_base::monoms_eval(), eenv_base::rrestrict(), eenv_base::split(), eenv_base::split2(), eenv::stride(), eenv_base::toMonoms(), and eenv::vmap().
Definition at line 27 of file bernstein_eenv.hpp.
Referenced by eenv::_mvrcvloop_(), eenv_base::compute_strides(), eenv::diff(), eenv::eenv(), eenv::elevation(), eenv_base::flatness(), eenv_base::hodograph(), eenv_base::lrestrict(), eenv_base::maxs(), eenv::mcrossp(), eenv_base::mins(), eenv_base::monoms_eval(), eenv::monoms_print(), eenv_base::rrestrict(), eenv_base::set_szs(), eenv_base::split(), eenv_base::split2(), eenv_base::spmeval(), eenv::swap(), eenv_base::sz(), eenv_base::toMonoms(), eenv::vmap(), and eenv::~eenv().
Definition at line 253 of file bernstein_eenv.hpp.
Referenced by eenv::diff(), eenv::eenv(), eenv::mcrossp(), eenv::swap(), and eenv::var().