source: trunk/example/example.cpp @ 3680

Last change on this file since 3680 was 3680, checked in by bradbell, 5 years ago

merge to branch: trunk
from repository: https://github.com/coin-or/CppAD
start hash code: 071875a4beba3363e5fa9752426aec4762cd1caa
end hash code: 0bef506513a519e1073c6279d5c4cba9e5c3b180

commit 0bef506513a519e1073c6279d5c4cba9e5c3b180
Author: Brad Bell <bradbell@…>
Date: Thu May 7 12:14:32 2015 -0700

Add the acosh function (as an atomic operation when defined by compiler).

commit b3264fa17b2f65b65800423a0e243c9c3ccfe06a
Author: Brad Bell <bradbell@…>
Date: Wed May 6 20:25:38 2015 -0700

CMakeLists.txt: Change so test only check for compliation.

commit dcbac4d4f20cc383f2bd9edb02036659df40b791
Author: Brad Bell <bradbell@…>
Date: Wed May 6 15:06:28 2015 -0700

asinh.cpp: check higher orders, relax accuracy on test.

commit 5f8881993fedd18cccc3c74831133a8f8a9d17b0
Author: Brad Bell <bradbell@…>
Date: Wed May 6 14:36:18 2015 -0700

Change Acos to acos.
acos.cpp: remove trailing white space.

commit e828fa1f7c4c3848c727f14b1b7a8030071ee705
Author: Brad Bell <bradbell@…>
Date: Wed May 6 12:07:35 2015 -0700

Change Acos to acos.
acos.cpp: remove redundant index commands, remove trailing with space.

commit 3d16e5b9fe1bdafa4ad01d1d466bb72b792650fa
Author: Brad Bell <bradbell@…>
Date: Wed May 6 11:30:49 2015 -0700

op_code.hpp: Minor edits to AcosOp? commnets.

commit 58beaaad149b4ac29fae44589d7f8900bf8f4c40
Author: Brad Bell <bradbell@…>
Date: Wed May 6 10:51:43 2015 -0700

for_jac_sweep.hpp: Add missing AsinhOp? case.

commit 623c134870c522ae5e80bcf0f89d230902594c80
Author: Brad Bell <bradbell@…>
Date: Wed May 6 10:27:39 2015 -0700

Fix comment about AsinhOp? operator.

commit 226b14f6f4810f5abf1ca247aae541963efaf4d6
Author: Brad Bell <bradbell@…>
Date: Wed May 6 10:14:08 2015 -0700

Add derivative of F to make order zero case clearer.
acos_reverse.omh: Fix some sign errors.
asin_reverse.omh: Fix typo.
acos_forward.omh: Simplify by distributing minus sign.

commit 4682f4ee73e33b600b180086576e986f636a24dc
Author: Brad Bell <bradbell@…>
Date: Wed May 6 08:15:50 2015 -0700

acos_forward.omh: fix sign that depends on acos versus acosh.

commit 906ae10adf019ddda7f57dd165aab08fc55289c4
Author: Brad Bell <bradbell@…>
Date: Wed May 6 07:09:47 2015 -0700

  1. Fix inclusion of some temporary files in package (e.g., git_commit.sh).
  2. Simplify and improve using git ls-files and ls bin/check_*.
  3. Remove trailing white space.

commit 5096f4706a547bd76caa3766aa2c62802ef7f0bf
Author: Brad Bell <bradbell@…>
Date: Wed May 6 06:41:20 2015 -0700

Combine base type documentation for erf, asinh
(will add more functions to this list list).

commit b3535db5ad95bee90672abcaa686032d23bce2fc
Author: Brad Bell <bradbell@…>
Date: Tue May 5 18:01:11 2015 -0700

  1. Change Arc Cosine/Sine? to Inverse Cosine/Sine?.
  2. Change arcsin-> asin and arccos->acos.
  3. Remove index commands that are duplicates of words in titles.


acos_reverse.omh: Add acosh case to this page.

  • Property svn:keywords set to Id
File size: 13.1 KB
Line 
1/* $Id: example.cpp 3680 2015-05-07 19:17:37Z bradbell $ */
2/* --------------------------------------------------------------------------
3CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-15 Bradley M. Bell
4
5CppAD is distributed under multiple licenses. This distribution is under
6the terms of the
7                    Eclipse Public License Version 1.0.
8
9A copy of this license is included in the COPYING file of this distribution.
10Please visit http://www.coin-or.org/CppAD/ for information on other licenses.
11-------------------------------------------------------------------------- */
12
13/*
14$begin example.cpp$$
15$spell
16        Cpp
17$$
18
19$section CppAD Examples and Tests$$
20$index example, CppAD$$
21$index test, CppAD$$
22
23$head Running Tests$$
24To build this program and run its correctness tests see $cref cmake_check$$.
25
26$code
27$verbatim%example/example.cpp%0%// BEGIN C++%// END C++%1%$$
28$$
29
30$end
31*/
32// BEGIN C++
33
34// system include files used for I/O
35# include <iostream>
36
37// C style asserts
38# include <cassert>
39
40// standard string
41# include <string>
42
43// memory utility
44# include <cppad/thread_alloc.hpp>
45
46// prototype external compiled tests (this line expected by bin/new_test.sh)
47extern bool abort_recording(void);
48extern bool ad_assign(void);
49extern bool ad_ctor(void);
50extern bool abs(void);
51extern bool acos(void);
52extern bool acosh(void);
53extern bool Add(void);
54extern bool AddEq(void);
55extern bool ad_fun(void);
56extern bool ad_in_c(void);
57extern bool ad_input(void);
58extern bool ad_output(void);
59extern bool asin(void);
60extern bool asinh(void);
61extern bool Atan(void);
62extern bool Atan2(void);
63extern bool base_require(void);
64extern bool BenderQuad(void);
65extern bool BoolFun(void);
66extern bool capacity_order(void);
67extern bool change_const(void);
68extern bool check_for_nan(void);
69extern bool CheckNumericType(void);
70extern bool CheckSimpleVector(void);
71extern bool colpack_hes(void);
72extern bool colpack_jac(void);
73extern bool Compare(void);
74extern bool compare_change(void);
75extern bool complex_poly(void);
76extern bool CondExp(void);
77extern bool conj_grad(void);
78extern bool Cos(void);
79extern bool Cosh(void);
80extern bool CppAD_vector(void);
81extern bool Div(void);
82extern bool DivEq(void);
83extern bool eigen_array(void);
84extern bool eigen_det(void);
85extern bool EqualOpSeq(void);
86extern bool Erf(void);
87extern bool ErrorHandler(void);
88extern bool Exp(void);
89extern bool ForOne(void);
90extern bool ForTwo(void);
91extern bool ForSparseJac(void);
92extern bool Forward(void);
93extern bool forward_dir(void);
94extern bool forward_order(void);
95extern bool fun_assign(void);
96extern bool FunCheck(void);
97extern bool HesLagrangian(void);
98extern bool HesLuDet(void);
99extern bool HesMinorDet(void);
100extern bool Hessian(void);
101extern bool HesTimesDir(void);
102extern bool Independent(void);
103extern bool index_sort(void);
104extern bool Integer(void);
105extern bool Interface2C(void);
106extern bool interp_onetape(void);
107extern bool interp_retape(void);
108extern bool JacLuDet(void);
109extern bool JacMinorDet(void);
110extern bool Jacobian(void);
111extern bool limits(void);
112extern bool Log(void);
113extern bool Log10(void);
114extern bool LuFactor(void);
115extern bool LuInvert(void);
116extern bool LuRatio(void);
117extern bool LuSolve(void);
118extern bool LuVecADOk(void);
119extern bool Mul(void);
120extern bool MulEq(void);
121extern bool mul_level(void);
122extern bool mul_level_adolc(void);
123extern bool mul_level_ode(void);
124extern bool mul_level_adolc_ode(void);
125extern bool nan(void);
126extern bool Near_Equal(void);
127extern bool NearEqualExt(void);
128extern bool number_skip(void);
129extern bool NumericType(void);
130extern bool OdeErrControl(void);
131extern bool OdeErrMaxabs(void);
132extern bool OdeGear(void);
133extern bool OdeGearControl(void);
134extern bool OdeStiff(void);
135extern bool ode_taylor(void);
136extern bool omp_alloc(void);
137extern bool opt_val_hes(void);
138extern bool optimize(void);
139extern bool ParVar(void);
140extern bool Poly(void);
141extern bool Pow(void);
142extern bool pow_int(void);
143extern bool print_for(void);
144extern bool reverse_any(void);
145extern bool reverse_one(void);
146extern bool reverse_three(void);
147extern bool reverse_two(void);
148extern bool RevOne(void);
149extern bool RevSparseHes(void);
150extern bool RevSparseJac(void);
151extern bool RevTwo(void);
152extern bool RombergMul(void);
153extern bool RombergOne(void);
154extern bool Rosen34(void);
155extern bool runge_45_1(void);
156extern bool runge_45_2(void);
157extern bool seq_property(void);
158extern bool sign(void);
159extern bool SimpleVector(void);
160extern bool Sin(void);
161extern bool Sinh(void);
162extern bool sparse_hessian(void);
163extern bool sparse_jacobian(void);
164extern bool Sqrt(void);
165extern bool StackMachine(void);
166extern bool Sub(void);
167extern bool SubEq(void);
168extern bool sub_sparse_hes(void);
169extern bool Tan(void);
170extern bool Tanh(void);
171extern bool TapeIndex(void);
172extern bool thread_alloc(void);
173extern bool UnaryMinus(void);
174extern bool UnaryPlus(void);
175extern bool Value(void);
176extern bool Var2Par(void);
177extern bool vec_ad(void);
178extern bool vectorBool(void);
179
180namespace {
181        // function that runs one test
182        static size_t Run_ok_count    = 0;
183        static size_t Run_error_count = 0;
184        bool Run(bool TestOk(void), std::string name)
185        {       bool ok      = true;
186                std::streamsize width =  20;
187                std::cout.width( width );
188                std::cout.setf( std::ios_base::left );
189                std::cout << name;
190                //
191                ok &= name.size() < size_t(width);
192                ok &= TestOk();
193                if( ok )
194                {       std::cout << "OK" << std::endl;
195                        Run_ok_count++;
196                }
197                else
198                {       std::cout << "Error" << std::endl;
199                        Run_error_count++;
200                }
201                return ok;
202        }
203}
204
205// main program that runs all the tests
206int main(void)
207{       bool ok = true;
208
209        // This line is used by test_one.sh
210
211        // run external compiled tests (this line expected by bin/new_test.sh)
212        ok &= Run( abort_recording,   "abort_recording"  );
213        ok &= Run( ad_assign,         "ad_assign"        );
214        ok &= Run( ad_ctor,           "ad_ctor"          );
215        ok &= Run( abs,               "abs"              );
216        ok &= Run( acos,              "acos"             );
217        ok &= Run( acosh,             "acosh"            );
218        ok &= Run( Add,               "Add"              );
219        ok &= Run( AddEq,             "AddEq"            );
220        ok &= Run( ad_fun,            "ad_fun"           );
221        ok &= Run( ad_in_c,           "ad_in_c"          );
222        ok &= Run( ad_input,          "ad_input"         );
223        ok &= Run( ad_output,         "ad_output"        );
224        ok &= Run( asin,              "asin"             );
225        ok &= Run( asinh,             "asinh"            );
226        ok &= Run( Atan,              "Atan"             );
227        ok &= Run( Atan2,             "Atan2"            );
228        ok &= Run( BenderQuad,        "BenderQuad"       );
229        ok &= Run( BoolFun,           "BoolFun"          );
230        ok &= Run( capacity_order,    "capacity_order"   );
231        ok &= Run( change_const,      "change_const"     );
232        ok &= Run( check_for_nan,     "check_for_nan"    );
233        ok &= Run( CheckNumericType,  "CheckNumericType" );
234        ok &= Run( CheckSimpleVector, "CheckSimpleVector");
235        ok &= Run( Compare,           "Compare"          );
236        ok &= Run( compare_change,    "compare_change"   );
237        ok &= Run( complex_poly,      "complex_poly"     );
238        ok &= Run( CondExp,           "CondExp"          );
239        ok &= Run( conj_grad,         "conj_grad"        );
240        ok &= Run( Cos,               "Cos"              );
241        ok &= Run( Cosh,              "Cosh"             );
242        ok &= Run( CppAD_vector,      "CppAD_vector"     );
243        ok &= Run( Div,               "Div"              );
244        ok &= Run( DivEq,             "DivEq"            );
245        ok &= Run( EqualOpSeq,        "EqualOpSeq"       );
246        ok &= Run( Erf,               "Erf"              );
247        ok &= Run( ErrorHandler,      "ErrorHandler"     );
248        ok &= Run( Exp,               "Exp"              );
249        ok &= Run( ForOne,            "ForOne"           );
250        ok &= Run( ForTwo,            "ForTwo"           );
251        ok &= Run( Forward,           "Forward"          );
252        ok &= Run( forward_dir,       "forward_dir"      );
253        ok &= Run( forward_order,     "forward_order"    );
254        ok &= Run( ForSparseJac,      "ForSparseJac"     );
255        ok &= Run( fun_assign,        "fun_assign"       );
256        ok &= Run( FunCheck,          "FunCheck"         );
257        ok &= Run( HesLagrangian,     "HesLagrangian"    );
258        ok &= Run( HesLuDet,          "HesLuDet"         );
259        ok &= Run( HesMinorDet,       "HesMinorDet"      );
260        ok &= Run( Hessian,           "Hessian"          );
261        ok &= Run( HesTimesDir,       "HesTimesDir"      );
262        ok &= Run( Independent,       "Independent"      );
263        ok &= Run( index_sort,        "index_sort"       );
264        ok &= Run( Integer,           "Integer"          );
265        ok &= Run( Interface2C,       "Interface2C"      );
266        ok &= Run( interp_onetape,    "interp_onetape"   );
267        ok &= Run( interp_retape,     "interp_retape"    );
268        ok &= Run( JacLuDet,          "JacLuDet"         );
269        ok &= Run( JacMinorDet,       "JacMinorDet"      );
270        ok &= Run( Jacobian,          "Jacobian"         );
271        ok &= Run( limits,            "limits"           );
272        ok &= Run( Log,               "Log"              );
273        ok &= Run( Log10,             "Log10"            );
274        ok &= Run( LuFactor,          "LuFactor"         );
275        ok &= Run( LuInvert,          "LuInvert"         );
276        ok &= Run( LuRatio,           "LuRatio"          );
277        ok &= Run( LuSolve,           "LuSolve"          );
278        ok &= Run( LuVecADOk,         "LuVecADOk"        );
279        ok &= Run( Mul,               "Mul"              );
280        ok &= Run( MulEq,             "MulEq"            );
281        ok &= Run( mul_level,         "mul_level"        );
282        ok &= Run( mul_level_ode,     "mul_level_ode"    );
283        ok &= Run( nan,               "nan"              );
284        ok &= Run( Near_Equal,        "Near_Equal"       );
285        ok &= Run( NearEqualExt,      "NearEqualExt"     );
286        ok &= Run( number_skip,       "number_skip"      );
287        ok &= Run( NumericType,       "NumericType"      );
288        ok &= Run( OdeErrControl,     "OdeErrControl"    );
289        ok &= Run( OdeErrMaxabs,      "OdeErrMaxabs"     );
290        ok &= Run( OdeGear,           "OdeGear"          );
291        ok &= Run( OdeGearControl,    "OdeGearControl"   );
292        ok &= Run( OdeStiff,          "OdeStiff"         );
293        ok &= Run( ode_taylor,        "ode_taylor"       );
294        ok &= Run( omp_alloc,         "omp_alloc"        );
295        ok &= Run( opt_val_hes,       "opt_val_hes"      );
296        ok &= Run( optimize,          "optimize"         );
297        ok &= Run( ParVar,            "ParVar"           );
298        ok &= Run( Pow,               "Poly"             );
299        ok &= Run( Pow,               "Pow"              );
300        ok &= Run( pow_int,           "pow_int"          );
301        ok &= Run( reverse_any,       "reverse_any"      );
302        ok &= Run( reverse_one,       "reverse_one"      );
303        ok &= Run( reverse_three,     "reverse_three"    );
304        ok &= Run( reverse_two,       "reverse_two"      );
305        ok &= Run( RevOne,            "RevOne"           );
306        ok &= Run( RevSparseHes,      "RevSparseHes"     );
307        ok &= Run( RevSparseJac,      "RevSparseJac"     );
308        ok &= Run( RevTwo,            "RevTwo"           );
309        ok &= Run( RombergMul,        "RombergMul"       );
310        ok &= Run( RombergOne,        "RombergOne"       );
311        ok &= Run( Rosen34,           "Rosen34"          );
312        ok &= Run( runge_45_1,        "runge_45_1"       );
313        ok &= Run( runge_45_2,        "runge_45_2"       );
314        ok &= Run( seq_property,      "seq_property"     );
315        ok &= Run( sign,              "sign"             );
316        ok &= Run( SimpleVector,      "SimpleVector"     );
317        ok &= Run( Sin,               "Sin"              );
318        ok &= Run( Sinh,              "Sinh"             );
319        ok &= Run( sparse_hessian,    "sparse_hessian"   );
320        ok &= Run( sparse_jacobian,   "sparse_jacobian"  );
321        ok &= Run( Sqrt,              "Sqrt"             );
322        ok &= Run( StackMachine,      "StackMachine"     );
323        ok &= Run( Sub,               "Sub"              );
324        ok &= Run( SubEq,             "SubEq"            );
325        ok &= Run( sub_sparse_hes,    "sub_sparse_hes"   );
326        ok &= Run( Tan,               "Tan"              );
327        ok &= Run( Tanh,              "Tanh"             );
328        ok &= Run( TapeIndex,         "TapeIndex"        );
329        ok &= Run( thread_alloc,      "thread_alloc"     );
330        ok &= Run( UnaryMinus,        "UnaryMinus"       );
331        ok &= Run( UnaryPlus,         "UnaryPlus"        );
332        ok &= Run( Value,             "Value"            );
333        ok &= Run( Var2Par,           "Var2Par"          );
334        ok &= Run( vec_ad,            "vec_ad"           );
335        ok &= Run( vectorBool,        "vectorBool"       );
336# ifdef CPPAD_ADOLC_EXAMPLES
337        ok &= Run( mul_level_adolc,      "mul_level_adolc"     );
338        ok &= Run( mul_level_adolc_ode,  "mul_level_adolc_ode" );
339# endif
340# ifdef CPPAD_COLPACK_EXAMPLES
341        ok &= Run( colpack_hes,       "colpack_hes"      );
342        ok &= Run( colpack_jac,       "colpack_jac"      );
343# endif
344# ifdef CPPAD_EIGEN_EXAMPLES
345        ok &= Run( eigen_array,       "eigen_array"      );
346        ok &= Run( eigen_det,         "eigen_det"        );
347# endif
348
349        // check for errors
350        using std::cout;
351        using std::endl;
352        assert( ok || (Run_error_count > 0) );
353        if( CppAD::thread_alloc::free_all() )
354        {       Run_ok_count++;
355                cout << "OK:    " << "No memory leak detected" << endl;
356        }
357        else
358        {       ok = false;
359                Run_error_count++;
360                cout << "Error: " << "memory leak detected" << endl;
361        }
362        // Run base_require after memory leak check because base_alloc.hpp uses
363        // thread_alloc to allocate memory for static copies of nan.
364        ok &= Run( base_require,      "base_require"     );
365        // convert int(size_t) to avoid warning on _MSC_VER systems
366        if( ok )
367                cout << "All " << int(Run_ok_count) << " tests passed." << endl;
368        else    cout << int(Run_error_count) << " tests failed." << endl;
369
370        return static_cast<int>( ! ok );
371}
372// END C++
Note: See TracBrowser for help on using the repository browser.