My Project
variable.h
Go to the documentation of this file.
1 /* emacs edit mode for this file is -*- C++ -*- */
2 
3 /**
4  * @file variable.h
5  *
6  * operations on variables
7 **/
8 #ifndef INCL_VARIABLE_H
9 #define INCL_VARIABLE_H
10 
11 // #include "config.h"
12 
13 #ifndef NOSTREAMIO
14 # ifdef HAVE_IOSTREAM
15 # include <iostream>
16 # define OSTREAM std::ostream
17 # elif defined(HAVE_IOSTREAM_H)
18 # include <iostream.h>
19 # define OSTREAM ostream
20 # endif
21 #endif /* NOSTREAMIO */
22 
23 #include "cf_defs.h"
24 
25 /*BEGINPUBLIC*/
26 
27 class CanonicalForm;
28 
29 /**
30  * factory's class for variables
31 **/
33 {
34 private:
35  int _level;
36  Variable( int l, bool flag );
37 public:
38  Variable() : _level(LEVELBASE) {}
39  Variable( int l );
40  Variable( char name );
41  Variable( int l, char name );
42  Variable( const Variable & v ) : _level(v._level) {}
43  ~Variable() {};
44  Variable& operator= ( const Variable & v )
45  {
46  _level = v._level;
47  return *this;
48  }
49  int level() const { return _level; }
50  char name() const;
51  static Variable highest() { return Variable( LEVELQUOT-1 ); }
52  Variable next() const { return Variable( _level+1 ); }
53  friend bool operator == ( const Variable & lhs, const Variable & rhs )
54  {
55  return lhs._level == rhs._level;
56  }
57  friend bool operator != ( const Variable & lhs, const Variable & rhs )
58  {
59  return lhs._level != rhs._level;
60  }
61  friend bool operator > ( const Variable & lhs, const Variable & rhs )
62  {
63  return lhs._level > rhs._level;
64  }
65  friend bool operator < ( const Variable & lhs, const Variable & rhs )
66  {
67  return lhs._level < rhs._level;
68  }
69  friend bool operator >= ( const Variable & lhs, const Variable & rhs )
70  {
71  return lhs._level >= rhs._level;
72  }
73  friend bool operator <= ( const Variable & lhs, const Variable & rhs )
74  {
75  return lhs._level <= rhs._level;
76  }
77 #ifndef NOSTREAMIO
78  friend OSTREAM & operator << ( OSTREAM & os, const Variable & v );
79 #endif /* NOSTREAMIO */
80  friend void swap_levels();
81  /** returns a symbolic root of polynomial with name @a name.
82  * Use it to define algebraic variables
83  * @note: algebraic variables have a level < 0
84  **/
85  friend Variable rootOf( const CanonicalForm &, char name );
86 };
87 
88 /** returns a symbolic root of polynomial with name @a name
89  * Use it to define algebraic variables
90  * @note: algebraic variables have a level < 0
91 **/
92 Variable FACTORY_PUBLIC rootOf( const CanonicalForm &, char name = '@' );
93 
94 inline int level( const Variable & v ) { return v.level(); }
95 inline char name( const Variable & v ) { return v.name(); }
96 
97 void setReduce( const Variable & alpha, bool reduce );
98 void setMipo ( const Variable & alpha, const CanonicalForm & mipo);
99 CanonicalForm getMipo( const Variable & alpha, const Variable & x );
100 bool hasMipo( const Variable & alpha );
101 
102 char getDefaultVarName();
103 char getDefaultExtName();
104 
106 void prune1 (const Variable& alpha);
107 int ExtensionLevel();
108 
109 /*ENDPUBLIC*/
110 
111 // the following functions do not need to be public available
113 class InternalPoly;
115 bool getReduce( const Variable & alpha );
116 
117 #endif /* ! INCL_VARIABLE_H */
bool operator!=(const Rational &a, const Rational &b)
Definition: GMPrat.cc:318
bool operator<(const Rational &a, const Rational &b)
Definition: GMPrat.cc:288
bool operator==(const Rational &a, const Rational &b)
Definition: GMPrat.cc:312
bool operator>(const Rational &a, const Rational &b)
Definition: GMPrat.cc:300
bool operator<=(const Rational &a, const Rational &b)
Definition: GMPrat.cc:294
bool operator>=(const Rational &a, const Rational &b)
Definition: GMPrat.cc:306
CanonicalForm reduce(const CanonicalForm &f, const CanonicalForm &M)
polynomials in M.mvar() are considered coefficients M univariate monic polynomial the coefficients of...
Definition: cf_ops.cc:660
int l
Definition: cfEzgcd.cc:100
Variable x
Definition: cfModGcd.cc:4082
factory switches.
#define LEVELBASE
Definition: cf_defs.h:25
#define LEVELQUOT
Definition: cf_defs.h:27
factory's main class
Definition: canonicalform.h:86
factory's class for polynomials
Definition: int_poly.h:71
factory's class for variables
Definition: factory.h:127
Variable(char name)
Variable(const Variable &v)
Definition: variable.h:42
Variable(int l, bool flag)
Variable(int l)
friend void swap_levels()
Variable()
Definition: variable.h:38
char name() const
int level() const
Definition: variable.h:49
Variable next() const
Definition: variable.h:52
static Variable highest()
Definition: variable.h:51
~Variable()
Definition: variable.h:43
int _level
Definition: factory.h:129
Variable(int l, char name)
Variable alpha
Definition: facAbsBiFact.cc:51
CanonicalForm mipo
Definition: facAlgExt.cc:57
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:39
#define FACTORY_PUBLIC
Definition: globaldefs.h:25
ostream & operator<<(ostream &s, const spectrum &spec)
Definition: semic.cc:249
int name
New type name for int.
Definition: templateForC.h:21
void setReduce(const Variable &alpha, bool reduce)
Definition: variable.cc:238
bool getReduce(const Variable &alpha)
Definition: variable.cc:232
#define OSTREAM
Definition: variable.h:16
int level(const Variable &v)
Definition: variable.h:94
char name(const Variable &v)
Definition: variable.h:95
Variable FACTORY_PUBLIC rootOf(const CanonicalForm &, char name='@')
returns a symbolic root of polynomial with name name Use it to define algebraic variables
Definition: variable.cc:162
char getDefaultVarName()
Definition: variable.cc:244
void prune1(const Variable &alpha)
Definition: variable.cc:291
int ExtensionLevel()
Definition: variable.cc:254
InternalPoly * getInternalMipo(const Variable &alpha)
Definition: variable.cc:201
CanonicalForm getMipo(const Variable &alpha, const Variable &x)
Definition: variable.cc:207
void FACTORY_PUBLIC prune(Variable &alpha)
Definition: variable.cc:261
void setMipo(const Variable &alpha, const CanonicalForm &mipo)
Definition: variable.cc:219
char getDefaultExtName()
Definition: variable.cc:249
bool hasMipo(const Variable &alpha)
Definition: variable.cc:226