1 # ifndef CPPAD_CORE_JACOBIAN_HPP
2 # define CPPAD_CORE_JACOBIAN_HPP
115 template <
typename Base,
typename Vector>
121 size_t m = f.
Range();
124 CheckSimpleVector<Base, Vector>();
134 for(j = 0; j < n; j++)
138 for(j = 0; j < n; j++)
149 for(i = 0; i < m; i++)
150 jac[ i * n + j ] = v[i];
153 template <
typename Base,
typename Vector>
159 size_t m = f.
Range();
169 for(i = 0; i < m; i++)
173 for(i = 0; i < m; i++)
176 for(j = 0; j < n; j++)
177 jac[ i * n + j ] = Base(0.0);
191 for(j = 0; j < n; j++)
192 jac[ i * n + j ] = u[j];
197 template <
typename Base>
198 template <
typename Vector>
205 size_t(x.size()) == n,
206 "Jacobian: length of x not equal domain dimension for F"
213 size_t workForward = n;
216 size_t workReverse = 0;
217 for(i = 0; i < m; i++)
224 # ifdef CPPAD_FOR_TMB
225 if( workForward < workReverse )
227 if( workForward <= workReverse )
#define CPPAD_ASSERT_KNOWN(exp, msg)
Check that exp is true, if not print msg and terminate execution.
size_t Range(void) const
number of dependent variables
Class used to hold function objects.
void JacobianRev(ADFun< Base > &f, const Vector &x, Vector &jac)
VectorBase Jacobian(const VectorBase &x)
calculate entire Jacobian
#define CPPAD_ASSERT_UNKNOWN(exp)
Check that exp is true, if not terminate execution.
bool Parameter(size_t i)
is variable a parameter
VectorBase Forward(size_t q, size_t r, const VectorBase &x)
forward mode user API, one order multiple directions.
size_t Domain(void) const
number of independent variables
CPPAD_INLINE_FRIEND_TEMPLATE_FUNCTION bool Parameter(const AD< Base > &x)
VectorBase Reverse(size_t p, const VectorBase &v)
reverse mode sweep
void JacobianFor(ADFun< Base > &f, const Vector &x, Vector &jac)