24 const std::vector<double> & values,
25 const std::map<
unsigned int, std::pair<double, double> > & bounds) :
33 unsigned int ntot =
NTot();
34 assert ( types.size() == ntot );
37 for (
unsigned int i = 0; i < ntot; ++i ) {
38 if (types[i] ==
kFix )
46 std::map<unsigned int, std::pair<double,double> >::const_iterator itr = bounds.find(i);
47 assert ( itr != bounds.end() );
48 double low = itr->second.first;
49 double up = itr->second.second;
65 unsigned int nfree =
fIndex.size();
71 for (
unsigned int i = 0; i < nfree; ++i ) {
72 unsigned int extIndex =
fIndex[i];
77 xext[ extIndex ] = x[i];
88 for (
unsigned int i = 0; i <
NDim(); ++i ) {
89 unsigned int extIndex =
fIndex[i];
95 xInt[ i ] = xExt[extIndex];
101 for (
unsigned int i = 0; i <
NDim(); ++i ) {
102 unsigned int extIndex =
fIndex[i];
107 double x2 = x[extIndex] + sExt[extIndex];
109 x2 = x[extIndex] - sExt[extIndex];
116 sInt[ i ] = sExt[extIndex];
122 unsigned int nfree =
fIndex.size();
123 for (
unsigned int i = 0; i < nfree; ++i ) {
124 unsigned int extIndex =
fIndex[i];
130 gInt[i] = gExt[ extIndex ];
139 unsigned int nfree =
fIndex.size();
140 unsigned int ntot =
NTot();
141 for (
unsigned int i = 0; i < nfree; ++i ) {
142 unsigned int iext =
fIndex[i];
147 for (
unsigned int j = 0; j < nfree; ++j ) {
148 unsigned int jext =
fIndex[j];
152 covExt[ iext * ntot + jext] = ddi * ddj * covInt[ i * nfree + j];
Interface (abstract class) for multi-dimensional functions providing a gradient calculation.
Namespace for new ROOT classes and functions.
static const double x2[5]
static Vc_ALWAYS_INLINE Vector< T > abs(const Vector< T > &x)
Namespace for new Math classes and functions.