[BACK]Return to poly4.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Kan

Diff for /OpenXM/src/kan96xx/Kan/poly4.c between version 1.2 and 1.3

version 1.2, 2000/01/16 07:55:40 version 1.3, 2001/05/04 01:06:25
Line 1 
Line 1 
 /* $OpenXM$ */  /* $OpenXM: OpenXM/src/kan96xx/Kan/poly4.c,v 1.2 2000/01/16 07:55:40 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include "datatype.h"  #include "datatype.h"
 #include "stackm.h"  #include "stackm.h"
Line 11  static int degreeOfInitW(POLY f,int w[]);
Line 11  static int degreeOfInitW(POLY f,int w[]);
   
   
 static void shell(v,n)  static void shell(v,n)
 int v[];       int v[];
 int n;       int n;
 {  {
   int gap,i,j,temp;    int gap,i,j,temp;
   
   for (gap = n/2; gap > 0; gap /= 2) {    for (gap = n/2; gap > 0; gap /= 2) {
     for (i = gap; i<n; i++) {      for (i = gap; i<n; i++) {
       for (j=i-gap ; j>=0 && v[j]<v[j+gap]; j -= gap) {        for (j=i-gap ; j>=0 && v[j]<v[j+gap]; j -= gap) {
         temp = v[j];          temp = v[j];
         v[j] = v[j+gap];          v[j] = v[j+gap];
         v[j+gap] = temp;          v[j+gap] = temp;
       }        }
     }      }
   }    }
Line 29  int n;
Line 29  int n;
   
   
 struct matrixOfPOLY *parts(f,v)  struct matrixOfPOLY *parts(f,v)
 POLY f;       POLY f;
 POLY v;  /* v must be a single variable, e.g. x */       POLY v;  /* v must be a single variable, e.g. x */
 {  {
   struct matrixOfPOLY *evPoly;    struct matrixOfPOLY *evPoly;
   int vi = 0;  /* index of v */    int vi = 0;  /* index of v */
Line 96  POLY v;  /* v must be a single variable, e.g. x */
Line 96  POLY v;  /* v must be a single variable, e.g. x */
     ft = f;      ft = f;
     while (ft != POLYNULL) {      while (ft != POLYNULL) {
       if (vx) {        if (vx) {
         if (ft->m->e[vi].x == ev[i]) {          if (ft->m->e[vi].x == ev[i]) {
           h = newCell(ft->coeffp,monomialCopy(ft->m));            h = newCell(ft->coeffp,monomialCopy(ft->m));
           xset0(h,vi); /* touch monomial part, so you need to copy it above. */            xset0(h,vi); /* touch monomial part, so you need to copy it above. */
           ans = ppAdd(ans,h);            ans = ppAdd(ans,h);
         }          }
       }else{        }else{
         if (ft->m->e[vi].D == ev[i]) {          if (ft->m->e[vi].D == ev[i]) {
           h = newCell(ft->coeffp,monomialCopy(ft->m));            h = newCell(ft->coeffp,monomialCopy(ft->m));
           dset0(h,vi);            dset0(h,vi);
           ans = ppAdd(ans,h);            ans = ppAdd(ans,h);
         }          }
       }        }
       ft = ft->next;        ft = ft->next;
     }      }
Line 114  POLY v;  /* v must be a single variable, e.g. x */
Line 114  POLY v;  /* v must be a single variable, e.g. x */
   }    }
   return(evPoly);    return(evPoly);
 }  }
   
 struct object parts2(f,v)  struct object parts2(f,v)
 POLY f;       POLY f;
 POLY v;  /* v must be a single variable, e.g. x */       POLY v;  /* v must be a single variable, e.g. x */
 {  {
   struct matrixOfPOLY *evPoly;    struct matrixOfPOLY *evPoly;
   int vi = 0;  /* index of v */    int vi = 0;  /* index of v */
Line 190  POLY v;  /* v must be a single variable, e.g. x */
Line 190  POLY v;  /* v must be a single variable, e.g. x */
     ft = f;      ft = f;
     while (ft != POLYNULL) {      while (ft != POLYNULL) {
       if (vx) {        if (vx) {
         if (ft->m->e[vi].x == ev[i]) {          if (ft->m->e[vi].x == ev[i]) {
           h = newCell(ft->coeffp,monomialCopy(ft->m));            h = newCell(ft->coeffp,monomialCopy(ft->m));
           xset0(h,vi); /* touch monomial part, so you need to copy it above. */            xset0(h,vi); /* touch monomial part, so you need to copy it above. */
           ans = ppAdd(ans,h);            ans = ppAdd(ans,h);
         }          }
       }else{        }else{
         if (ft->m->e[vi].D == ev[i]) {          if (ft->m->e[vi].D == ev[i]) {
           h = newCell(ft->coeffp,monomialCopy(ft->m));            h = newCell(ft->coeffp,monomialCopy(ft->m));
           dset0(h,vi);            dset0(h,vi);
           ans = ppAdd(ans,h);            ans = ppAdd(ans,h);
         }          }
       }        }
       ft = ft->next;        ft = ft->next;
     }      }
Line 216  POLY v;  /* v must be a single variable, e.g. x */
Line 216  POLY v;  /* v must be a single variable, e.g. x */
   putoa(rob,0,ob1); putoa(rob,1,ob2);    putoa(rob,0,ob1); putoa(rob,1,ob2);
   return(rob);    return(rob);
 }  }
   
 int pDegreeWrtV(f,v)  int pDegreeWrtV(f,v)
 POLY f;       POLY f;
 POLY v;       POLY v;
 {  {
   int vx = 1;    int vx = 1;
   int vi = 0;    int vi = 0;
Line 299  int containVectorVariable(POLY f)
Line 299  int containVectorVariable(POLY f)
 }  }
   
 POLY homogenize(f)  POLY homogenize(f)
 POLY f;       POLY f;
 /* homogenize by using (*grade)(f) */       /* homogenize by using (*grade)(f) */
 {  {
   POLY t;    POLY t;
   int maxg;    int maxg;
Line 331  POLY f;
Line 331  POLY f;
 }  }
   
 int isHomogenized(f)  int isHomogenized(f)
 POLY f;       POLY f;
 {  {
   POLY t;    POLY t;
   extern int Homogenize_vec;    extern int Homogenize_vec;
Line 348  POLY f;
Line 348  POLY f;
 }  }
   
 int isHomogenized_vec(f)  int isHomogenized_vec(f)
 POLY f;       POLY f;
 {  {
 /* This is not efficient version. *grade should be grade_module1v(). */    /* This is not efficient version. *grade should be grade_module1v(). */
   POLY t;    POLY t;
   int ggg;    int ggg;
   if (f == ZERO) return(1);    if (f == ZERO) return(1);
Line 359  POLY f;
Line 359  POLY f;
     ggg = (*grade)(f);      ggg = (*grade)(f);
     while (t != POLYNULL) {      while (t != POLYNULL) {
       if ((*isSameComponent)(f,t)) {        if ((*isSameComponent)(f,t)) {
         if (ggg != (*grade)(t)) return(0);          if (ggg != (*grade)(t)) return(0);
       }        }
       t = t->next;        t = t->next;
     }      }
Line 370  POLY f;
Line 370  POLY f;
   
   
 static int degreeOfPrincipalPart(f)  static int degreeOfPrincipalPart(f)
 POLY f;       POLY f;
 {  {
   int n,i,dd;    int n,i,dd;
   if (f ISZERO) return(0);    if (f ISZERO) return(0);
Line 383  POLY f;
Line 383  POLY f;
 }  }
   
 POLY POLYToPrincipalPart(f)  POLY POLYToPrincipalPart(f)
 POLY f;       POLY f;
 {  {
   POLY node;    POLY node;
   struct listPoly nod;    struct listPoly nod;
Line 412  POLY f;
Line 412  POLY f;
 }  }
   
 static int degreeOfInitW(f,w)  static int degreeOfInitW(f,w)
 POLY f;       POLY f;
 int w[];       int w[];
 {  {
   int n,i,dd;    int n,i,dd;
   if (f ISZERO) {    if (f ISZERO) {
Line 428  int w[];
Line 428  int w[];
 }  }
   
 POLY POLYToInitW(f,w)  POLY POLYToInitW(f,w)
 POLY f;       POLY f;
 int w[]; /* weight vector */       int w[]; /* weight vector */
 {  {
   POLY node;    POLY node;
   struct listPoly nod;    struct listPoly nod;
Line 493  int isTheSameRing(struct ring *rstack[],int rp, struct
Line 493  int isTheSameRing(struct ring *rstack[],int rp, struct
     if (rrr->orderMatrixSize != newRingp->orderMatrixSize) { a=12; goto bbb ; }      if (rrr->orderMatrixSize != newRingp->orderMatrixSize) { a=12; goto bbb ; }
     for (i=0; i<rrr->orderMatrixSize; i++) {      for (i=0; i<rrr->orderMatrixSize; i++) {
       for (j=0; j<2*(rrr->n); j++) {        for (j=0; j<2*(rrr->n); j++) {
         if (rrr->order[i*2*(rrr->n)+j] != newRingp->order[i*2*(rrr->n)+j])          if (rrr->order[i*2*(rrr->n)+j] != newRingp->order[i*2*(rrr->n)+j])
           { a=13; goto bbb ; }            { a=13; goto bbb ; }
       }        }
     }      }
     if (rrr->next != newRingp->next) { a=14; goto bbb ; }      if (rrr->next != newRingp->next) { a=14; goto bbb ; }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>