345{
346#if OUTPUT
347 Print(
"ncSA_1xy0x0yG(var(%d)^{%d}, var(%d)^{%d}, G, r)!\n",
j,
m,
i, n);
348 number t =
n_Copy(m_g, r->cf);
351#endif
352
353 int kn = n;
355
356 number c =
n_Init(1, r->cf);
357
359
362
364
365
368
370
372
374 {
375 number t =
n_Init(km + 1, r->cf);
379
380 t =
n_Init(kn + 1, r->cf);
383
385 c =
n_Div(c, t, r->cf);
387
388
389
391
393
396
398
401 }
402
404 assume((km == 0) || (kn == 0) );
405
406 {
408
409 if( km > 0 )
410 {
411 number t =
n_Init(km + 1, r->cf);
414 }
415
416 if( kn > 0 )
417 {
418 number t =
n_Init(kn + 1, r->cf);
421 }
422
424 c =
n_Div(c, t, r->cf);
426 }
427
429
432
434
436
438
439 return pResult;
440}
static int si_min(const int a, const int b)
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of 'n'
static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
return the quotient of 'a' and 'b', i.e., a/b; raises an error if 'b' is not invertible in r exceptio...
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
static FORCE_INLINE void n_Write(number n, const coeffs r, const BOOLEAN bShortOut=TRUE)
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
static FORCE_INLINE void n_InpMult(number &a, number b, const coeffs r)
multiplication of 'a' and 'b'; replacement of 'a' by the product a*b
static int min(int a, int b)
poly p_NSet(number n, const ring r)
returns the poly representing the number n, destroys n
static poly pLast(poly a, int &length)
returns the length of a polynomial (numbers of monomials) respect syzComp