mpz_class latticePaths(mpz_class m, mpz_class n) { if (m < n) { return binomialCoefficient(m + n, n); } else { return binomialCoefficient(m + n, m); } }
void latticePaths(mpz_ptr result, mpz_t m, mpz_t n) { mpz_t mplusn; mpz_init(mplusn); mpz_add(mplusn, m, n); if (mpz_cmp(m, n) < 1) { binomialCoefficient(result, mplusn, n); } else { binomialCoefficient(result, mplusn, m); } mpz_clear(mplusn); }
static double binomSingle(double const p, uint64_t const k, uint64_t const n) { return binomialCoefficient(k,n) * slowPow(p,k) * slowPow(1-p,n-k); }
int main() { printf("%d\n", binomial(6, 3)); printf("%d\n", binomial(6, 8)); printf("%d\n", binomial(5, 5)); printf("%d\n", binomial(100, 5)); int a[100]; binomialCoefficient(7, a); for (int i = 0; i <= 7; i++) printf("%d ", a[i]); return 0; }
double nucmath::binomialPMF(double p, size_t n, size_t k) { if(k > n) return 0; double sum = 0.0; for(size_t i = 0; i <= k; i++) sum += binomialCoefficient(n, i) * std::pow(p, i) * std::pow(1.0-p, n-i); return sum; }
void w3j_sqrt_sq(mpq_t r, long j1, long j2, long j3, long m1, long m2, long m3) { mpz_t n,d,h; mpz_init(n); mpz_init(d); mpz_init(h); binomialCoefficient(n, 2*j1,j1-j2+j3); binomialCoefficient(h, 2*j2,j1+j2-j3); mpz_mul(n,n,h); binomialCoefficient(h, 2*j3,-j1+j2+j3); mpz_mul(n,n,h);; mpq_set_z(r,n); binomialCoefficient(d, 2*j1,j1+m1); binomialCoefficient(h, 2*j2,j2+m2); mpz_mul(d,d,h); binomialCoefficient(h, 2*j3,j3+m3); mpz_mul(d,d,h); mpq_set_den(r,d); mpq_canonicalize(r); mpz_clear(d); mpz_clear(h); mpz_clear(n); }
int main(void){ int n; int k; int binKoeff; printf("\n Berechnung des Binomialkoeffizienten n ueber k \n" ); printf("\n Bitte Wert fuer n eingeben: "); scanf("%d", &n); printf("\n Bitte Wert fuer k eingeben: "); scanf("%d", &k); binKoeff = binomialCoefficient(n, k); printf("\n Der Binomialkoeffizienten n ueber k von %d und %d", n, k); printf(" ist: %d \n", binKoeff); return 0; }
BezierPath createBezierPath(const std::vector<Geometry2d::Point>& controls) { Planning::BezierPath interp; size_t degree = controls.size(); // generate coefficients vector<float> coeffs; for (size_t i = 0; i < degree; ++i) { coeffs.push_back(binomialCoefficient(degree - 1, i)); } size_t nrPoints = 20; float inc = 1.0 / nrPoints; for (size_t t = 1; t < nrPoints - 1; ++t) interp.points.push_back(evaluateBezier(t * inc, controls, coeffs)); interp.points.push_back(controls.at(controls.size() - 1)); return interp; }
vector< vector<T> > combinations(vector<T> &v, unsigned int k) { unsigned int next = 0; if(k > v.size()) throw k_GreaterThan_n_Exception(); vector< vector<T> > combs( binomialCoefficient(v.size(), k) ); vector<bool> binary(v.size()); fill(binary.end() - k, binary.end(), true); do { for(unsigned int i = 0 ; i < v.size() ; i++) { if(binary[i]) combs[next].insert(combs[next].end(), v[i]); } next++; } while(next_permutation(binary.begin(), binary.end())); return combs; }
float BezierBernsteinCurve::bernsteinPolynomial(const int& n,const int& i,const float& t)const{ return binomialCoefficient(n , i) * std::pow(t , i) * std::pow(1.0f - t , n - i); }
void w3j_intterm(mpz_t sum, long j1, long j2, long j3, long m1, long m2, long m3) { mpz_t term,h; mpz_init(term); mpz_init(h); long I1 = 0; if(j1-j3+m2>I1) I1=j1-j3+m2; if(j2-j3-m1>I1) I1=j2-j3-m1; long I2 = j1+j2-j3; if(j1-m1<I2) I2=j1-m1; if(j2+m2<I2) I2=j2+m2; mpz_set_ui(sum,0); long sgn=1; if(iabs(I1)%2==1) sgn=-1; for(long k=I1; k<=I2; k++) { // sum+=sgn*binomialCoefficient(j1+j2-j3,k)*binomialCoefficient(j1-j2+j3,j1-m1-k) // *binomialCoefficient(-j1+j2+j3,j2+m2-k); binomialCoefficient(term, j1+j2-j3, k); binomialCoefficient(h,j1-j2+j3,j1-m1-k); mpz_mul(term,term,h); binomialCoefficient(h,-j1+j2+j3,j2+m2-k); mpz_mul(term,term,h); mpz_mul_si(term,term,sgn); mpz_add(sum,sum,term); sgn*= -1; } mpz_clear(h); mpz_clear(term); }