[BACK]Return to lmi.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / engine

Diff for /OpenXM_contrib2/asir2000/engine/lmi.c between version 1.1 and 1.5

version 1.1, 1999/12/03 07:39:08 version 1.5, 2017/01/08 03:05:39
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/asir99/engine/lmi.c,v 1.1.1.1 1999/11/10 08:12:26 noro Exp $ */  /*
    * Copyright (c) 1994-2000 FUJITSU LABORATORIES LIMITED
    * All rights reserved.
    *
    * FUJITSU LABORATORIES LIMITED ("FLL") hereby grants you a limited,
    * non-exclusive and royalty-free license to use, copy, modify and
    * redistribute, solely for non-commercial and non-profit purposes, the
    * computer program, "Risa/Asir" ("SOFTWARE"), subject to the terms and
    * conditions of this Agreement. For the avoidance of doubt, you acquire
    * only a limited right to use the SOFTWARE hereunder, and FLL or any
    * third party developer retains all rights, including but not limited to
    * copyrights, in and to the SOFTWARE.
    *
    * (1) FLL does not grant you a license in any way for commercial
    * purposes. You may use the SOFTWARE only for non-commercial and
    * non-profit purposes only, such as academic, research and internal
    * business use.
    * (2) The SOFTWARE is protected by the Copyright Law of Japan and
    * international copyright treaties. If you make copies of the SOFTWARE,
    * with or without modification, as permitted hereunder, you shall affix
    * to all such copies of the SOFTWARE the above copyright notice.
    * (3) An explicit reference to this SOFTWARE and its copyright owner
    * shall be made on your publication or presentation in any form of the
    * results obtained by use of the SOFTWARE.
    * (4) In the event that you modify the SOFTWARE, you shall notify FLL by
    * e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification
    * for such modification or the source code of the modified part of the
    * SOFTWARE.
    *
    * THE SOFTWARE IS PROVIDED AS IS WITHOUT ANY WARRANTY OF ANY KIND. FLL
    * MAKES ABSOLUTELY NO WARRANTIES, EXPRESSED, IMPLIED OR STATUTORY, AND
    * EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS
    * FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT OF THIRD PARTIES'
    * RIGHTS. NO FLL DEALER, AGENT, EMPLOYEES IS AUTHORIZED TO MAKE ANY
    * MODIFICATIONS, EXTENSIONS, OR ADDITIONS TO THIS WARRANTY.
    * UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT,
    * OR OTHERWISE, SHALL FLL BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY
    * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
    * DAMAGES OF ANY CHARACTER, INCLUDING, WITHOUT LIMITATION, DAMAGES
    * ARISING OUT OF OR RELATING TO THE SOFTWARE OR THIS AGREEMENT, DAMAGES
    * FOR LOSS OF GOODWILL, WORK STOPPAGE, OR LOSS OF DATA, OR FOR ANY
    * DAMAGES, EVEN IF FLL SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF
    * SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. EVEN IF A PART
    * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY
    * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
    * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
    *
    * $OpenXM: OpenXM_contrib2/asir2000/engine/lmi.c,v 1.4 2001/10/09 01:36:13 noro Exp $
   */
 #include "ca.h"  #include "ca.h"
 #include "base.h"  #include "base.h"
 #include "inline.h"  #include "inline.h"
Line 19  int lm_lazy;
Line 67  int lm_lazy;
   
 static GEN_LM current_mod_lm;  static GEN_LM current_mod_lm;
   
 void random_lm(r)  void random_lm(LM *r)
 LM *r;  
 {  {
         N n,t;          N n,t;
   
Line 31  LM *r;
Line 78  LM *r;
         MKLM(t,*r);          MKLM(t,*r);
 }  }
   
 void ntosparsen(p,bits)  void ntosparsen(N p,N *bits)
 N p;  
 N *bits;  
 {  {
         int l,i,j,nz;          int l,i,j,nz;
         N r;          N r;
Line 53  N *bits;
Line 98  N *bits;
         }          }
 }  }
   
 void setmod_lm(p)  void setmod_lm(N p)
 N p;  
 {  {
         int i;          int i;
       Q q;
   
         if ( !current_mod_lm )          if ( !current_mod_lm )
                 current_mod_lm = (GEN_LM)MALLOC(sizeof(struct oGEN_LM));                  current_mod_lm = (GEN_LM)MALLOC(sizeof(struct oGEN_LM));
Line 74  N p;
Line 119  N p;
                         current_mod_lm->id = UP2_SPARSE; /* XXX */                          current_mod_lm->id = UP2_SPARSE; /* XXX */
                 }                  }
         }          }
       setmod_lf(p);
 }  }
   
 void getmod_lm(p)  void getmod_lm(N *p)
 N *p;  
 {  {
         if ( !current_mod_lm )          if ( !current_mod_lm )
                 *p = 0;                  *p = 0;
Line 85  N *p;
Line 130  N *p;
                 *p = current_mod_lm->dense;                  *p = current_mod_lm->dense;
 }  }
   
 void simplm(n,r)  void simplm(LM n,LM *r)
 LM n;  
 LM *r;  
 {  {
         N rem;          N rem;
   
Line 101  LM *r;
Line 144  LM *r;
         }          }
 }  }
   
 void qtolm(q,l)  void simplm_force(LM n,LM *r)
 Q q;  
 LM *l;  
 {  {
           N rem;
   
           if ( !n )
                   *r = 0;
           else if ( NID(n) != N_LM )
                   *r = n;
           else {
                   gen_simpn_force(n->body,&rem);
                   MKLM(rem,*r);
           }
   }
   
   
   void qtolm(Q q,LM *l)
   {
         N rn;          N rn;
         LM a,b,c;          LM a,b,c;
   
Line 128  LM *l;
Line 184  LM *l;
   
 #define NZLM(a) ((a)&&(NID(a)==N_LM))  #define NZLM(a) ((a)&&(NID(a)==N_LM))
   
 void addlm(a,b,c)  void addlm(LM a,LM b,LM *c)
 LM a,b;  
 LM *c;  
 {  {
         int s;  
         N t,t1;          N t,t1;
         LM z;          LM z;
   
Line 148  LM *c;
Line 201  LM *c;
         }          }
 }  }
   
 void sublm(a,b,c)  void sublm(LM a,LM b,LM *c)
 LM a,b;  
 LM *c;  
 {  {
         int s;          int s;
         N t,t1,mod;          N t;
         LM z;          LM z;
   
         qtolm((Q)a,&z); a = z; qtolm((Q)b,&z); b = z;          qtolm((Q)a,&z); a = z; qtolm((Q)b,&z); b = z;
Line 175  LM *c;
Line 226  LM *c;
         }          }
 }  }
   
 void mullm(a,b,c)  void mullm(LM a,LM b,LM *c)
 LM a,b;  
 LM *c;  
 {  {
         N t,q,r;          N t,r;
         LM z;          LM z;
   
         qtolm((Q)a,&z); a = z; qtolm((Q)b,&z); b = z;          qtolm((Q)a,&z); a = z; qtolm((Q)b,&z); b = z;
Line 192  LM *c;
Line 241  LM *c;
         }          }
 }  }
   
 void divlm(a,b,c)  void divlm(LM a,LM b,LM *c)
 LM a,b;  
 LM *c;  
 {  {
         LM r;          LM r;
         Q t,m,i;          Q t,m,i;
Line 213  LM *c;
Line 260  LM *c;
         }          }
 }  }
   
 void chsgnlm(a,c)  void chsgnlm(LM a,LM *c)
 LM a,*c;  
 {  {
         LM t;          LM t;
         N s,u;          N s,u;
Line 229  LM a,*c;
Line 275  LM a,*c;
         }          }
 }  }
   
 void pwrlm(a,b,c)  void pwrlm(LM a,Q b,LM *c)
 LM a;  
 Q b;  
 LM *c;  
 {  {
         LM t;          LM t;
         N s;          N s;
Line 248  LM *c;
Line 291  LM *c;
         }          }
 }  }
   
 void pwrlm0(a,n,c)  void pwrlm0(N a,N n,N *c)
 N a,n;  
 N *c;  
 {  {
         N n1,t,t1,t2,r1;          N n1,t,t1,t2,r1;
         int r;          int r;
Line 270  N *c;
Line 311  N *c;
         }          }
 }  }
   
 int cmplm(a,b)  int cmplm(LM a,LM b)
 LM a,b;  
 {  {
         LM z;          LM z;
   
Line 289  LM a,b;
Line 329  LM a,b;
   
 void remn_special(N,N,int,unsigned int ,N *);  void remn_special(N,N,int,unsigned int ,N *);
   
 void gen_simpn(a,b)  void gen_simpn(N a,N *b)
 N a;  
 N *b;  
 {  {
         if ( !current_mod_lm )          if ( !current_mod_lm )
                 error("gen_simpn: current_mod_lm is not set");                  error("gen_simpn: current_mod_lm is not set");
Line 303  N *b;
Line 341  N *b;
                 remn(a,current_mod_lm->dense,b);                  remn(a,current_mod_lm->dense,b);
 }  }
   
 void gen_simpn_force(a,b)  void gen_simpn_force(N a,N *b)
 N a;  
 N *b;  
 {  {
         if ( !current_mod_lm )          if ( !current_mod_lm )
                 error("gen_simpn_force: current_mod_lm is not set");                  error("gen_simpn_force: current_mod_lm is not set");

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.5

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