#include <bernstein_eenv.hpp>
Definition at line 24 of file bernstein_eenv.hpp.
typedef int sz_t |
Reimplemented in eenv.
Definition at line 26 of file bernstein_eenv.hpp.
Definition at line 35 of file bernstein_eenv.hpp.
References eenv_base::m_nvr.
00035 { m_nvr = nvr; };
void compute_strides | ( | ) | [inline, protected] |
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().
void copy | ( | X * | dst, | |
real_t const *const | src | |||
) | [inline] |
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().
sz_t data_size | ( | ) | const [inline] |
Definition at line 39 of file bernstein_eenv.hpp.
References eenv_base::m_str.
Referenced by eenv_base::copy(), eenv_base::eval(), eenv_base::flatness(), eenv_base::fromMonoms(), eenv_base::hodograph(), eenv_base::lrestrict(), eenv_base::maxs(), eenv::mdiff(), eenv_base::meval(), eenv_base::mins(), eenv::monoms_derivative(), eenv_base::monoms_eval(), eenv_base::rrestrict(), eenv_base::scale(), eenv_base::sgnchg(), eenv_base::split(), eenv_base::split2(), eenv_base::toMonoms(), and eenv::vmap().
00039 { return m_str[-1]; };
real_t eval | ( | real_t * | data, | |
const real_t * | prm, | |||
real_t * | chunk = 0 | |||
) | [inline] |
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] |
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().
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] |
Definition at line 201 of file bernstein_eenv.hpp.
References eenv_base::data_size(), eenv_base::m_str, and eenv_base::m_szs.
void hodograph | ( | real_t * | dst, | |
real_t * | src, | |||
int | v | |||
) | [inline] |
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.
void lrestrict | ( | real_t * | data, | |
int | v, | |||
const real_t & | mn | |||
) | [inline] |
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] |
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] |
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 };
void meval | ( | X & | res, | |
real_t * | data, | |||
const X * | prm | |||
) | const [inline] |
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] |
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] |
Definition at line 118 of file bernstein_eenv.hpp.
References eenv_base::data_size(), eenv_base::m_str, and eenv_base::m_szs.
real_t monoms_eval | ( | real_t * | data, | |
const real_t * | prm | |||
) | const [inline] |
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 };
sz_t nvars | ( | ) | const [inline] |
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; };
void rrestrict | ( | real_t * | data, | |
int | v, | |||
const real_t & | mx | |||
) | [inline] |
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 };
void scale | ( | real_t * | data | ) | [inline] |
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] |
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] |
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] |
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] |
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] |
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 };
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]; };
Definition at line 221 of file bernstein_eenv.hpp.
References eenv_base::m_nvr, and eenv_base::toMonoms().
Referenced by eenv_base::toMonoms().
Definition at line 213 of file bernstein_eenv.hpp.
References eenv_base::data_size(), eenv_base::m_str, and eenv_base::m_szs.
Definition at line 27 of file bernstein_eenv.hpp.
Referenced by eenv::_alloc_(), eenv_base::compute_strides(), eenv::diff(), eenv::eenv(), eenv_base::eenv_base(), eenv_base::fromMonoms(), eenv::indexofvar(), eenv_base::maxs(), eenv_base::mins(), eenv_base::nvars(), eenv::psz(), eenv_base::spmeval(), eenv::swap(), eenv_base::toMonoms(), and eenv::~eenv().
Definition at line 27 of file bernstein_eenv.hpp.
Referenced by eenv::_alloc_(), eenv_base::compute_strides(), eenv_base::data_size(), eenv_base::eval(), eenv_base::flatness(), eenv_base::fromMonoms(), eenv_base::hodograph(), eenv_base::lrestrict(), eenv_base::maxs(), eenv::mdiff(), eenv_base::meval(), 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::_alloc_(), eenv_base::compute_strides(), eenv::diff(), eenv::eenv(), eenv_base::eval(), eenv_base::flatness(), eenv_base::fromMonoms(), eenv_base::hodograph(), eenv_base::lrestrict(), eenv_base::maxs(), eenv_base::meval(), eenv_base::mins(), eenv_base::monoms_eval(), 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().