6 #ifndef realroot_SOLVE_SBDSLV_BERNSTEIN_BZENV_H
7 #define realroot_SOLVE_SBDSLV_BERNSTEIN_BZENV_H
23 bzenv(
int n = 100 ) : m_bins(n) {};
26 template<
typename T >
27 void scale( T * bzc,
size_t sz,
int st = 1 )
29 X * bins = m_bins.
get(sz-1);
31 for (
size_t i = 0; i < sz; i++, p += st ) bzc[p] *= bins[i];
35 template<
typename T >
36 void uscale( T * bzc,
size_t sz,
int st = 1 )
38 X * bins = m_bins.
get(sz-1);
40 for (
int i = 0; i < sz; i++, p+= st ) bzc[p] /= bins[i];
45 template <
typename T >
46 void scaled_elevate( T * dst, T * src,
size_t sz,
int sts,
int stdst,
size_t n )
48 X * bins = m_bins.
get(n);
53 template <
typename T >
54 void elevate( T * dst, T * src,
size_t sz,
int sts,
int stdst,
size_t n )
63 template<
typename T >
64 void toMonoms ( T * bzc,
size_t sz,
int st = 1 )
67 for ( i = st; i != sz*st; i += st )
68 for ( k = (sz-1)*st; k != i-st; k -= st )
74 template<
typename T >
inline
80 for ( p = 0, i = 0; i < sz; i++, p += st )
81 { tmp[i] = bzc[p]; bzc[p] = 0; };
82 for ( p = 0, i = 0; i < sz; i++, p += st )
84 bin = m_bins.
get( sz-i-1 );
85 for ( l = p, k = 0; k < sz-i; k++, l += st )
86 bzc[l] += tmp[i]*bin[k];
90 template<
typename T >
inline
96 X *
get(
size_t i ) {
return m_bins.
get(i); };
void fromMonoms(T *bzc, size_t sz, int st=1)
Definition: bernstein_bzenv.hpp:91
TMPL X
Definition: polynomial_operators.hpp:148
void fromMonomsToScaled(T *bzc, size_t sz, int st)
Definition: bernstein_bzenv.hpp:75
void scaled_elevate(T *dst, T *src, size_t sz, int sts, int stdst, size_t n)
Definition: bernstein_bzenv.hpp:46
int size_t
Definition: bernstein_bzenv.hpp:19
const X & binomial(size_t n, size_t i)
Definition: bernstein_bzenv.hpp:97
static bzenv *const _default_
Definition: bernstein_bzenv.hpp:21
T * get(unsigned i)
Definition: bernstein_binomials.hpp:33
binomials< X > m_bins
Definition: bernstein_bzenv.hpp:20
void convolution(U *dst, Y const *a, Z const *b, unsigned sza, unsigned szb, int sta=1, int stb=1, int stout=1)
Definition: loops_vctops.hpp:220
const T & binomial(unsigned n, unsigned i)
Definition: bernstein_binomials.hpp:45
void toMonoms(T *bzc, size_t sz, int st=1)
Definition: bernstein_bzenv.hpp:64
void scale(T *bzc, size_t sz, int st=1)
Definition: bernstein_bzenv.hpp:27
Definition: binomials.hpp:68
bzenv(int n=100)
Definition: bernstein_bzenv.hpp:23
void elevate(T *dst, T *src, size_t sz, int sts, int stdst, size_t n)
Definition: bernstein_bzenv.hpp:54
Definition: bernstein_bzenv.hpp:17
void uscale(T *bzc, size_t sz, int st=1)
Definition: bernstein_bzenv.hpp:36