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.

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}
KernelTraitsBase< Kernel >::space_type::abscissa_type x
virtual ublas::matrix< value_type > dp2(double x, const ublas::vector< double > &p) const =0
virtual ublas::vector< value_type > dp(double x, const ublas::vector< double > &p) const =0
const double epsilon
Definition DiffTest.cpp:41
STL namespace.
#define unit_assert_matrices_equal(A, B, epsilon)
Definition unit.hpp:135

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(), unit_assert_matrices_equal, and x.

Referenced by testDerivatives().

◆ 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.

231{
232 using namespace std;
233
234 if (os) *os << "p: " << p << endl;
235
236 if (os) *os << "e.dp: " << e.dp(p) << endl;
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}

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