1 #ifndef realroot_SOLVE_SBDSLV_BINOMIALS_H
2 #define realroot_SOLVE_SBDSLV_BINOMIALS_H
12 T
pow(
const T& a,
int i)
18 if (a == T(1))
return a;
19 if (a == T(-1))
return (i % 2 == 0) ? T(1) : T(-1);
43 for (
int i=2;i<=n;i++) r*=n;
60 for(
int i=1;i<=p;i++,n2--) n1=n1*n2/T(i);
65 #endif //WITH_BINOMIAL
76 const C&
operator()(
int i,
int j ) {
return (*
this)[i][j]; };
94 if ( (s=offs.size()) > d )
return &*(data.begin())+offs[d];
95 for ( x = 0, j = s; j <= d; x += j+1, j ++ ) {}
97 data.resize(data.size()+x);
98 for ( j = s; j <= d; j ++ )
100 offs[j] = offs[j-1] + j;
101 for (
int i = 0; i < j-1; i ++ )
102 data[offs[j]+i+1] = data[offs[j-1]+i] + data[offs[j-1]+i+1];
103 data[offs[j]] = data[offs[j]+j] = 1;
105 return &*(data.begin())+offs[d];
std::vector< C > data
Definition: binomials.hpp:71
const C & operator()(int i, int j)
Definition: binomials.hpp:76
T pow(const T &a, int i)
Definition: binomials.hpp:12
const C & b
Definition: Interval_glue.hpp:25
const C * operator[](int d)
Definition: binomials.hpp:91
binomials()
Definition: binomials.hpp:82
Definition: binomials.hpp:68
T factorial(int n)
Definition: binomials.hpp:40
double C
Definition: solver_mv_fatarcs.cpp:16
binomials(const binomials &b)
Definition: binomials.hpp:72
static binomials default_
Definition: binomials.hpp:69
std::vector< int > offs
Definition: binomials.hpp:70
T binomial(int n, int p)
Definition: binomials.hpp:52
#define assert(expr, msg)
Definition: shared_object.hpp:57