My Project  UNKNOWN_GIT_VERSION
factory.h
Go to the documentation of this file.
1 /* factory.h automatically generated by makeheader from factory.template */
2 /* emacs edit mode for this file is -*- C++ -*- */
3 
4 #ifndef INCL_FACTORY_H
5 #define INCL_FACTORY_H
6 
7 /* factory.template is a template to generate `factory.h' */
8 
9 /**
10 *
11 * @file factory.h
12 *
13 * `factory.h' is the user interface to Factory. Created
14 * automatically by `makeheader', it collects all important
15 * declarations from all important Factory header files into one
16 * overall header file leaving out all boring Factory internal
17 * stuff. See `./bin/makeheader' for an explanation of the syntax
18 * of this file.
19 *
20 * Note: In this file the order of "includes" matters (since this
21 * are not real includes)! In general, files at the end depend
22 * on files at the beginning.
23 *
24 **/
25 
26 #include "factory/factoryconf.h"
27 #include <stdint.h>
28 #ifdef HAVE_OMALLOC
29 #include "omalloc/omalloc.h"
30 #ifndef XMEMORY_H
31 #include "omalloc/omallocClass.h"
32 #endif
33 #endif
34 
35 #ifndef NOSTREAMIO
36 # ifdef HAVE_IOSTREAM
37 # include <iostream>
38 # define OSTREAM std::ostream
39 # define ISTREAM std::istream
40 # elif defined(HAVE_IOSTREAM_H)
41 # include <iostream.h>
42 # define OSTREAM ostream
43 # define ISTREAM istream
44 # endif
45 #endif /* ! NOSTREAMIO */
46 
47 #include "factory/cf_gmp.h"
48 
54 
55 /* stuff included from ./cf_globals.h */
56 
57 
58 extern const char factoryConfiguration[];
59 
60 
61 /* stuff included from ./cf_primes.h */
62 
63 
64 int cf_getPrime( int i );
65 
66 int cf_getNumPrimes();
67 
68 int cf_getSmallPrime( int i );
69 
71 
72 int cf_getBigPrime( int i );
73 
74 int cf_getNumBigPrimes();
75 
76 
77 /* stuff included from ./cf_defs.h */
78 
79 
80 #define LEVELBASE -1000000
81 #define LEVELTRANS -500000
82 #define LEVELQUOT 1000000
83 #define LEVELEXPR 1000001
84 
85 #define UndefinedDomain 32000
86 #define GaloisFieldDomain 4
87 #define FiniteFieldDomain 3
88 #define RationalDomain 2
89 #define IntegerDomain 1
90 
91 /// set to 1 for computations over Q
92 static const int SW_RATIONAL = 0;
93 /// set to 1 for symmetric representation over F_q
94 static const int SW_SYMMETRIC_FF = 1;
95 /// set to 1 to use EZGCD over Z
96 static const int SW_USE_EZGCD = 2;
97 /// set to 1 to use EZGCD over F_q
98 static const int SW_USE_EZGCD_P = 3;
99 /// set to 1 to sort factors in a factorization
100 static const int SW_USE_NTL_SORT=4;
101 /// set to 1 to use modular gcd over Z
102 static const int SW_USE_CHINREM_GCD=5;
103 /// set to 1 to use Encarnacion GCD over Q(a)
104 static const int SW_USE_QGCD=6;
105 /// set to 1 to use modular GCD over F_q
106 static const int SW_USE_FF_MOD_GCD=7;
107 
108 
109 /* stuff included from ./variable.h */
110 
111 
112 class CanonicalForm;
113 
114 /**
115  * factory's class for variables
116 **/
117 class Variable
118 {
119 private:
120  int _level;
121  Variable( int l, bool flag );
122 public:
124  Variable( int l );
125  Variable( char name );
126  Variable( int l, char name );
127  Variable( const Variable & v ) : _level(v._level) {}
128  ~Variable() {};
130  {
131  _level = v._level;
132  return *this;
133  }
134  int level() const { return _level; }
135  char name() const;
136  static Variable highest() { return Variable( LEVELQUOT-1 ); }
137  Variable next() const { return Variable( _level+1 ); }
138  friend bool operator == ( const Variable & lhs, const Variable & rhs )
139  {
140  return lhs._level == rhs._level;
141  }
142  friend bool operator != ( const Variable & lhs, const Variable & rhs )
143  {
144  return lhs._level != rhs._level;
145  }
146  friend bool operator > ( const Variable & lhs, const Variable & rhs )
147  {
148  return lhs._level > rhs._level;
149  }
150  friend bool operator < ( const Variable & lhs, const Variable & rhs )
151  {
152  return lhs._level < rhs._level;
153  }
154  friend bool operator >= ( const Variable & lhs, const Variable & rhs )
155  {
156  return lhs._level >= rhs._level;
157  }
158  friend bool operator <= ( const Variable & lhs, const Variable & rhs )
159  {
160  return lhs._level <= rhs._level;
161  }
162 #ifndef NOSTREAMIO
163  friend OSTREAM & operator << ( OSTREAM & os, const Variable & v );
164 #endif /* NOSTREAMIO */
165  friend void swap_levels();
166  /** returns a symbolic root of polynomial with name @a name.
167  * Use it to define algebraic variables
168  * @note: algebraic variables have a level < 0
169  **/
170  friend Variable rootOf( const CanonicalForm &, char name );
171 };
172 
173 /** returns a symbolic root of polynomial with name @a name
174  * Use it to define algebraic variables
175  * @note: algebraic variables have a level < 0
176 **/
177 Variable rootOf( const CanonicalForm &, char name = '@' );
178 
179 inline int level( const Variable & v ) { return v.level(); }
180 inline char name( const Variable & v ) { return v.name(); }
181 
182 void setReduce( const Variable & alpha, bool reduce );
183 void setMipo ( const Variable & alpha, const CanonicalForm & mipo);
184 CanonicalForm getMipo( const Variable & alpha, const Variable & x );
185 bool hasMipo( const Variable & alpha );
186 
187 char getDefaultVarName();
188 char getDefaultExtName();
189 
190 void prune (Variable& alpha);
191 void prune1 (const Variable& alpha);
192 int ExtensionLevel();
193 
194 
195 /* stuff included from ./canonicalform.h */
196 
197 
198 #undef CF_INLINE
199 #define CF_INLINE
200 #undef CF_NO_INLINE
201 #define CF_NO_INLINE
202 
203 
204 class InternalCF;
205 
206 inline int is_imm ( const InternalCF * const ptr )
207 {
208  // returns 0 if ptr is not immediate
209  return ( ((int)((intptr_t)ptr)) & 3 );
210 }
211 
212 
213 /**
214  * factory's main class
215  *
216  * a CanonicalForm can represent a polynomial over or a constant in F_p,
217  * F_p(alpha), GF (F_p[t]/(Conway polynomial)), Z, or Q
218  *
219  * @sa int_poly.h, variable.h, ffops.h, gfops.h, imm.h, int_int.h, int_rat.h
220 **/
221 class CanonicalForm
222 #ifdef HAVE_OMALLOC
223 #ifndef XMEMORY_H
224  : public omallocClass
225 #endif
226 #endif
227 {
228 private:
229  InternalCF *value;
230 public:
231  // constructors, destructors, selectors
235  CF_INLINE CanonicalForm( const int );
236  CF_INLINE CanonicalForm( const long );
239  CanonicalForm( const char *, const int base=10 ); // use with caution - does only handle integers !!!
240 
242 
243  InternalCF* getval() const; // use with caution !!!
244 
246 
247  void mpzval(mpz_t val) const;
248  // predicates
249  CF_NO_INLINE bool isOne() const;
250  CF_NO_INLINE bool isZero() const;
251  inline bool isImm() const { return is_imm( value ); };
252 
253  bool inZ() const;
254  bool inQ() const;
255  bool inFF() const;
256  bool inGF() const;
257  bool inBaseDomain() const;
258  bool inExtension() const;
259  bool inCoeffDomain() const;
260  bool inPolyDomain() const;
261  bool inQuotDomain() const;
262 
263  bool isFFinGF() const;
264  bool isUnivariate() const;
265  bool isHomogeneous() const;
266 
267  // conversion functions
268  long intval() const;
270 
271  CanonicalForm lc () const;
272  CanonicalForm Lc () const;
273  CanonicalForm LC () const;
274  CanonicalForm LC ( const Variable & v ) const;
275 
276  int degree () const;
277  int degree ( const Variable & v ) const;
278 
280  CanonicalForm tailcoeff ( const Variable & v ) const;
281  int taildegree () const;
282 
283  int level () const;
284  Variable mvar () const;
285 
286  CanonicalForm num () const;
287  CanonicalForm den () const;
288 
289  // assignment operators
292 
299  CanonicalForm& tryDiv (const CanonicalForm&, const CanonicalForm&, bool& );
301 
302  // evaluation operators
304  CanonicalForm operator () ( const CanonicalForm & f, const Variable & v ) const;
305 
307 
309  CanonicalForm deriv( const Variable & x ) const;
310 
311  int sign() const;
313  int ilog2() const;
314 
315  // comparison operators
316  friend bool operator == ( const CanonicalForm&, const CanonicalForm& );
317  friend bool operator != ( const CanonicalForm&, const CanonicalForm& );
318  friend bool operator > ( const CanonicalForm&, const CanonicalForm& );
319  friend bool operator < ( const CanonicalForm&, const CanonicalForm& );
320 
321  // arithmetic operators
323 
324  friend void divrem ( const CanonicalForm&, const CanonicalForm&, CanonicalForm&, CanonicalForm& );
325  friend bool divremt ( const CanonicalForm&, const CanonicalForm&, CanonicalForm&, CanonicalForm& );
326  friend bool tryDivremt ( const CanonicalForm&, const CanonicalForm&, CanonicalForm&, CanonicalForm&, const CanonicalForm&, bool& );
327 
328  friend CanonicalForm bgcd ( const CanonicalForm &, const CanonicalForm & );
330 
331  // input/output
332 #ifndef NOSTREAMIO
333  void print( OSTREAM&, char * ) const;
334  void print( OSTREAM& ) const;
335  friend OSTREAM& operator << ( OSTREAM&, const CanonicalForm& );
337 #endif /* NOSTREAMIO */
338 
339  // obsolete methods
342 
343  friend class CFIterator;
344 };
345 
347 operator + ( const CanonicalForm&, const CanonicalForm& );
348 
350 operator - ( const CanonicalForm&, const CanonicalForm& );
351 
353 operator * ( const CanonicalForm&, const CanonicalForm& );
354 
356 operator / ( const CanonicalForm&, const CanonicalForm& );
357 
359 operator % ( const CanonicalForm&, const CanonicalForm& );
360 
362 div ( const CanonicalForm&, const CanonicalForm& );
363 
365 mod ( const CanonicalForm&, const CanonicalForm& );
366 
367 
368 //{{{ function declarations from canonicalform.cc
369 CanonicalForm blcm ( const CanonicalForm & f, const CanonicalForm & g );
370 
371 CanonicalForm power ( const CanonicalForm & f, int n );
372 
373 CanonicalForm power ( const Variable & v, int n );
374 //}}}
375 
376 //{{{ function declarations from cf_gcd.cc
377 CanonicalForm gcd ( const CanonicalForm&, const CanonicalForm& );
378 
379 CanonicalForm gcd_poly ( const CanonicalForm & f, const CanonicalForm & g );
380 
381 CanonicalForm lcm ( const CanonicalForm&, const CanonicalForm& );
382 
383 CanonicalForm pp ( const CanonicalForm& );
384 
386 
387 CanonicalForm content ( const CanonicalForm&, const Variable& );
388 
390 
391 CanonicalForm vcontent ( const CanonicalForm & f, const Variable & x );
392 //}}}
393 
394 //{{{ function declarations from cf_ops.cc
395 CanonicalForm swapvar ( const CanonicalForm &, const Variable &, const Variable & );
396 
397 CanonicalForm replacevar ( const CanonicalForm &, const Variable &, const Variable & );
398 
399 int getNumVars( const CanonicalForm & f );
400 
402 
403 CanonicalForm apply ( const CanonicalForm & f, void (*mf)( CanonicalForm &, int & ) );
404 
405 CanonicalForm mapdomain ( const CanonicalForm & f, CanonicalForm (*mf)( const CanonicalForm & ) );
406 
407 int * degrees ( const CanonicalForm & f, int * degs = 0 );
408 
409 int totaldegree ( const CanonicalForm & f );
410 
411 int totaldegree ( const CanonicalForm & f, const Variable & v1, const Variable & v2 );
412 
413 int size ( const CanonicalForm & f, const Variable & v );
414 
415 int size ( const CanonicalForm & f );
416 
418 
419 bool hasFirstAlgVar( const CanonicalForm & f, Variable & a);
420 
421 CanonicalForm leftShift (const CanonicalForm& F, int n);
422 //}}}
423 
424 //{{{ inline functions corresponding to CanonicalForm methods
425 //{{{ docu
426 //
427 // - inline functions corresponding to CanonicalForm methods.
428 //
429 // These function exist for convenience only and because it is
430 // more beautiful to write 'degree( f )' than 'f.degree()'.
431 //
432 //}}}
433 inline CanonicalForm
434 lc ( const CanonicalForm & f ) { return f.lc(); }
435 
436 inline CanonicalForm
437 Lc ( const CanonicalForm & f ) { return f.Lc(); }
438 
439 inline CanonicalForm
440 LC ( const CanonicalForm & f ) { return f.LC(); }
441 
442 inline CanonicalForm
443 LC ( const CanonicalForm & f, const Variable & v ) { return f.LC( v ); }
444 
445 inline int
446 degree ( const CanonicalForm & f ) { return f.degree(); }
447 
448 inline int
449 degree ( const CanonicalForm & f, const Variable & v ) { return f.degree( v ); }
450 
451 inline int
452 taildegree ( const CanonicalForm & f ) { return f.taildegree(); }
453 
454 inline CanonicalForm
455 tailcoeff ( const CanonicalForm & f ) { return f.tailcoeff(); }
456 
457 inline CanonicalForm
458 tailcoeff (const CanonicalForm& f, const Variable& v) { return f.tailcoeff(v); }
459 
460 inline int
461 level ( const CanonicalForm & f ) { return f.level(); }
462 
463 inline Variable
464 mvar ( const CanonicalForm & f ) { return f.mvar(); }
465 
466 inline CanonicalForm
467 num ( const CanonicalForm & f ) { return f.num(); }
468 
469 inline CanonicalForm
470 den ( const CanonicalForm & f ) { return f.den(); }
471 
472 inline int
473 sign ( const CanonicalForm & a ) { return a.sign(); }
474 
475 inline CanonicalForm
476 deriv ( const CanonicalForm & f, const Variable & x ) { return f.deriv( x ); }
477 
478 inline CanonicalForm
479 sqrt ( const CanonicalForm & a ) { return a.sqrt(); }
480 
481 inline int
482 ilog2 ( const CanonicalForm & a ) { return a.ilog2(); }
483 
484 inline CanonicalForm
485 mapinto ( const CanonicalForm & f ) { return f.mapinto(); }
486 //}}}
487 
488 //{{{ inline functions
489 inline CanonicalForm
490 head ( const CanonicalForm & f )
491 {
492  if ( f.level() > 0 )
493  return power( f.mvar(), f.degree() ) * f.LC();
494  else
495  return f;
496 }
497 
498 inline int
499 headdegree ( const CanonicalForm & f ) { return totaldegree( head( f ) ); }
500 
501 
502 //}}}
503 
504 //{{{ other function declarations
505 void setCharacteristic( int c ); // -> Fp && Q
506 void setCharacteristic( int c, int n ); // -> PrimePower
507 void setCharacteristic( int c, int n, char name ); // -> GF(q)
508 
509 int getCharacteristic();
510 int getGFDegree();
512 
513 void On( int );
514 void Off( int );
515 bool isOn( int );
516 //}}}
517 
518 //{{{ type definitions
536 //}}}
537 
538 
539 /* stuff included from ./cf_algorithm.h */
540 
541 
542 //{{{ function declarations from cf_algorithm.cc
543 CanonicalForm psr ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x );
544 
545 CanonicalForm psq ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x );
546 
547 void psqr ( const CanonicalForm & f, const CanonicalForm & g, CanonicalForm & q, CanonicalForm & r, const Variable & x );
548 
550 
551 bool fdivides ( const CanonicalForm & f, const CanonicalForm & g );
552 
553 bool fdivides ( const CanonicalForm & f, const CanonicalForm & g, CanonicalForm& quot );
554 
555 bool tryFdivides ( const CanonicalForm & f, const CanonicalForm & g, const CanonicalForm& M, bool& fail );
556 
558 
560 //}}}
561 
562 //{{{ function declarations from cf_chinese.cc
563 void chineseRemainder ( const CanonicalForm & x1, const CanonicalForm & q1, const CanonicalForm & x2, const CanonicalForm & q2, CanonicalForm & xnew, CanonicalForm & qnew );
564 
565 void chineseRemainder ( const CFArray & x, const CFArray & q, CanonicalForm & xnew, CanonicalForm & qnew );
566 
568 
569 
570 CanonicalForm Farey ( const CanonicalForm & f, const CanonicalForm & q );
571 //}}}
572 
573 //{{{ function declarations from cf_factor.cc
574 extern int singular_homog_flag;
575 
576 bool isPurePoly(const CanonicalForm & f);
577 
578 bool isPurePoly_m(const CanonicalForm & f);
579 
580 CFFList factorize ( const CanonicalForm & f, bool issqrfree = false );
581 
582 CFFList factorize ( const CanonicalForm & f, const Variable & alpha );
583 
584 CFFList sqrFree ( const CanonicalForm & f, bool sort= false );
585 
586 CanonicalForm homogenize( const CanonicalForm & f, const Variable & x);
588  const Variable & v1, const Variable & v2);
590 CFList get_Terms( const CanonicalForm & f );
591 void getTerms( const CanonicalForm & f, const CanonicalForm & t, CFList & result );
592 
593 
594 //}}}
595 
596 //{{{ function declarations from cf_linsys.cc
597 bool linearSystemSolve ( CFMatrix & M );
598 
599 CanonicalForm determinant ( const CFMatrix & M, int n );
600 //}}}
601 
602 //{{{ function declarations from cf_resultant.cc
603 CFArray subResChain ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x );
604 
605 CanonicalForm resultant ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x );
606 //}}}
607 
608 /** inline CanonicalForm abs ( const CanonicalForm & f )
609  *
610  * abs() - return absolute value of `f'.
611  *
612  * The absolute value is defined in terms of the function
613  * `sign()'. If it reports negative sign for `f' than -`f' is
614  * returned, otherwise `f'.
615  *
616  * This behaviour is most useful for integers and rationals. But
617  * it may be used to sign-normalize the leading coefficient of
618  * arbitrary polynomials, too.
619  *
620  * Type info:
621  * ----------
622  * f: CurrentPP
623  *
624 **/
625 inline CanonicalForm
626 abs ( const CanonicalForm & f )
627 {
628  // it is not only more general to use `sign()' instead of a
629  // direct comparison `f < 0', it is faster, too
630  if ( sign( f ) < 0 )
631  return -f;
632  else
633  return f;
634 }
635 //}}}
636 
637 
638 /* stuff included from ./cf_eval.h */
639 
640 
641 /**
642  * class to evaluate a polynomial at points
643 **/
644 class Evaluation
645 {
646 protected:
647  CFArray values;
648 public:
650  Evaluation( int min0, int max0 ) : values( min0, max0 ) {}
651  Evaluation( const Evaluation & e ) : values( e.values ) {}
652  virtual ~Evaluation() {}
654  int min() const { return values.min(); }
655  int max() const { return values.max(); }
656  CanonicalForm operator[] ( int i ) const { return values[i]; }
657  CanonicalForm operator[] ( const Variable & v ) const { return operator[](v.level()); }
659  CanonicalForm operator() ( const CanonicalForm & f, int i, int j ) const;
660  void setValue (int i, const CanonicalForm& f);
661  virtual void nextpoint();
662 #ifndef NOSTREAMIO
663  friend OSTREAM& operator<< ( OSTREAM& s, const Evaluation &e );
664 #endif /* NOSTREAMIO */
665 };
666 
667 
668 /* stuff included from ./cf_generator.h */
669 
670 
671 /**
672  * virtual class for generators
673 **/
674 class CFGenerator
675 {
676 public:
678  virtual ~CFGenerator() {}
679  virtual bool hasItems() const { return false; }
680  virtual void reset() {};
681  virtual CanonicalForm item() const { return 0; }
682  virtual void next() {};
683  virtual CFGenerator * clone() const { return new CFGenerator();}
684 };
685 
686 /**
687  * generate integers starting from 0
688 **/
689 class IntGenerator : public CFGenerator
690 {
691 private:
692  int current;
693 public:
696  bool hasItems() const;
697  void reset() { current = 0; }
699  void next();
700  void operator++ () { next(); }
701  void operator++ ( int ) { next(); }
702  CFGenerator * clone() const;
703 };
704 
705 /**
706  * generate all elements in F_p starting from 0
707 **/
708 class FFGenerator : public CFGenerator
709 {
710 private:
711  int current;
712 public:
715  bool hasItems() const;
716  void reset() { current = 0; }
718  void next();
719  void operator++ () { next(); }
720  void operator++ ( int ) { next(); }
721  CFGenerator * clone() const;
722 };
723 
724 /**
725  * generate all elements in GF starting from 0
726 **/
727 class GFGenerator : public CFGenerator
728 {
729 private:
730  int current;
731 public:
734  bool hasItems() const;
735  void reset();
737  void next();
738  void operator++ () { next(); }
739  void operator++ ( int ) { next(); }
740  CFGenerator * clone() const;
741 };
742 
743 /**
744  * generate all elements in F_p(alpha) starting from 0
745 **/
746 class AlgExtGenerator: public CFGenerator
747 {
748 private:
750  FFGenerator **gensf;
751  GFGenerator **gensg;
752  int n;
753  bool nomoreitems;
757 public:
758  AlgExtGenerator( const Variable & a );
760 
761  bool hasItems() const { return ! nomoreitems; }
762  void reset();
764  void next();
765  void operator++ () { next(); }
766  void operator++ ( int ) { next(); }
767  CFGenerator * clone() const;
768 };
769 
770 class CFGenFactory
771 {
772 public:
774 };
775 
776 
777 /* stuff included from ./cf_iter.h */
778 
779 
780 #undef CF_INLINE
781 #define CF_INLINE
782 #undef CF_NO_INLINE
783 #define CF_NO_INLINE
784 
785 
786 class term;
787 typedef term * termList;
788 
789 /**
790  * class to iterate through CanonicalForm's
791  *
792  * @note a (multivariate) polynomial is viewed as a univariate poly in its main
793  * variable
794 **/
795 class CFIterator {
796 private:
799  bool ispoly, hasterms;
800 public:
802  CFIterator ( const CFIterator& );
804  CFIterator ( const CanonicalForm&, const Variable& );
805 
807 
810 
813  CF_NO_INLINE int hasTerms () const; ///< check if iterator has reached
814  ///< the end of CanonicalForm
815  CF_NO_INLINE CanonicalForm coeff () const;///< get the current coefficient
816  CF_NO_INLINE int exp () const; ///< get the current exponent
817 };
818 
819 
820 /* stuff included from ./cf_random.h */
821 
822 
823 /**
824  * virtual class for random element generation
825 **/
826 class CFRandom {
827 public:
828  virtual ~CFRandom() {}
829  virtual CanonicalForm generate() const { return 0; }
830  virtual CFRandom * clone() const { return new CFRandom(); }
831 };
832 
833 /**
834  * generate random elements in GF
835 **/
836 class GFRandom : public CFRandom
837 {
838 public:
839  GFRandom() {};
842  CFRandom * clone() const;
843 };
844 
845 /**
846  * generate random elements in F_p
847 **/
848 class FFRandom : public CFRandom
849 {
850 public:
851  FFRandom() {}
854  CFRandom * clone() const;
855 };
856 
857 /**
858  * generate random integers
859 **/
860 class IntRandom : public CFRandom
861 {
862 private:
863  int max;
864 public:
866  IntRandom( int m );
869  CFRandom * clone() const;
870 };
871 
872 /**
873  * generate random elements in F_p(alpha)
874 **/
875 class AlgExtRandomF : public CFRandom {
876 private:
878  CFRandom * gen;
879  int n;
881  AlgExtRandomF( const Variable & v, CFRandom * g, int nn );
883 public:
886  AlgExtRandomF( const Variable & v1, const Variable & v2 );
889  CFRandom * clone() const;
890 };
891 
892 class CFRandomFactory {
893 public:
894  static CFRandom * generate();
895 };
896 
897 /// random integers with abs less than n
898 int factoryrandom( int n );
899 
900 /// random seed initializer
901 void factoryseed( int s );
902 
903 
904 /* stuff included from ./fac_util.h */
905 
906 
907 /**
908  * class to do operations mod p^k for int's p and k
909 **/
910 class modpk
911 {
912 private:
915  int p;
916  int k;
917 public:
918  modpk();
919  modpk( int q, int l );
920  modpk( const modpk & m );
921  modpk& operator= ( const modpk& m );
922  ~modpk() {}
923  int getp() const { return p; }
924  int getk() const { return k; }
925  CanonicalForm inverse( const CanonicalForm & f, bool symmetric = true ) const;
926  CanonicalForm getpk() const { return pk; }
927  CanonicalForm operator() ( const CanonicalForm & f, bool symmetric = true ) const;
928 };
929 
930 
931 CanonicalForm replaceLc( const CanonicalForm & f, const CanonicalForm & c );
932 
933 
934 /* stuff included from ./cf_map.h */
935 
936 
937 /** class MapPair
938  *
939  * class MapPair - stores one mapping pair (Variable -> CanonicalForm).
940  *
941  * This class is only used to store such pairs. It has no
942  * methods to transform a CanonicalForm as the class CFMap has.
943  *
944  * V, S: the pair (V -> S)
945  *
946 **/
947 /** inline method
948  *
949  * Variable var () const
950  * CanonicalForm subst () const
951  *
952  * var(), subst() - selectors, return V and P, resp.
953  *
954 **/
955 class MapPair
956 {
957 private:
958  Variable V;
960 public:
961  MapPair ( const Variable & v, const CanonicalForm & s ) : V(v), S(s) {}
962  MapPair () : V(), S(1) {}
963  MapPair ( const MapPair & p ) : V(p.V), S(p.S) {}
964  ~MapPair () {}
965  MapPair & operator = ( const MapPair & p );
966  Variable var () const { return V; }
967  CanonicalForm subst () const { return S; }
968 #ifndef NOSTREAMIO
969  void print( OSTREAM&) const;
970  friend OSTREAM & operator << ( OSTREAM & s, const MapPair & p );
971 #endif /* NOSTREAMIO */
972 };
973 
976 
977 /** class CFMap
978  *
979  * class CFMap - class to map canonical forms.
980  *
981  * Use an object of class CFMap to insert 'values' into canonical
982  * form. Such a mapping is defined by a list of MapPairs (V -> S)
983  * describing which canonical form S to insert for variable V.
984  * Hereby, the substituted canonical forms are not subject to
985  * further substitutions.
986  *
987  * P: list of MapPairs, sorted by level in descending order
988  *
989 **/
990 class CFMap
991 {
992 private:
993  MPList P;
994 public:
995  CFMap () {}
996  CFMap ( const CanonicalForm & s ) : P( MapPair( Variable(), s ) ) {}
997  CFMap ( const Variable & v ) : P( MapPair( v, 1 ) ) {}
998  CFMap ( const Variable & v, const CanonicalForm & s ) : P( MapPair( v, s ) ) {}
999  ~CFMap () {}
1000  CFMap ( const CFList & L );
1001  CFMap ( const CFMap & m ) : P( m.P ) {}
1002  CFMap & operator = ( const CFMap & m );
1003  void newpair ( const Variable & v, const CanonicalForm & s );
1005 #ifndef NOSTREAMIO
1006  friend OSTREAM & operator << ( OSTREAM & s, const CFMap & m );
1007 #endif /* NOSTREAMIO */
1008 };
1009 
1010 CanonicalForm compress ( const CanonicalForm & f, CFMap & m );
1011 void compress ( const CFArray & a, CFMap & M, CFMap & N );
1012 void compress ( const CanonicalForm & f, const CanonicalForm & g, CFMap & M, CFMap & N );
1013 
1014 
1015 /* stuff included from ./cf_reval.h */
1016 
1017 
1018 /**
1019  * class to generate random evaluation points
1020  *
1021  * @sa cf_eval.h
1022 **/
1023 class REvaluation : public Evaluation
1024 {
1025 protected: // neeeded in FFREvaluation
1026  CFRandom * gen;
1027 public:
1029  REvaluation( int min0, int max0, const CFRandom & sample ) : Evaluation( min0, max0 ), gen( sample.clone() ) {}
1030  REvaluation( const REvaluation & e );
1033  void nextpoint();
1034  void nextpoint(int n);
1035 };
1036 
1037 
1038 /* stuff included from ./fac_sqrfree.h */
1039 
1040 
1041 /* stuff included from ./gfops.h */
1042 
1043 
1044 long gf_gf2ff ( long a );
1045 int gf_gf2ff ( int a );
1046 
1047 bool gf_isff ( long a );
1048 bool gf_isff ( int a );
1049 
1050 
1051 /* stuff included from ./cf_hnf.h */
1052 
1053 
1054 #ifdef HAVE_NTL
1055 
1056 /**
1057  *
1058  * The input matrix A is square matrix of integers
1059  * output: the Hermite Normal Form of A; that is,
1060  * the unique m x m matrix whose rows span L, such that
1061  *
1062  * - lower triangular,
1063  * - the diagonal entries are positive,
1064  * - any entry below the diagonal is a non-negative number
1065  * strictly less than the diagonal entry in its column.
1066  *
1067  * @note: uses NTL
1068  *
1069 **/
1070 
1072 
1073 /**
1074  * performs LLL reduction.
1075  *
1076  * B is an m x n matrix, viewed as m rows of n-vectors. m may be less
1077  * than, equal to, or greater than n, and the rows need not be
1078  * linearly independent. B is transformed into an LLL-reduced basis,
1079  * and the return value is the rank r of B. The first m-r rows of B
1080  * are zero.
1081  *
1082  * More specifically, elementary row transformations are performed on
1083  * B so that the non-zero rows of new-B form an LLL-reduced basis
1084  * for the lattice spanned by the rows of old-B.
1085  * The default reduction parameter is delta=3/4, which means
1086  * that the squared length of the first non-zero basis vector
1087  * is no more than 2^{r-1} times that of the shortest vector in
1088  * the lattice.
1089  *
1090  * @note: uses NTL
1091 **/
1092 
1094 
1095 #endif
1096 
1097 
1098 /* stuff included from ./singext.h */
1099 
1100 
1101 void gmp_numerator ( const CanonicalForm & f, mpz_ptr result );
1102 
1103 void gmp_denominator ( const CanonicalForm & f, mpz_ptr result );
1104 
1105 int gf_value (const CanonicalForm & f );
1106 
1107 CanonicalForm make_cf ( const mpz_ptr n );
1108 
1109 CanonicalForm make_cf ( const mpz_ptr n, const mpz_ptr d, bool normalize );
1110 
1111 CanonicalForm make_cf_from_gf ( const int z );
1112 
1113 
1114 /* stuff included from ./cf_util.h */
1115 
1116 int igcd (int a, int b);
1117 int ipower ( int b, int n );
1118 void factoryError_intern(const char *s);
1119 extern void (*factoryError)(const char *s);
1120 
1121 /* stuff included from ./facIrredTest.h */
1122 
1123 
1124 /// given some error probIrredTest detects irreducibility or reducibility of F
1125 /// with confidence level 1-error
1126 ///
1127 /// @return probIrredTest returns 1 for irreducibility, -1 for reducibility
1128 /// or 0 if the test is not applicable
1129 int probIrredTest (const CanonicalForm& F, ///< [in] some poly over Z/p
1130  double error ///< [in] 0 < error < 1
1131  );
1132 
1133 
1134 /* stuff included from ./facAbsFact.h */
1135 
1136 #ifdef HAVE_NTL
1137 /// absolute factorization of a multivariate poly over Q
1138 ///
1139 /// @return absFactorize returns a list whose entries contain three
1140 /// entities:
1141 /// an absolute irreducible factor, an irreducible univariate polynomial
1142 /// that defines the minimal field extension over which the irreducible
1143 /// factor is defined (note: in case the factor is already defined over
1144 /// Q[t]/(t), 1 is returned), and the multiplicity of the
1145 /// absolute irreducible factor
1146 CFAFList absFactorize (const CanonicalForm& G ///<[in] poly over Q
1147  );
1148 #endif
1149 
1150 /* stuff included from ./cfModResultant.h */
1151 
1152 /// modular resultant algorihtm over Z
1153 ///
1154 /// @return @a resultantZ returns the resultant of A and B wrt. x
1156 resultantZ (const CanonicalForm& A, ///<[in] some poly
1157  const CanonicalForm& B, ///<[in] some poly
1158  const Variable& x, ///<[in] some polynomial variable
1159  bool prob= true ///<[in] if true use probabilistic algorithm
1160  );
1161 
1162 /* stuff included from ./facAlgFunc.h */
1163 
1164 
1165 /// factorize a polynomial @a f that is irreducible over the ground field modulo
1166 /// an extension given by an irreducible characteristic set @a as, @a f is
1167 /// assumed to be integral, i.e. \f$ f\in K[x_1,\ldots,x_n]/(as) \f$, and each
1168 /// element of @a as is assumed to be integral as well. \f$ K \f$ must be either
1169 /// \f$ F_p \f$ or \f$ Q \f$.
1170 ///
1171 /// @return the returned factors are not necessarily monic but only primitive
1172 /// and the product of the factors equals @a f up to a unit.
1173 CFFList facAlgFunc2 (const CanonicalForm & f,///<[in] univariate poly
1174  const CFList & as ///<[in] irreducible characteristic
1175  ///< set
1176  );
1177 
1178 /// factorize a polynomial @a f modulo an extension given by an irreducible
1179 /// characteristic set as, @a f is assumed to be integral, i.e.
1180 /// \f$ f\in K[x_1,\ldots,x_n]/(as) \f$, and each element of @a as is assumed to
1181 /// be integral as well. \f$ K \f$ must be either \f$ F_p \f$ or \f$ Q \f$.
1182 ///
1183 /// @return the returned factors are not necessarily monic but only primitive
1184 /// and the product of the factors equals @a f up to a unit.
1185 CFFList facAlgFunc (const CanonicalForm & f, ///<[in] univariate poly
1186  const CFList & as ///<[in] irreducible characteristic
1187  ///< set
1188  );
1189 
1190 /* stuff included from ./cfCharSetsUtil.h */
1191 
1192 /**
1193  * class to store factors that get removed during char set computation
1194 **/
1195 class StoreFactors
1196 {
1197  public:
1198  CFList FS1; ///< factors that were removed
1199  CFList FS2; ///< candidate factors that might get removed
1200  inline StoreFactors& operator= (const StoreFactors& value)
1201  {
1202  if ( this != &value )
1203  {
1204  FS1 = value.FS1;
1205  FS2 = value.FS2;
1206  }
1207  return *this;
1208  }
1209 };
1210 
1212 Prem (const CanonicalForm& F, const CanonicalForm& G);
1213 
1214 
1215 /* stuff included from ./cfCharSets.h */
1216 
1217 
1218 /// basic set in the sense of Wang a.k.a. minimal ascending set in the sense of
1219 /// Greuel/Pfister
1220 CFList
1221 basicSet (const CFList& PS);
1222 
1223 /// characteristic set
1224 CFList
1225 charSet (const CFList& PS);
1226 
1227 /// modified medial set
1228 CFList
1229 modCharSet (const CFList& PS, StoreFactors& StoredFactors,
1230  bool removeContents= true);
1231 
1232 CFList
1233 modCharSet (const CFList& PS, bool removeContents);
1234 
1235 CFList
1236 charSetViaCharSetN (const CFList& PS);
1237 
1238 CFList
1239 charSetN (const CFList &PS);
1240 
1241 /// modified characteristic set, i.e. a characteristic set with certain
1242 /// factors removed
1243 CFList
1244 charSetViaModCharSet (const CFList& PS, StoreFactors& StoredFactors,
1245  bool removeContents= true);
1246 
1247 /// modified characteristic set, i.e. a characteristic set with certain
1248 /// factors removed
1249 CFList
1250 charSetViaModCharSet (const CFList& PS, bool removeContents= true);
1251 
1252 /// characteristic series
1253 ListCFList
1254 charSeries (const CFList& L);
1255 
1256 /// irreducible characteristic series
1257 ListCFList
1258 irrCharSeries (const CFList & PS);
1259 
1260 // the next three give you a heuristically optimal reorderd list of the
1261 // variables. For internal and external (e.g. Singular/Macaulay2) library use.
1262 // This is really experimental!
1263 // See the comments in reorder.cc.
1264 //
1265 // this gives you a heuristically optimal ordering for the ring variables
1266 // if you use the irreducible characteristic series.
1267 Varlist neworder (const CFList & PolyList);
1268 
1269 // the same as neworder(...) only returning a list of CanonicalForm 's
1270 // (i.e. the variables as CanonicalForms)
1271 CFList newordercf (const CFList & PolyList);
1272 
1273 // the same as neworder(...) only returning a list of int 's (i.e. the levels)
1274 IntList neworderint (const CFList & PolyList);
1275 
1276 // for library internal use only:
1277 // next function reorders the variables in PS:
1278 // a code segment to use:
1279 // ...
1280 // #include "tmpl_inst.h" // for typedef's
1281 // CFList PS= <setup-your-list-of-CanonicalForms>;
1282 // Varlist betterorder= neworder(PS);
1283 // PS= reorder(betterorder,PS); // reorder variables in PS from oldorder
1284 // to betterorder
1285 // ListCFList Q= IrrCharSeries( PS );
1286 // Q= reorder(betterorder,Q); // revert ordering to oldorder
1287 //
1288 CFList reorder (const Varlist & betterorder, const CFList & PS);
1289 CFFList reorder (const Varlist & betterorder, const CFFList & PS);
1290 ListCFList reorder (const Varlist & betterorder, const ListCFList & Q);
1291 
1292 /* stuff included from ./cfUnivarGcd.h */
1293 
1295 extgcd ( const CanonicalForm & f, const CanonicalForm & g, CanonicalForm & a, CanonicalForm & b );
1296 
1297 
1298 #endif /* ! INCL_FACTORY_H */
MapPair::V
Variable V
Definition: cf_map.h:52
IntRandom::~IntRandom
~IntRandom()
CanonicalForm::div
CanonicalForm & div(const CanonicalForm &)
irrCharSeries
ListCFList irrCharSeries(const CFList &PS)
irreducible characteristic series
Definition: cfCharSets.cc:568
hasMipo
bool hasMipo(const Variable &alpha)
Definition: variable.cc:226
Matrix
Definition: ftmpl_matrix.h:20
Evaluation::min
int min() const
Definition: factory.h:654
IntRandom::IntRandom
IntRandom()
SW_USE_NTL_SORT
static const int SW_USE_NTL_SORT
set to 1 to sort factors in a factorization
Definition: factory.h:100
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
Variable::operator<
friend bool operator<(const Variable &lhs, const Variable &rhs)
Definition: factory.h:150
blcm
CanonicalForm blcm(const CanonicalForm &f, const CanonicalForm &g)
Definition: canonicalform.cc:1757
Evaluation::values
CFArray values
Definition: cf_eval.h:34
ISTREAM
#define ISTREAM
Definition: factory.h:39
factorize
CFFList factorize(const CanonicalForm &f, bool issqrfree=false)
factorization over or
Definition: cf_factor.cc:390
error
void error(const char *fmt,...)
Definition: emacs.cc:55
den
CanonicalForm den(const CanonicalForm &f)
Definition: factory.h:470
omalloc.h
lcm
CanonicalForm lcm(const CanonicalForm &, const CanonicalForm &)
CanonicalForm lcm ( const CanonicalForm & f, const CanonicalForm & g )
Definition: cf_gcd.cc:338
extgcd
CanonicalForm extgcd(const CanonicalForm &f, const CanonicalForm &g, CanonicalForm &a, CanonicalForm &b)
CanonicalForm extgcd ( const CanonicalForm & f, const CanonicalForm & g, CanonicalForm & a,...
Definition: cfUnivarGcd.cc:173
CanonicalForm::CanonicalForm
CF_INLINE CanonicalForm(InternalCF *)
CanonicalForm::operator/=
CanonicalForm & operator/=(const CanonicalForm &)
Definition: canonicalform.cc:743
omallocClass.h
CanonicalForm::print
void print(OSTREAM &, char *) const
AlgExtGenerator::nomoreitems
bool nomoreitems
Definition: cf_generator.h:100
SW_USE_EZGCD_P
static const int SW_USE_EZGCD_P
set to 1 to use EZGCD over F_q
Definition: factory.h:98
StoreFactors::FS2
CFList FS2
candidate factors that might get removed
Definition: cfCharSetsUtil.h:32
FFRandom
generate random elements in F_p
Definition: cf_random.h:44
CFMap::CFMap
CFMap(const CFList &L)
CFMap::CFMap
CFMap(const CanonicalForm &s)
Definition: factory.h:996
SW_SYMMETRIC_FF
static const int SW_SYMMETRIC_FF
set to 1 for symmetric representation over F_q
Definition: factory.h:94
factoryConfiguration
const char factoryConfiguration[]
CFGenerator::~CFGenerator
virtual ~CFGenerator()
Definition: factory.h:678
CanonicalForm::CanonicalForm
CanonicalForm(const char *, const int base=10)
CanonicalForm::inQ
bool inQ() const
cf_getBigPrime
int cf_getBigPrime(int i)
Definition: cf_primes.cc:39
j
int j
Definition: facHensel.cc:105
get_Terms
CFList get_Terms(const CanonicalForm &f)
Definition: cf_factor.cc:274
f
FILE * f
Definition: checklibs.c:9
CanonicalForm::inQuotDomain
bool inQuotDomain() const
MapPair::S
CanonicalForm S
Definition: cf_map.h:53
IntGenerator
generate integers starting from 0
Definition: cf_generator.h:37
IntRandom::IntRandom
IntRandom(int m)
CFAFListIterator
ListIterator< CFAFactor > CFAFListIterator
Definition: factory.h:521
SW_USE_FF_MOD_GCD
static const int SW_USE_FF_MOD_GCD
set to 1 to use modular GCD over F_q
Definition: factory.h:106
AlgExtGenerator::n
int n
Definition: cf_generator.h:99
factoryError_intern
void factoryError_intern(const char *s)
Definition: cf_util.cc:70
sqrt
CanonicalForm sqrt(const CanonicalForm &a)
Definition: factory.h:479
CFIterator
class to iterate through CanonicalForm's
Definition: cf_iter.h:44
REvaluation::operator=
REvaluation & operator=(const REvaluation &e)
Definition: cf_reval.cc:31
x
Variable x
Definition: cfModGcd.cc:4023
abs
CanonicalForm abs(const CanonicalForm &f)
inline CanonicalForm abs ( const CanonicalForm & f )
Definition: factory.h:626
CF_INLINE
#define CF_INLINE
Definition: factory.h:781
CanonicalForm::LC
CanonicalForm LC() const
CanonicalForm::getval
InternalCF * getval() const
CFIterator::~CFIterator
~CFIterator()
result
return result
Definition: facAbsBiFact.cc:76
neworder
Varlist neworder(const CFList &PolyList)
MPListIterator
ListIterator< MapPair > MPListIterator
Definition: factory.h:975
CFIterator::data
CanonicalForm data
Definition: cf_iter.h:46
OSTREAM
#define OSTREAM
Definition: factory.h:38
setMipo
void setMipo(const Variable &alpha, const CanonicalForm &mipo)
Definition: variable.cc:219
GFGenerator::next
void next()
AlgExtRandomF::gen
CFRandom * gen
Definition: cf_random.h:73
getTerms
void getTerms(const CanonicalForm &f, const CanonicalForm &t, CFList &result)
get_Terms: Split the polynomial in the containing terms.
Definition: cf_factor.cc:264
CanonicalForm::degree
int degree(const Variable &v) const
Variable::operator!=
friend bool operator!=(const Variable &lhs, const Variable &rhs)
Definition: factory.h:142
CanonicalForm::operator-=
CanonicalForm & operator-=(const CanonicalForm &)
Definition: canonicalform.cc:647
CFMap::CFMap
CFMap(const CFMap &m)
Definition: factory.h:1001
CanonicalForm::operator<<
friend OSTREAM & operator<<(OSTREAM &, const CanonicalForm &)
Definition: canonicalform.cc:1792
StoreFactors
class to store factors that get removed during char set computation
Definition: cfCharSetsUtil.h:29
CanonicalForm::inBaseDomain
bool inBaseDomain() const
charSetN
CFList charSetN(const CFList &PS)
medial set
Definition: cfCharSets.cc:216
AlgExtGenerator::hasItems
bool hasItems() const
Definition: factory.h:761
taildegree
int taildegree(const CanonicalForm &f)
Definition: factory.h:452
AlgExtGenerator::gensg
GFGenerator ** gensg
Definition: cf_generator.h:98
Evaluation::~Evaluation
virtual ~Evaluation()
Definition: factory.h:652
AlgExtRandomF::algext
Variable algext
Definition: cf_random.h:72
modpk::operator=
modpk & operator=(const modpk &m)
Definition: fac_util.cc:46
AlgExtGenerator::algext
Variable algext
Definition: cf_generator.h:96
CFGenFactory
Definition: cf_generator.h:118
cf_gmp.h
maxNorm
CanonicalForm maxNorm(const CanonicalForm &f)
CanonicalForm maxNorm ( const CanonicalForm & f )
Definition: cf_algorithm.cc:534
MapPair::operator<<
friend OSTREAM & operator<<(OSTREAM &s, const MapPair &p)
OSTREAM & operator << ( OSTREAM & s, const MapPair & p )
Definition: cf_map.cc:44
CFAFList
List< CFAFactor > CFAFList
Definition: factory.h:520
CxxTest::base
char N base
Definition: ValueTraits.h:144
vcontent
CanonicalForm vcontent(const CanonicalForm &f, const Variable &x)
CanonicalForm vcontent ( const CanonicalForm & f, const Variable & x )
Definition: cf_gcd.cc:225
MapPair::print
void print(OSTREAM &) const
AlgExtRandomF::AlgExtRandomF
AlgExtRandomF(const Variable &v1, const Variable &v2)
neworderint
IntList neworderint(const CFList &PolyList)
Definition: cfCharSets.cc:88
CFArray
Array< CanonicalForm > CFArray
Definition: factory.h:527
CFMap::operator<<
friend OSTREAM & operator<<(OSTREAM &s, const CFMap &m)
OSTREAM & operator << ( OSTREAM & s, const CFMap & m )
Definition: cf_map.cc:191
CFIterator::hasterms
bool hasterms
Definition: cf_iter.h:48
Varlist
List< Variable > Varlist
Definition: factory.h:533
CFGenFactory::generate
static CFGenerator * generate()
prod
fq_nmod_poly_t prod
Definition: facHensel.cc:95
linearSystemSolve
bool linearSystemSolve(CFMatrix &M)
Definition: cf_linsys.cc:78
gf_value
int gf_value(const CanonicalForm &f)
Definition: singext.cc:60
CFIterator::CFIterator
CFIterator()
CFMap
class CFMap
Definition: cf_map.h:85
CanonicalForm::print
void print(OSTREAM &) const
get_max_degree_Variable
Variable get_max_degree_Variable(const CanonicalForm &f)
get_max_degree_Variable returns Variable with highest degree.
Definition: cf_factor.cc:245
GFGenerator::~GFGenerator
~GFGenerator()
Definition: factory.h:733
AlgExtRandomF::AlgExtRandomF
AlgExtRandomF()
modpk::operator()
CanonicalForm operator()(const CanonicalForm &f, bool symmetric=true) const
Definition: fac_util.cc:78
modpk::k
int k
Definition: fac_util.h:28
AlgExtGenerator::~AlgExtGenerator
~AlgExtGenerator()
AlgExtRandomF
generate random elements in F_p(alpha)
Definition: cf_random.h:70
GFRandom::generate
CanonicalForm generate() const
tailcoeff
CanonicalForm tailcoeff(const CanonicalForm &f)
Definition: factory.h:455
facAlgFunc
CFFList facAlgFunc(const CanonicalForm &f, const CFList &as)
factorize a polynomial f modulo an extension given by an irreducible characteristic set as,...
Definition: facAlgFunc.cc:1043
g
g
Definition: cfModGcd.cc:4031
Evaluation
class to evaluate a polynomial at points
Definition: cf_eval.h:32
is_imm
int is_imm(const InternalCF *const ptr)
Definition: factory.h:206
Variable::rootOf
friend Variable rootOf(const CanonicalForm &, char name)
returns a symbolic root of polynomial with name name.
Definition: variable.cc:162
pp
CanonicalForm pp(const CanonicalForm &)
CanonicalForm pp ( const CanonicalForm & f )
Definition: cf_gcd.cc:248
SW_RATIONAL
static const int SW_RATIONAL
set to 1 for computations over Q
Definition: factory.h:92
GFGenerator::clone
CFGenerator * clone() const
IntRandom::clone
CFRandom * clone() const
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
FFGenerator::operator++
void operator++()
Definition: cf_generator.h:66
make_cf
CanonicalForm make_cf(const mpz_ptr n)
Definition: singext.cc:66
GFRandom::GFRandom
GFRandom()
Definition: factory.h:839
sqrFree
CFFList sqrFree(const CanonicalForm &f, bool sort=false)
squarefree factorization
Definition: cf_factor.cc:757
CanonicalForm::isHomogeneous
bool isHomogeneous() const
termList
term * termList
Definition: factory.h:786
FFGenerator::hasItems
bool hasItems() const
determinant
CanonicalForm determinant(const CFMatrix &M, int n)
Definition: cf_linsys.cc:222
CanonicalForm::sign
int sign() const
N
const CanonicalForm CFMap CFMap & N
Definition: cfEzgcd.cc:49
InternalCF
virtual class for internal CanonicalForm's
Definition: int_cf.h:47
IntGenerator::IntGenerator
IntGenerator()
Definition: factory.h:694
MapPair::var
Variable var() const
Definition: factory.h:966
Variable::next
Variable next() const
Definition: factory.h:137
isPurePoly
bool isPurePoly(const CanonicalForm &f)
Definition: cf_factor.cc:229
Variable::operator<=
friend bool operator<=(const Variable &lhs, const Variable &rhs)
Definition: factory.h:158
charSetViaCharSetN
CFList charSetViaCharSetN(const CFList &PS)
compute a characteristic set via medial set
Definition: cfCharSets.cc:246
CFGenerator
virtual class for generators
Definition: cf_generator.h:22
Variable::highest
static Variable highest()
Definition: factory.h:136
CanonicalForm::CanonicalForm
CF_INLINE CanonicalForm(const Variable &, int)
CFMap::CFMap
CFMap(const Variable &v)
Definition: factory.h:997
REvaluation::nextpoint
void nextpoint(int n)
IntListIterator
ListIterator< int > IntListIterator
Definition: factory.h:532
getNumVars
int getNumVars(const CanonicalForm &f)
int getNumVars ( const CanonicalForm & f )
Definition: cf_ops.cc:314
Evaluation::nextpoint
virtual void nextpoint()
CanonicalForm::deriv
CanonicalForm deriv(const Variable &x) const
SW_USE_CHINREM_GCD
static const int SW_USE_CHINREM_GCD
set to 1 to use modular gcd over Z
Definition: factory.h:102
CanonicalForm::isImm
bool isImm() const
Definition: factory.h:251
power
CanonicalForm power(const CanonicalForm &f, int n)
exponentiation
Definition: canonicalform.cc:1837
b
CanonicalForm b
Definition: cfModGcd.cc:4044
CanonicalForm::ilog2
int ilog2() const
CanonicalForm::inGF
bool inGF() const
FFGenerator::reset
void reset()
Definition: factory.h:716
CanonicalForm::operator-
friend CF_NO_INLINE CanonicalForm operator-(const CanonicalForm &)
CF_INLINE CanonicalForm operator - ( const CanonicalForm & cf )
Definition: cf_inline.cc:438
apply
CanonicalForm apply(const CanonicalForm &f, void(*mf)(CanonicalForm &, int &))
CanonicalForm apply ( const CanonicalForm & f, void (*mf)( CanonicalForm &, int & ) )
Definition: cf_ops.cc:402
ftmpl_afactor.h
CanonicalForm::num
CanonicalForm num() const
GFGenerator::GFGenerator
GFGenerator()
cf_LLL
CFMatrix * cf_LLL(CFMatrix &A)
performs LLL reduction.
Definition: cf_hnf.cc:48
CanonicalForm::tailcoeff
CanonicalForm tailcoeff() const
CanonicalForm
factory's main class
Definition: canonicalform.h:83
CanonicalForm::value
InternalCF * value
Definition: canonicalform.h:85
newordercf
CFList newordercf(const CFList &PolyList)
Definition: cfCharSets.cc:75
CFAFactor
AFactor< CanonicalForm > CFAFactor
Definition: factory.h:519
term
Definition: int_poly.h:33
CFIterator::hasTerms
CF_NO_INLINE int hasTerms() const
check if iterator has reached the end of CanonicalForm
CFIterator::exp
CF_NO_INLINE int exp() const
get the current exponent
CFRandom::~CFRandom
virtual ~CFRandom()
Definition: factory.h:828
getDefaultVarName
char getDefaultVarName()
Definition: variable.cc:244
ilog2
int ilog2(const CanonicalForm &a)
Definition: factory.h:482
FFRandom::clone
CFRandom * clone() const
CFFListIterator
ListIterator< CFFactor > CFFListIterator
Definition: factory.h:524
CanonicalForm::intval
long intval() const
CF_NO_INLINE
#define CF_NO_INLINE
Definition: factory.h:783
MapPair::~MapPair
~MapPair()
Definition: factory.h:964
CanonicalForm::operator[]
CanonicalForm operator[](int i) const
operator []() - return i'th coefficient from CO.
Definition: canonicalform.cc:1212
CFIterator::CFIterator
CFIterator(const CanonicalForm &, const Variable &)
LEVELBASE
#define LEVELBASE
Definition: factory.h:80
LEVELQUOT
#define LEVELQUOT
Definition: factory.h:82
modpk::pkhalf
CanonicalForm pkhalf
Definition: fac_util.h:26
CFListIterator
ListIterator< CanonicalForm > CFListIterator
Definition: factory.h:526
gf_gf2ff
long gf_gf2ff(long a)
Definition: gfops.cc:226
LC
CanonicalForm LC(const CanonicalForm &f)
Definition: factory.h:440
IntGenerator::operator++
void operator++()
Definition: cf_generator.h:47
CanonicalForm::genOne
CanonicalForm genOne() const
CanonicalForm::operator==
friend bool operator==(const CanonicalForm &, const CanonicalForm &)
operator ==() - compare canonical forms on (in)equality.
Definition: canonicalform.cc:1408
igcd
int igcd(int a, int b)
Definition: cf_util.cc:51
CFMap::CFMap
CFMap()
Definition: factory.h:995
modpk::modpk
modpk()
Array::min
int min() const
Definition: ftmpl_array.cc:98
MapPair::operator=
MapPair & operator=(const MapPair &p)
MapPair & MapPair::operator = ( const MapPair & p )
Definition: cf_map.cc:28
CanonicalForm::Lc
CanonicalForm Lc() const
CanonicalForm::divremt
friend bool divremt(const CanonicalForm &, const CanonicalForm &, CanonicalForm &, CanonicalForm &)
Definition: canonicalform.cc:1001
i
int i
Definition: cfEzgcd.cc:125
hasFirstAlgVar
bool hasFirstAlgVar(const CanonicalForm &f, Variable &a)
check if poly f contains an algebraic variable a
Definition: cf_ops.cc:665
Array< CanonicalForm >
tryFdivides
bool tryFdivides(const CanonicalForm &f, const CanonicalForm &g, const CanonicalForm &M, bool &fail)
same as fdivides but handles zero divisors in Z_p[t]/(f)[x1,...,xn] for reducible f
Definition: cf_algorithm.cc:454
AlgExtGenerator::next
void next()
operator%
CF_NO_INLINE CanonicalForm operator%(const CanonicalForm &, const CanonicalForm &)
Definition: cf_inline.cc:540
cf_HNF
CFMatrix * cf_HNF(CFMatrix &A)
The input matrix A is square matrix of integers output: the Hermite Normal Form of A; that is,...
Definition: cf_hnf.cc:38
getMipo
CanonicalForm getMipo(const Variable &alpha, const Variable &x)
Definition: variable.cc:207
IntRandom::generate
CanonicalForm generate() const
CFRandom
virtual class for random element generation
Definition: cf_random.h:21
CanonicalForm::mpzval
void mpzval(mpz_t val) const
GFRandom::~GFRandom
~GFRandom()
Definition: factory.h:840
ftmpl_factor.h
REvaluation::REvaluation
REvaluation()
Definition: factory.h:1028
gcd
CanonicalForm gcd(const CanonicalForm &, const CanonicalForm &)
Definition: cf_gcd.cc:257
AlgExtGenerator::item
CanonicalForm item() const
mapdomain
CanonicalForm mapdomain(const CanonicalForm &f, CanonicalForm(*mf)(const CanonicalForm &))
CanonicalForm mapdomain ( const CanonicalForm & f, CanonicalForm (*mf)( const CanonicalForm & ) )
Definition: cf_ops.cc:440
M
#define M
Definition: sirandom.c:24
Array::max
int max() const
Definition: ftmpl_array.cc:104
CanonicalForm::CanonicalForm
CF_INLINE CanonicalForm(const int)
chineseRemainder
void chineseRemainder(const CanonicalForm &x1, const CanonicalForm &q1, const CanonicalForm &x2, const CanonicalForm &q2, CanonicalForm &xnew, CanonicalForm &qnew)
void chineseRemainder ( const CanonicalForm & x1, const CanonicalForm & q1, const CanonicalForm & x2,...
Definition: cf_chinese.cc:52
sign
int sign(const CanonicalForm &a)
Definition: factory.h:473
CanonicalForm::isFFinGF
bool isFFinGF() const
Evaluation::operator[]
CanonicalForm operator[](const Variable &v) const
Definition: factory.h:657
getDefaultExtName
char getDefaultExtName()
Definition: variable.cc:249
CanonicalForm::bgcd
friend CanonicalForm bgcd(const CanonicalForm &, const CanonicalForm &)
CanonicalForm bgcd ( const CanonicalForm & f, const CanonicalForm & g )
Definition: canonicalform.cc:1589
singular_homog_flag
int singular_homog_flag
Definition: cf_factor.cc:377
IntRandom
generate random integers
Definition: cf_random.h:56
alpha
Variable alpha
Definition: facAbsBiFact.cc:52
homogenize
CanonicalForm homogenize(const CanonicalForm &f, const Variable &x)
homogenize homogenizes f with Variable x
Definition: cf_factor.cc:298
reorder
CFList reorder(const Varlist &betterorder, const CFList &PS)
Definition: cfCharSets.cc:101
FFGenerator::FFGenerator
FFGenerator()
Definition: factory.h:713
replaceLc
CanonicalForm replaceLc(const CanonicalForm &f, const CanonicalForm &c)
Definition: fac_util.cc:89
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
AlgExtRandomF::operator=
AlgExtRandomF & operator=(const AlgExtRandomF &)
Definition: cf_random.cc:111
CanonicalForm::divrem
friend void divrem(const CanonicalForm &, const CanonicalForm &, CanonicalForm &, CanonicalForm &)
Definition: canonicalform.cc:967
factoryseed
void factoryseed(int s)
random seed initializer
Definition: cf_random.cc:176
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
gf_isff
bool gf_isff(long a)
Definition: gfops.cc:270
CanonicalForm::deriv
CanonicalForm deriv() const
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
GFRandom::clone
CFRandom * clone() const
FFGenerator::clone
CFGenerator * clone() const
VarlistIterator
ListIterator< Variable > VarlistIterator
Definition: factory.h:534
modpk::p
int p
Definition: fac_util.h:27
CanonicalForm::isZero
CF_NO_INLINE bool isZero() const
Variable::operator=
Variable & operator=(const Variable &v)
Definition: factory.h:129
CanonicalForm::operator>
friend bool operator>(const CanonicalForm &, const CanonicalForm &)
operator >() - compare canonical forms.
Definition: canonicalform.cc:1496
MapPair
class MapPair
Definition: cf_map.h:50
AlgExtRandomF::n
int n
Definition: cf_random.h:74
StoreFactors::FS1
CFList FS1
factors that were removed
Definition: cfCharSetsUtil.h:31
CFMatrix
Matrix< CanonicalForm > CFMatrix
Definition: factory.h:528
make_cf_from_gf
CanonicalForm make_cf_from_gf(const int z)
Definition: singext.cc:76
Off
void Off(int)
switches
Definition: canonicalform.cc:1905
FFGenerator
generate all elements in F_p starting from 0
Definition: cf_generator.h:56
AlgExtRandomF::AlgExtRandomF
AlgExtRandomF(const Variable &v)
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
charSetViaModCharSet
CFList charSetViaModCharSet(const CFList &PS, StoreFactors &StoredFactors, bool removeContents=true)
modified characteristic set, i.e. a characteristic set with certain factors removed
Definition: cfCharSets.cc:356
cf_getNumBigPrimes
int cf_getNumBigPrimes()
Definition: cf_primes.cc:45
CanonicalForm::CanonicalForm
CF_INLINE CanonicalForm()
num
CanonicalForm num(const CanonicalForm &f)
Definition: factory.h:467
AFactor
Definition: ftmpl_afactor.h:17
FFGenerator::item
CanonicalForm item() const
cf_getPrime
int cf_getPrime(int i)
Definition: cf_primes.cc:14
prune
void prune(Variable &alpha)
Definition: variable.cc:261
absFactorize
CFAFList absFactorize(const CanonicalForm &G)
absolute factorization of a multivariate poly over Q
Definition: facAbsFact.cc:267
modpk::getpk
CanonicalForm getpk() const
Definition: factory.h:926
psqr
void psqr(const CanonicalForm &f, const CanonicalForm &g, CanonicalForm &q, CanonicalForm &r, const Variable &x)
void psqr ( const CanonicalForm & f, const CanonicalForm & g, CanonicalForm & q, CanonicalForm & r,...
Definition: cf_algorithm.cc:223
icontent
CanonicalForm icontent(const CanonicalForm &f)
CanonicalForm icontent ( const CanonicalForm & f )
Definition: cf_gcd.cc:71
Variable::operator<<
friend OSTREAM & operator<<(OSTREAM &os, const Variable &v)
Definition: variable.cc:133
degrees
int * degrees(const CanonicalForm &f, int *degs=0)
int * degrees ( const CanonicalForm & f, int * degs )
Definition: cf_ops.cc:493
Variable::Variable
Variable(const Variable &v)
Definition: factory.h:127
AlgExtRandomF::AlgExtRandomF
AlgExtRandomF(const Variable &v, CFRandom *g, int nn)
MapPair::MapPair
MapPair(const MapPair &p)
Definition: factory.h:963
euclideanNorm
CanonicalForm euclideanNorm(const CanonicalForm &f)
CanonicalForm euclideanNorm ( const CanonicalForm & f )
Definition: cf_algorithm.cc:563
REvaluation
class to generate random evaluation points
Definition: cf_reval.h:26
IntGenerator::current
int current
Definition: cf_generator.h:39
CanonicalForm::isOne
CF_NO_INLINE bool isOne() const
basicSet
CFList basicSet(const CFList &PS)
basic set in the sense of Wang a.k.a. minimal ascending set in the sense of Greuel/Pfister
Definition: cfCharSets.cc:150
GFGenerator::item
CanonicalForm item() const
setCharacteristic
void setCharacteristic(int c)
Definition: cf_char.cc:23
cf_getSmallPrime
int cf_getSmallPrime(int i)
Definition: cf_primes.cc:28
Variable::level
int level() const
Definition: factory.h:134
CanonicalForm::sqrt
CanonicalForm sqrt() const
CanonicalForm::CanonicalForm
CF_INLINE CanonicalForm(const CanonicalForm &)
GFGenerator::reset
void reset()
Variable::operator>
friend bool operator>(const Variable &lhs, const Variable &rhs)
Definition: factory.h:146
CanonicalForm::operator%=
CanonicalForm & operator%=(const CanonicalForm &)
Definition: canonicalform.cc:883
FFGenerator::next
void next()
AlgExtGenerator::gensf
FFGenerator ** gensf
Definition: cf_generator.h:97
GFRandom
generate random elements in GF
Definition: cf_random.h:32
resultant
CanonicalForm resultant(const CanonicalForm &f, const CanonicalForm &g, const Variable &x)
CanonicalForm resultant ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x )
Definition: cf_resultant.cc:173
cf_getNumPrimes
int cf_getNumPrimes()
Definition: cf_primes.cc:23
Evaluation::operator<<
friend OSTREAM & operator<<(OSTREAM &s, const Evaluation &e)
Definition: cf_eval.cc:60
ftmpl_array.h
GFGenerator::operator++
void operator++()
Definition: cf_generator.h:85
sort
void sort(CFArray &A, int l=0)
quick sort A
Definition: facSparseHensel.h:114
IntGenerator::~IntGenerator
~IntGenerator()
Definition: factory.h:695
CFGenerator::clone
virtual CFGenerator * clone() const
Definition: factory.h:683
CanonicalForm::den
CanonicalForm den() const
head
CanonicalForm head(const CanonicalForm &f)
Definition: factory.h:490
CFIterator::cursor
termList cursor
Definition: cf_iter.h:47
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
CFRandom::clone
virtual CFRandom * clone() const
Definition: factory.h:830
CanonicalForm::operator*=
CanonicalForm & operator*=(const CanonicalForm &)
Definition: canonicalform.cc:689
modpk::modpk
modpk(int q, int l)
modpk
class to do operations mod p^k for int's p and k
Definition: fac_util.h:23
AlgExtGenerator::AlgExtGenerator
AlgExtGenerator(const Variable &a)
ipower
int ipower(int b, int n)
int ipower ( int b, int m )
Definition: cf_util.cc:25
omallocClass
Definition: omallocClass.h:18
CanonicalForm::operator<
friend bool operator<(const CanonicalForm &, const CanonicalForm &)
Definition: canonicalform.cc:1527
REvaluation::REvaluation
REvaluation(const REvaluation &e)
Factor
Definition: ftmpl_factor.h:18
CanonicalForm::inZ
bool inZ() const
getVars
CanonicalForm getVars(const CanonicalForm &f)
CanonicalForm getVars ( const CanonicalForm & f )
Definition: cf_ops.cc:350
Variable::Variable
Variable()
Definition: factory.h:123
FFGenerator::current
int current
Definition: cf_generator.h:58
CanonicalForm::operator=
CF_NO_INLINE CanonicalForm & operator=(const CanonicalForm &)
CF_INLINE CanonicalForm & CanonicalForm::operator = ( const CanonicalForm & cf )
Definition: cf_inline.cc:272
CFRandom::generate
virtual CanonicalForm generate() const
Definition: factory.h:829
resultantZ
CanonicalForm resultantZ(const CanonicalForm &A, const CanonicalForm &B, const Variable &x, bool prob=true)
modular resultant algorihtm over Z
Definition: cfModResultant.cc:560
CanonicalForm::CanonicalForm
CF_INLINE CanonicalForm(const long)
getGFGenerator
CanonicalForm getGFGenerator()
Definition: cf_char.cc:62
setReduce
void setReduce(const Variable &alpha, bool reduce)
Definition: variable.cc:238
CanonicalForm::inCoeffDomain
bool inCoeffDomain() const
CFGenerator::hasItems
virtual bool hasItems() const
Definition: factory.h:679
REvaluation::~REvaluation
~REvaluation()
AlgExtGenerator::reset
void reset()
Evaluation::operator()
CanonicalForm operator()(const CanonicalForm &f) const
Definition: cf_eval.cc:24
Evaluation::Evaluation
Evaluation(int min0, int max0)
Definition: factory.h:650
probIrredTest
int probIrredTest(const CanonicalForm &F, double error)
given some error probIrredTest detects irreducibility or reducibility of F with confidence level 1-er...
Definition: facIrredTest.cc:63
AlgExtGenerator::operator=
AlgExtGenerator & operator=(const AlgExtGenerator &)
Definition: cf_generator.cc:104
modpk::modpk
modpk(const modpk &m)
CanonicalForm::genZero
CanonicalForm genZero() const
AlgExtRandomF::AlgExtRandomF
AlgExtRandomF(const AlgExtRandomF &)
normalize
static poly normalize(poly next_p, ideal add_generators, syStrategy syzstr, int *g_l, int *p_l, int crit_comp)
Definition: syz3.cc:1027
CFList
List< CanonicalForm > CFList
Definition: factory.h:525
modpk::getk
int getk() const
Definition: factory.h:924
chineseRemainderCached
void chineseRemainderCached(CFArray &a, CFArray &n, CanonicalForm &xnew, CanonicalForm &prod, CFArray &inv)
Definition: cf_chinese.cc:265
Variable
factory's class for variables
Definition: factory.h:118
CanonicalForm::LC
CanonicalForm LC(const Variable &v) const
CanonicalForm::degree
int degree() const
IntGenerator::next
void next()
ftmpl_list.h
CanonicalForm::inExtension
bool inExtension() const
On
void On(int)
switches
Definition: canonicalform.cc:1898
B
b *CanonicalForm B
Definition: facBivar.cc:52
CFFList
List< CFFactor > CFFList
Definition: factory.h:523
IntGenerator::clone
CFGenerator * clone() const
CFRandomFactory
Definition: cf_random.h:87
SW_USE_EZGCD
static const int SW_USE_EZGCD
set to 1 to use EZGCD over Z
Definition: factory.h:96
getCharacteristic
int getCharacteristic()
Definition: cf_char.cc:51
CanonicalForm::mvar
Variable mvar() const
Farey
CanonicalForm Farey(const CanonicalForm &f, const CanonicalForm &q)
Farey rational reconstruction.
Definition: cf_chinese.cc:197
totaldegree
int totaldegree(const CanonicalForm &f)
int totaldegree ( const CanonicalForm & f )
Definition: cf_ops.cc:523
GFGenerator::current
int current
Definition: cf_generator.h:77
fdivides
bool fdivides(const CanonicalForm &f, const CanonicalForm &g)
bool fdivides ( const CanonicalForm & f, const CanonicalForm & g )
Definition: cf_algorithm.cc:338
FFRandom::FFRandom
FFRandom()
Definition: factory.h:851
IntGenerator::item
CanonicalForm item() const
CanonicalForm::lc
CanonicalForm lc() const
IntRandom::max
int max
Definition: cf_random.h:58
CFMap::operator=
CFMap & operator=(const CFMap &m)
CFMap & CFMap::operator = ( const CFMap & m )
Definition: cf_map.cc:77
psq
CanonicalForm psq(const CanonicalForm &f, const CanonicalForm &g, const Variable &x)
CanonicalForm psq ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x )
Definition: cf_algorithm.cc:172
name
char name(const Variable &v)
Definition: factory.h:180
Evaluation::Evaluation
Evaluation(const Evaluation &e)
Definition: factory.h:651
CanonicalForm::CanonicalForm
CF_INLINE CanonicalForm(const Variable &)
StoreFactors::operator=
StoreFactors & operator=(const StoreFactors &value)
Definition: cfCharSetsUtil.h:33
SW_USE_QGCD
static const int SW_USE_QGCD
set to 1 to use Encarnacion GCD over Q(a)
Definition: factory.h:104
FFRandom::generate
CanonicalForm generate() const
Lc
CanonicalForm Lc(const CanonicalForm &f)
Definition: factory.h:437
m
int m
Definition: cfEzgcd.cc:121
modpk::inverse
CanonicalForm inverse(const CanonicalForm &f, bool symmetric=true) const
CanonicalForm::taildegree
int taildegree() const
isOn
bool isOn(int)
switches
Definition: canonicalform.cc:1912
MapPair::subst
CanonicalForm subst() const
Definition: factory.h:967
Evaluation::Evaluation
Evaluation()
Definition: factory.h:649
ftmpl_matrix.h
Variable::name
char name() const
Definition: variable.cc:122
leftShift
CanonicalForm leftShift(const CanonicalForm &F, int n)
left shift the main variable of F by n
Definition: cf_ops.cc:683
REvaluation::gen
CFRandom * gen
Definition: cf_reval.h:28
factoryError
void(* factoryError)(const char *s)
Definition: cf_util.cc:75
bCommonDen
CanonicalForm bCommonDen(const CanonicalForm &f)
CanonicalForm bCommonDen ( const CanonicalForm & f )
Definition: cf_algorithm.cc:293
AlgExtGenerator::AlgExtGenerator
AlgExtGenerator()
Evaluation::setValue
void setValue(int i, const CanonicalForm &f)
MapPair::MapPair
MapPair()
Definition: factory.h:962
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
level
int level(const Variable &v)
Definition: factory.h:179
Variable::swap_levels
friend void swap_levels()
Variable::_level
int _level
Definition: factory.h:120
MPList
List< MapPair > MPList
Definition: factory.h:974
Evaluation::max
int max() const
Definition: factory.h:655
l
int l
Definition: cfEzgcd.cc:93
Prem
CanonicalForm Prem(const CanonicalForm &F, const CanonicalForm &G)
pseudo remainder of F by G with certain factors of LC (g) cancelled
Definition: cfCharSetsUtil.cc:616
CanonicalForm::~CanonicalForm
CF_NO_INLINE ~CanonicalForm()
charSeries
ListCFList charSeries(const CFList &L)
characteristic series
Definition: cfCharSets.cc:411
factoryrandom
int factoryrandom(int n)
random integers with abs less than n
Definition: cf_random.cc:168
gmp_denominator
void gmp_denominator(const CanonicalForm &f, mpz_ptr result)
Definition: singext.cc:40
modpk::~modpk
~modpk()
Definition: factory.h:922
CFGenerator::reset
virtual void reset()
Definition: factory.h:680
AlgExtGenerator::clone
CFGenerator * clone() const
CanonicalForm::isUnivariate
bool isUnivariate() const
gmp_numerator
void gmp_numerator(const CanonicalForm &f, mpz_ptr result)
Definition: singext.cc:20
CanonicalForm::operator()
CanonicalForm operator()(const CanonicalForm &f) const
operator ()() - evaluation operator.
Definition: canonicalform.cc:1104
psr
CanonicalForm psr(const CanonicalForm &f, const CanonicalForm &g, const Variable &x)
CanonicalForm psr ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x )
Definition: cf_algorithm.cc:117
CFIterator::coeff
CF_NO_INLINE CanonicalForm coeff() const
get the current coefficient
FFGenerator::~FFGenerator
~FFGenerator()
Definition: factory.h:714
content
CanonicalForm content(const CanonicalForm &)
CanonicalForm content ( const CanonicalForm & f )
Definition: cf_gcd.cc:175
mapinto
CanonicalForm mapinto(const CanonicalForm &f)
Definition: factory.h:485
v
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
CFRandomFactory::generate
static CFRandom * generate()
AlgExtRandomF::generate
CanonicalForm generate() const
REvaluation::nextpoint
void nextpoint()
CFGenerator::next
virtual void next()
Definition: factory.h:682
p
int p
Definition: cfModGcd.cc:4019
mipo
CanonicalForm mipo
Definition: facAlgExt.cc:57
List
Definition: ftmpl_list.h:20
subResChain
CFArray subResChain(const CanonicalForm &f, const CanonicalForm &g, const Variable &x)
CFArray subResChain ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x )
Definition: cf_resultant.cc:42
CanonicalForm::tryDiv
CanonicalForm & tryDiv(const CanonicalForm &, const CanonicalForm &, bool &)
CFMap::CFMap
CFMap(const Variable &v, const CanonicalForm &s)
Definition: factory.h:998
CanonicalForm::mapinto
CanonicalForm mapinto() const
s
const CanonicalForm int s
Definition: facAbsFact.cc:55
CFIterator::ispoly
bool ispoly
Definition: cf_iter.h:48
cf_getNumSmallPrimes
int cf_getNumSmallPrimes()
Definition: cf_primes.cc:34
CFMap::newpair
void newpair(const Variable &v, const CanonicalForm &s)
operator/
CF_NO_INLINE CanonicalForm operator/(const CanonicalForm &, const CanonicalForm &)
Definition: cf_inline.cc:529
AlgExtGenerator::operator++
void operator++()
Definition: cf_generator.h:112
IntGenerator::hasItems
bool hasItems() const
ListCFListIterator
ListIterator< CFList > ListCFListIterator
Definition: factory.h:530
charSet
CFList charSet(const CFList &PS)
characteristic set
Definition: cfCharSets.cc:187
Evaluation::operator[]
CanonicalForm operator[](int i) const
Definition: cf_eval.h:43
getGFDegree
int getGFDegree()
Definition: cf_char.cc:56
AlgExtRandomF::~AlgExtRandomF
~AlgExtRandomF()
Evaluation::operator=
Evaluation & operator=(const Evaluation &e)
Definition: cf_eval.cc:15
headdegree
int headdegree(const CanonicalForm &f)
Definition: factory.h:499
Q
#define Q
Definition: sirandom.c:25
CFFactor
Factor< CanonicalForm > CFFactor
Definition: factory.h:522
mvar
Variable mvar(const CanonicalForm &f)
Definition: factory.h:464
isPurePoly_m
bool isPurePoly_m(const CanonicalForm &f)
Definition: cf_factor.cc:219
mod
CF_NO_INLINE CanonicalForm mod(const CanonicalForm &, const CanonicalForm &)
Definition: cf_inline.cc:564
CFIterator::operator++
CF_NO_INLINE CFIterator & operator++()
CFIterator::operator ++ (), operator ++ ( int )
Definition: cf_iter_inline.cc:126
CFIterator::CFIterator
CFIterator(const CFIterator &)
operator-
CF_NO_INLINE CanonicalForm operator-(const CanonicalForm &, const CanonicalForm &)
Definition: cf_inline.cc:505
ListCFList
List< CFList > ListCFList
Definition: factory.h:529
FFRandom::~FFRandom
~FFRandom()
Definition: factory.h:852
AlgExtGenerator::AlgExtGenerator
AlgExtGenerator(const AlgExtGenerator &)
CFGenerator::item
virtual CanonicalForm item() const
Definition: factory.h:681
GFGenerator
generate all elements in GF starting from 0
Definition: cf_generator.h:75
G
static TreeM * G
Definition: janet.cc:32
CFIterator::operator=
CFIterator & operator=(const CFIterator &)
Definition: cf_iter.cc:89
CanonicalForm::level
int level() const
facAlgFunc2
CFFList facAlgFunc2(const CanonicalForm &f, const CFList &as)
factorize a polynomial f that is irreducible over the ground field modulo an extension given by an ir...
Definition: facAlgFunc.cc:905
lc
CanonicalForm lc(const CanonicalForm &f)
Definition: factory.h:434
CFMap::~CFMap
~CFMap()
Definition: factory.h:999
modCharSet
CFList modCharSet(const CFList &PS, StoreFactors &StoredFactors, bool removeContents=true)
modified medial set
Definition: cfCharSets.cc:284
deriv
CanonicalForm deriv(const CanonicalForm &f, const Variable &x)
Definition: factory.h:476
AlgExtRandomF::clone
CFRandom * clone() const
operator*
CF_INLINE CanonicalForm operator*(const CanonicalForm &, const CanonicalForm &)
Definition: cf_inline.cc:517
CFIterator::CFIterator
CFIterator(const CanonicalForm &)
CanonicalForm::operator+=
CanonicalForm & operator+=(const CanonicalForm &)
assignment operators
Definition: canonicalform.cc:605
CanonicalForm::tailcoeff
CanonicalForm tailcoeff(const Variable &v) const
A
#define A
Definition: sirandom.c:23
CanonicalForm::inFF
bool inFF() const
REvaluation::REvaluation
REvaluation(int min0, int max0, const CFRandom &sample)
Definition: factory.h:1029
CFMap::operator()
CanonicalForm operator()(const CanonicalForm &f) const
CanonicalForm CFMap::operator () ( const CanonicalForm & f ) const.
Definition: cf_map.cc:178
GFGenerator::hasItems
bool hasItems() const
prune1
void prune1(const Variable &alpha)
Definition: variable.cc:291
modpk::getp
int getp() const
Definition: factory.h:923
Variable::~Variable
~Variable()
Definition: factory.h:128
IntList
List< int > IntList
Definition: factory.h:531
CanonicalForm::mod
CanonicalForm & mod(const CanonicalForm &)
Variable::operator>=
friend bool operator>=(const Variable &lhs, const Variable &rhs)
Definition: factory.h:154
CFMap::P
MPList P
Definition: cf_map.h:87
size
int size(const CanonicalForm &f, const Variable &v)
int size ( const CanonicalForm & f, const Variable & v )
Definition: cf_ops.cc:600
MapPair::MapPair
MapPair(const Variable &v, const CanonicalForm &s)
Definition: factory.h:961
modpk::pk
CanonicalForm pk
Definition: fac_util.h:25
CanonicalForm::operator>>
friend ISTREAM & operator>>(ISTREAM &, CanonicalForm &)
Definition: canonicalform.cc:1799
CFGenerator::CFGenerator
CFGenerator()
Definition: factory.h:677
swapvar
CanonicalForm swapvar(const CanonicalForm &, const Variable &, const Variable &)
swapvar() - swap variables x1 and x2 in f.
Definition: cf_ops.cc:168
compress
CanonicalForm compress(const CanonicalForm &f, CFMap &m)
CanonicalForm compress ( const CanonicalForm & f, CFMap & m )
Definition: cf_map.cc:210
CanonicalForm::inPolyDomain
bool inPolyDomain() const
ExtensionLevel
int ExtensionLevel()
Definition: variable.cc:254
operator+
CF_INLINE CanonicalForm operator+(const CanonicalForm &, const CanonicalForm &)
CF_INLINE CanonicalForm operator +, -, *, /, % ( const CanonicalForm & lhs, const CanonicalForm & rhs...
Definition: cf_inline.cc:496
Variable::operator==
friend bool operator==(const Variable &lhs, const Variable &rhs)
Definition: factory.h:138
degree
int degree(const CanonicalForm &f)
Definition: factory.h:446
ListIterator
Definition: ftmpl_list.h:17
Intarray
Array< int > Intarray
Definition: factory.h:535
IntGenerator::reset
void reset()
Definition: factory.h:697
AlgExtGenerator
generate all elements in F_p(alpha) starting from 0
Definition: cf_generator.h:94