CppADCodeGen
2.3.0
A C++ Algorithmic Differentiation Package with Source Code Generation
cppadcg.hpp
1
#ifndef CPPADCG_INCLUDED
2
#define CPPADCG_INCLUDED
3
/* --------------------------------------------------------------------------
4
* CppADCodeGen: C++ Algorithmic Differentiation with Source Code Generation:
5
* Copyright (C) 2012 Ciengis
6
*
7
* CppADCodeGen is distributed under multiple licenses:
8
*
9
* - Eclipse Public License Version 1.0 (EPL1), and
10
* - GNU General Public License Version 3 (GPL3).
11
*
12
* EPL1 terms and conditions can be found in the file "epl-v10.txt", while
13
* terms and conditions for the GPL3 can be found in the file "gpl3.txt".
14
* ----------------------------------------------------------------------------
15
* Author: Joao Leal
16
*/
17
18
// --------------------------------------------------------------------------
19
// System routines that can be used by rest of CppAD with out including
20
21
#include <algorithm>
22
#include <array>
23
#include <assert.h>
24
#include <cstddef>
25
#include <errno.h>
26
#include <fstream>
27
#include <iomanip>
28
#include <iosfwd>
29
#include <iostream>
30
#include <limits>
31
#include <list>
32
#include <map>
33
#include <memory>
34
#include <valarray>
35
#include <vector>
36
#include <deque>
37
#include <forward_list>
38
#include <set>
39
#include <stddef.h>
40
#include <stdexcept>
41
#include <stdio.h>
42
#include <stdlib.h>
43
#include <sstream>
44
#include <string>
45
#include <string.h>
46
#include <chrono>
47
#include <thread>
48
#include <functional>
49
50
// ---------------------------------------------------------------------------
51
// operating system detection
52
#ifndef CPPAD_CG_SYSTEM_LINUX
53
# if defined(__linux__) || defined(__linux) || defined(linux)
54
# define CPPAD_CG_SYSTEM_LINUX 1
55
# endif
56
#endif
57
#ifndef CPPAD_CG_SYSTEM_APPLE
58
# if defined(__APPLE__)
59
# define CPPAD_CG_SYSTEM_APPLE 1
60
# define CPPAD_CG_SYSTEM_LINUX 1
61
# endif
62
#endif
63
#ifndef CPPAD_CG_SYSTEM_WIN
64
# if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(__TOS_WIN__) || defined(__WINDOWS__)
65
# define CPPAD_CG_SYSTEM_WIN 1
66
# endif
67
#endif
68
69
// ---------------------------------------------------------------------------
70
// all base type requirements
71
# include <cppad/base_require.hpp>
72
73
// ---------------------------------------------------------------------------
74
#include <cppad/cg/cppadcg_assert.hpp>
75
#include <cppad/cg/exception.hpp>
76
#include <cppad/cg/operation.hpp>
77
#include <cppad/cg/declare_cg.hpp>
78
79
// ---------------------------------------------------------------------------
80
// system dependent files
81
#include <cppad/cg/model/system/system.hpp>
82
#include <cppad/cg/model/system/linux_system.hpp>
83
84
// ---------------------------------------------------------------------------
85
// some utilities
86
#include <cppad/cg/smart_containers.hpp>
87
#include <cppad/cg/ostream_config_restore.hpp>
88
#include <cppad/cg/array_view.hpp>
89
90
// ---------------------------------------------------------------------------
91
// indexes
92
#include <cppad/cg/patterns/index/index_pattern.hpp>
93
#include <cppad/cg/patterns/index/linear_index_pattern.hpp>
94
#include <cppad/cg/patterns/index/sectioned_index_pattern.hpp>
95
#include <cppad/cg/patterns/index/plane_2d_index_pattern.hpp>
96
#include <cppad/cg/patterns/index/random_index_pattern.hpp>
97
#include <cppad/cg/patterns/index/random_1d_index_pattern.hpp>
98
#include <cppad/cg/patterns/index/random_2d_index_pattern.hpp>
99
#include <cppad/cg/patterns/index/index_pattern_impl.hpp>
100
101
// ---------------------------------------------------------------------------
102
// core files
103
#include <cppad/cg/debug.hpp>
104
#include <cppad/cg/argument.hpp>
105
#include <cppad/cg/operation_node.hpp>
106
#include <cppad/cg/nodes/index_operation_node.hpp>
107
#include <cppad/cg/nodes/index_assign_operation_node.hpp>
108
#include <cppad/cg/nodes/loop_start_operation_node.hpp>
109
#include <cppad/cg/nodes/loop_end_operation_node.hpp>
110
#include <cppad/cg/nodes/print_operation_node.hpp>
111
#include <cppad/cg/cg.hpp>
112
#include <cppad/cg/default.hpp>
113
#include <cppad/cg/variable.hpp>
114
#include <cppad/cg/identical.hpp>
115
#include <cppad/cg/range.hpp>
116
#include <cppad/cg/atomic_dependency_locator.hpp>
117
#include <cppad/cg/variable_name_generator.hpp>
118
#include <cppad/cg/job_timer.hpp>
119
#include <cppad/cg/lang/language.hpp>
120
#include <cppad/cg/scope_path_element.hpp>
121
#include <cppad/cg/array_id_compresser.hpp>
122
#include <cppad/cg/patterns/loop_position.hpp>
123
#include <cppad/cg/arithmetic.hpp>
124
#include <cppad/cg/arithmetic_assign.hpp>
125
#include <cppad/cg/math.hpp>
126
#include <cppad/cg/math_other.hpp>
127
#include <cppad/cg/nan.hpp>
128
#include <cppad/cg/cond_exp_op.hpp>
129
#include <cppad/cg/compare.hpp>
130
#include <cppad/cg/ordered.hpp>
131
#include <cppad/cg/unary.hpp>
132
133
// ---------------------------------------------------------------------------
134
#include <cppad/cg/code_handler.hpp>
135
#include <cppad/cg/code_handler_impl.hpp>
136
#include <cppad/cg/code_handler_vector.hpp>
137
#include <cppad/cg/code_handler_loops.hpp>
138
139
// ---------------------------------------------------------------------------
140
#include <cppad/cg/base_double.hpp>
141
#include <cppad/cg/base_float.hpp>
142
143
// ---------------------------------------------------------------------------
144
// CppAD
145
#include <cppad/cppad.hpp>
146
147
// resolves some ambiguities
148
#include <cppad/cg/arithmetic_ad.hpp>
149
150
// addons
151
#include <cppad/cg/extra/extra.hpp>
152
153
// ---------------------------------------------------------------------------
154
// additional utilities
155
#include <cppad/cg/util.hpp>
156
#include <cppad/cg/evaluator/evaluator.hpp>
157
#include <cppad/cg/evaluator/evaluator_ad.hpp>
158
#include <cppad/cg/evaluator/evaluator_adcg.hpp>
159
#include <cppad/cg/evaluator/evaluator_cg.hpp>
160
#include <cppad/cg/operation_path_node.hpp>
161
#include <cppad/cg/operation_path.hpp>
162
#include <cppad/cg/solver.hpp>
163
#include <cppad/cg/collect_variable.hpp>
164
#include <cppad/cg/graph_mod.hpp>
165
#include <cppad/cg/operation_node_name_streambuf.hpp>
166
167
// ---------------------------------------------------------------------------
168
// atomic function utilities
169
#include <cppad/cg/custom_position.hpp>
170
#include <cppad/cg/base_abstract_atomic_fun.hpp>
171
#include <cppad/cg/abstract_atomic_fun.hpp>
172
#include <cppad/cg/atomic_fun.hpp>
173
#include <cppad/cg/atomic_fun_bridge.hpp>
174
#include <cppad/cg/model/atomic_generic_model.hpp>
175
176
// ---------------------------------------------------------------------------
177
// loop/pattern detection
178
#include <cppad/cg/patterns/independent_node_sorter.hpp>
179
#include <cppad/cg/patterns/equation_group.hpp>
180
#include <cppad/cg/patterns/iter_equation_group.hpp>
181
#include <cppad/cg/patterns/loop_model.hpp>
182
#include <cppad/cg/patterns/loop_free_model.hpp>
183
#include <cppad/cg/patterns/equation_pattern.hpp>
184
#include <cppad/cg/patterns/loop.hpp>
185
#include <cppad/cg/patterns/dependent_pattern_matcher.hpp>
186
187
// ---------------------------------------------------------------------------
188
// C source code generation
189
#include <cppad/cg/lang/c/lang_c_atomic_fun.hpp>
190
#include <cppad/cg/lang/c/language_c.hpp>
191
#include <cppad/cg/lang/c/language_c_arrays.hpp>
192
#include <cppad/cg/lang/c/language_c_index_patterns.hpp>
193
#include <cppad/cg/lang/c/language_c_double.hpp>
194
#include <cppad/cg/lang/c/language_c_float.hpp>
195
#include <cppad/cg/lang/c/language_c_loops.hpp>
196
#include <cppad/cg/lang/c/lang_c_default_var_name_gen.hpp>
197
#include <cppad/cg/lang/c/lang_c_default_hessian_var_name_gen.hpp>
198
#include <cppad/cg/lang/c/lang_c_default_reverse2_var_name_gen.hpp>
199
#include <cppad/cg/lang/c/lang_c_custom_var_name_gen.hpp>
200
#include <cppad/cg/lang/c/lang_c_util.hpp>
201
202
//
203
#include <cppad/cg/model/threadpool/multi_threading_type.hpp>
204
#include <cppad/cg/model/threadpool/thread_pool_schedule_strategy.hpp>
205
#include <cppad/cg/model/external_function_wrapper.hpp>
206
#include <cppad/cg/model/atomic_external_function_wrapper.hpp>
207
#include <cppad/cg/model/generic_model_external_function_wrapper.hpp>
208
#include <cppad/cg/model/model_library_processor.hpp>
209
#include <cppad/cg/model/model_library.hpp>
210
#include <cppad/cg/model/generic_model.hpp>
211
#include <cppad/cg/model/functor_generic_model.hpp>
212
#include <cppad/cg/model/functor_model_library.hpp>
213
#include <cppad/cg/model/save_files_model_library_processor.hpp>
214
215
// automated static library creation
216
#include <cppad/cg/model/dynamic_lib/archiver.hpp>
217
#include <cppad/cg/model/dynamic_lib/ar_archiver.hpp>
218
219
// compiler
220
#include <cppad/cg/model/compiler/c_compiler.hpp>
221
#include <cppad/cg/model/compiler/abstract_c_compiler.hpp>
222
#include <cppad/cg/model/compiler/gcc_compiler.hpp>
223
#include <cppad/cg/model/compiler/clang_compiler.hpp>
224
225
// model source code generation helpers
226
#include <cppad/cg/model/threadpool/pthread_pool_c.hpp>
227
#include <cppad/cg/model/threadpool/pthread_pool_h.hpp>
228
#include <cppad/cg/model/threadpool/openmp_c.hpp>
229
#include <cppad/cg/model/threadpool/openmp_h.hpp>
230
#include <cppad/cg/model/model_c_source_gen.hpp>
231
#include <cppad/cg/model/model_c_source_gen_impl.hpp>
232
#include <cppad/cg/model/model_library_c_source_gen.hpp>
233
#include <cppad/cg/model/model_library_c_source_gen_impl.hpp>
234
235
#include <cppad/cg/model/model_c_source_gen_for0.hpp>
236
#include <cppad/cg/model/model_c_source_gen_for1.hpp>
237
#include <cppad/cg/model/model_c_source_gen_rev1.hpp>
238
#include <cppad/cg/model/model_c_source_gen_rev2.hpp>
239
#include <cppad/cg/model/model_c_source_gen_jac.hpp>
240
#include <cppad/cg/model/model_c_source_gen_hes.hpp>
241
#include <cppad/cg/model/patterns/model_c_source_gen_loops.hpp>
242
#include <cppad/cg/model/patterns/model_c_source_gen_loops_for0.hpp>
243
#include <cppad/cg/model/patterns/model_c_source_gen_loops_for1.hpp>
244
#include <cppad/cg/model/patterns/model_c_source_gen_loops_jac.hpp>
245
#include <cppad/cg/model/patterns/model_c_source_gen_loops_jac_fr1.hpp>
246
#include <cppad/cg/model/patterns/model_c_source_gen_loops_hess.hpp>
247
#include <cppad/cg/model/patterns/model_c_source_gen_loops_rev1.hpp>
248
#include <cppad/cg/model/patterns/model_c_source_gen_loops_rev2.hpp>
249
#include <cppad/cg/model/patterns/model_c_source_gen_loops_hess_r2.hpp>
250
#include <cppad/cg/model/patterns/hessian_with_loops_info.hpp>
251
252
// automated dynamic library creation
253
#include <cppad/cg/model/dynamic_lib/dynamiclib.hpp>
254
#include <cppad/cg/model/dynamic_lib/dynamic_library_processor.hpp>
255
256
// ---------------------------------------------------------------------------
257
// automated dynamic library creation for Linux
258
#include <cppad/cg/model/dynamic_lib/linux/linux_dynamiclib_model.hpp>
259
#include <cppad/cg/model/dynamic_lib/linux/linux_dynamiclib.hpp>
260
#include <cppad/cg/model/dynamic_lib/linux/linux_dynamic_model_library_processor.hpp>
261
262
#endif
263
include
cppad
cg
cppadcg.hpp
Generated on Fri Feb 7 2020 15:19:14 for CppADCodeGen by
1.8.13