GiNaC 1.8.10
flags.h
Go to the documentation of this file.
1
5/*
6 * GiNaC Copyright (C) 1999-2026 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, see <https://www.gnu.org/licenses/>.
20 */
21
22#ifndef GINAC_FLAGS_H
23#define GINAC_FLAGS_H
24
25namespace GiNaC {
26
29public:
30 enum {
31 expand_indexed = 0x0001,
34 expand_transcendental = 0x0008
35 };
36};
37
40public:
41 enum {
42 algebraic = 0x0001
43 };
44};
45
48public:
49 enum {
50 no_pattern = 0x0001,
51 subs_no_pattern = 0x0001, // for backwards compatibility
52 algebraic = 0x0002,
53 subs_algebraic = 0x0002, // for backwards compatibility
57 // To indicate that we want to substitute an index by something that
58 // is not an index. Without this flag the index value would be
59 // substituted in that case.
60 really_subs_idx = 0x0020
61 };
62};
63
65class domain {
66public:
67 enum {
71 };
72};
73
76public:
77 enum {
82 suppress_branchcut = 0x0001
83 };
84};
85
88public:
89 enum {
135 bareiss
136 };
137};
138
141public:
142 enum {
193 };
194};
195
199public:
200 enum {
201 dynallocated = 0x0001,
202 evaluated = 0x0002,
203 expanded = 0x0004,
205 not_shareable = 0x0010,
206 has_indices = 0x0020,
207 has_no_indices = 0x0040, // ! (has_indices || has_no_indices) means "don't know"
208 is_positive = 0x0080,
209 is_negative = 0x0100,
210 purely_indefinite = 0x0200 // If set in a mul, then it does not contains any terms with determined signs, used in power::expand()
211 };
212};
213
216public:
217 enum {
218 // answered by class numeric, add, mul, function and symbols/constants in particular domains
234
235 // answered by class relation
243
244 // answered by class symbol
246
247 // answered by class lst
249
250 // answered by class exprseq
252
253 // answered by classes numeric, symbol, add, mul, power
260
261 // answered by class indexed
262 indexed, // class can carry indices
263 has_indices, // object has at least one index
264
265 // answered by class idx
267
268 // answered by classes numeric, symbol, add, mul, power
270
271 // is meaningful for mul only
273 };
274};
275
284
296
299public:
300 enum {
301 polynomial = 0x0000,
302 all = 0x0001
303 };
304};
305
306} // namespace GiNaC
307
308#endif // ndef GINAC_FLAGS_H
Switch to control algorithm for determinant computation.
Definition flags.h:87
@ automatic
Let the system choose.
Definition flags.h:92
@ divfree
Division-free elimination.
Definition flags.h:113
@ laplace
Laplace elimination.
Definition flags.h:119
@ gauss
Gauss elimination.
Definition flags.h:101
@ bareiss
Bareiss fraction-free elimination.
Definition flags.h:135
Domain of an object.
Definition flags.h:65
Flags to control the behavior of expand().
Definition flags.h:28
@ expand_transcendental
expands transcendental functions like log and exp
Definition flags.h:34
@ expand_indexed
expands (a+b).i to a.i+b.i
Definition flags.h:31
@ expand_rename_idx
used internally by mul::expand()
Definition flags.h:33
@ expand_function_args
expands the arguments of functions
Definition flags.h:32
Flags to control the polynomial factorization.
Definition flags.h:298
@ all
factor all polynomial subexpressions
Definition flags.h:302
@ polynomial
factor only expressions that are polynomials
Definition flags.h:301
Flags to control the behavior of has().
Definition flags.h:39
@ algebraic
enable algebraic matching
Definition flags.h:42
Possible attributes an object can have.
Definition flags.h:215
@ relation_greater_or_equal
Definition flags.h:242
@ relation_less_or_equal
Definition flags.h:240
Strategies how to clean up the function remember cache.
Definition flags.h:287
@ delete_never
Let table grow undefinitely.
Definition flags.h:290
@ delete_cyclic
First (oldest) one in list.
Definition flags.h:293
@ delete_lfu
Least frequently used.
Definition flags.h:292
@ delete_lru
Least recently used.
Definition flags.h:291
Flags to control series expansion.
Definition flags.h:75
@ suppress_branchcut
Suppress branch cuts in series expansion.
Definition flags.h:82
Switch to control algorithm for linear system solving.
Definition flags.h:140
@ bareiss
Bareiss fraction-free elimination.
Definition flags.h:184
@ markowitz
Markowitz-ordered Gaussian elimination.
Definition flags.h:192
@ automatic
Let the system choose.
Definition flags.h:145
@ divfree
Division-free elimination.
Definition flags.h:167
@ gauss
Gauss elimination.
Definition flags.h:155
Flags to store information about the state of an object.
Definition flags.h:198
@ expanded
.expand(0) has already done its job (other expand() options ignore this flag)
Definition flags.h:203
@ evaluated
.eval() has already done its job
Definition flags.h:202
@ dynallocated
heap-allocated (i.e. created by new if we want to be clever and bypass the stack,
Definition flags.h:201
@ hash_calculated
.calchash() has already done its job
Definition flags.h:204
@ not_shareable
don't share instances of this object between different expressions unless explicitly asked to (used b...
Definition flags.h:205
Flags to control the behavior of subs().
Definition flags.h:47
@ pattern_is_not_product
used internally by expairseq::subschildren()
Definition flags.h:55
@ no_pattern
disable pattern matching
Definition flags.h:50
@ pattern_is_product
used internally by expairseq::subschildren()
Definition flags.h:54
@ algebraic
enable algebraic substitutions
Definition flags.h:52
Definition add.cpp:35

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