Data Structures | Macros | Functions
variable.h File Reference

operations on variables More...

#include <iostream>
#include "cf_defs.h"

Go to the source code of this file.

Data Structures

class  Variable
 factory's class for variables More...
 

Macros

#define OSTREAM   std::ostream
 

Functions

Variable rootOf (const CanonicalForm &, char name= '@')
 returns a symbolic root of polynomial with name name Use it to define algebraic variables More...
 
int level (const Variable &v)
 
char name (const Variable &v)
 
void setReduce (const Variable &alpha, bool reduce)
 
void setMipo (const Variable &alpha, const CanonicalForm &mipo)
 
CanonicalForm getMipo (const Variable &alpha, const Variable &x)
 
bool hasMipo (const Variable &alpha)
 
char getDefaultVarName ()
 
char getDefaultExtName ()
 
void prune (Variable &alpha)
 
void prune1 (const Variable &alpha)
 
int ExtensionLevel ()
 
CanonicalForm getMipo (const Variable &alpha)
 
InternalPolygetInternalMipo (const Variable &alpha)
 
bool getReduce (const Variable &alpha)
 

Detailed Description

operations on variables

Definition in file variable.h.

Macro Definition Documentation

#define OSTREAM   std::ostream

Definition at line 16 of file variable.h.

Function Documentation

int ExtensionLevel ( )

Definition at line 254 of file variable.cc.

255 {
256  if( var_names_ext == 0)
257  return 0;
258  return strlen( var_names_ext )-1;
259 }
static char * var_names_ext
Definition: variable.cc:43
char getDefaultExtName ( )

Definition at line 249 of file variable.cc.

250 {
251  return default_name_ext;
252 }
static char default_name_ext
Definition: variable.cc:45
char getDefaultVarName ( )

Definition at line 244 of file variable.cc.

245 {
246  return default_name;
247 }
static char default_name
Definition: variable.cc:44
InternalPoly* getInternalMipo ( const Variable alpha)

Definition at line 201 of file variable.cc.

202 {
203  ASSERT( alpha.level() < 0 && alpha.level() != LEVELBASE, "illegal extension" );
204  return algextensions[-alpha.level()].mipo();
205 }
int level() const
Definition: variable.h:49
#define LEVELBASE
Definition: cf_defs.h:16
static ext_entry * algextensions
Definition: variable.cc:41
#define ASSERT(expression, message)
Definition: cf_assert.h:99
InternalPoly * mipo()
Definition: variable.cc:36
CanonicalForm getMipo ( const Variable alpha,
const Variable x 
)

Definition at line 207 of file variable.cc.

208 {
209  ASSERT( alpha.level() < 0 && alpha.level() != LEVELBASE, "illegal extension" );
210  return CanonicalForm( algextensions[-alpha.level()].mipo()->copyObject() )(x,alpha);
211 }
int level() const
Definition: variable.h:49
#define LEVELBASE
Definition: cf_defs.h:16
InternalCF * copyObject()
Definition: int_cf.h:58
factory's main class
Definition: canonicalform.h:75
static ext_entry * algextensions
Definition: variable.cc:41
#define ASSERT(expression, message)
Definition: cf_assert.h:99
InternalPoly * mipo()
Definition: variable.cc:36
CanonicalForm getMipo ( const Variable alpha)

Definition at line 213 of file variable.cc.

214 {
215  ASSERT( alpha.level() < 0 && alpha.level() != LEVELBASE, "illegal extension" );
216  return CanonicalForm( algextensions[-alpha.level()].mipo()->copyObject() );
217 }
int level() const
Definition: variable.h:49
#define LEVELBASE
Definition: cf_defs.h:16
InternalCF * copyObject()
Definition: int_cf.h:58
factory's main class
Definition: canonicalform.h:75
static ext_entry * algextensions
Definition: variable.cc:41
#define ASSERT(expression, message)
Definition: cf_assert.h:99
InternalPoly * mipo()
Definition: variable.cc:36
bool getReduce ( const Variable alpha)

Definition at line 232 of file variable.cc.

233 {
234  ASSERT( alpha.level() < 0 && alpha.level() != LEVELBASE, "illegal extension" );
235  return algextensions[-alpha.level()].reduce();
236 }
int level() const
Definition: variable.h:49
#define LEVELBASE
Definition: cf_defs.h:16
bool & reduce()
Definition: variable.cc:38
static ext_entry * algextensions
Definition: variable.cc:41
#define ASSERT(expression, message)
Definition: cf_assert.h:99
bool hasMipo ( const Variable alpha)

Definition at line 226 of file variable.cc.

227 {
228  ASSERT( alpha.level() < 0, "illegal extension" );
229  return (alpha.level() != LEVELBASE && (algextensions!=NULL) && getReduce(alpha) );
230 }
int level() const
Definition: variable.h:49
#define LEVELBASE
Definition: cf_defs.h:16
bool getReduce(const Variable &alpha)
Definition: variable.cc:232
#define NULL
Definition: omList.c:10
static ext_entry * algextensions
Definition: variable.cc:41
#define ASSERT(expression, message)
Definition: cf_assert.h:99
int level ( const Variable v)
inline

Definition at line 94 of file variable.h.

94 { return v.level(); }
int level() const
Definition: variable.h:49
char name ( const Variable v)
inline

Definition at line 95 of file variable.h.

95 { return v.name(); }
char name() const
Definition: variable.cc:122
void prune ( Variable alpha)

Definition at line 261 of file variable.cc.

262 {
263  int i, n = strlen( var_names_ext );
264  ASSERT (n+1 >= -alpha.level(), "wrong variable");
265  if (-alpha.level() == 1)
266  {
267  delete [] var_names_ext;
268  delete [] algextensions;
269  var_names_ext= 0;
270  algextensions= 0;
271  alpha= Variable();
272  return;
273  }
274  char * newvarnames = new char [-alpha.level() + 1];
275  for ( i = 0; i < -alpha.level(); i++ )
276  newvarnames[i] = var_names_ext[i];
277  newvarnames[-alpha.level()] = 0;
278  delete [] var_names_ext;
279  var_names_ext = newvarnames;
280  ext_entry * newalgext = new ext_entry [-alpha.level()];
281  for ( i = 0; i < -alpha.level(); i++ )
282  newalgext[i] = algextensions[i];
283  delete [] algextensions;
284  algextensions = newalgext;
285  alpha= Variable();
286 }
int level() const
Definition: variable.h:49
static char * var_names_ext
Definition: variable.cc:43
factory's class for variables
Definition: variable.h:32
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
Definition: variable.cc:18
int i
Definition: cfEzgcd.cc:123
static ext_entry * algextensions
Definition: variable.cc:41
#define ASSERT(expression, message)
Definition: cf_assert.h:99
void prune1 ( const Variable alpha)

Definition at line 288 of file variable.cc.

289 {
290  int i, n = strlen( var_names_ext );
291  ASSERT (n+1 >= -alpha.level(), "wrong variable");
292 
293  char * newvarnames = new char [-alpha.level() + 2];
294  for ( i = 0; i <= -alpha.level(); i++ )
295  newvarnames[i] = var_names_ext[i];
296  newvarnames[-alpha.level()+1] = 0;
297  delete [] var_names_ext;
298  var_names_ext = newvarnames;
299  ext_entry * newalgext = new ext_entry [-alpha.level()+1];
300  for ( i = 0; i <= -alpha.level(); i++ )
301  newalgext[i] = algextensions[i];
302  delete [] algextensions;
303  algextensions = newalgext;
304 }
int level() const
Definition: variable.h:49
static char * var_names_ext
Definition: variable.cc:43
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
Definition: variable.cc:18
int i
Definition: cfEzgcd.cc:123
static ext_entry * algextensions
Definition: variable.cc:41
#define ASSERT(expression, message)
Definition: cf_assert.h:99
Variable rootOf ( const CanonicalForm mipo,
char  name 
)

returns a symbolic root of polynomial with name name Use it to define algebraic variables

returns a symbolic root of polynomial with name name.

Note
: algebraic variables have a level < 0

Use it to define algebraic variables

Note
: algebraic variables have a level < 0

Definition at line 162 of file variable.cc.

163 {
164  ASSERT (mipo.isUnivariate(), "not a legal extension");
165 
166  int l;
167  if ( var_names_ext == 0 ) {
168  var_names_ext = new char [3];
169  var_names_ext[0] = '@';
170  var_names_ext[1] = name;
171  var_names_ext[2] = '\0';
172  l = 1;
173  Variable result( -l, true );
174  algextensions = new ext_entry [2];
175  algextensions[1] = ext_entry( 0, false );
176  algextensions[1] = ext_entry( (InternalPoly*)(conv2mipo( mipo, result ).getval()), true );
177  return result;
178  }
179  else {
180  int i, n = strlen( var_names_ext );
181  char * newvarnames = new char [n+2];
182  for ( i = 0; i < n; i++ )
183  newvarnames[i] = var_names_ext[i];
184  newvarnames[n] = name;
185  newvarnames[n+1] = 0;
186  delete [] var_names_ext;
187  var_names_ext = newvarnames;
188  l = n;
189  Variable result( -l, true );
190  ext_entry * newalgext = new ext_entry [n+1];
191  for ( i = 0; i < n; i++ )
192  newalgext[i] = algextensions[i];
193  newalgext[n] = ext_entry( 0, false );
194  delete [] algextensions;
195  algextensions = newalgext;
196  algextensions[n] = ext_entry( (InternalPoly*)(conv2mipo( mipo, result ).getval()), true );
197  return result;
198  }
199 }
static char * var_names_ext
Definition: variable.cc:43
factory's class for variables
Definition: variable.h:32
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
Definition: variable.cc:18
factory's class for polynomials
Definition: int_poly.h:74
int i
Definition: cfEzgcd.cc:123
static CanonicalForm conv2mipo(const CanonicalForm &mipo, const Variable &alpha)
Definition: variable.cc:154
bool isUnivariate() const
char name(const Variable &v)
Definition: variable.h:95
static ext_entry * algextensions
Definition: variable.cc:41
#define ASSERT(expression, message)
Definition: cf_assert.h:99
return result
Definition: facAbsBiFact.cc:76
int l
Definition: cfEzgcd.cc:94
void setMipo ( const Variable alpha,
const CanonicalForm mipo 
)

Definition at line 219 of file variable.cc.

220 {
221  ASSERT( alpha.level() < 0 && alpha.level() != LEVELBASE, "illegal extension" );
222  algextensions[-alpha.level()]= ext_entry( 0, false );
223  algextensions[-alpha.level()]= ext_entry((InternalPoly*)(conv2mipo( mipo, alpha ).getval()), true );
224 }
int level() const
Definition: variable.h:49
#define LEVELBASE
Definition: cf_defs.h:16
Definition: variable.cc:18
factory's class for polynomials
Definition: int_poly.h:74
static CanonicalForm conv2mipo(const CanonicalForm &mipo, const Variable &alpha)
Definition: variable.cc:154
static ext_entry * algextensions
Definition: variable.cc:41
#define ASSERT(expression, message)
Definition: cf_assert.h:99
void setReduce ( const Variable alpha,
bool  reduce 
)

Definition at line 238 of file variable.cc.

239 {
240  ASSERT( alpha.level() < 0 && alpha.level() != LEVELBASE, "illegal extension" );
241  algextensions[-alpha.level()].reduce() = reduce;
242 }
int level() const
Definition: variable.h:49
#define LEVELBASE
Definition: cf_defs.h:16
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
bool & reduce()
Definition: variable.cc:38
static ext_entry * algextensions
Definition: variable.cc:41
#define ASSERT(expression, message)
Definition: cf_assert.h:99