示例#1
0
int main(int argc, string argv[])
{
    stream istr, ostr;
    real eps2, tnow;
    int nforce, nbody, i;
    bodyptr btab = NULL;
    string intags[MaxBodyFields];

    initparam(argv, defv);
    layout_body(bodytags, Precision, NDIM);
    istr = stropen(getparam("in"), "r");
    get_history(istr);
    ostr = stropen(getparam("out"), "w");
    put_history(ostr);
    eps2 = rsqr(getdparam("eps"));
    nforce = -1;				/* use nforce as flag...    */
    while (get_snap(istr, &btab, &nbody, &tnow, intags, FALSE)) {
        if (nforce == -1 && ! set_member(intags, MassTag))
	    error("%s: Mass data missing from 1st snapshot\n", getargv0());
	if (! set_member(intags, PosTag))
	    error("%s: %s data missing\n", getargv0(), PosTag);
	if (nforce == -1)
	   nforce = (strnull(getparam("nforce")) ?
		       nbody : MIN(getiparam("nforce"), nbody));
	for (i = 0; i < nforce; i++)
	    sum1force(btab, nbody, i, eps2);
	put_snap(ostr, &btab, &nforce, &tnow, bodytags);
    }
    return (0);
}
示例#2
0
mxArray * FT_set_Set(const set_type S)
{
	mxArray * tmp;
	double * r;
	int i, j;
	int num;
	
	if (S) {
		num = (int)(S[0]);
		j = 0;
		for (i = 1; i <= num; i++) {
			if (set_member(i,S)) {
				j++; 
			}
		}
		tmp = mxCreateDoubleMatrix(1, j, mxREAL);
		r = mxGetPr(tmp);
		j = 0;
		for (i = 1; i <= num; i++) {
			if (set_member(i,S)) {
				r[j++] = i;
			}
		}	
		return tmp;
	}
	return 0;
}
示例#3
0
int main(int argc, string argv[])
{
    stream istr, ostr;
    string itags[MaxBodyFields];

    initparam(argv, defv);
    new_field(&LinkField, IntType, LinkTag);	/* use int's worth of space */
    new_field(&LinkField + 1, NULL, NULL);
    layout_body(bodytags, Precision, NDIM);
    istr = stropen(getparam("in"), "r");
    get_history(istr);
    if (! get_snap(istr, &btab, &nbody, &tnow, itags, TRUE))
        error("%s: snapshot input failed\n", getargv0());
    if (! set_member(itags, PosTag))
        error("%s: %s data missing\n", getargv0(), PosTag);
    if (getbparam("subkey") && ! set_member(itags, KeyTag))
        error("%s: %s data missing\n", getargv0(), KeyTag);
    findobj(getdparam("bcrit"),	getiparam("nmin"), getbparam("subkey"));
    ostr = stropen(getparam("out"), "w");
    put_history(ostr);
    put_snap(ostr, &btab, &nbody, &tnow,
             set_union(itags, set_cons(KeyTag, NULL)));
    strclose(ostr);
    return (0);
}
示例#4
0
void snapstack(bodyptr btab, bodyptr bt1, int nb1, bodyptr bt2, int nb2,
	       string *tags)
{
  vector deltar, deltav;
  bodyptr bp;
  int i;
  
  setvect(deltar, burststring(getparam("deltar"), ", "));
  setvect(deltav, burststring(getparam("deltav"), ", "));
  for (i = 0; i < nb1; i++) {
    bp = NthBody(btab, i);
    memcpy(bp, NthBody(bt1, i), SizeofBody);
    if (set_member(tags, PosTag)) {
      ADDMULVS(Pos(bp), deltar, 0.5);
    }
    if (set_member(tags, VelTag)) {
      ADDMULVS(Vel(bp), deltav, 0.5);
    }
  }
  for (i = 0; i < nb2; i++) {
    bp = NthBody(btab, i + nb1);
    memcpy(bp, NthBody(bt2, i), SizeofBody);
    if (set_member(tags, PosTag)) {
      ADDMULVS(Pos(bp), deltar, -0.5);
    }
    if (set_member(tags, VelTag)) {
      ADDMULVS(Vel(bp), deltav, -0.5);
    }
  }
}
示例#5
0
int main(int argc, string argv[])
{
  stream istr, ostr;
  bodyptr btab = NULL;
  int nbody;
  real tnow;
  string intags[MaxBodyFields];
  gsprof *gsp;

  initparam(argv, defv);
  layout_body(bodyfields, Precision, NDIM);
  istr = stropen(getparam("in"), "r");
  get_history(istr);
  if (! get_snap(istr, &btab, &nbody, &tnow, intags, FALSE))
    error("%s: snapshot input failed\n", getargv0());
  if (! set_member(intags, PosTag))
    error("%s: position data missing\n", getargv0());
  if (! set_member(intags, MassTag))
    error("%s: mass data missing\n", getargv0());
  gsp = snapgsp(btab, nbody, getiparam("npoint"),
		getdparam("alpha"), getdparam("beta"));
  if (! strnull(getparam("out"))) {
    ostr = stropen(getparam("out"), "w");
    put_history(ostr);
    put_gsprof(ostr, gsp);
    strclose(ostr);
  }
  return (0);
}
示例#6
0
int main(int argc, string argv[])
{
  string prog, coords, itags[MaxBodyFields], otags[MaxBodyFields];
  stream xstr, ostr;
  bodyptr btab = NULL, bp;
  int nbody;
  real tnow;
  vector cmpos, cmvel, cmacc;

  initparam(argv, defv);
  exprs[0] = getparam("weight");
  prog = mktemp((string) copxstr("/tmp/sm_XXXXXX", sizeof(char)));
  buildmap(prog, names, exprs, types, NULL, Precision, NDIM, TRUE);
  xstr = execmap(prog);
  if (get_tag_ok(xstr, "History"))
    skip_item(xstr);
  get_history(xstr);
  ostr = stropen(getparam("out"), "w");
  put_history(ostr);
  coords = getparam("coords");
  new_field(&WeightField, RealType, "Weight");
  new_field(&WeightField + 1, NULL, NULL);
  while (get_snap(xstr, &btab, &nbody, &tnow, itags, TRUE, NULL)) {
    if (scanopt(coords, PosTag) && set_member(itags, PosTag)) {
      snapcmpos(cmpos, btab, nbody, WeightField.offset);
      for (bp = btab; bp < NthBody(btab, nbody); bp = NextBody(bp)) {
	SUBV(Pos(bp), Pos(bp), cmpos);
      }
      eprintf("[%s: centroid position: %f,%f,%f]\n", getprog(),
	      cmpos[0], cmpos[1], cmpos[2]);
    }
    if (scanopt(coords, VelTag) && set_member(itags, VelTag)) {
      snapcmvel(cmvel, btab, nbody, WeightField.offset);
      for (bp = btab; bp < NthBody(btab, nbody); bp = NextBody(bp)) {
	SUBV(Vel(bp), Vel(bp), cmvel);
      }
      eprintf("[%s: centroid velocity: %f,%f,%f]\n", getprog(),
	      cmvel[0], cmvel[1], cmvel[2]);
    }
    if (scanopt(coords, AccTag) && set_member(itags, AccTag)) {
      snapcmacc(cmacc, btab, nbody, WeightField.offset);
      for (bp = btab; bp < NthBody(btab, nbody); bp = NextBody(bp)) {
	SUBV(Acc(bp), Acc(bp), cmacc);
      }
      eprintf("[%s: cen. acceleration: %f,%f,%f]\n", getprog(),
	      cmacc[0], cmacc[1], cmacc[2]);
    }
    del_tag(otags, itags, "Weight");
    put_snap(ostr, &btab, &nbody, &tnow, otags);
  }
  strclose(ostr);
  if (unlink(prog) != 0)
    error("%s: can't unlink %s\n", getprog(), prog);
  return (0);
}
示例#7
0
void rotate(snapshot *snap, string *tags, string *vecs, char axis,
	    real thetax, real thetay, real thetaz)
{
  matrix rmat;
  bodyptr bp;

  switch (tolower(axis)) {
    case 'x':
      xmatrix(rmat, thetax);
      break;
    case 'y':
      ymatrix(rmat, thetay);
      break;
    case 'z':
      zmatrix(rmat, thetaz);
      break;
    default:
      error("%s: unknown axis %c\n", getargv0(), axis);
  }
  if (set_member(tags, PosTag) && set_member(vecs, PosTag))
    for_all_bodies(bp, *snap)
      rotatevec(Pos(bp), rmat);
  if (set_member(tags, VelTag) && set_member(vecs, VelTag))
    for_all_bodies(bp, *snap)
      rotatevec(Vel(bp), rmat);
  if (set_member(tags, AccTag) && set_member(vecs, AccTag))
    for_all_bodies(bp, *snap)
      rotatevec(Acc(bp), rmat);
  if (set_member(tags, AuxVecTag) && set_member(vecs, AuxVecTag))
    for_all_bodies(bp, *snap)
      rotatevec(AuxVec(bp), rmat);
}
示例#8
0
void readsphr(string name)
{
    stream instr;
    real tsnap;
    string infields[MaxBodyFields];

    instr = stropen(name, "r");
    get_history(instr);
    if (! get_snap(instr, &spheroid, &nspheroid, &tsnap, infields, FALSE))
        error("readsphr in %s: no data in input file\n", getargv0());
    strclose(instr);
    if (! (set_member(infields, MassTag) && set_member(infields, PosTag)))
        error("readsphr in %s: required data missing\n", getargv0());
}
示例#9
0
文件: cddmex.c 项目: zhihan/checkmate
mxArray * ZH_set_Vlist(const dd_SetFamilyPtr Inc, const dd_SetFamilyPtr Adj)
{
	mxArray *A, *row;
	double *r;
	dd_bigrange i, j;  /* unsigned long int */
	dd_bigrange cur;
	set_type s, adj;
	int count, total;
	int num;

	if(Inc){
		num = (int) Inc->famsize;
		A = mxCreateCellMatrix(num,1);
		for (i=0;i<Inc->famsize;i++){
			set_initialize(&s, Inc->set[i][0]);
			set_copy(s, Inc->set[i]);
			count=0;
			if (set_card(s)>0) {
				/*get the first element in the set*/
				for (j=1;j<=s[0];j++){
					if (set_member(j,s)) break;
				}
				cur = j;
				total = set_card(s);
				row = mxCreateDoubleMatrix(1,total,mxREAL);
				r = mxGetPr(row);
				while (count <= total){
					/* write to the output */
					set_delelem(s, cur);
					r[count++]=(double)cur;
					/* find its neighbor in list */
					adj = Adj->set[cur-1]; 
					for (j=1; j<=s[0]; j++){
						if ((set_member(j,adj)==1 )&&(set_member(j,s)==1)) {
							break;
						}
					}
					if (j<=s[0])
						cur = j;
					else
						break;
				}
				mxSetCell(A, i, row);
			}
		}
		return A;
	}
    return 0;  
}
示例#10
0
文件: cddmex.c 项目: zhihan/checkmate
void implicit_linear(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
{
    dd_MatrixPtr H;
    dd_rowset rows;
    dd_ErrorType err;
    if (nrhs  == 1 && nlhs <= 2 && mxIsStruct(prhs[0])) {
        H = FT_get_H_MatrixPtr(prhs[0]);		
        dd_set_global_constants();  /* First, this must be called. */
        rows = dd_ImplicitLinearityRows(H, &err);

        if (err == dd_NoError) {
            int total, element, i;
            double* pr;

            total = set_card(rows);
            plhs[0] = mxCreateDoubleMatrix(total, 1, mxREAL);
            pr = mxGetPr(plhs[0]);
            
            for (i=1, element=0; i<=rows[0]; i++){
                if (set_member(i, rows)) {
                    pr[element++] = (double)i;
                }
            }
        } else {
            dd_WriteErrorMessages(stdout,err);
            mexErrMsgTxt("CDD returned an error, see above(!) for details");
        }
        dd_FreeMatrix(H);
        set_free(rows);
        return;
    } else {
        mexErrMsgTxt("hull expects a V input struct and produces an H output struct");
    }
    
}
示例#11
0
mxArray * FT_set_SetFamilyPtr(const dd_SetFamilyPtr F)
{
	mxArray * A, * tmp;
	double * r;
	int i, j, k;
	int num;
	
	if (F) {
		num = (int)(F->famsize);
		A = mxCreateCellMatrix(num, 1); 
		for (i=0; i<(int)(F->famsize); i++) {
			num = (int)set_card(F->set[i]);
			tmp = mxCreateDoubleMatrix(1, num, mxREAL);
			r = mxGetPr(tmp);
			k = 0;
			for (j = 1; j <= *(F->set[i]); j++) {
				if (set_member(j,F->set[i]))
					r[k++] = j;
			}
			mxSetCell(A, i, tmp);
		}
		return A;
	}
	return 0;
}
示例#12
0
文件: tw.c 项目: Alberne/tinyprograme
/*折扣计算,并打印小票信息
*@parm: member 商品条形码信息
*@parm: c 库存商品集合
*@parm: c1 总计金额
*@parm: c2 节省金额*/
void settle_discount_print(const void *member, void *c, float *c1, float *c2)
{
	struct product_detail *product;
	struct sales_products *sales;
	unsigned int count;  //购买的商品数量
	float money; //小记金额
	float rate; //折扣率
	float price; //单价
	float save_money; //节省金额

	count = money = save_money = 0;
	sales = (struct sales_products *)member;
	product = (struct product_detail *)set_member((struct set_t *)c, sales);

	count = sales->sum;
	price = product->unit_price;
	money = (count * price) * DISCOUNT_RATE;
	save_money = (count * price) - money;
	assert(product && sales);
	printf("名称:%s,",product->name);
	printf("数量:%u",count);
	printf("%s,",product->unit);
	printf("单价:%.2f(元),",price);
	printf("小记:%.2f(元)", money);
	printf("节省%.2f(元)\n",save_money);

	(*c1) += money; //更新消费总计
	(*c2) += save_money; //更新节省总结

}
示例#13
0
int main(int argc, string argv[])
{
  string *datafields, *bodyfields, times, ifmt, rfmt;
  stream istr;
  bodyptr btab = NULL;
  int nbody;
  real tnow;
  string intags[MaxBodyFields];

  initparam(argv, defv);
  istr = stropen(getparam("in"), "r");
  get_history(istr);
  datafields = burststring(getparam("fields"), ", ");
  if (set_member(datafields, TimeTag))
    bodyfields = set_diff(datafields, set_cons(TimeTag, NULL));
  else
    bodyfields = datafields;
  layout_body(bodyfields, Precision, NDIM);
  times = getparam("times");
  ifmt = getparam("ifmt");
  rfmt = getparam("rfmt");
  print_header(datafields, getparam("hfmt"), getparam("keyhead"),
	       burststring(getparam("auxhead"), ", "));
  while (get_snap_t(istr, &btab, &nbody, &tnow, intags, FALSE, times)) {
    if (! set_subset(intags, bodyfields))
      error("%s: one or more required fields not found\n", getargv0());
    print_data(btab, nbody, tnow, datafields, ifmt, rfmt);
    skip_history(istr);
  }
  return (0);
}
示例#14
0
base_manager::base_manager()
{
	scoped_istream stream = istream_file(get_prefs_file(), true);
	read(prefs, *stream);

	if (member().empty()) {
		std::stringstream strstr;
		std::map<int, int> member;
		member.insert(std::make_pair(172, 5));
		member.insert(std::make_pair(176, 6));
		member.insert(std::make_pair(244, 7));
		member.insert(std::make_pair(279, 8));

		member.insert(std::make_pair(103, 8));
		member.insert(std::make_pair(106, 9));
		member.insert(std::make_pair(120, 9));
		member.insert(std::make_pair(381, 9));
		for (std::map<int ,int>::const_iterator it = member.begin(); it != member.end(); ++ it) {
			if (it != member.begin()) {
				strstr << ", ";
			}
			strstr << ((it->second << 16) | it->first);
		}
		set_member(strstr.str());
	}
}
示例#15
0
void ddf_DDMain(ddf_ConePtr cone)
{
  ddf_rowrange hh, itemp, otemp;
  ddf_boolean locallog=ddf_log; /* if ddf_log=ddf_FALSE, no log will be written.  */

  if (cone->d<=0){
    cone->Iteration=cone->m;
    cone->FeasibleRayCount=0;
    cone->CompStatus=ddf_AllFound;
    goto _L99;
  }
  if (locallog) {
     fprintf(stderr,"(Initially added rows ) = ");
     set_fwrite(stderr,cone->InitialHalfspaces);
  }
  while (cone->Iteration <= cone->m) {
    ddf_SelectNextHalfspace(cone, cone->WeaklyAddedHalfspaces, &hh);
    if (set_member(hh,cone->NonequalitySet)){  /* Skip the row hh */
      if (ddf_debug) {
        fprintf(stderr,"*The row # %3ld should be inactive and thus skipped.\n", hh);
      }
      set_addelem(cone->WeaklyAddedHalfspaces, hh);
    } else {
      if (cone->PreOrderedRun)
        ddf_AddNewHalfspace2(cone, hh);
      else{
        ddf_AddNewHalfspace1(cone, hh);
      }
      set_addelem(cone->AddedHalfspaces, hh);
      set_addelem(cone->WeaklyAddedHalfspaces, hh);
    }
    if (!cone->PreOrderedRun){
      for (itemp=1; cone->OrderVector[itemp]!=hh; itemp++);
        otemp=cone->OrderVector[cone->Iteration];
      cone->OrderVector[cone->Iteration]=hh;
        /* store the dynamic ordering in ordervec */
      cone->OrderVector[itemp]=otemp;
        /* store the dynamic ordering in ordervec */
    }
    if (locallog){
      fprintf(stderr,"(Iter, Row, #Total, #Curr, #Feas)= %5ld %5ld %9ld %6ld %6ld\n",
        cone->Iteration, hh, cone->TotalRayCount, cone->RayCount,
        cone->FeasibleRayCount);
    }
    if (cone->CompStatus==ddf_AllFound||cone->CompStatus==ddf_RegionEmpty) {
      set_addelem(cone->AddedHalfspaces, hh);
      goto _L99;
    }
    (cone->Iteration)++;
  }
  _L99:;
  if (cone->d<=0 || cone->newcol[1]==0){ /* fixing the number of output */
     cone->parent->n=cone->LinearityDim + cone->FeasibleRayCount -1;
     cone->parent->ldim=cone->LinearityDim - 1;
  } else {
    cone->parent->n=cone->LinearityDim + cone->FeasibleRayCount;
    cone->parent->ldim=cone->LinearityDim;
  }
示例#16
0
文件: cddmlio.c 项目: hnxiao/mcdd
void dd_MLWriteSet(set_type S)
{
  long j;

  MLPutFunction(stdlink,"List",set_card(S));
  for (j=1; j <= S[0]; j++) {
    if (set_member(j, S)) MLPutLongInteger(stdlink, j);
  }
}
示例#17
0
 bool init()
 {
     V_ = FromEigen(v);
     dd_ErrorType error = dd_NoError;
     /*dd_rowset redset,impl_linset;
     dd_rowindex newpos;
     dd_MatrixCanonicalize(&V_, &impl_linset, &redset, &newpos, &error);
     if(error != dd_NoError)
     {
         std::cout << ("can not reduce matrix") << std::endl;
     }
     fprintf(stdout, "\nRedundant rows: ");
     set_fwrite(stdout, redset);
     fprintf(stdout, "\n");
     set_free(redset);
     set_free(impl_linset);
     free(newpos);
     error = dd_NoError;*/
     H_= dd_DDMatrix2Poly(V_, &error);
     if(error != dd_NoError)
     {
         if(dd_debug)
             std::cout << ("numerical instability in cddlib. ill formed polytope") << std::endl;
     }
     else
     {
         init_= true;
         b_A = dd_CopyInequalities(H_);
         // get equalities and add them as complementary inequality constraints
         long elem;
         std::vector<long> eq_rows;
         for(elem=1;elem<=(long)(b_A->linset[0]);++elem)
         {
             if (set_member(elem,b_A->linset))
                eq_rows.push_back(elem);
         }
         int rowsize = (int)b_A->rowsize;
         A = matrix_t (rowsize + eq_rows.size(), (int)b_A->colsize-1);
         b = vector_t (rowsize + eq_rows.size());
         for(int i=0; i < rowsize; ++i)
         {
             b(i) = (value_type)(*(b_A->matrix[i][0]));
             for(int j=1; j < b_A->colsize; ++j)
             {
                 A(i, j-1) = -(value_type)(*(b_A->matrix[i][j]));
             }
         }
         int i = 0;
         for(std::vector<long int>::const_iterator cit = eq_rows.begin();
             cit != eq_rows.end(); ++cit, ++i)
         {
             b(rowsize + i) = -b((int)(*cit));
             A(rowsize + i) = -A((int)(*cit));
         }
     }
     return init_;
 }
示例#18
0
static void
hippo_block_group_member_dispose(GObject *object)
{
    HippoBlockGroupMember *block_group_member = HIPPO_BLOCK_GROUP_MEMBER(object);

    set_group(block_group_member, NULL);
    set_member(block_group_member, NULL);
    
    G_OBJECT_CLASS(hippo_block_group_member_parent_class)->dispose(object); 
}
示例#19
0
	x3ds_instance::x3ds_instance(player* player, x3ds_definition* def, character* parent, int id)	:
		character(player, parent, id),
		m_def(def),
		m_current_frame(0.0f),
		m_play_state(PLAY)
	{
		assert(m_def != NULL);

		// take the first camera
		m_camera = m_def->m_file->cameras;

		set_member("mapMaterial", as_map_material);
		set_member("play", as_3d_play);
		set_member("stop", as_3d_stop);
//		set_member("gotoAndStop", &as_3d_goto_and_stop);
//		set_member("gotoAndPlay", &as_3d_goto_and_play);
//		set_member("nextFrame", &as_3d_next_frame);
//		set_member("prevFrame", &as_3d_prev_frame);
	}
示例#20
0
文件: pkgu.c 项目: megabajt/poldek
struct pkguinf *pkguinf_restore(tn_alloc *na, tn_buf_it *it, const char *lang)
{
    struct pkguinf *pkgu;
    char *key = NULL, *val;
    size_t len = 0;

    pkgu = pkguinf_new(na);
    
    if (lang && strcmp(lang, "C") == 0) {
        while ((key = n_buf_it_getz(it, &len))) {
            if (len > 1)
                return NULL;
            
            if (*key == PKGUINF_TAG_ENDCMN)
                break;
            
            val = n_buf_it_getz(it, &len);
            switch (*key) {
                case PKGUINF_LICENSE:
                    set_member(pkgu, &pkgu->license, val, len);
                    break;

                case PKGUINF_URL:
                    set_member(pkgu, &pkgu->url, val, len);
                    break;

                case PKGUINF_VENDOR:
                    set_member(pkgu, &pkgu->vendor, val, len);
                    break;

                case PKGUINF_BUILDHOST:
                    set_member(pkgu, &pkgu->buildhost, val, len);
                    break;

                case PKGUINF_DISTRO:
                    set_member(pkgu, &pkgu->distro, val, len);
                    break;

                case PKGUINF_LEGACY_SOURCERPM:
                    set_member(pkgu, &pkgu->legacy_sourcerpm, val, len);
                    break;

                case PKGUINF_CHANGELOG:
                    set_member(pkgu, &pkgu->changelog, val, len);
                    break;

                default:
                    /* skip unknown tag */
                    ;
            }
        }
    }
    
    n_assert(lang);
    
    pkguinf_restore_i18n(pkgu, it, lang);
    return pkgu;
}
示例#21
0
/* Returns first item in s. s must be non-empty. */
static long set_first(const set_type s)
{
  long elem;

  for (elem = 1; elem <= s[0]; elem++) {
    if (set_member(elem, s)) {
      return elem;
    }
  }
  assert(0);                    /* empty set */
}
示例#22
0
void inputdata(void)
{
    stream instr;
    string intags[MaxBodyFields];
    bodyptr p;

    bodytab = NULL;				// request new input data
    instr = stropen(infile, "r");			// open input stream
    get_history(instr);				// read file history data
    if (! get_snap(instr, &bodytab, &nbody, &tnow, intags, FALSE))
        error("%s.inputdata: no data in input file\n", getprog());
    strclose(instr);				// close input stream
    if (! set_member(intags, MassTag) || ! set_member(intags, PosTag) ||
            ! set_member(intags, VelTag))
        error("%s.inputdata: essential data missing\n", getprog());
    if (scanopt(options, "reset-time"))		// reset starting time?
        tnow = 0.0;
    for (p = bodytab; p < bodytab+nbody; p++)	// loop over new bodies
        Type(p) = BODY;				// initializing body type
}
示例#23
0
文件: setoper.c 项目: cjgeyer/rcdd
void set_write(set_type set)
{
	long elem;
	
	for (elem=1;elem<=set[0];elem++)
	{
		if (set_member(elem,set))
			printf("%ld ",elem);
	}
	printf("\n");
}
示例#24
0
文件: setoper.c 项目: cjgeyer/rcdd
void set_fwrite_compl(FILE *f,set_type set)
{
	long elem;
	
	for (elem=1;elem<=set[0];elem++)
	{
		if (!set_member(elem,set))
			fprintf(f,"%ld ",elem);
	}
	fprintf(f,"\n");
}
示例#25
0
int main(int argc, string argv[])
{
    stream istr, ostr;
    string times, *produce, itags[MaxBodyFields], atags[MaxBodyFields];
    bodyptr btab = NULL;
    int nbody, ntag, i;
    real tsnap;
    bool expand;

    initparam(argv, defv);
    istr = stropen(getparam("in"), "r");
    get_history(istr);
    times = getparam("times");
    expand = streq(getparam("produce"), "*");
    if (! expand) {
        produce = burststring(getparam("produce"), ", ");
        layout_body(produce, Precision, NDIM);
    }
    atags[ntag = 0] = NULL;
    while (get_snap_t(istr, &btab, &nbody, &tsnap, itags, expand, times)) {
        for (i = 0; itags[i] != NULL; i++)
            if (! set_member(atags, itags[i])) {
                atags[ntag++] = itags[i];
                atags[ntag] = NULL;
            }
        get_history(istr);
    }
    if (! expand) {
        for (i = 0; produce[i] != 0; i++)
            if (! set_member(atags, produce[i]))
                error("%s: field %s missing\n", getargv0(), produce[i]);
    } else
        produce = atags;
    ostr = stropen(getparam("out"), "w");
    put_history(ostr);
    put_snap(ostr, &btab, &nbody, &tsnap, produce);
    strclose(ostr);
    return (0);
}
示例#26
0
文件: cddmlio.c 项目: hnxiao/mcdd
void dd_MLWriteSetFamily(dd_SetFamilyPtr F)
{
  long i,j;

  if (F!=NULL){
    MLPutFunction(stdlink,"List",F->famsize);
    for (i=0; i < F->famsize; i++) {
      MLPutFunction(stdlink,"List",set_card(F->set[i]));
      for (j=1; j <= F->setsize; j++) {
        if (set_member(j, F->set[i])) MLPutLongInteger(stdlink, j);
      }
    }
  }
}
示例#27
0
	bool	as_sharedobject::get_member(const tu_stringi& name, as_value* val)
	{
		if( as_object::get_member( name, val ) )
		{
			return true;
		}

		as_object * object = new as_object( get_player() );

		set_member( name, object );
		val->set_as_object( object );

		return true;
	}
示例#28
0
bool getdata(void)
{
    static bool firstcall = TRUE;
    string intags[MaxBodyFields];
    bodyptr bp;

    get_history(instr);
    if (! get_snap(instr, &btab, &nbody, &tnow, intags, FALSE,
		   getparam("times")))
	return (FALSE);
    if (firstcall && ! set_member(intags, bodytags[0]))
        error("%s: required %s data missing\n", getargv0(), bodytags[0]);
    if (firstcall && ! set_member(intags, bodytags[1]))
        if (streq(bodytags[1], KeyTag)) {
            eprintf("[%s: using default point color]\n", getargv0());
            for (bp = btab; bp < NthBody(btab, nbody); bp = NextBody(bp))
	        Key(bp) = pcolor;
	} else
	    error("%s: required %s data missing\n", getargv0(), bodytags[1]);
    if (firstcall && bodytags[2] != NULL && ! set_member(intags, bodytags[2]))
        error("%s: required %s data missing\n", getargv0(), bodytags[2]);
    firstcall = FALSE;
    return (TRUE);
}
示例#29
0
mxArray * FT_set_H_MatrixPtr(const dd_MatrixPtr M)
{
	mxArray * P;	
	mxArray * tmpa;	
	mxArray * tmpb;	
	mxArray * tmpl;
	int i, j;
	double * a;
	double * b;
	double * l;
	int k=0;

	dd_rowrange ii;

 	if ((M !=NULL) &&
 	    (M->representation == dd_Inequality)) {
    		const char *f[] = {"A", "B", "lin"};
    		int dims[] = {1};

    		P = mxCreateStructArray(1, dims, 3, f);
		if (set_card(M->linset)) {
			tmpl = mxCreateDoubleMatrix(1, set_card(M->linset), mxREAL);
			l = mxGetPr(tmpl);		
    			for (ii=1; ii<=M->rowsize; ii++) {
      				if (set_member(ii, M->linset)) {
      					l[k] = (int)ii;
      					k ++;
      				}
      			}
      			mxSetField(P, 0, "lin", tmpl);
		}

		tmpb = mxCreateDoubleMatrix(M->rowsize, 1, mxREAL);
		b = mxGetPr(tmpb);
		tmpa = mxCreateDoubleMatrix(M->rowsize, M->colsize - 1, mxREAL);
		a = mxGetPr(tmpa);
	  	for (i = 0 ; i < (int)(M->rowsize); i++) {
	  		b[i] = dd_get_d(M->matrix[i][0]);
    			for (j = 0; j < (int)(M->colsize) - 1; j++) {
      				a[i + j * (int)(M->rowsize)] = - dd_get_d(M->matrix[i][j + 1]);
      			}
      		}
      		mxSetField(P, 0, "A", tmpa);
      		mxSetField(P, 0, "B", tmpb);
      		return P;
	}
	return 0;
}
示例#30
0
  static ZMatrix getConstraints(dd_MatrixPtr A, bool returnEquations)
  {
    int rowsize=A->rowsize;
    int n=A->colsize-1;

    ZMatrix ret(0,n);
    for(int i=0;i<rowsize;i++)
      {
        bool isEquation=set_member(i+1,A->linset);
        if(isEquation==returnEquations)
          {
            QVector v(n);
            for(int j=0;j<n;j++)v[j]=Rational(A->matrix[i][j+1]);
            ret.appendRow(QToZVectorPrimitive(v));
          }
      }
    return ret;
  }