26 #ifdef HAVE_MORE_FIELDS_IMPLEMENTED 58 if (sgn[i] > 0)
return 0;
67 if (sgn[i] < 0)
return 0;
73 long*
sgn = r->ordsgn;
74 long l = r->ExpL_Size;
89 if (sgn[0] == -1 &&
p_IsPomog(&sgn[1], l-1))
91 if (sgn[l-1] == -1 &&
p_IsPomog(sgn, l-1))
94 if (sgn[0] == 1 &&
p_IsNomog(&sgn[1], l-1))
101 if (sgn[0] == 1 && sgn[1] == 1 &&
p_IsNomog(&sgn[2], l-2))
104 if (sgn[0] == 1 && sgn[l-1] == 1 &&
p_IsNomog(&sgn[1], l-2))
107 if (sgn[0] == -1 && sgn[1] == 1 &&
p_IsNomog(&sgn[2], l-2))
122 #define CheckProc(which) \ 125 if (p_Procs->which == NULL) \ 127 dReportBug("p_Procs is NULL"); \ 128 WarnS("Singular will work properly, but much slower"); \ 129 WarnS("If you chose a coef ring, it may not work at all");\ 130 p_Procs->which = (which##_Proc_Ptr)( \ 131 which##__FieldGeneral_LengthGeneral_OrdGeneral); \ 151 extern poly p_Mult_nn_pthread(
poly p,
const number n,
const ring r);
158 SetProcs_nv(
FieldZp, length,ord);
173 CheckProc(pp_Mult_Coeff_mm_DivSelectMult);
186 dReportError(
"Setting pProcs in p_ProcsSet (rDebugPrint!?)!!!");
void p_ProcsSet(ring r, p_Procs_s *p_Procs)
static int p_IsNomog(long *sgn, int l)
static p_Field p_FieldIs(ring r)
static int p_IsPomog(long *sgn, int l)
static BOOLEAN rField_is_Zp_a(const ring r)
int sgn(const Rational &a)
static poly p_Mult_mm(poly p, poly m, const ring r)
struct p_Procs_s p_Procs_s
static BOOLEAN rField_is_R(const ring r)
#define SetProcs(field, length, ord)
static poly pp_Mult_nn(poly p, number n, const ring r)
void p_Debug_GetSpecNames(const ring r, const char *&field, const char *&length, const char *&ord)
static const char * p_OrdEnum_2_String(p_Ord ord)
static BOOLEAN rField_is_Q_a(const ring r)
static poly pp_Mult_mm(poly p, poly m, const ring r)
static p_Length p_LengthIs(ring r)
static BOOLEAN rField_is_GF(const ring r)
static bool rIsPluralRing(const ring r)
we must always have this test!
static p_Ord p_OrdIs(ring r)
static poly p_Copy(poly p, const ring r)
returns a copy of p
static poly p_ShallowCopyDelete(poly p, const ring r, omBin bin)
static poly p_Mult_nn(poly p, number n, const ring r)
static BOOLEAN rField_is_Q(const ring r)
void p_Debug_GetProcNames(const ring r, p_Procs_s *p_Procs)
static int IsValidSpec(p_Field field, p_Length length, p_Ord ord)
static BOOLEAN rField_is_long_C(const ring r)
static BOOLEAN rField_is_Zp(const ring r)
static const char * p_LengthEnum_2_String(p_Length length)
static void p_Delete(poly *p, const ring r)
static BOOLEAN rField_is_Ring(const ring r)
static poly p_Merge_q(poly p, poly q, const ring r)
static BOOLEAN rField_is_long_R(const ring r)
static p_Procs_s * _p_procs
void nc_p_ProcsSet(ring rGR, p_Procs_s *p_Procs)
static poly p_Minus_mm_Mult_qq(poly p, const poly m, const poly q, int &lp, int lq, const poly spNoether, const ring r)
int dReportError(const char *fmt,...)
static poly p_Neg(poly p, const ring r)
static poly p_Add_q(poly p, poly q, const ring r)
static poly pp_Mult_Coeff_mm_DivSelect(poly p, const poly m, const ring r)
static const char * p_FieldEnum_2_String(p_Field field)