version 1.6, 2003/08/21 02:30:23 |
version 1.7, 2003/08/21 04:45:40 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/red.c,v 1.5 2003/07/30 09:00:52 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/red.c,v 1.6 2003/08/21 02:30:23 takayama Exp $ */ |
#include <stdio.h> |
#include <stdio.h> |
#include "datatype.h" |
#include "datatype.h" |
#include "extern2.h" |
#include "extern2.h" |
Line 209 POLY reduction1_gen(f,g,needSyz,c,h) |
|
Line 209 POLY reduction1_gen(f,g,needSyz,c,h) |
|
struct ring *rp; |
struct ring *rp; |
struct spValue sv; |
struct spValue sv; |
POLY f2; |
POLY f2; |
|
extern DoCancel; |
|
static int crcount=0; |
|
|
if (needSyz) { |
if (needSyz) { |
if (f ISZERO) { rp = CurrentRingp; } else {rp = f->m->ringp; } |
if (f ISZERO) { rp = CurrentRingp; } else {rp = f->m->ringp; } |
*c = cxx(1,0,0,rp); |
*c = cxx(1,0,0,rp); |
*h = ZERO; |
*h = ZERO; |
} |
} |
|
if ((DoCancel&4) && (f != POLYNULL)) shouldReduceContent(f,1); |
|
|
sv = (*sp)(f,g); |
sv = (*sp)(f,g); |
f2 = ppAddv(cpMult((sv.a)->coeffp,f),ppMult(sv.b,g)); |
f2 = ppAddv(cpMult((sv.a)->coeffp,f),ppMult(sv.b,g)); |
Line 230 POLY reduction1_gen(f,g,needSyz,c,h) |
|
Line 232 POLY reduction1_gen(f,g,needSyz,c,h) |
|
*h = ppAdd(ppMult(sv.a,*h),sv.b); |
*h = ppAdd(ppMult(sv.a,*h),sv.b); |
} |
} |
|
|
|
|
|
|
while ((*isReducible)(f,g)) { |
while ((*isReducible)(f,g)) { |
sv = (*sp)(f,g); |
sv = (*sp)(f,g); |
f2 = ppAddv(cpMult((sv.a)->coeffp,f),ppMult(sv.b,g)); |
f2 = ppAddv(cpMult((sv.a)->coeffp,f),ppMult(sv.b,g)); |
Line 243 POLY reduction1_gen(f,g,needSyz,c,h) |
|
Line 247 POLY reduction1_gen(f,g,needSyz,c,h) |
|
*c = ppMult(sv.a,*c); |
*c = ppMult(sv.a,*c); |
*h = ppAdd(ppMult(sv.a,*h),sv.b); |
*h = ppAdd(ppMult(sv.a,*h),sv.b); |
} |
} |
|
|
|
if ((DoCancel&4) && (f != POLYNULL)) { |
|
if (shouldReduceContent(f,0)) { |
|
struct coeff *cont; |
|
f = reduceContentOfPoly(f,&cont); |
|
shouldReduceContent(f,1); |
|
if (DebugContentReduction) { |
|
printf("CoNT=%s ",coeffToString(cont)); |
|
if (crcount % 10 == 0) fflush(NULL); |
|
crcount++; |
|
} |
|
} |
|
} |
|
|
} |
} |
return(f); |
return(f); |
} |
} |