Back to Mathematical functions
#ifndef PASTELSYS_BERNSTEIN_HPP
#define PASTELSYS_BERNSTEIN_HPP
#include "pastel/sys/math/bernstein.h"
#include "pastel/sys/ensure.h"
#include "pastel/sys/math/binomial.h"
#include <cmath>
namespace Pastel
{
template <typename Real>
Real bernstein(integer i, integer n, const Real& t)
{
PENSURE_OP(n, >=, 0);
PENSURE_OP(i, >=, 0);
PENSURE_OP(i, <=, n);
// bernstein(i, n, t) = binomial(i, n) *
// pow(1 - t, n - i) * pow(t, i)
return binomial<Real>(i, n) *
std::pow(1 - t, Real(n-i)) *
std::pow(t, Real(i));
}
}
#endif