22#ifndef _nmrBernsteinPolynomialLineIntegral_h
23#define _nmrBernsteinPolynomialLineIntegral_h
37#define CACHE_POWER_BASIS 1
44#define USE_INTEGRAND_TABLEAU 1
150 static const double DefaultRoundoffTolerance;
155 struct ProfilingInfo {
156 unsigned long IntegrandTermCounter;
157 unsigned long EvaluatePowerProductCounter;
158 unsigned long TimeOfSingleTermIntegration;
161 : IntegrandTermCounter(0)
162 , EvaluatePowerProductCounter(0)
163 , TimeOfSingleTermIntegration(0)
168 nmrBernsteinPolynomialLineIntegral(
const IntegrandType & integrand)
175#if USE_INTEGRAND_TABLEAU
210 const VariableType p0[],
const VariableType p1[],
211 const VariableType gradientNorm,
212 const double roundoffTolerance = DefaultRoundoffTolerance,
213 CoefficientType
const * coefficients = NULL)
214#if !CACHE_POWER_BASIS
265 static ValueType IntegrateSingleTerm(
266 const CoefficientType termCoefficient,
267 const CoefficientType gradientNorm,
271 const double roundoffTolerance = DefaultRoundoffTolerance);
298 static ValueType IntegrateSingleTerm(
299 const CoefficientType termCoefficient,
300 const CoefficientType gradientNorm,
301 const PowerType termDegree,
308 static void InitializePolynomialIntegrationTableau(
309 const IntegrandType & integrand,
312 static void InitializeSingleTermIntegrationTableau(
Definition nmrMultiVariablePowerBasis.h:143
Definition nmrMultiVariablePowerBasis.h:38
nmrPolynomialTermPowerIndex::PowerType PowerType
Definition nmrPolynomialBase.h:58
double VariableType
Definition nmrPolynomialBase.h:55
double ValueType
Definition nmrPolynomialBase.h:54
double CoefficientType
Definition nmrPolynomialBase.h:56
nmrPolynomialTermPowerIndex::VariableIndexType VariableIndexType
Definition nmrPolynomialBase.h:57
Represents the power index of a single term in a multi-variable polynomial.
Definition nmrPolynomialTermPowerIndex.h:90
unsigned long MultinomialCoefficientType
Definition nmrPolynomialTermPowerIndex.h:101
#define CISST_EXPORT
Definition cmnExportMacros.h:50
nmrBernsteinPolynomial(VariableIndexType numVariables, PowerType degree)
Definition nmrBernsteinPolynomial.h:89
nmrMultiVariablePowerBasis::StandardPowerBasis PowersAtP1
Definition nmrBernsteinPolynomialLineIntegral.h:231
std::vector< VariableIndexType > IndexContainerForZeroVariables
Definition nmrBernsteinPolynomialLineIntegral.h:275
void UpdateIntegrationTableau()
Definition nmrBernsteinPolynomialLineIntegral.h:184
PolynomialIntegrationTableau IntegrationTableau
Definition nmrBernsteinPolynomialLineIntegral.h:245
const IntegrandType & Integrand
Definition nmrBernsteinPolynomialLineIntegral.h:226
std::vector< PowerType > PowerIndexType
Definition nmrBernsteinPolynomialLineIntegral.h:234
std::vector< TermSummationElement > SingleTermIntegrationTableau
Definition nmrBernsteinPolynomialLineIntegral.h:241
nmrMultiVariablePowerBasis::StandardPowerBasis PowersAtP0
Definition nmrBernsteinPolynomialLineIntegral.h:230
std::vector< SingleTermIntegrationTableau > PolynomialIntegrationTableau
Definition nmrBernsteinPolynomialLineIntegral.h:243
ValueType EvaluateForSegment(const VariableType p0[], const VariableType p1[], const VariableType gradientNorm, const double roundoffTolerance=DefaultRoundoffTolerance, CoefficientType const *coefficients=NULL)
const IntegrandType & GetIntegrand() const
Definition nmrBernsteinPolynomialLineIntegral.h:219
Definition nmrBernsteinPolynomialLineIntegral.h:235
MultinomialType P0MultinomialFactor
Definition nmrBernsteinPolynomialLineIntegral.h:237
PowerIndexType P0PowerIndex
Definition nmrBernsteinPolynomialLineIntegral.h:236
PowerIndexType P1PowerIndex
Definition nmrBernsteinPolynomialLineIntegral.h:238
MultinomialType P1MultinomialFactor
Definition nmrBernsteinPolynomialLineIntegral.h:239