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

File: [local] / OpenXM / src / kan96xx / Kan / trash.c (download)

Revision 1.1.1.1 (vendor branch), Fri Oct 8 02:12:01 1999 UTC (24 years, 7 months ago) by maekawa
Branch: OpenXM, MAIN
CVS Tags: maekawa-ipv6, R_1_3_1-2, RELEASE_20000124, RELEASE_1_3_1_13b, RELEASE_1_2_3_12, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, RELEASE_1_1_3, RELEASE_1_1_2, KNOPPIX_2006, HEAD, DEB_REL_1_2_3-9, ALPHA
Changes since 1.1: +0 -0 lines

o import OpenXM sources

struct object gradedPolySetToGradedArray(struct gradedPolySet *gps,
					 int keepRedundant);
struct gradedPolySet *gradedArrayToGradedPolySet(struct object ob);

struct object gradedPolySetToGradedArray(gps,keepRedundant)
struct gradedPolySet *gps;
int keepRedundant;
{
  struct object ob,vec;
  int i;
  if (gps == (struct gradedPolySet *)NULL) return(NullObject);
  ob = newObjectArray(gps->maxGrade +1);
  vec = newObjectArray(gps->maxGrade);
  for (i=0; i<gps->maxGrade; i++) {
    putoa(vec,i,KpoInteger(i));
    putoa(ob,i+1,polySetToArray(gps->polys[i],keepRedundant));
  }
  putoa(ob,0,vec);
  return(ob);
}

struct gradedPolySet *gradedArrayToGradedPolySet(ob)
struct object ob;
{
  int n,max,i,j;
  struct object vec,gvec;
  struct gradedPolySet *grG;
  POLY f;
  int grd,ind;
  if (ob.tag != Sarray) errorKan1("%s\n","gradedArrayToGradedPolySet(): the argument must be an array.");
  n = getoaSize(ob);
  if (n<2) return(arrayToGradedPolySet(ob));
  if (getoa(ob,0).tag != Sarray) return(arrayToGradedPolySet(ob));
  if (n-1 != getoaSize(getoa(ob,0)))
    errorKan1("%s\n","gradedArrayToGradedPolySet(): the sizes of arrays mismatch.");
  max = 0; n--;
  gvec = getoa(ob,0); /* grade vector */
  for (i=0; i<n; i++) {
    if (getoa(gvec,i).tag != Sinteger)
      errorKan1("%s\n","gradedArrayToGradedPolySet(): the first argument must be a vector of grades.");
    if (KopInteger(getoa(gvec,i)) > max) max = KopInteger(getoa(gvec,i));
  }
  grG = newGradedPolySet(max+1);
  j = 0;
  for (i=0; i<grG->lim;i++) {
    if (i == KopInteger(getoa(gvec,i))) {
      j++;
      if (getoa(ob,j).tag != Sarray) errorKan1("%s\n","gradedArrayToGradedPolySet(): the argument must be an array of polynomials.");
      grG->polys[i] = newPolySet(getoaSize(getoa(ob,j)));
    }else {
      grG->polys[i] = newPolySet(0);
    }
  }
  for (i=0; i<n; i++) {
    vec = getoa(ob,i+1);
    for (j=0; j<getoaSize(vec);j++) {
      if (getoa(vec,j).tag != Spoly) {
	errorKan1("%s(%d,%d)\n","gradedArrayToGradedPolySet(): the element must be polynomial. (i,j)=");
      }
      f = KopPOLY(getoa(vec,j));
      whereInG(grG,f,&grd,&ind);
      grG = putPolyInG(grG,f,grd,ind,(struct syz0 *)NULL,1);
    }
  }
  return(grG);
}


  static int tmpOrder[] = 
/*
   0    1    2    3    4    5    6    7    8    9   10   11
  x5   x4   x3   x2   x1   x0   D5   D4   D3   D2   D1   D0
*/
  {
   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,
   0,   0,   0,   0,   0,  -1,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,  -1,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  -1,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  -1,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,  -1,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,  -1,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,  -1,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1};

							       
  /* tmp code */
  TransX[0] = "x0"; TransX[1] = "x1"; TransX[2] = "x2";
  TransX[3] = "x3"; TransX[4] = "x4"; TransX[5] = "t";

  TransD[0] = "h"; TransD[1] = "D1"; TransD[2] = "D2";
  TransD[3] = "D3"; TransD[4] = "D4"; TransD[5] = "T";

  CurrentRingp = (struct ring *)GC_malloc(sizeof(struct ring));
  CurrentRingp->p = P;
  CurrentRingp->n = N; CurrentRingp->m = M; CurrentRingp->l = L; CurrentRingp->c = C;
  CurrentRingp->nn = NN; CurrentRingp->mm = MM; CurrentRingp->ll = LL;
  CurrentRingp->cc = CC;
  CurrentRingp->x = TransX;
  CurrentRingp->D = TransD;
  CurrentRingp->order = tmpOrder;
  CurrentRingp->next = (struct ring *)NULL;
  Order = tmpOrder;