[BACK]Return to type.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2018 / builtin

Diff for /OpenXM_contrib2/asir2018/builtin/type.c between version 1.2 and 1.3

version 1.2, 2018/09/28 08:20:27 version 1.3, 2018/10/19 23:27:38
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2018/builtin/type.c,v 1.1 2018/09/19 05:45:06 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2018/builtin/type.c,v 1.2 2018/09/28 08:20:27 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
   
 void Ptype(), Pntype();  void Ptype(), Pntype();
   void Preadarray();
   
 struct ftab type_tab[] = {  struct ftab type_tab[] = {
   {"type",Ptype,1},    {"type",Ptype,1},
   {"ntype",Pntype,1},    {"ntype",Pntype,1},
     {"readarray",Preadarray,1},
   {0,0,0},    {0,0,0},
 };  };
   
Line 83  Obj *rp;
Line 85  Obj *rp;
     STOZ(NID(t),q); *rp = (Obj)q;      STOZ(NID(t),q); *rp = (Obj)q;
   } else    } else
     *rp = 0;      *rp = 0;
   }
   
   #include <sys/types.h>
   #include <sys/stat.h>
   
   void prod_array_rec(unsigned int *p,unsigned int n,mpz_t r,int level)
   {
     unsigned int n2;
     mpz_t s0,s1;
   
     if ( n == 0 )
       mpz_set_ui(r,1);
     else if ( n == 1 )
       mpz_set_ui(r,p[0]);
     else {
       n2 = n/2;
       mpz_init(s0);
       prod_array_rec(p,n2,s0,level+1);
       mpz_init(s1);
       prod_array_rec(p+n2,n-n2,s1,level+1);
       mpz_mul(r,s0,s1);
     }
   }
   
   void Preadarray(NODE arg,VECT *rp)
   {
     char *name;
     struct stat buf;
     FILE *fp;
     mpz_t z;
     Z x;
     unsigned int *p;
     unsigned int n,i;
     VECT v;
   
     name = BDY((STRING)ARG0(arg));
     stat(name,&buf);
     n = buf.st_size/sizeof(unsigned int);
     fp = fopen(name,"rb");
     p = (unsigned int *)MALLOC(n*sizeof(unsigned int));
     fread(p,n,sizeof(unsigned int),fp);
     fclose(fp);
     MKVECT(v,n);
     for ( i = 0; i < n; i++ ) {
       mpz_init_set_ui(z,p[i]);
       MPZTOZ(z,x);
       BDY(v)[i] = (pointer)x;
     }
     *rp = v;
 }  }

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

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