version 1.8, 2003/08/19 08:02:09 |
version 1.9, 2003/08/20 01:39:17 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/ecart.c,v 1.7 2003/07/30 09:00:52 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/ecart.c,v 1.8 2003/08/19 08:02:09 takayama Exp $ */ |
#include <stdio.h> |
#include <stdio.h> |
#include "datatype.h" |
#include "datatype.h" |
#include "extern2.h" |
#include "extern2.h" |
Line 40 static POLY ecartCheckSyz0(POLY cf,POLY r_0,POLY syz, |
|
Line 40 static POLY ecartCheckSyz0(POLY cf,POLY r_0,POLY syz, |
|
extern int DebugReductionRed; |
extern int DebugReductionRed; |
extern int TraceLift; |
extern int TraceLift; |
struct ring *TraceLift_ringmod; |
struct ring *TraceLift_ringmod; |
|
extern DoCancel; |
int DebugReductionEcart = 0; |
int DebugReductionEcart = 0; |
|
|
/* This is used for goHomogenization */ |
/* This is used for goHomogenization */ |
Line 252 POLY reduction_ecart(r,gset,needSyz,syzp) |
|
Line 253 POLY reduction_ecart(r,gset,needSyz,syzp) |
|
warningPoly("reduction_ecart: TraceLift_ringmod is not set.\n"); |
warningPoly("reduction_ecart: TraceLift_ringmod is not set.\n"); |
return reduction_ecart1(r,gset,needSyz,syzp); |
return reduction_ecart1(r,gset,needSyz,syzp); |
} |
} |
rn = reduction_ecart1_mod(r,gset); |
rn = reduction_ecart1_mod(r,gset); /* BUG: syzygy is not obtained. */ |
if (rn == POLYNULL) return rn; |
if (rn == POLYNULL) return rn; |
else return reduction_ecart1(r,gset,needSyz,syzp); |
else return reduction_ecart1(r,gset,needSyz,syzp); |
}else{ |
}else{ |
Line 399 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
Line 400 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
POLY pp; |
POLY pp; |
int ell; |
int ell; |
int se; |
int se; |
|
struct coeff *cont; |
|
|
extern struct ring *CurrentRingp; |
extern struct ring *CurrentRingp; |
struct ring *rp; |
struct ring *rp; |
|
extern struct ring *SmallRingp; |
|
|
gg = NULL; |
gg = NULL; |
if (needSyz) { |
if (needSyz) { |
Line 435 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
Line 438 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
if (ells.first) { |
if (ells.first) { |
pp = ((gset->polys[ells.grade])->gh)[ells.gseti]; |
pp = ((gset->polys[ells.grade])->gh)[ells.gseti]; |
}else{ |
}else{ |
if (DebugReductionEcart & 4) printf("+"); |
if (DebugReductionEcart & 4) {printf("+"); fflush(NULL);} |
pp = (gg->pa)[ells.ggi]; |
pp = (gg->pa)[ells.ggi]; |
} |
} |
if (ell > 0) r = mpMult(cxx(1,0,ell,rp),r); /* r = s^ell r */ |
if (ell > 0) r = mpMult(cxx(1,0,ell,rp),r); /* r = s^ell r */ |
Line 466 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
Line 469 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
} |
} |
|
|
r = goDeHomogenizeS(r); |
r = goDeHomogenizeS(r); |
|
if (DoCancel && (r != POLYNULL)) { /* BUG: syzygy should be corrected. */ |
|
if (r->m->ringp->p == 0) { |
|
if (coeffSizeMin(r) >= DoCancel) { |
|
r = reduceContentOfPoly(r,&cont); |
|
if (DebugReductionEcart || DebugReductionRed) printf("cont=%d ",coeffToString(cont)); |
|
} |
|
} |
|
} |
|
|
return(r); |
return(r); |
} |
} |
Line 598 static POLY reduction_ecart1_mod(r,gset) |
|
Line 609 static POLY reduction_ecart1_mod(r,gset) |
|
if (ells.first) { |
if (ells.first) { |
pp = ((gset->polys[ells.grade])->gmod)[ells.gseti]; |
pp = ((gset->polys[ells.grade])->gmod)[ells.gseti]; |
}else{ |
}else{ |
if (DebugReductionEcart & 4) printf("+"); |
if (DebugReductionEcart & 4) {printf("+"); fflush(NULL);} |
pp = (gg->pa)[ells.ggi]; |
pp = (gg->pa)[ells.ggi]; |
} |
} |
if (ell > 0) r = mpMult(cxx(1,0,ell,rp),r); /* r = s^ell r */ |
if (ell > 0) r = mpMult(cxx(1,0,ell,rp),r); /* r = s^ell r */ |