GiNaC 1.8.7
flags.h
Go to the documentation of this file.
1
5/*
6 * GiNaC Copyright (C) 1999-2023 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
26namespace GiNaC {
27
30public:
31 enum {
32 expand_indexed = 0x0001,
35 expand_transcendental = 0x0008
36 };
37};
38
41public:
42 enum {
43 algebraic = 0x0001
44 };
45};
46
49public:
50 enum {
51 no_pattern = 0x0001,
52 subs_no_pattern = 0x0001, // for backwards compatibility
53 algebraic = 0x0002,
54 subs_algebraic = 0x0002, // for backwards compatibility
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
66class domain {
67public:
68 enum {
72 };
73};
74
77public:
78 enum {
83 suppress_branchcut = 0x0001
84 };
85};
86
89public:
90 enum {
136 bareiss
137 };
138};
139
142public:
143 enum {
194 };
195};
196
200public:
201 enum {
202 dynallocated = 0x0001,
203 evaluated = 0x0002,
204 expanded = 0x0004,
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
217public:
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
278public:
279 enum {
283 };
284};
285
289public:
290 enum {
295 };
296};
297
300public:
301 enum {
302 polynomial = 0x0000,
303 all = 0x0001
304 };
305};
306
307} // namespace GiNaC
308
309#endif // ndef GINAC_FLAGS_H
Switch to control algorithm for determinant computation.
Definition: flags.h:88
@ automatic
Let the system choose.
Definition: flags.h:93
@ divfree
Division-free elimination.
Definition: flags.h:114
@ laplace
Laplace elimination.
Definition: flags.h:120
@ gauss
Gauss elimination.
Definition: flags.h:102
@ bareiss
Bareiss fraction-free elimination.
Definition: flags.h:136
Domain of an object.
Definition: flags.h:66
@ positive
Definition: flags.h:71
Flags to control the behavior of expand().
Definition: flags.h:29
@ expand_transcendental
expands transcendental functions like log and exp
Definition: flags.h:35
@ expand_indexed
expands (a+b).i to a.i+b.i
Definition: flags.h:32
@ expand_rename_idx
used internally by mul::expand()
Definition: flags.h:34
@ expand_function_args
expands the arguments of functions
Definition: flags.h:33
Flags to control the polynomial factorization.
Definition: flags.h:299
@ all
factor all polynomial subexpressions
Definition: flags.h:303
@ polynomial
factor only expressions that are polynomials
Definition: flags.h:302
Flags to control the behavior of has().
Definition: flags.h:40
@ algebraic
enable algebraic matching
Definition: flags.h:43
Possible attributes an object can have.
Definition: flags.h:216
@ integer_polynomial
Definition: flags.h:256
@ relation_greater_or_equal
Definition: flags.h:243
@ relation_less_or_equal
Definition: flags.h:241
@ cinteger_polynomial
Definition: flags.h:257
@ crational_polynomial
Definition: flags.h:259
@ rational_polynomial
Definition: flags.h:258
@ relation_not_equal
Definition: flags.h:239
Strategies how to clean up the function remember cache.
Definition: flags.h:288
@ delete_never
Let table grow undefinitely.
Definition: flags.h:291
@ delete_cyclic
First (oldest) one in list.
Definition: flags.h:294
@ delete_lfu
Least frequently used.
Definition: flags.h:293
@ delete_lru
Least recently used.
Definition: flags.h:292
@ noncommutative_composite
Definition: flags.h:282
Flags to control series expansion.
Definition: flags.h:76
@ suppress_branchcut
Suppress branch cuts in series expansion.
Definition: flags.h:83
Switch to control algorithm for linear system solving.
Definition: flags.h:141
@ bareiss
Bareiss fraction-free elimination.
Definition: flags.h:185
@ markowitz
Markowitz-ordered Gaussian elimination.
Definition: flags.h:193
@ automatic
Let the system choose.
Definition: flags.h:146
@ divfree
Division-free elimination.
Definition: flags.h:168
@ gauss
Gauss elimination.
Definition: flags.h:156
Flags to store information about the state of an object.
Definition: flags.h:199
@ expanded
.expand(0) has already done its job (other expand() options ignore this flag)
Definition: flags.h:204
@ evaluated
.eval() has already done its job
Definition: flags.h:203
@ dynallocated
heap-allocated (i.e. created by new if we want to be clever and bypass the stack,
Definition: flags.h:202
@ hash_calculated
.calchash() has already done its job
Definition: flags.h:205
@ not_shareable
don't share instances of this object between different expressions unless explicitly asked to (used b...
Definition: flags.h:206
Flags to control the behavior of subs().
Definition: flags.h:48
@ pattern_is_not_product
used internally by expairseq::subschildren()
Definition: flags.h:56
@ no_pattern
disable pattern matching
Definition: flags.h:51
@ pattern_is_product
used internally by expairseq::subschildren()
Definition: flags.h:55
@ algebraic
enable algebraic substitutions
Definition: flags.h:53
Definition: add.cpp:38

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