*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- enum { suppress_branchcut = 0x0001
- };
+ enum {
+ suppress_branchcut = 0x0001
+ };
+};
+
+/** Switch to control algorithm for determinant computation. */
+class determinant_algo {
+public:
+ enum {
+ automatic, //! Let the system choose
+ gauss, //! Gauss elimiation
+ divfree, //! Division-free elimination
+ laplace, //! Laplace (or minor) elimination
+ bareiss //! Bareiss fraction-free elimination
+ };
- enum { laplace,
- bareiss
- };
+ enum {
+ automatic, //! Let the system choose
+ gauss, //! Gauss elimiation
+ divfree, //! Division-free elimination
+ bareiss //! Bareiss fraction-free elimination
+ };
- enum { dynallocated = 0x0001,
- evaluated = 0x0002,
- expanded = 0x0004,
- hash_calculated = 0x0008
- };
+ enum {
+ dynallocated = 0x0001, //! Heap-allocated (i.e. created by new)
+ evaluated = 0x0002, //! .eval() has already done its job
+ expanded = 0x0004, //! .expand() has already done its job
+ hash_calculated = 0x0008 //! .calchash() has already done its job
+ };
- enum {
- // answered by class numeric
- numeric,
- real,
- rational,
- integer,
- crational,
- cinteger,
- positive,
- negative,
- nonnegative,
- posint,
- negint,
- nonnegint,
- even,
- odd,
- prime,
-
- // answered by class relation
- relation,
- relation_equal,
- relation_not_equal,
- relation_less,
- relation_less_or_equal,
- relation_greater,
- relation_greater_or_equal,
-
- // answered by class symbol
- symbol,
-
- // answered by class lst
- list,
-
- // answered by class exprseq
- exprseq,
-
- // answered by classes numeric, symbol, add, mul, power
- polynomial,
- integer_polynomial,
- cinteger_polynomial,
- rational_polynomial,
- crational_polynomial,
- rational_function,
- algebraic,
-
- // answered by class indexed
- indexed, // class can carry indices
- has_indices, // object has at least one index
-
- // answered by class idx
- idx,
-
- // answered by class coloridx
- coloridx,
-
- // answered by class lorentzidx
- lorentzidx
- };
+ enum {
+ // answered by class numeric
+ numeric,
+ real,
+ rational,
+ integer,
+ crational,
+ cinteger,
+ positive,
+ negative,
+ nonnegative,
+ posint,
+ negint,
+ nonnegint,
+ even,
+ odd,
+ prime,
+
+ // answered by class relation
+ relation,
+ relation_equal,
+ relation_not_equal,
+ relation_less,
+ relation_less_or_equal,
+ relation_greater,
+ relation_greater_or_equal,
+
+ // answered by class symbol
+ symbol,
+
+ // answered by class lst
+ list,
+
+ // answered by class exprseq
+ exprseq,
+
+ // answered by classes numeric, symbol, add, mul, power
+ polynomial,
+ integer_polynomial,
+ cinteger_polynomial,
+ rational_polynomial,
+ crational_polynomial,
+ rational_function,
+ algebraic,
+
+ // answered by class indexed
+ indexed, // class can carry indices
+ has_indices, // object has at least one index
+
+ // answered by class idx
+ idx,
+
+ // answered by class coloridx
+ coloridx,
+
+ // answered by class lorentzidx
+ lorentzidx
+ };
- enum { delete_never, // let table grow undefinitely, not recommmended, but currently default
- delete_lru, // least recently used
- delete_lfu, // least frequently used
- delete_cyclic // first (oldest) one in list
- };
+ enum {
+ delete_never, //! Let table grow undefinitely, not recommmended, but currently default
+ delete_lru, //! Least recently used
+ delete_lfu, //! Least frequently used
+ delete_cyclic //! First (oldest) one in list
+ };