|
GiNaC
1.6.2
|
00001 00005 /* 00006 * GiNaC Copyright (C) 1999-2011 Johannes Gutenberg University Mainz, Germany 00007 * 00008 * This program is free software; you can redistribute it and/or modify 00009 * it under the terms of the GNU General Public License as published by 00010 * the Free Software Foundation; either version 2 of the License, or 00011 * (at your option) any later version. 00012 * 00013 * This program is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 * GNU General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU General Public License 00019 * along with this program; if not, write to the Free Software 00020 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00021 */ 00022 00023 #ifndef GINAC_FLAGS_H 00024 #define GINAC_FLAGS_H 00025 00026 namespace GiNaC { 00027 00029 class expand_options { 00030 public: 00031 enum { 00032 expand_indexed = 0x0001, 00033 expand_function_args = 0x0002, 00034 expand_rename_idx = 0x0004 00035 }; 00036 }; 00037 00039 class has_options { 00040 public: 00041 enum { 00042 algebraic = 0x0001 00043 }; 00044 }; 00045 00047 class subs_options { 00048 public: 00049 enum { 00050 no_pattern = 0x0001, 00051 subs_no_pattern = 0x0001, // for backwards compatibility 00052 algebraic = 0x0002, 00053 subs_algebraic = 0x0002, // for backwards compatibility 00054 pattern_is_product = 0x0004, 00055 pattern_is_not_product = 0x0008, 00056 no_index_renaming = 0x0010, 00057 // To indicate that we want to substitue an index by something that is 00058 // is not an index. Without this flag the index value would be 00059 // substituted in that case. 00060 really_subs_idx = 0x0020 00061 }; 00062 }; 00063 00065 class domain { 00066 public: 00067 enum { 00068 complex, 00069 real, 00070 positive 00071 }; 00072 }; 00073 00075 class series_options { 00076 public: 00077 enum { 00082 suppress_branchcut = 0x0001 00083 }; 00084 }; 00085 00087 class determinant_algo { 00088 public: 00089 enum { 00092 automatic, 00101 gauss, 00113 divfree, 00119 laplace, 00135 bareiss 00136 }; 00137 }; 00138 00140 class solve_algo { 00141 public: 00142 enum { 00145 automatic, 00155 gauss, 00167 divfree, 00184 bareiss 00185 }; 00186 }; 00187 00190 class status_flags { 00191 public: 00192 enum { 00193 dynallocated = 0x0001, 00194 evaluated = 0x0002, 00195 expanded = 0x0004, 00196 hash_calculated = 0x0008, 00197 not_shareable = 0x0010, 00198 has_indices = 0x0020, 00199 has_no_indices = 0x0040 // ! (has_indices || has_no_indices) means "don't know" 00200 }; 00201 }; 00202 00204 class info_flags { 00205 public: 00206 enum { 00207 // answered by class numeric, add, mul and symbols/constants in particular domains 00208 numeric, 00209 real, 00210 rational, 00211 integer, 00212 crational, 00213 cinteger, 00214 positive, 00215 negative, 00216 nonnegative, 00217 posint, 00218 negint, 00219 nonnegint, 00220 even, 00221 odd, 00222 prime, 00223 00224 // answered by class relation 00225 relation, 00226 relation_equal, 00227 relation_not_equal, 00228 relation_less, 00229 relation_less_or_equal, 00230 relation_greater, 00231 relation_greater_or_equal, 00232 00233 // answered by class symbol 00234 symbol, 00235 00236 // answered by class lst 00237 list, 00238 00239 // answered by class exprseq 00240 exprseq, 00241 00242 // answered by classes numeric, symbol, add, mul, power 00243 polynomial, 00244 integer_polynomial, 00245 cinteger_polynomial, 00246 rational_polynomial, 00247 crational_polynomial, 00248 rational_function, 00249 algebraic, 00250 00251 // answered by class indexed 00252 indexed, // class can carry indices 00253 has_indices, // object has at least one index 00254 00255 // answered by class idx 00256 idx, 00257 00258 // answered by classes numeric, symbol, add, mul, power 00259 expanded 00260 }; 00261 }; 00262 00263 class return_types { 00264 public: 00265 enum { 00266 commutative, 00267 noncommutative, 00268 noncommutative_composite 00269 }; 00270 }; 00271 00274 class remember_strategies { 00275 public: 00276 enum { 00277 delete_never, 00278 delete_lru, 00279 delete_lfu, 00280 delete_cyclic 00281 }; 00282 }; 00283 00285 class factor_options { 00286 public: 00287 enum { 00288 polynomial = 0x0000, 00289 all = 0x0001 00290 }; 00291 }; 00292 00293 } // namespace GiNaC 00294 00295 #endif // ndef GINAC_FLAGS_H