94    ASSERT( 
x.
level() > 0, 
"type error: polynomial variable expected" );
 
   95    ASSERT( ! 
g.isZero(), 
"math error: division by zero" );
 
  105    int fDegree = 
degree( F, X );
 
  107    if ( (fDegree < 0) || (fDegree < gDegree) )
 
  133    while ( ( dv <= dr  ) && ( !r.
isZero()) )
 
  174    ASSERT( 
x.
level() > 0, 
"type error: polynomial variable expected" );
 
  175    ASSERT( ! 
g.isZero(), 
"math error: division by zero" );
 
  185    int fDegree = 
degree( F, X );
 
  187    if ( fDegree < 0 || fDegree < gDegree )
 
  225    ASSERT( 
x.
level() > 0, 
"type error: polynomial variable expected" );
 
  226    ASSERT( ! 
g.isZero(), 
"math error: division by zero" );
 
  236    int fDegree = 
degree( F, X );
 
  238    if ( fDegree < 0 || fDegree < gDegree ) {
 
  264    if ( 
f.inBaseDomain() )
 
  345    else if ( 
f.isZero() )
 
  348    if ( (
f.inCoeffDomain() || 
g.inCoeffDomain())
 
  353        if ( 
f.inCoeffDomain() )
 
  362    int fLevel = 
f.level();
 
  363    int gLevel = 
g.level();
 
  364    if ( (gLevel > 0) && (fLevel == gLevel) )
 
  375    else if ( gLevel < fLevel )
 
  396    else if ( 
f.isZero() )
 
  399    if ( (
f.inCoeffDomain() || 
g.inCoeffDomain())
 
  404        if ( 
f.inCoeffDomain() )
 
  416    int fLevel = 
f.level();
 
  417    int gLevel = 
g.level();
 
  418    if ( (gLevel > 0) && (fLevel == gLevel) )
 
  435    else if ( gLevel < fLevel )
 
  462    else if ( 
f.isZero() )
 
  465    if (
f.inCoeffDomain() || 
g.inCoeffDomain())
 
  468        if ( 
f.inCoeffDomain() )
 
  482    int fLevel = 
f.level();
 
  483    int gLevel = 
g.level();
 
  484    if ( (gLevel > 0) && (fLevel == gLevel) )
 
  488        bool dividestail= 
tryFdivides (
f.tailcoeff(), 
g.tailcoeff(), 
M, fail);
 
  490        if (fail || !dividestail)
 
  493        if (fail || !dividesLC)
 
  497        if (fail || !divides)
 
  501    else if ( gLevel < fLevel )
 
  513        if (fail || !divides)
 
  538    if ( 
f.inBaseDomain() )
 
  544            if ( coeffMaxNorm > 
result )
 
  567    ASSERT( (
f.inBaseDomain() || 
f.isUnivariate()) && 
f.LC().inZ(),
 
  568            "type error: univariate poly over Z expected" );
 
Rational abs(const Rational &a)
 
void tryInvert(const CanonicalForm &F, const CanonicalForm &M, CanonicalForm &inv, bool &fail)
 
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,...
 
CanonicalForm bCommonDen(const CanonicalForm &f)
CanonicalForm bCommonDen ( const CanonicalForm & f )
 
static CanonicalForm internalBCommonDen(const CanonicalForm &f)
static CanonicalForm internalBCommonDen ( const CanonicalForm & f )
 
CanonicalForm maxNorm(const CanonicalForm &f)
CanonicalForm maxNorm ( const CanonicalForm & f )
 
bool fdivides(const CanonicalForm &f, const CanonicalForm &g)
bool fdivides ( const CanonicalForm & f, const CanonicalForm & g )
 
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
 
void out_cf(const char *s1, const CanonicalForm &f, const char *s2)
cf_algorithm.cc - simple mathematical algorithms.
 
CanonicalForm psr(const CanonicalForm &rr, const CanonicalForm &vv, const Variable &x)
CanonicalForm psr ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x )
 
CanonicalForm psq(const CanonicalForm &f, const CanonicalForm &g, const Variable &x)
CanonicalForm psq ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x )
 
CanonicalForm euclideanNorm(const CanonicalForm &f)
CanonicalForm euclideanNorm ( const CanonicalForm & f )
 
declarations of higher level algorithms.
 
#define ASSERT(expression, message)
 
static const int SW_RATIONAL
set to 1 for computations over Q
 
Interface to generate InternalCF's over various domains from intrinsic types or mpz_t's.
 
Iterators for CanonicalForm's.
 
class to iterate through CanonicalForm's
 
factory's class for variables
 
const Variable & v
< [in] a sqrfree bivariate poly
 
some useful template functions.
 
template CanonicalForm tmax(const CanonicalForm &, const CanonicalForm &)
 
gmp_float sqrt(const gmp_float &a)