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

Diff for /OpenXM/src/kan96xx/Kan/order.c between version 1.4 and 1.8

version 1.4, 2001/05/04 01:06:24 version 1.8, 2003/06/26 13:00:11
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/Kan/order.c,v 1.3 2000/06/09 08:02:02 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/Kan/order.c,v 1.7 2003/06/26 08:14:46 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include "datatype.h"  #include "datatype.h"
 #include "stackm.h"  #include "stackm.h"
Line 58  void showRing(level,ringp) 
Line 58  void showRing(level,ringp) 
   int P;    int P;
   char *mtype;    char *mtype;
   extern char *F_isSameComponent;    extern char *F_isSameComponent;
     POLY f;
     POLY fx;
     POLY fd;
     POLY rf;
   fp = stdout;    fp = stdout;
   
   N=ringp->n; M = ringp->m; L = ringp->l; C = ringp->c;    N=ringp->n; M = ringp->m; L = ringp->l; C = ringp->c;
Line 80  void showRing(level,ringp) 
Line 84  void showRing(level,ringp) 
     fprintf(fp,"\n");      fprintf(fp,"\n");
     fprintf(fp,"where ");      fprintf(fp,"where ");
     for (i=M; i<N; i++) {      for (i=M; i<N; i++) {
       fprintf(fp," %s %s - %s %s = 1, ",TransD[i],TransX[i],        fx = cxx(1,i,1,ringp); fd = cdd(1,i,1,ringp);
               TransX[i],TransD[i]);            rf = ppSub(ppMult(fd,fx),ppMult(fx,fd));
         fprintf(fp," %s %s - %s %s = %s, ",TransD[i],TransX[i],
                 TransX[i],TransD[i],POLYToString(rf,'*',0));
     }      }
     fprintf(fp,"\n\n");      fprintf(fp,"\n\n");
   }    }
Line 92  void showRing(level,ringp) 
Line 98  void showRing(level,ringp) 
     fprintf(fp,"\n");      fprintf(fp,"\n");
     fprintf(fp,"where ");      fprintf(fp,"where ");
     for (i=L; i<M; i++) {      for (i=L; i<M; i++) {
       fprintf(fp," %s %s - %s %s = %s, ",TransD[i],TransX[i],        fprintf(fp," %s %s - %s %s = ",TransD[i],TransX[i],
               TransX[i],TransD[i],                TransX[i],TransD[i]);
               TransD[i]);        f=ppSub(ppMult(cdd(1,i,1,ringp),cxx(1,i,1,ringp)),
                 ppMult(cxx(1,i,1,ringp),cdd(1,i,1,ringp)));
         fprintf(fp," %s, ",POLYToString(f,'*',0));
     }      }
     fprintf(fp,"\n\n");      fprintf(fp,"\n\n");
   }    }
Line 172  void showRing(level,ringp) 
Line 180  void showRing(level,ringp) 
     printObjectList((struct object *)(ringp->gbListTower));      printObjectList((struct object *)(ringp->gbListTower));
     fprintf(fp,"\n");      fprintf(fp,"\n");
   }    }
     if (ringp->degreeShiftSize) {
       fprintf(fp,"degreeShift vector (N=%d,Size=%d)= \n[\n",ringp->degreeShiftN,ringp->degreeShiftSize);
       {
         int i,j;
         for (i=0; i<ringp->degreeShiftN; i++) {
           fprintf(fp," [");
           for (j=0; j< ringp->degreeShiftSize; j++) {
             fprintf(fp," %d ",ringp->degreeShift[i*(ringp->degreeShiftSize)+j]);
           }
           fprintf(fp,"]\n");
         }
       }
       fprintf(fp,"]\n");
     }
     fprintf(fp,"---  weight vectors ---\n");
   if (level) printOrder(ringp);    if (level) printOrder(ringp);
   
   if (ringp->next != (struct ring *)NULL) {    if (ringp->next != (struct ring *)NULL) {
Line 328  int mmLarger_matrix(ff,gg)
Line 350  int mmLarger_matrix(ff,gg)
   int in2;    int in2;
   int *from, *to;    int *from, *to;
   int omsize;    int omsize;
     int dssize;
     int dsn;
     int *degreeShiftVector;
   
   if (ff == POLYNULL ) {    if (ff == POLYNULL ) {
     if (gg == POLYNULL) return( 2 );      if (gg == POLYNULL) return( 2 );
Line 345  int mmLarger_matrix(ff,gg)
Line 370  int mmLarger_matrix(ff,gg)
   from = rp->from;    from = rp->from;
   to = rp->to;    to = rp->to;
   omsize = rp->orderMatrixSize;    omsize = rp->orderMatrixSize;
     if (dssize = rp->degreeShiftSize) {
           degreeShiftVector = rp->degreeShift;  /* Note. 2003.06.26 */
           dsn = rp->degreeShiftN;
     }
   
   flag = 1;    flag = 1;
   for (i=N-1,k=0; i>=0; i--,k++) {    for (i=N-1,k=0; i>=0; i--,k++) {
Line 361  int mmLarger_matrix(ff,gg)
Line 390  int mmLarger_matrix(ff,gg)
     sum = 0; in2 = i*2*N;      sum = 0; in2 = i*2*N;
     /* for (k=0; k<2*N; k++) sum += exp[k]*Order[in2+k]; */      /* for (k=0; k<2*N; k++) sum += exp[k]*Order[in2+k]; */
     for (k=from[i]; k<to[i]; k++) sum += exp[k]*Order[in2+k];      for (k=from[i]; k<to[i]; k++) sum += exp[k]*Order[in2+k];
       if (dssize && ( i < dsn)) { /* Note, 2003.06.26 */
         if ((f->e[N-1].x < dssize) && (f->e[N-1].x >= 0) &&
             (g->e[N-1].x < dssize) && (g->e[N-1].x >= 0)) {
           sum += degreeShiftVector[i*dssize+ (f->e[N-1].x)]
                 -degreeShiftVector[i*dssize+ (g->e[N-1].x)];
         }else{
           warningOrder("Size mismatch in the degree shift vector. It is ignored.");
         }
       }
     if (sum > 0) return(1);      if (sum > 0) return(1);
     if (sum < 0) return(0);      if (sum < 0) return(0);
   }    }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.8

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