ProteoWizard
Classes | Functions
pwiz::frequency::DerivativeTest Namespace Reference

Classes

class  AdaptedErrorDerivative
 
class  AdaptedErrorFunction
 
class  ParametrizedDerivativeSlice
 
class  ParametrizedFunctionSlice
 
class  VectorFunction
 

Functions

template<typename value_type >
void testDerivatives (const ParametrizedFunction< value_type > &f, double x, const ublas::vector< double > &p, std::ostream *os=0, double delta=1e-7, double epsilon=1e-4)
 
template<typename value_type >
void testDerivatives (const typename ParametrizedFunction< value_type >::ErrorFunction &e, const ublas::vector< double > &p, std::ostream *os=0, double delta=1e-7, double epsilon=1e-4)
 

Function Documentation

§ testDerivatives() [1/2]

template<typename value_type >
void pwiz::frequency::DerivativeTest::testDerivatives ( const ParametrizedFunction< value_type > &  f,
double  x,
const ublas::vector< double > &  p,
std::ostream *  os = 0,
double  delta = 1e-7,
double  epsilon = 1e-4 
)

Definition at line 194 of file DerivativeTest.hpp.

References pwiz::frequency::DerivativeTest::VectorFunction< value_type >::differenceQuotient(), pwiz::frequency::ParametrizedFunction< value_type >::dp(), pwiz::frequency::ParametrizedFunction< value_type >::dp2(), epsilon, pwiz::frequency::DerivativeTest::VectorFunction< value_type >::printDifferenceQuotientSequence(), and unit_assert_matrices_equal.

200 {
201  using namespace std;
202 
203  if (os)
204  {
205  *os << "x: " << x << endl;
206  *os << "p: " << p << endl;
207  }
208 
209  if (os) *os << "f.dp: " << f.dp(x,p) << endl;
210  ParametrizedFunctionSlice<value_type> slice(f,x);
211  if (os) slice.printDifferenceQuotientSequence(p, *os);
212 
213  ublas::matrix<value_type> dp(f.dp(x,p).size(),1);
214  column(dp,0) = f.dp(x,p);
215  unit_assert_matrices_equal(dp, slice.differenceQuotient(p,delta), epsilon);
216 
217  if (os) *os << "f.dp2: " << f.dp2(x,p) << endl;
218  ParametrizedDerivativeSlice<value_type> derivativeSlice(f,x);
219  if (os) derivativeSlice.printDifferenceQuotientSequence(p, *os);
220 
221  unit_assert_matrices_equal(f.dp2(x,p), derivativeSlice.differenceQuotient(p,delta), epsilon);
222 }
const double epsilon
Definition: DiffTest.cpp:41
STL namespace.
KernelTraitsBase< Kernel >::space_type::abscissa_type x
#define unit_assert_matrices_equal(A, B, epsilon)
Definition: unit.hpp:135

§ testDerivatives() [2/2]

template<typename value_type >
void pwiz::frequency::DerivativeTest::testDerivatives ( const typename ParametrizedFunction< value_type >::ErrorFunction &  e,
const ublas::vector< double > &  p,
std::ostream *  os = 0,
double  delta = 1e-7,
double  epsilon = 1e-4 
)

Definition at line 226 of file DerivativeTest.hpp.

References pwiz::frequency::DerivativeTest::VectorFunction< double >::differenceQuotient(), pwiz::frequency::ParametrizedFunction< value_type >::ErrorFunction::dp(), pwiz::frequency::ParametrizedFunction< value_type >::ErrorFunction::dp2(), epsilon, pwiz::frequency::DerivativeTest::VectorFunction< double >::printDifferenceQuotientSequence(), and unit_assert_matrices_equal.

231 {
232  using namespace std;
233 
234  if (os) *os << "p: " << p << endl;
235 
236  if (os) *os << "e.dp: " << e.dp(p) << endl;
237  AdaptedErrorFunction<value_type> adapted(e);
238  if (os) adapted.printDifferenceQuotientSequence(p, *os);
239 
240  ublas::matrix<value_type> dp(e.dp(p).size(), 1);
241  column(dp,0) = e.dp(p);
242  unit_assert_matrices_equal(dp, adapted.differenceQuotient(p,delta), epsilon);
243 
244  if (os) *os << "e.dp2: " << e.dp2(p) << endl;
245  AdaptedErrorDerivative<value_type> adaptedDerivative(e);
246  if (os) adaptedDerivative.printDifferenceQuotientSequence(p, *os);
247 
248  unit_assert_matrices_equal(e.dp2(p), adaptedDerivative.differenceQuotient(p,delta), epsilon);
249 }
const double epsilon
Definition: DiffTest.cpp:41
STL namespace.
#define unit_assert_matrices_equal(A, B, epsilon)
Definition: unit.hpp:135