version 1.17, 2003/09/10 07:41:25 |
version 1.18, 2003/09/12 02:52:50 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/ecart.c,v 1.16 2003/08/27 03:11:12 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/ecart.c,v 1.17 2003/09/10 07:41:25 takayama Exp $ */ |
#include <stdio.h> |
#include <stdio.h> |
#include "datatype.h" |
#include "datatype.h" |
#include "extern2.h" |
#include "extern2.h" |
Line 208 static struct ecartReducer ecartFindReducer(POLY r,str |
|
Line 208 static struct ecartReducer ecartFindReducer(POLY r,str |
|
} |
} |
} |
} |
|
|
if (DebugReductionRed || (DebugReductionEcart&1)) { |
if ((DebugReductionRed&1) || (DebugReductionEcart&1)) { |
printf("ecartFindReducer(): ell1=%d, ell2=%d, minGrade=%d, minGseti=%d, minGgi=%d\n",ell1,ell2,minGrade,minGseti,minGgi); |
printf("ecartFindReducer(): ell1=%d, ell2=%d, minGrade=%d, minGseti=%d, minGgi=%d\n",ell1,ell2,minGrade,minGseti,minGgi); |
} |
} |
if (ell1 <= ell2) { |
if (ell1 <= ell2) { |
Line 366 static POLY reduction_ecart0(r,gset,needSyz,syzp) |
|
Line 366 static POLY reduction_ecart0(r,gset,needSyz,syzp) |
|
|
|
if (DebugReductionEcart&1) printf("--------------------------------------\n"); |
if (DebugReductionEcart&1) printf("--------------------------------------\n"); |
do { |
do { |
if (DebugReductionRed) printf("r=%s\n",POLYToString(r,'*',1)); |
if (DebugReductionRed&1) printf("r=%s\n",POLYToString(r,'*',1)); |
if (DebugReductionEcart & 1) printf("r=%s+...\n",POLYToString(head(r),'*',1)); |
if (DebugReductionEcart & 1) printf("r=%s+...\n",POLYToString(head(r),'*',1)); |
ells = ecartFindReducer(r,gset,gg); |
ells = ecartFindReducer(r,gset,gg); |
ell = ells.ell; |
ell = ells.ell; |
Line 413 static POLY reduction_ecart0(r,gset,needSyz,syzp) |
|
Line 413 static POLY reduction_ecart0(r,gset,needSyz,syzp) |
|
syz = ppAdd(syz,cpMult(toSyzCoeff(cg),syz_o)); |
syz = ppAdd(syz,cpMult(toSyzCoeff(cg),syz_o)); |
/* Note. 2003.07.19 */ |
/* Note. 2003.07.19 */ |
} |
} |
if (DebugReductionRed) { |
if (DebugReductionRed && needSyz) { |
POLY tp; |
POLY tp; |
tp = ecartCheckSyz0(cf,r_0,syz,gset,r); |
tp = ecartCheckSyz0(cf,r_0,syz,gset,r); |
if (tp != POLYNULL) { |
if (tp != POLYNULL) { |
Line 482 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
Line 482 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
POLY cf_o; |
POLY cf_o; |
POLY syz_o; |
POLY syz_o; |
POLY r_0; |
POLY r_0; |
|
POLY r0; |
int se; |
int se; |
struct coeff *cont; |
struct coeff *cont; |
|
|
Line 510 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
Line 511 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
|
|
if (DebugReductionEcart&1) printf("=======================================\n"); |
if (DebugReductionEcart&1) printf("=======================================\n"); |
do { |
do { |
if (DebugReductionRed) printf("(ecart1(d)) r=%s\n",POLYToString(r,'*',1)); |
if (DebugReductionRed & 1) printf("(ecart1(d)) r=%s\n",POLYToString(r,'*',1)); |
if (DebugReductionEcart & 1) printf("r=%s+,,,\n",POLYToString(head(r),'*',1)); |
if (DebugReductionEcart & 1) printf("r=%s+,,,\n",POLYToString(head(r),'*',1)); |
|
|
ells = ecartFindReducer(r,gset,gg); |
ells = ecartFindReducer(r,gset,gg); |
Line 531 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
Line 532 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
pp = (gg->pa)[ells.ggi]; |
pp = (gg->pa)[ells.ggi]; |
} |
} |
if (ell > 0) r = ppMult(cxx(1,0,ell,rp),r); /* r = s^ell r */ |
if (ell > 0) r = ppMult(cxx(1,0,ell,rp),r); /* r = s^ell r */ |
|
r0 = r; |
r = (*reduction1)(r,pp,needSyz,&cc,&cg); |
r = (*reduction1)(r,pp,needSyz,&cc,&cg); |
|
if (DebugReductionEcart & 8) { |
|
if (ell > 0) {printf("ell+ "); fflush(NULL); |
|
}else { |
|
printf("ell0 "); fflush(NULL); |
|
if ((*mmLarger)(r,r0) >= 1) { |
|
printf("error in reduction."); |
|
printf(" r0=%s\n",POLYToString(r0,'*',1)); |
|
printf("==>r=%s\n",POLYToString(r,'*',1)); |
|
getchar(); getchar(); |
|
} |
|
} |
|
} |
|
|
if (DoCancel && (r != POLYNULL)) { |
if (DoCancel && (r != POLYNULL)) { |
if (shouldReduceContent(r,0)) { |
if (shouldReduceContent(r,0)) { |
Line 559 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
Line 573 static POLY reduction_ecart1(r,gset,needSyz,syzp) |
|
} |
} |
} |
} |
|
|
if (DebugReductionRed) { |
if (DebugReductionRed && needSyz) { |
POLY tp; |
POLY tp; |
tp = ecartCheckSyz0(cf,r_0,syz,gset,r); |
tp = ecartCheckSyz0(cf,r_0,syz,gset,r); |
tp = goDeHomogenizeS(tp); |
tp = goDeHomogenizeS(tp); |
Line 690 static struct ecartReducer ecartFindReducer_mod(POLY r |
|
Line 704 static struct ecartReducer ecartFindReducer_mod(POLY r |
|
} |
} |
} |
} |
|
|
if (DebugReductionRed || (DebugReductionEcart&1)) { |
if ((DebugReductionRed & 1)|| (DebugReductionEcart&1)) { |
printf("ecartFindReducer_mod(): ell1=%d, ell2=%d, minGrade=%d, minGseti=%d, minGgi=%d, p=%d\n",ell1,ell2,minGrade,minGseti,minGgi,TraceLift_ringmod->p); |
printf("ecartFindReducer_mod(): ell1=%d, ell2=%d, minGrade=%d, minGseti=%d, minGgi=%d, p=%d\n",ell1,ell2,minGrade,minGseti,minGgi,TraceLift_ringmod->p); |
} |
} |
if (ell1 <= ell2) { |
if (ell1 <= ell2) { |
Line 724 static POLY reduction_ecart1_mod(r,gset) |
|
Line 738 static POLY reduction_ecart1_mod(r,gset) |
|
struct ecartReducer ells; |
struct ecartReducer ells; |
struct ecartPolyArray *gg; |
struct ecartPolyArray *gg; |
POLY pp; |
POLY pp; |
|
POLY r0; |
int ell; |
int ell; |
int se; |
int se; |
|
|
Line 751 static POLY reduction_ecart1_mod(r,gset) |
|
Line 766 static POLY reduction_ecart1_mod(r,gset) |
|
|
|
if (DebugReductionEcart&1) printf("=====================================mod\n"); |
if (DebugReductionEcart&1) printf("=====================================mod\n"); |
do { |
do { |
if (DebugReductionRed) printf("(ecart1_mod(d)) r=%s\n",POLYToString(r,'*',1)); |
if (DebugReductionRed & 1) printf("(ecart1_mod(d)) r=%s\n",POLYToString(r,'*',1)); |
if (DebugReductionEcart & 1) printf("r=%s+,,,\n",POLYToString(head(r),'*',1)); |
if (DebugReductionEcart & 1) printf("r=%s+,,,\n",POLYToString(head(r),'*',1)); |
|
|
ells = ecartFindReducer_mod(r,gset,gg); |
ells = ecartFindReducer_mod(r,gset,gg); |
Line 768 static POLY reduction_ecart1_mod(r,gset) |
|
Line 783 static POLY reduction_ecart1_mod(r,gset) |
|
pp = (gg->pa)[ells.ggi]; |
pp = (gg->pa)[ells.ggi]; |
} |
} |
if (ell > 0) r = ppMult(cxx(1,0,ell,rp),r); /* r = s^ell r */ |
if (ell > 0) r = ppMult(cxx(1,0,ell,rp),r); /* r = s^ell r */ |
|
|
|
r0 = r; |
r = (*reduction1)(r,pp,0,&cc,&cg); |
r = (*reduction1)(r,pp,0,&cc,&cg); |
|
|
|
if (DebugReductionEcart & 8) { |
|
if (ell > 0) {printf("ell+ "); fflush(NULL); |
|
}else { |
|
printf("ell0 "); fflush(NULL); |
|
if ((*mmLarger)(r,r0) >= 1) { |
|
printf("error in reduction."); |
|
printf(" r0=%s\n",POLYToString(r0,'*',1)); |
|
printf("==>r=%s\n",POLYToString(r,'*',1)); |
|
getchar(); getchar(); |
|
} |
|
} |
|
} |
|
|
if (r ISZERO) goto ss1; |
if (r ISZERO) goto ss1; |
r = ecartDivideSv(r,&se); /* r = r/s^? */ |
r = ecartDivideSv(r,&se); /* r = r/s^? */ |
} |
} |