]> www.ginac.de Git - ginac.git/blobdiff - ginac/flags.h
Fix some apparent typos and misindentations.
[ginac.git] / ginac / flags.h
index 372b89932ec995a4f8fe1c2de6c778163cb02150..41965e5020e45fb0956aeb6d6ef2f9e993e52b2c 100644 (file)
@@ -3,7 +3,7 @@
  *  Collection of all flags used through the GiNaC framework. */
 
 /*
- *  GiNaC Copyright (C) 1999-2007 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2015 Johannes Gutenberg University Mainz, Germany
  *
  *  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
@@ -20,8 +20,8 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#ifndef __GINAC_FLAGS_H__
-#define __GINAC_FLAGS_H__
+#ifndef GINAC_FLAGS_H
+#define GINAC_FLAGS_H
 
 namespace GiNaC {
 
@@ -30,7 +30,9 @@ class expand_options {
 public:
        enum {
                expand_indexed = 0x0001,      ///< expands (a+b).i to a.i+b.i
-               expand_function_args = 0x0002 ///< expands the arguments of functions
+               expand_function_args = 0x0002, ///< expands the arguments of functions
+               expand_rename_idx = 0x0004, ///< used internally by mul::expand()
+               expand_transcendental = 0x0008 ///< expands transcendental functions like log and exp
        };
 };
 
@@ -38,7 +40,7 @@ public:
 class has_options {
 public:
        enum {
-               algebraic = 0x0001,              ///< enable algebraic matching
+               algebraic = 0x0001              ///< enable algebraic matching
        };
 };
 
@@ -53,7 +55,7 @@ public:
                pattern_is_product = 0x0004,     ///< used internally by expairseq::subschildren()
                pattern_is_not_product = 0x0008, ///< used internally by expairseq::subschildren()
                no_index_renaming = 0x0010,
-               // To indicate that we want to substitue an index by something that is
+               // To indicate that we want to substitute an index by something that
                // is not an index. Without this flag the index value would be
                // substituted in that case.
                really_subs_idx = 0x0020
@@ -195,7 +197,10 @@ public:
                hash_calculated = 0x0008, ///< .calchash() has already done its job
                not_shareable   = 0x0010, ///< don't share instances of this object between different expressions unless explicitly asked to (used by ex::compare())
                has_indices     = 0x0020,
-               has_no_indices  = 0x0040  // ! (has_indices || has_no_indices) means "don't know"
+               has_no_indices  = 0x0040, // ! (has_indices || has_no_indices) means "don't know"
+               is_positive     = 0x0080,
+               is_negative     = 0x0100,
+               purely_indefinite = 0x0200  // If set in a mul, then it does not contains any terms with determined signs, used in power::expand()
        };
 };
 
@@ -203,7 +208,7 @@ public:
 class info_flags {
 public:
        enum {
-               // answered by class numeric and symbols/constants in particular domains
+               // answered by class numeric, add, mul, function and symbols/constants in particular domains
                numeric,
                real,
                rational,
@@ -255,7 +260,10 @@ public:
                idx,
 
                // answered by classes numeric, symbol, add, mul, power
-               expanded
+               expanded,
+
+               // is meaningful for mul only
+               indefinite
        };
 };
 
@@ -280,6 +288,15 @@ public:
        };
 };
 
+/** Flags to control the polynomial factorization. */
+class factor_options {
+public:
+       enum {
+               polynomial = 0x0000, ///< factor only expressions that are polynomials
+               all        = 0x0001  ///< factor all polynomial subexpressions
+       };
+};
+
 } // namespace GiNaC
 
-#endif // ndef __GINAC_FLAGS_H__
+#endif // ndef GINAC_FLAGS_H