230 WerrorS(
"rings must have same characteristic" );
237 WerrorS(
"only works for global orderings" );
243 WerrorS(
"rings must have same number of variables" );
249 WerrorS(
"rings must have same number of parameters" );
253 if ( state !=
WalkOk )
return state;
258 int npar =
rPar(sring);
265 snames=sring->cf->extRing->names;
266 dnames=dring->cf->extRing->names;
267 pperm= (
int *)
omAlloc0( (npar+1)*
sizeof( int ) );
277 dring->names, nvar, dnames, npar, vperm, pperm,
280 for ( k= nvar; (k > 0) && (state ==
WalkOk); k-- )
283 WerrorS(
"variable names do not agree" );
287 for ( k= npar; (k > 0) && (state ==
WalkOk); k-- )
288 if ( pperm[k-1] >= 0 )
290 WerrorS(
"parameter names do not agree" );
296 for ( k= nvar; (k > 0) && (state ==
WalkOk); k-- )
297 if ( vperm[k] != (k) )
299 WerrorS(
"orders of variables do not agree" );
304 for ( k= npar; (k > 0) && (state ==
WalkOk); k-- )
305 if ( pperm[k-1] != (-k) )
307 WerrorS(
"orders of parameters do not agree" );
314 if ( state !=
WalkOk )
return state;
317 if ( (sring->qideal !=
NULL) || (dring->qideal !=
NULL) )
319 WerrorS(
"rings are not allowed to be qrings");
324 while(dring->order[i]!=0){
340 while(sring->order[i]!=0)
BOOLEAN rHasLocalOrMixedOrdering(const ring r)
static int rPar(const ring r)
(r->cf->P)
#define omFreeSize(addr, size)
static short rVar(const ring r)
#define rVar(r) (r->N)
void WerrorS(const char *s)
void maFindPerm(char const *const *const preim_names, int preim_n, char const *const *const preim_par, int preim_p, char const *const *const names, int n, char const *const *const par, int nop, int *perm, int *par_perm, n_coeffType ch)