My Project  debian-1:4.1.1-p2+ds-4build2
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 **/
32 class Variable
33 {
34 private:
35  int _level;
36  Variable( int l, bool flag );
37 public:
39  Variable( int l );
40  Variable( char name );
41  Variable( int l, char name );
42  Variable( const Variable & v ) : _level(v._level) {}
43  ~Variable() {};
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 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 
105 void prune (Variable& alpha);
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 */
Variable::operator<
friend bool operator<(const Variable &lhs, const Variable &rhs)
Definition: factory.h:150
getMipo
CanonicalForm getMipo(const Variable &alpha, const Variable &x)
Definition: variable.cc:207
LEVELQUOT
#define LEVELQUOT
Definition: cf_defs.h:18
level
int level(const Variable &v)
Definition: variable.h:94
x
Variable x
Definition: cfModGcd.cc:4023
Variable::operator!=
friend bool operator!=(const Variable &lhs, const Variable &rhs)
Definition: factory.h:142
rootOf
Variable rootOf(const CanonicalForm &, char name='@')
returns a symbolic root of polynomial with name name Use it to define algebraic variables
Definition: variable.cc:162
prune
void prune(Variable &alpha)
Definition: variable.cc:261
reduce
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:646
ExtensionLevel
int ExtensionLevel()
Definition: variable.cc:254
Variable::rootOf
friend Variable rootOf(const CanonicalForm &, char name)
returns a symbolic root of polynomial with name name.
Definition: variable.cc:162
name
char name(const Variable &v)
Definition: variable.h:95
Variable::next
Variable next() const
Definition: variable.h:52
Variable::operator<=
friend bool operator<=(const Variable &lhs, const Variable &rhs)
Definition: factory.h:158
Variable::highest
static Variable highest()
Definition: variable.h:51
CanonicalForm
factory's main class
Definition: canonicalform.h:77
OSTREAM
#define OSTREAM
Definition: variable.h:16
setMipo
void setMipo(const Variable &alpha, const CanonicalForm &mipo)
Definition: variable.cc:219
getInternalMipo
InternalPoly * getInternalMipo(const Variable &alpha)
Definition: variable.cc:201
alpha
Variable alpha
Definition: facAbsBiFact.cc:52
cf_defs.h
InternalPoly
factory's class for polynomials
Definition: int_poly.h:71
getDefaultVarName
char getDefaultVarName()
Definition: variable.cc:244
hasMipo
bool hasMipo(const Variable &alpha)
Definition: variable.cc:226
getDefaultExtName
char getDefaultExtName()
Definition: variable.cc:249
Variable::operator=
Variable & operator=(const Variable &v)
Definition: factory.h:129
Variable::operator<<
friend OSTREAM & operator<<(OSTREAM &os, const Variable &v)
Definition: variable.cc:133
Variable::Variable
Variable(const Variable &v)
Definition: variable.h:42
getReduce
bool getReduce(const Variable &alpha)
Definition: variable.cc:232
Variable::level
int level() const
Definition: variable.h:49
Variable::operator>
friend bool operator>(const Variable &lhs, const Variable &rhs)
Definition: factory.h:146
Variable::Variable
Variable()
Definition: factory.h:123
LEVELBASE
#define LEVELBASE
Definition: cf_defs.h:16
Variable
factory's class for variables
Definition: factory.h:117
setReduce
void setReduce(const Variable &alpha, bool reduce)
Definition: variable.cc:238
Variable::name
char name() const
Definition: variable.cc:122
Variable::swap_levels
friend void swap_levels()
Variable::_level
int _level
Definition: factory.h:120
l
int l
Definition: cfEzgcd.cc:93
v
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
mipo
CanonicalForm mipo
Definition: facAlgExt.cc:57
Variable::~Variable
~Variable()
Definition: variable.h:43
Variable::operator>=
friend bool operator>=(const Variable &lhs, const Variable &rhs)
Definition: factory.h:154
Variable::operator==
friend bool operator==(const Variable &lhs, const Variable &rhs)
Definition: factory.h:138
prune1
void prune1(const Variable &alpha)
Definition: variable.cc:289