facAbsBiFact.h
Go to the documentation of this file.
1 /*****************************************************************************\
2  * Computer Algebra System SINGULAR
3 \*****************************************************************************/
4 /** @file facAbsBiFact.h
5  *
6  * bivariate absolute factorization over Q described in "Modular Las Vegas
7  * Algorithms for Polynomial Absolute Factorization" by Bertone, Chèze, Galligo
8  *
9  * @author Martin Lee
10  *
11  **/
12 /*****************************************************************************/
13 
14 #ifndef FAC_ABS_BI_FACT_H
15 #define FAC_ABS_BI_FACT_H
16 
17 #include "canonicalform.h"
18 
19 #ifdef HAVE_NTL
20 /// main absolute factorization routine, expects bivariate poly which is
21 /// irreducible over Q
22 ///
23 /// @return absBiFactorizeMain returns a list whose entries contain three
24 /// entities:
25 /// an absolute irreducible factor, an irreducible univariate polynomial
26 /// that defines the minimal field extension over which the irreducible
27 /// factor is defined (note: in case the factor is already defined over
28 /// Q[t]/(t), 1 is returned as defining poly), and the
29 /// multiplicity of the absolute irreducible factor
30 CFAFList absBiFactorizeMain (const CanonicalForm& F, ///<[in] s.a.
31  bool full= false ///<[in] true if all
32  ///< factors should be
33  ///< returned
34  );
35 #endif
36 
37 /// normalize factors, i.e. make factors monic
38 static inline
39 void normalize (CFAFList & L)
40 {
41  for (CFAFListIterator i= L; i.hasItem(); i++)
42  i.getItem()= CFAFactor (i.getItem().factor()/Lc (i.getItem().factor()),
43  i.getItem().minpoly(), i.getItem().exp());
44 }
45 
46 /// univariate absolute factorization over Q
47 ///
48 /// @return uniAbsFactorize returns a list whose entries contain three entities:
49 /// an absolute irreducible factor, an irreducible univariate polynomial
50 /// that defines the minimal field extension over which the irreducible
51 /// factor is defined (note: in case the factor is already defined over
52 /// Q[t]/(t), 1 is returned as defining poly), and the multiplicity of
53 /// the absolute irreducible factor
54 CFAFList uniAbsFactorize (const CanonicalForm& F, ///<[in] univariate poly
55  ///< irreducible over Q
56  bool full= false ///<[in] true if all factors
57  ///< should be returned
58  );
59 
60 #endif
CFAFList absBiFactorizeMain(const CanonicalForm &F, bool full=false)
main absolute factorization routine, expects bivariate poly which is irreducible over Q ...
factory's main class
Definition: canonicalform.h:75
CanonicalForm Lc(const CanonicalForm &f)
static void normalize(CFAFList &L)
normalize factors, i.e. make factors monic
Definition: facAbsBiFact.h:39
CFAFList uniAbsFactorize(const CanonicalForm &F, bool full=false)
univariate absolute factorization over Q
bool full
Definition: facAbsBiFact.cc:39
AFactor< CanonicalForm > CFAFactor
int i
Definition: cfEzgcd.cc:123
Header for factory's main class CanonicalForm.