GiNaC  1.8.0
flags.h
Go to the documentation of this file.
1 
5 /*
6  * GiNaC Copyright (C) 1999-2020 Johannes Gutenberg University Mainz, Germany
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22 
23 #ifndef GINAC_FLAGS_H
24 #define GINAC_FLAGS_H
25 
26 namespace GiNaC {
27 
30 public:
31  enum {
32  expand_indexed = 0x0001,
34  expand_rename_idx = 0x0004,
36  };
37 };
38 
40 class has_options {
41 public:
42  enum {
43  algebraic = 0x0001
44  };
45 };
46 
48 class subs_options {
49 public:
50  enum {
51  no_pattern = 0x0001,
52  subs_no_pattern = 0x0001, // for backwards compatibility
53  algebraic = 0x0002,
54  subs_algebraic = 0x0002, // for backwards compatibility
55  pattern_is_product = 0x0004,
58  // To indicate that we want to substitute an index by something that
59  // is not an index. Without this flag the index value would be
60  // substituted in that case.
61  really_subs_idx = 0x0020
62  };
63 };
64 
66 class domain {
67 public:
68  enum {
72  };
73 };
74 
77 public:
78  enum {
84  };
85 };
86 
89 public:
90  enum {
137  };
138 };
139 
141 class solve_algo {
142 public:
143  enum {
194  };
195 };
196 
200 public:
201  enum {
202  dynallocated = 0x0001,
203  evaluated = 0x0002,
204  expanded = 0x0004,
205  hash_calculated = 0x0008,
206  not_shareable = 0x0010,
207  has_indices = 0x0020,
208  has_no_indices = 0x0040, // ! (has_indices || has_no_indices) means "don't know"
209  is_positive = 0x0080,
210  is_negative = 0x0100,
211  purely_indefinite = 0x0200 // If set in a mul, then it does not contains any terms with determined signs, used in power::expand()
212  };
213 };
214 
216 class info_flags {
217 public:
218  enum {
219  // answered by class numeric, add, mul, function and symbols/constants in particular domains
235 
236  // answered by class relation
244 
245  // answered by class symbol
247 
248  // answered by class lst
250 
251  // answered by class exprseq
253 
254  // answered by classes numeric, symbol, add, mul, power
261 
262  // answered by class indexed
263  indexed, // class can carry indices
264  has_indices, // object has at least one index
265 
266  // answered by class idx
268 
269  // answered by classes numeric, symbol, add, mul, power
271 
272  // is meaningful for mul only
274  };
275 };
276 
278 public:
279  enum {
283  };
284 };
285 
289 public:
290  enum {
295  };
296 };
297 
300 public:
301  enum {
302  polynomial = 0x0000,
303  all = 0x0001
304  };
305 };
306 
307 } // namespace GiNaC
308 
309 #endif // ndef GINAC_FLAGS_H
Least recently used.
Definition: flags.h:292
Strategies how to clean up the function remember cache.
Definition: flags.h:288
Flags to control the polynomial factorization.
Definition: flags.h:299
Flags to control the behavior of subs().
Definition: flags.h:48
First (oldest) one in list.
Definition: flags.h:294
expands (a+b).i to a.i+b.i
Definition: flags.h:32
Switch to control algorithm for determinant computation.
Definition: flags.h:88
don't share instances of this object between different expressions unless explicitly asked to (used b...
Definition: flags.h:206
factor only expressions that are polynomials
Definition: flags.h:302
Definition: add.cpp:38
Let table grow undefinitely.
Definition: flags.h:291
Suppress branch cuts in series expansion.
Definition: flags.h:83
Bareiss fraction-free elimination.
Definition: flags.h:136
used internally by expairseq::subschildren()
Definition: flags.h:55
Division-free elimination.
Definition: flags.h:114
disable pattern matching
Definition: flags.h:51
used internally by mul::expand()
Definition: flags.h:34
Let the system choose.
Definition: flags.h:146
Bareiss fraction-free elimination.
Definition: flags.h:185
Domain of an object.
Definition: flags.h:66
factor all polynomial subexpressions
Definition: flags.h:303
Flags to control the behavior of expand().
Definition: flags.h:29
Laplace elimination.
Definition: flags.h:120
expands transcendental functions like log and exp
Definition: flags.h:35
expands the arguments of functions
Definition: flags.h:33
Possible attributes an object can have.
Definition: flags.h:216
Division-free elimination.
Definition: flags.h:168
Least frequently used.
Definition: flags.h:293
enable algebraic substitutions
Definition: flags.h:53
enable algebraic matching
Definition: flags.h:43
Flags to store information about the state of an object.
Definition: flags.h:199
used internally by expairseq::subschildren()
Definition: flags.h:56
Gauss elimination.
Definition: flags.h:156
Flags to control series expansion.
Definition: flags.h:76
Gauss elimination.
Definition: flags.h:102
.calchash() has already done its job
Definition: flags.h:205
Flags to control the behavior of has().
Definition: flags.h:40
.expand(0) has already done its job (other expand() options ignore this flag)
Definition: flags.h:204
Switch to control algorithm for linear system solving.
Definition: flags.h:141
heap-allocated (i.e. created by new if we want to be clever and bypass the stack, ...
Definition: flags.h:202
.eval() has already done its job
Definition: flags.h:203
Let the system choose.
Definition: flags.h:93
Markowitz-ordered Gaussian elimination.
Definition: flags.h:193

This page is part of the GiNaC developer's reference. It was generated automatically by doxygen. For an introduction, see the tutorial.