6 #ifndef realroot_SOLVE_SBDSLV_BERNSTEIN_BINOMIALS_H
7 #define realroot_SOLVE_SBDSLV_BERNSTEIN_BINOMIALS_H
22 static void pwsum( T * dst, T * src,
int sz ) {
for(
int i=0;i<sz-1;dst[i]=src[i]+src[i+1],i++) ; };
25 m_data.push_back(
new T[1] );
29 for (
unsigned i = 0; i < m_data.size(); i ++ )
33 inline T *
get(
unsigned i )
35 if ( m_data.size() > i )
return m_data[i];
36 for (
unsigned j = m_data.size(); j <= i; j ++ )
38 m_data.push_back(
new T[j+1] );
39 pwsum(m_data[j]+1,m_data[j-1],j);
46 {
return get(n)[i]; };
51 T
binomial(
int n,
int i ) {
return binomials<T>::_default_.binomial(n,i); };
binomials(const binomials &)
static binomials _default_
Definition: bernstein_binomials.hpp:19
static void pwsum(T *dst, T *src, int sz)
Definition: bernstein_binomials.hpp:22
binomials(int dmax=100)
Definition: bernstein_binomials.hpp:23
Definition: bernstein_binomials.hpp:17
const T & binomial(unsigned n, unsigned i)
Definition: bernstein_binomials.hpp:45
Definition: binomials.hpp:68
~binomials()
Definition: bernstein_binomials.hpp:28
std::vector< T * > m_data
Definition: bernstein_binomials.hpp:20
T binomial(int n, int i)
Definition: bernstein_binomials.hpp:51