My Project  UNKNOWN_GIT_VERSION
canonicalform.h
Go to the documentation of this file.
1 /* emacs edit mode for this file is -*- C++ -*- */
2 
3 /**
4  * @file canonicalform.h
5  *
6  * Header for factory's main class CanonicalForm
7 **/
8 #ifndef INCL_CANONICALFORM_H
9 #define INCL_CANONICALFORM_H
10 
11 // #include "config.h"
12 
13 #ifndef NOSTREAMIO
14 # ifdef HAVE_IOSTREAM
15 # include <iostream>
16 # define OSTREAM std::ostream
17 # define ISTREAM std::istream
18 # elif defined(HAVE_IOSTREAM_H)
19 # include <iostream.h>
20 # define OSTREAM ostream
21 # define ISTREAM istream
22 # endif
23 #endif /* NOSTREAMIO */
24 
25 #include <stdint.h>
26 
27 #include "cf_defs.h"
28 #include "variable.h"
29 #include "factory/cf_gmp.h"
35 #ifdef HAVE_OMALLOC
36 #ifndef XMEMORY_H
37 #include "omalloc/omallocClass.h"
38 #endif
39 #endif
40 
41 /*BEGINPUBLIC*/
42 
43 #undef CF_INLINE
44 #define CF_INLINE
45 #undef CF_NO_INLINE
46 #define CF_NO_INLINE
47 
48 /*ENDPUBLIC*/
49 
50 #ifdef CF_USE_INLINE
51 #undef CF_INLINE
52 #define CF_INLINE inline
53 #else
54 #undef CF_INLINE
55 #define CF_INLINE
56 #endif
57 
58 /*BEGINPUBLIC*/
59 
60 class InternalCF;
61 
62 inline int is_imm ( const InternalCF * const ptr )
63 {
64  // returns 0 if ptr is not immediate
65  return ( ((int)((intptr_t)ptr)) & 3 );
66 }
67 
68 
69 /**
70  * factory's main class
71  *
72  * a CanonicalForm can represent a polynomial over or a constant in F_p,
73  * F_p(alpha), GF (F_p[t]/(Conway polynomial)), Z, or Q
74  *
75  * @sa int_poly.h, variable.h, ffops.h, gfops.h, imm.h, int_int.h, int_rat.h
76 **/
78 #ifdef HAVE_OMALLOC
79 #ifndef XMEMORY_H
80  : public omallocClass
81 #endif
82 #endif
83 {
84 private:
86 public:
87  // constructors, destructors, selectors
91  CF_INLINE CanonicalForm( const int );
92  CF_INLINE CanonicalForm( const long );
93  CF_INLINE CanonicalForm( const Variable & );
94  CF_INLINE CanonicalForm( const Variable &, int );
95  CanonicalForm( const char *, const int base=10 ); // use with caution - does only handle integers !!!
96 
98 
99  InternalCF* getval() const; // use with caution !!!
100 
101  CanonicalForm deepCopy() const;
102 
103  void mpzval(mpz_t val) const;
104  // predicates
105  CF_NO_INLINE bool isOne() const;
106  CF_NO_INLINE bool isZero() const;
107  inline bool isImm() const { return is_imm( value ); };
108 
109  bool inZ() const;
110  bool inQ() const;
111  bool inFF() const;
112  bool inGF() const;
113  bool inBaseDomain() const;
114  bool inExtension() const;
115  bool inCoeffDomain() const;
116  bool inPolyDomain() const;
117  bool inQuotDomain() const;
118 
119  bool isFFinGF() const;
120  bool isUnivariate() const;
121  bool isHomogeneous() const;
122 
123  // conversion functions
124  long intval() const;
125  CanonicalForm mapinto () const;
126 
127  CanonicalForm lc () const;
128  CanonicalForm Lc () const;
129  CanonicalForm LC () const;
130  CanonicalForm LC ( const Variable & v ) const;
131 
132  int degree () const;
133  int degree ( const Variable & v ) const;
134 
135  CanonicalForm tailcoeff () const;
136  CanonicalForm tailcoeff ( const Variable & v ) const;
137  int taildegree () const;
138 
139  int level () const;
140  Variable mvar () const;
141 
142  CanonicalForm num () const;
143  CanonicalForm den () const;
144 
145  // assignment operators
147  CF_NO_INLINE CanonicalForm& operator = ( const long );
148 
154  CanonicalForm& div ( const CanonicalForm& );
155  CanonicalForm& tryDiv (const CanonicalForm&, const CanonicalForm&, bool& );
156  CanonicalForm& mod ( const CanonicalForm& );
157 
158  // evaluation operators
159  CanonicalForm operator () ( const CanonicalForm & f ) const;
160  CanonicalForm operator () ( const CanonicalForm & f, const Variable & v ) const;
161 
162  CanonicalForm operator [] ( int i ) const;
163 
164  CanonicalForm deriv() const;
165  CanonicalForm deriv( const Variable & x ) const;
166 
167  int sign() const;
168  CanonicalForm sqrt() const;
169  int ilog2() const;
170 
171  // comparison operators
172  friend bool operator == ( const CanonicalForm&, const CanonicalForm& );
173  friend bool operator != ( const CanonicalForm&, const CanonicalForm& );
174  friend bool operator > ( const CanonicalForm&, const CanonicalForm& );
175  friend bool operator < ( const CanonicalForm&, const CanonicalForm& );
176 
177  // arithmetic operators
179 
180  friend void divrem ( const CanonicalForm&, const CanonicalForm&, CanonicalForm&, CanonicalForm& );
181  friend bool divremt ( const CanonicalForm&, const CanonicalForm&, CanonicalForm&, CanonicalForm& );
182  friend bool tryDivremt ( const CanonicalForm&, const CanonicalForm&, CanonicalForm&, CanonicalForm&, const CanonicalForm&, bool& );
183 
184  friend CanonicalForm bgcd ( const CanonicalForm &, const CanonicalForm & );
186 
187  // input/output
188 #ifndef NOSTREAMIO
189  void print( OSTREAM&, char * ) const;
190  void print( OSTREAM& ) const;
191  friend OSTREAM& operator << ( OSTREAM&, const CanonicalForm& );
193 #endif /* NOSTREAMIO */
194 
195  // obsolete methods
196  CanonicalForm genZero() const;
197  CanonicalForm genOne() const;
198 
199  friend class CFIterator;
200 };
201 
203 operator + ( const CanonicalForm&, const CanonicalForm& );
204 
206 operator - ( const CanonicalForm&, const CanonicalForm& );
207 
209 operator * ( const CanonicalForm&, const CanonicalForm& );
210 
212 operator / ( const CanonicalForm&, const CanonicalForm& );
213 
215 operator % ( const CanonicalForm&, const CanonicalForm& );
216 
218 div ( const CanonicalForm&, const CanonicalForm& );
219 
221 mod ( const CanonicalForm&, const CanonicalForm& );
222 
223 /*ENDPUBLIC*/
224 
225 #ifdef CF_USE_INLINE
226 #include "cf_inline.cc"
227 #endif
228 
229 /*BEGINPUBLIC*/
230 
231 //{{{ function declarations from canonicalform.cc
232 CanonicalForm blcm ( const CanonicalForm & f, const CanonicalForm & g );
233 
234 CanonicalForm power ( const CanonicalForm & f, int n );
235 
236 CanonicalForm power ( const Variable & v, int n );
237 //}}}
238 
239 //{{{ function declarations from cf_gcd.cc
240 CanonicalForm gcd ( const CanonicalForm&, const CanonicalForm& );
241 
242 CanonicalForm gcd_poly ( const CanonicalForm & f, const CanonicalForm & g );
243 
244 CanonicalForm lcm ( const CanonicalForm&, const CanonicalForm& );
245 
246 CanonicalForm pp ( const CanonicalForm& );
247 
249 
250 CanonicalForm content ( const CanonicalForm&, const Variable& );
251 
253 
254 CanonicalForm vcontent ( const CanonicalForm & f, const Variable & x );
255 //}}}
256 
257 //{{{ function declarations from cf_ops.cc
258 CanonicalForm swapvar ( const CanonicalForm &, const Variable &, const Variable & );
259 
260 CanonicalForm replacevar ( const CanonicalForm &, const Variable &, const Variable & );
261 
262 int getNumVars( const CanonicalForm & f );
263 
265 
266 CanonicalForm apply ( const CanonicalForm & f, void (*mf)( CanonicalForm &, int & ) );
267 
268 CanonicalForm mapdomain ( const CanonicalForm & f, CanonicalForm (*mf)( const CanonicalForm & ) );
269 
270 int * degrees ( const CanonicalForm & f, int * degs = 0 );
271 
272 int totaldegree ( const CanonicalForm & f );
273 
274 int totaldegree ( const CanonicalForm & f, const Variable & v1, const Variable & v2 );
275 
276 int size ( const CanonicalForm & f, const Variable & v );
277 
278 int size ( const CanonicalForm & f );
279 
281 
282 bool hasFirstAlgVar( const CanonicalForm & f, Variable & a);
283 
284 CanonicalForm leftShift (const CanonicalForm& F, int n);
285 //}}}
286 
287 //{{{ inline functions corresponding to CanonicalForm methods
288 //{{{ docu
289 //
290 // - inline functions corresponding to CanonicalForm methods.
291 //
292 // These function exist for convenience only and because it is
293 // more beautiful to write 'degree( f )' than 'f.degree()'.
294 //
295 //}}}
296 inline CanonicalForm
297 lc ( const CanonicalForm & f ) { return f.lc(); }
298 
299 inline CanonicalForm
300 Lc ( const CanonicalForm & f ) { return f.Lc(); }
301 
302 inline CanonicalForm
303 LC ( const CanonicalForm & f ) { return f.LC(); }
304 
305 inline CanonicalForm
306 LC ( const CanonicalForm & f, const Variable & v ) { return f.LC( v ); }
307 
308 inline int
309 degree ( const CanonicalForm & f ) { return f.degree(); }
310 
311 inline int
312 degree ( const CanonicalForm & f, const Variable & v ) { return f.degree( v ); }
313 
314 inline int
315 taildegree ( const CanonicalForm & f ) { return f.taildegree(); }
316 
317 inline CanonicalForm
318 tailcoeff ( const CanonicalForm & f ) { return f.tailcoeff(); }
319 
320 inline CanonicalForm
321 tailcoeff (const CanonicalForm& f, const Variable& v) { return f.tailcoeff(v); }
322 
323 inline int
324 level ( const CanonicalForm & f ) { return f.level(); }
325 
326 inline Variable
327 mvar ( const CanonicalForm & f ) { return f.mvar(); }
328 
329 inline CanonicalForm
330 num ( const CanonicalForm & f ) { return f.num(); }
331 
332 inline CanonicalForm
333 den ( const CanonicalForm & f ) { return f.den(); }
334 
335 inline int
336 sign ( const CanonicalForm & a ) { return a.sign(); }
337 
338 inline CanonicalForm
339 deriv ( const CanonicalForm & f, const Variable & x ) { return f.deriv( x ); }
340 
341 inline CanonicalForm
342 sqrt ( const CanonicalForm & a ) { return a.sqrt(); }
343 
344 inline int
345 ilog2 ( const CanonicalForm & a ) { return a.ilog2(); }
346 
347 inline CanonicalForm
348 mapinto ( const CanonicalForm & f ) { return f.mapinto(); }
349 //}}}
350 
351 //{{{ inline functions
352 inline CanonicalForm
353 head ( const CanonicalForm & f )
354 {
355  if ( f.level() > 0 )
356  return power( f.mvar(), f.degree() ) * f.LC();
357  else
358  return f;
359 }
360 
361 inline int
362 headdegree ( const CanonicalForm & f ) { return totaldegree( head( f ) ); }
363 
364 
365 //}}}
366 
367 //{{{ other function declarations
368 void setCharacteristic( int c ); // -> Fp && Q
369 void setCharacteristic( int c, int n ); // -> PrimePower
370 void setCharacteristic( int c, int n, char name ); // -> GF(q)
371 
372 int getCharacteristic();
373 int getGFDegree();
375 
376 void On( int );
377 void Off( int );
378 bool isOn( int );
379 //}}}
380 
381 //{{{ type definitions
399 //}}}
400 
401 /*ENDPUBLIC*/
402 
403 #endif /* ! INCL_CANONICALFORM_H */
Matrix
Definition: ftmpl_matrix.h:20
lcm
CanonicalForm lcm(const CanonicalForm &, const CanonicalForm &)
CanonicalForm lcm ( const CanonicalForm & f, const CanonicalForm & g )
Definition: cf_gcd.cc:338
CanonicalForm::operator/=
CanonicalForm & operator/=(const CanonicalForm &)
Definition: canonicalform.cc:743
omallocClass.h
CanonicalForm::print
void print(OSTREAM &, char *) const
input/output
Definition: canonicalform.cc:1774
CFAFList
List< CFAFactor > CFAFList
Definition: canonicalform.h:383
CanonicalForm::inQ
bool inQ() const
Definition: canonicalform.cc:77
f
FILE * f
Definition: checklibs.c:9
CanonicalForm::inQuotDomain
bool inQuotDomain() const
Definition: canonicalform.cc:137
CanonicalForm::div
CanonicalForm & div(const CanonicalForm &)
Definition: canonicalform.cc:797
IntList
List< int > IntList
Definition: canonicalform.h:394
CanonicalForm::tryDiv
CanonicalForm & tryDiv(const CanonicalForm &, const CanonicalForm &, bool &)
same as divremt but handles zero divisors in case we are in Z_p[x]/(f) where f is not irreducible
Definition: canonicalform.cc:840
CFListIterator
ListIterator< CanonicalForm > CFListIterator
Definition: canonicalform.h:389
icontent
CanonicalForm icontent(const CanonicalForm &f)
CanonicalForm icontent ( const CanonicalForm & f )
Definition: cf_gcd.cc:71
CFIterator
class to iterate through CanonicalForm's
Definition: cf_iter.h:44
operator+
CF_INLINE CanonicalForm operator+(const CanonicalForm &, const CanonicalForm &)
CF_INLINE CanonicalForm operator +, -, *, /, % ( const CanonicalForm & lhs, const CanonicalForm & rhs...
Definition: cf_inline.cc:496
x
Variable x
Definition: cfModGcd.cc:4023
CanonicalForm::LC
CanonicalForm LC() const
Definition: canonicalform.cc:334
CFArray
Array< CanonicalForm > CFArray
Definition: canonicalform.h:390
CanonicalForm::operator-=
CanonicalForm & operator-=(const CanonicalForm &)
Definition: canonicalform.cc:647
CanonicalForm::operator<<
friend OSTREAM & operator<<(OSTREAM &, const CanonicalForm &)
Definition: canonicalform.cc:1792
CanonicalForm::inBaseDomain
bool inBaseDomain() const
Definition: canonicalform.cc:101
degrees
int * degrees(const CanonicalForm &f, int *degs=0)
int * degrees ( const CanonicalForm & f, int * degs )
Definition: cf_ops.cc:493
cf_gmp.h
ListCFList
List< CFList > ListCFList
Definition: canonicalform.h:392
num
CanonicalForm num(const CanonicalForm &f)
Definition: canonicalform.h:330
CxxTest::base
char N base
Definition: ValueTraits.h:144
Varlist
List< Variable > Varlist
Definition: canonicalform.h:396
CFAFListIterator
ListIterator< CFAFactor > CFAFListIterator
Definition: canonicalform.h:384
power
CanonicalForm power(const CanonicalForm &f, int n)
exponentiation
Definition: canonicalform.cc:1837
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
operator*
CF_INLINE CanonicalForm operator*(const CanonicalForm &, const CanonicalForm &)
Definition: cf_inline.cc:517
CFFList
List< CFFactor > CFFList
Definition: canonicalform.h:386
vcontent
CanonicalForm vcontent(const CanonicalForm &f, const Variable &x)
CanonicalForm vcontent ( const CanonicalForm & f, const Variable & x )
Definition: cf_gcd.cc:225
g
g
Definition: cfModGcd.cc:4031
level
int level(const CanonicalForm &f)
Definition: canonicalform.h:324
mvar
Variable mvar(const CanonicalForm &f)
Definition: canonicalform.h:327
mod
CF_NO_INLINE CanonicalForm mod(const CanonicalForm &, const CanonicalForm &)
Definition: cf_inline.cc:564
CanonicalForm::isHomogeneous
bool isHomogeneous() const
Definition: canonicalform.cc:162
CF_INLINE
#define CF_INLINE
Definition: canonicalform.h:55
CanonicalForm::sign
int sign() const
int CanonicalForm::sign () const
Definition: canonicalform.cc:1295
CFMatrix
Matrix< CanonicalForm > CFMatrix
Definition: canonicalform.h:391
InternalCF
virtual class for internal CanonicalForm's
Definition: int_cf.h:41
deriv
CanonicalForm deriv(const CanonicalForm &f, const Variable &x)
Definition: canonicalform.h:339
CanonicalForm::isImm
bool isImm() const
Definition: canonicalform.h:107
getCharacteristic
int getCharacteristic()
Definition: cf_char.cc:51
CanonicalForm::ilog2
int ilog2() const
int CanonicalForm::ilog2 () const
Definition: canonicalform.cc:1352
CanonicalForm::inGF
bool inGF() const
Definition: canonicalform.cc:95
CanonicalForm::operator-
friend CF_NO_INLINE CanonicalForm operator-(const CanonicalForm &)
CF_INLINE CanonicalForm operator - ( const CanonicalForm & cf )
Definition: cf_inline.cc:438
ftmpl_afactor.h
CanonicalForm::num
CanonicalForm num() const
num() returns the numerator of CO if CO is a rational number, CO itself otherwise.
Definition: canonicalform.cc:578
CanonicalForm::tailcoeff
CanonicalForm tailcoeff() const
tailcoeff() - return least coefficient
Definition: canonicalform.cc:465
CanonicalForm
factory's main class
Definition: canonicalform.h:77
CanonicalForm::value
InternalCF * value
Definition: canonicalform.h:85
CanonicalForm::intval
long intval() const
conversion functions
Definition: canonicalform.cc:197
CanonicalForm::operator[]
CanonicalForm operator[](int i) const
operator []() - return i'th coefficient from CO.
Definition: canonicalform.cc:1212
cf_inline.cc
ListCFListIterator
ListIterator< CFList > ListCFListIterator
Definition: canonicalform.h:393
CanonicalForm::genOne
CanonicalForm genOne() const
Definition: canonicalform.cc:1822
CanonicalForm::isOne
CF_NO_INLINE bool isOne() const
CF_INLINE bool CanonicalForm::isOne, isZero () const.
Definition: cf_inline.cc:354
CanonicalForm::operator==
friend bool operator==(const CanonicalForm &, const CanonicalForm &)
operator ==() - compare canonical forms on (in)equality.
Definition: canonicalform.cc:1408
CFFListIterator
ListIterator< CFFactor > CFFListIterator
Definition: canonicalform.h:387
CanonicalForm::Lc
CanonicalForm Lc() const
Definition: canonicalform.cc:319
CanonicalForm::divremt
friend bool divremt(const CanonicalForm &, const CanonicalForm &, CanonicalForm &, CanonicalForm &)
Definition: canonicalform.cc:1001
i
int i
Definition: cfEzgcd.cc:125
Lc
CanonicalForm Lc(const CanonicalForm &f)
Definition: canonicalform.h:300
swapvar
CanonicalForm swapvar(const CanonicalForm &, const Variable &, const Variable &)
swapvar() - swap variables x1 and x2 in f.
Definition: cf_ops.cc:168
Array< CanonicalForm >
Off
void Off(int)
switches
Definition: canonicalform.cc:1905
operator/
CF_NO_INLINE CanonicalForm operator/(const CanonicalForm &, const CanonicalForm &)
Definition: cf_inline.cc:529
CanonicalForm::mpzval
void mpzval(mpz_t val) const
Definition: canonicalform.cc:49
ftmpl_factor.h
hasFirstAlgVar
bool hasFirstAlgVar(const CanonicalForm &f, Variable &a)
check if poly f contains an algebraic variable a
Definition: cf_ops.cc:665
M
#define M
Definition: sirandom.c:24
content
CanonicalForm content(const CanonicalForm &)
CanonicalForm content ( const CanonicalForm & f )
Definition: cf_gcd.cc:175
IntListIterator
ListIterator< int > IntListIterator
Definition: canonicalform.h:395
isOn
bool isOn(int)
switches
Definition: canonicalform.cc:1912
CanonicalForm::isFFinGF
bool isFFinGF() const
Definition: canonicalform.cc:146
getVars
CanonicalForm getVars(const CanonicalForm &f)
CanonicalForm getVars ( const CanonicalForm & f )
Definition: cf_ops.cc:350
lc
CanonicalForm lc(const CanonicalForm &f)
Definition: canonicalform.h:297
CanonicalForm::bgcd
friend CanonicalForm bgcd(const CanonicalForm &, const CanonicalForm &)
CanonicalForm bgcd ( const CanonicalForm & f, const CanonicalForm & g )
Definition: canonicalform.cc:1589
cf_defs.h
getGFGenerator
CanonicalForm getGFGenerator()
Definition: cf_char.cc:62
CanonicalForm::divrem
friend void divrem(const CanonicalForm &, const CanonicalForm &, CanonicalForm &, CanonicalForm &)
Definition: canonicalform.cc:967
CanonicalForm::operator!=
friend bool operator!=(const CanonicalForm &, const CanonicalForm &)
operator !=() returns true iff lhs does not equal rhs.
Definition: canonicalform.cc:1433
CanonicalForm::deepCopy
CanonicalForm deepCopy() const
Definition: canonicalform.cc:40
CanonicalForm::deriv
CanonicalForm deriv() const
deriv() - return the formal derivation of CO.
Definition: canonicalform.cc:1235
ilog2
int ilog2(const CanonicalForm &a)
Definition: canonicalform.h:345
setCharacteristic
void setCharacteristic(int c)
Definition: cf_char.cc:23
CanonicalForm::operator>
friend bool operator>(const CanonicalForm &, const CanonicalForm &)
operator >() - compare canonical forms.
Definition: canonicalform.cc:1496
size
int size(const CanonicalForm &f, const Variable &v)
int size ( const CanonicalForm & f, const Variable & v )
Definition: cf_ops.cc:600
CanonicalForm::CanonicalForm
CF_INLINE CanonicalForm()
CF_INLINE CanonicalForm::CanonicalForm ()
Definition: cf_inline.cc:126
AFactor
Definition: ftmpl_afactor.h:17
CanonicalForm::~CanonicalForm
CF_NO_INLINE ~CanonicalForm()
CF_INLINE CanonicalForm::~CanonicalForm ()
Definition: cf_inline.cc:253
CF_NO_INLINE
#define CF_NO_INLINE
Definition: canonicalform.h:46
CFAFactor
AFactor< CanonicalForm > CFAFactor
Definition: canonicalform.h:382
pp
CanonicalForm pp(const CanonicalForm &)
CanonicalForm pp ( const CanonicalForm & f )
Definition: cf_gcd.cc:248
CanonicalForm::sqrt
CanonicalForm sqrt() const
CanonicalForm CanonicalForm::sqrt () const.
Definition: canonicalform.cc:1318
taildegree
int taildegree(const CanonicalForm &f)
Definition: canonicalform.h:315
CanonicalForm::operator%=
CanonicalForm & operator%=(const CanonicalForm &)
Definition: canonicalform.cc:883
den
CanonicalForm den(const CanonicalForm &f)
Definition: canonicalform.h:333
ftmpl_array.h
CanonicalForm::den
CanonicalForm den() const
den() returns the denominator of CO if CO is a rational number, 1 (from the current domain!...
Definition: canonicalform.cc:595
variable.h
CanonicalForm::tryDivremt
friend bool tryDivremt(const CanonicalForm &, const CanonicalForm &, CanonicalForm &, CanonicalForm &, const CanonicalForm &, bool &)
same as divremt but handles zero divisors in case we are in Z_p[x]/(f) where f is not irreducible
Definition: canonicalform.cc:1043
CanonicalForm::operator*=
CanonicalForm & operator*=(const CanonicalForm &)
Definition: canonicalform.cc:689
omallocClass
Definition: omallocClass.h:17
CanonicalForm::operator<
friend bool operator<(const CanonicalForm &, const CanonicalForm &)
Definition: canonicalform.cc:1527
getGFDegree
int getGFDegree()
Definition: cf_char.cc:56
headdegree
int headdegree(const CanonicalForm &f)
Definition: canonicalform.h:362
Factor
Definition: ftmpl_factor.h:18
CanonicalForm::inZ
bool inZ() const
predicates
Definition: canonicalform.cc:66
apply
CanonicalForm apply(const CanonicalForm &f, void(*mf)(CanonicalForm &, int &))
CanonicalForm apply ( const CanonicalForm & f, void (*mf)( CanonicalForm &, int & ) )
Definition: cf_ops.cc:402
CanonicalForm::operator=
CF_NO_INLINE CanonicalForm & operator=(const CanonicalForm &)
CF_INLINE CanonicalForm & CanonicalForm::operator = ( const CanonicalForm & cf )
Definition: cf_inline.cc:272
div
CF_NO_INLINE CanonicalForm div(const CanonicalForm &, const CanonicalForm &)
CF_INLINE CanonicalForm div, mod ( const CanonicalForm & lhs, const CanonicalForm & rhs )
Definition: cf_inline.cc:553
sqrt
CanonicalForm sqrt(const CanonicalForm &a)
Definition: canonicalform.h:342
CanonicalForm::inCoeffDomain
bool inCoeffDomain() const
Definition: canonicalform.cc:119
CanonicalForm::genZero
CanonicalForm genZero() const
genOne(), genZero()
Definition: canonicalform.cc:1808
leftShift
CanonicalForm leftShift(const CanonicalForm &F, int n)
left shift the main variable of F by n
Definition: cf_ops.cc:683
Variable
factory's class for variables
Definition: factory.h:117
CanonicalForm::degree
int degree() const
Returns -1 for the zero polynomial and 0 if CO is in a base domain.
Definition: canonicalform.cc:381
ftmpl_list.h
CanonicalForm::inExtension
bool inExtension() const
Definition: canonicalform.cc:110
is_imm
int is_imm(const InternalCF *const ptr)
Definition: canonicalform.h:62
gcd_poly
CanonicalForm gcd_poly(const CanonicalForm &f, const CanonicalForm &g)
CanonicalForm gcd_poly ( const CanonicalForm & f, const CanonicalForm & g )
Definition: cf_gcd.cc:91
getNumVars
int getNumVars(const CanonicalForm &f)
int getNumVars ( const CanonicalForm & f )
Definition: cf_ops.cc:314
CanonicalForm::mvar
Variable mvar() const
mvar() returns the main variable of CO or Variable() if CO is in a base domain.
Definition: canonicalform.cc:560
blcm
CanonicalForm blcm(const CanonicalForm &f, const CanonicalForm &g)
Definition: canonicalform.cc:1757
LC
CanonicalForm LC(const CanonicalForm &f)
Definition: canonicalform.h:303
CanonicalForm::mod
CanonicalForm & mod(const CanonicalForm &)
Definition: canonicalform.cc:925
mapinto
CanonicalForm mapinto(const CanonicalForm &f)
Definition: canonicalform.h:348
CanonicalForm::lc
CanonicalForm lc() const
CanonicalForm CanonicalForm::lc (), Lc (), LC (), LC ( v ) const.
Definition: canonicalform.cc:304
name
char name(const Variable &v)
Definition: factory.h:180
CanonicalForm::taildegree
int taildegree() const
taildegree() returns -1 for the zero polynomial, 0 if CO is in a base domain, otherwise the least deg...
Definition: canonicalform.cc:519
ftmpl_matrix.h
ISTREAM
#define ISTREAM
Definition: canonicalform.h:17
CanonicalForm::bextgcd
friend CanonicalForm bextgcd(const CanonicalForm &, const CanonicalForm &, CanonicalForm &, CanonicalForm &)
CanonicalForm bextgcd ( const CanonicalForm & f, const CanonicalForm & g, CanonicalForm & a,...
Definition: canonicalform.cc:1663
CanonicalForm::isUnivariate
bool isUnivariate() const
Definition: canonicalform.cc:152
operator%
CF_NO_INLINE CanonicalForm operator%(const CanonicalForm &, const CanonicalForm &)
Definition: cf_inline.cc:540
VarlistIterator
ListIterator< Variable > VarlistIterator
Definition: canonicalform.h:397
CanonicalForm::operator()
CanonicalForm operator()(const CanonicalForm &f) const
operator ()() - evaluation operator.
Definition: canonicalform.cc:1104
v
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
tailcoeff
CanonicalForm tailcoeff(const CanonicalForm &f)
Definition: canonicalform.h:318
List
Definition: ftmpl_list.h:20
CanonicalForm::mapinto
CanonicalForm mapinto() const
Definition: canonicalform.cc:206
replacevar
CanonicalForm replacevar(const CanonicalForm &, const Variable &, const Variable &)
CanonicalForm replacevar ( const CanonicalForm & f, const Variable & x1, const Variable & x2 )
Definition: cf_ops.cc:271
OSTREAM
#define OSTREAM
Definition: canonicalform.h:16
CFList
List< CanonicalForm > CFList
Definition: canonicalform.h:388
Intarray
Array< int > Intarray
Definition: canonicalform.h:398
head
CanonicalForm head(const CanonicalForm &f)
Definition: canonicalform.h:353
CanonicalForm::isZero
CF_NO_INLINE bool isZero() const
Definition: cf_inline.cc:372
mapdomain
CanonicalForm mapdomain(const CanonicalForm &f, CanonicalForm(*mf)(const CanonicalForm &))
CanonicalForm mapdomain ( const CanonicalForm & f, CanonicalForm (*mf)( const CanonicalForm & ) )
Definition: cf_ops.cc:440
operator-
CF_NO_INLINE CanonicalForm operator-(const CanonicalForm &, const CanonicalForm &)
Definition: cf_inline.cc:505
CanonicalForm::level
int level() const
level() returns the level of CO.
Definition: canonicalform.cc:543
CFFactor
Factor< CanonicalForm > CFFactor
Definition: canonicalform.h:385
sign
int sign(const CanonicalForm &a)
Definition: canonicalform.h:336
CanonicalForm::operator+=
CanonicalForm & operator+=(const CanonicalForm &)
assignment operators
Definition: canonicalform.cc:605
CanonicalForm::inFF
bool inFF() const
Definition: canonicalform.cc:89
degree
int degree(const CanonicalForm &f)
Definition: canonicalform.h:309
On
void On(int)
switches
Definition: canonicalform.cc:1898
gcd
CanonicalForm gcd(const CanonicalForm &, const CanonicalForm &)
Definition: cf_gcd.cc:257
CanonicalForm::operator>>
friend ISTREAM & operator>>(ISTREAM &, CanonicalForm &)
Definition: canonicalform.cc:1799
totaldegree
int totaldegree(const CanonicalForm &f)
int totaldegree ( const CanonicalForm & f )
Definition: cf_ops.cc:523
CanonicalForm::inPolyDomain
bool inPolyDomain() const
Definition: canonicalform.cc:128
ListIterator
Definition: ftmpl_list.h:17
CanonicalForm::getval
InternalCF * getval() const
Definition: canonicalform.cc:31