MCPcopy Create free account
hub / github.com/coin-or/CppAD / fun

Function fun

example/optimize/reverse_active.cpp:23–59  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21 struct tape_size { size_t n_var; size_t n_op; };
22
23 template <class Vector> void fun(
24 const Vector& x, Vector& y, tape_size& before, tape_size& after
25 )
26 { typedef typename Vector::value_type scalar;
27
28 // phantom variable with index 0 and independent variables
29 // begin operator, independent variable operators and end operator
30 before.n_var = 1 + x.size(); before.n_op = 2 + x.size();
31 after.n_var = 1 + x.size(); after.n_op = 2 + x.size();
32
33 // initialized product of even and odd variables
34 scalar prod_even = x[0];
35 scalar prod_odd = x[1];
36 before.n_var += 0; before.n_op += 0;
37 after.n_var += 0; after.n_op += 0;
38 //
39 // compute product of even and odd variables
40 for(size_t i = 2; i < size_t( x.size() ); i++)
41 { if( i % 2 == 0 )
42 { // prod_even will affect dependent variable
43 prod_even = prod_even * x[i];
44 before.n_var += 1; before.n_op += 1;
45 after.n_var += 1; after.n_op += 1;
46 }
47 else
48 { // prod_odd will not affect dependent variable
49 prod_odd = prod_odd * x[i];
50 before.n_var += 1; before.n_op += 1;
51 after.n_var += 0; after.n_op += 0;
52 }
53 }
54
55 // dependent variable for this operation sequence
56 y[0] = prod_even;
57 before.n_var += 0; before.n_op += 0;
58 after.n_var += 0; after.n_op += 0;
59 }
60}
61
62bool reverse_active(void)

Callers 1

reverse_activeFunction · 0.70

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected