15#include "factory/factory.h" 
   27#define TRANSEXT_PRIVATES 
   42  if (
f.isZero()) 
return NULL;
 
   57  if ( ! 
f.inCoeffDomain() )
 
   69    number n=r->cf->convFactoryNSingN(
f, r->cf);
 
  102#define MIN_CONV_LEN 7 
  125    for ( 
int i = 1; 
i <=n; 
i++ )
 
  144  if (!
f.isImm()) 
WerrorS(
"int overflow in det");
 
  159    for ( 
int i = 1; 
i <= n; 
i++ )
 
  175  if (
f.isZero()) 
return NULL;
 
  192  if ( ! 
f.inCoeffDomain() )
 
  215        for ( 
i = 1; 
i <= var_start; 
i++ )
 
  221        for ( 
i = par_start+1; 
i <= var_start+
rPar(r); 
i++ )
 
  253          mpz_init_set( dummy, (
p_GetCoeff( 
p,r->cf->extRing )->z) );
 
  267    if ( (e = 
p_GetExp( 
p, 1, r->cf->extRing )) != 0 )
 
  296      poly t= 
p_Init (r->cf->extRing);
 
  305    if( r->cf->extRing != 
NULL )
 
  306      if (r->cf->extRing->qideal->m[0]!=
NULL)
 
  308        poly 
l=r->cf->extRing->qideal->m[0];
 
  328      WerrorS(
"conversion error: denominator!= 1");
 
  341    for ( 
int i = n; 
i > 0; 
i-- )
 
  368  if (
f.isZero()) 
return NULL;
 
  381  if ( 
f.level() > offs )
 
  386      exp[
l-offs] = 
i.exp();
 
  395    for ( 
int i = 
rVar(r); 
i>0; 
i-- )
 
  406convSingGFFactoryGF( poly 
p )
 
  409  int e, n = pVariables;
 
  417    for ( 
int i = 1; 
i <= n; 
i++ )
 
  432  int n = pVariables+1;
 
  446  if ( ! 
f.inCoeffDomain() )
 
  460    for ( 
int i = 1; 
i <= pVariables; 
i++ )
 
const CanonicalForm CFMap CFMap & N
 
static const int SW_RATIONAL
set to 1 for computations over Q
 
CanonicalForm convSingPFactoryP(poly p, const ring r)
 
BOOLEAN convSingTrP(poly p, const ring r)
 
poly convFactoryPSingTrP(const CanonicalForm &f, const ring r)
 
poly convFactoryAPSingAP(const CanonicalForm &f, const ring r)
 
static CanonicalForm convSingPFactoryP_intern(poly p, int l, BOOLEAN &setChar, const ring r)
 
CanonicalForm convSingAFactoryA(poly p, const Variable &a, const ring r)
 
static void convPhalf(poly p, int l, poly &p1, poly &p2)
 
CanonicalForm convSingAPFactoryAP(poly p, const Variable &a, const ring r)
 
poly convFactoryASingA(const CanonicalForm &f, const ring r)
 
poly convFactoryPSingP(const CanonicalForm &f, const ring r)
 
static number convFactoryNSingAN(const CanonicalForm &f, const ring r)
 
int convFactoryISingI(const CanonicalForm &f)
 
static void convRecTrP(const CanonicalForm &f, int *exp, poly &result, int offs, const ring r)
 
static void conv_RecPP(const CanonicalForm &f, int *exp, sBucket_pt result, ring r)
 
void out_cf(const char *s1, const CanonicalForm &f, const char *s2)
 
CanonicalForm convSingTrPFactoryP(poly p, const ring r)
 
static void convRecAP_R(const CanonicalForm &f, int *exp, poly &result, int par_start, int var_start, const ring r)
 
static poly convPunhalf(poly p1, poly p2)
 
poly convFactoryAPSingAP_R(const CanonicalForm &f, int par_start, int var_start, const ring r)
 
class to iterate through CanonicalForm's
 
factory's class for variables
 
Coefficient rings, fields and other domains suitable for Singular polynomials.
 
static FORCE_INLINE long n_Int(number &n, const coeffs r)
conversion of n to an int; 0 if not possible in Z/pZ: the representing int lying in (-p/2 ....
 
static FORCE_INLINE number n_convFactoryNSingN(const CanonicalForm n, const coeffs r)
 
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff 'n' represents the zero element.
 
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
 
static FORCE_INLINE void n_Normalize(number &n, const coeffs r)
inplace-normalization of n; produces some canonical representation of n;
 
void WerrorS(const char *s)
 
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
 
gmp_float exp(const gmp_float &a)
 
#define omFreeSize(addr, size)
 
poly p_PolyDiv(poly &p, const poly divisor, const BOOLEAN needResult, const ring r)
assumes that p and divisor are univariate polynomials in r, mentioning the same variable; assumes div...
 
static int pLength(poly a)
 
static poly p_Add_q(poly p, poly q, const ring r)
 
static long p_AddExp(poly p, int v, long ee, ring r)
 
static void p_SetExpV(poly p, int *ev, const ring r)
 
static unsigned long p_SetExp(poly p, const unsigned long e, const unsigned long iBitmask, const int VarOffset)
set a single variable exponent @Note: VarOffset encodes the position in p->exp
 
static void p_Setm(poly p, const ring r)
 
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
 
static BOOLEAN p_IsConstant(const poly p, const ring r)
 
static poly p_Init(const ring r, omBin bin)
 
#define pGetExp(p, i)
Exponent.
 
#define pInit()
allocates a new monomial and initializes everything to 0
 
static BOOLEAN rField_is_Zp_a(const ring r)
 
static int rPar(const ring r)
(r->cf->P)
 
static short rVar(const ring r)
#define rVar(r) (r->N)
 
sBucket_pt sBucketCreate(const ring r)
 
void sBucket_Merge_m(sBucket_pt bucket, poly p)
 
void sBucketDestroyMerge(sBucket_pt bucket, poly *p, int *length)
 
CanonicalForm make_cf(const mpz_ptr n)
 
CanonicalForm make_cf_from_gf(const int z)
 
int gf_value(const CanonicalForm &f)
 
number ntInit(long i, const coeffs cf)