1 #ifndef SimTK_DIFFERENTIATOR_H_
2 #define SimTK_DIFFERENTIATOR_H_
86 class OpNotAllowedForFunctionOfThisShape;
87 class UserFunctionThrewAnException;
88 class UserFunctionReturnedNonzeroStatus;
89 class UnknownMethodSpecified;
97 static bool isValidMethod(Method);
98 static const char* getMethodName(Method);
99 static int getMethodOrder(Method);
103 Method defaultMethod=UnspecifiedMethod);
108 Method getDefaultMethod()
const;
113 Method=UnspecifiedMethod)
const;
115 Method=UnspecifiedMethod)
const;
117 Method=UnspecifiedMethod)
const;
122 Real calcDerivative(
Real y0, Method=UnspecifiedMethod)
const;
123 Vector calcGradient (
const Vector& y0, Method=UnspecifiedMethod)
const;
124 Matrix calcJacobian (
const Vector& y0, Method=UnspecifiedMethod)
const;
127 void resetAllStatistics();
128 int getNumDifferentiations()
const;
129 int getNumDifferentiationFailures()
const;
130 int getNumCallsToUserFunction()
const;
133 class DifferentiatorRep;
136 DifferentiatorRep* rep;
159 int getNumFunctions()
const;
160 int getNumParameters()
const;
161 Real getEstimatedAccuracy()
const;
164 void resetAllStatistics();
165 int getNumCalls()
const;
166 int getNumFailures()
const;
191 virtual int f(
Real x,
Real& fx)
const=0;
210 virtual int f(
const Vector& y,
Real& fy)
const=0;
243 #endif // SimTK_DIFFERENTIATOR_H_