Пример #1
0
void
session_send_rpc_evt_to_thread (u32 thread_index, void *fp, void *rpc_args)
{
  if (thread_index != vlib_get_thread_index ())
    session_send_rpc_evt_to_thread_force (thread_index, fp, rpc_args);
  else
    {
      void (*fnp) (void *) = fp;
      fnp (rpc_args);
    }
}
Пример #2
0
PUBLIC INLINE void apply_closure(VMSTATE vms, OVECTOR closure, VECTOR argvec) {
  if (closure == NULL || TAGGEDP(closure)) {
    vm_raise(vms, (OBJ) newsym("invalid-callable"), (OBJ) closure);
  } else if (closure->type == T_PRIM) {
    int primargc;
    prim_fn fnp = lookup_prim(NUM(AT(closure, PR_NUMBER)), &primargc);

    if (fnp != NULL) {
      if ((primargc >= 0 && argvec->_.length-1 != primargc) ||
	  (primargc < 0 && argvec->_.length-1 < -primargc))
	vm_raise(vms, (OBJ) newsym("wrong-argc"), (OBJ) closure);
      else
	vms->r->vm_acc = fnp(vms, argvec);
    } else
      vm_raise(vms, (OBJ) newsym("invalid-primitive"), AT(closure, PR_NUMBER));
  } else if (closure->type == T_CLOSURE) {
    OVECTOR meth = (OVECTOR) AT(closure, CL_METHOD);

    if (!MS_CAN_X(meth, vms->r->vm_effuid)) {
      vm_raise(vms, (OBJ) newsym("no-permission"), AT(meth, ME_NAME));
      return;
    }

    if (argvec->_.length-1 != NUM(AT(meth, ME_ARGC))) {
      vm_raise(vms, (OBJ) newsym("wrong-argc"), (OBJ) meth);
      return;
    }

    push_frame(vms);

    vms->r->vm_env = argvec;
    ATPUT(vms->r->vm_env, 0, AT(meth, ME_ENV));

    vms->r->vm_lits = (VECTOR) AT(meth, ME_LITS);
    vms->r->vm_code = (BVECTOR) AT(meth, ME_CODE);
    vms->r->vm_self = (OBJECT) AT(closure, CL_SELF);
    vms->c.vm_ip = 0;
    vms->r->vm_method = meth;
    if (NUM(AT(meth, ME_FLAGS)) & O_SETUID)
      vms->r->vm_effuid = (OBJECT) AT(meth, ME_OWNER);
  } else if (closure->type == T_CONTINUATION) {
    int i;
    VECTOR cstk = (VECTOR) AT(closure, CONT_STACK);

    for (i = 0; i < cstk->_.length; i++)
      ATPUT(vms->r->vm_stack, i, AT(cstk, i));
    vms->c.vm_top = cstk->_.length;

    restoreframe(vms, (OVECTOR) AT(closure, CONT_FRAME));
    vms->r->vm_acc = AT(argvec, 1);
  } else {
    vm_raise(vms, (OBJ) newsym("invalid-callable"), (OBJ) closure);
  }
}
Пример #3
0
std::string get_directory_path(std::string fileordirectory) {
  try {
    boost::filesystem::path fnp(fileordirectory);
    boost::filesystem::path dir = fnp.remove_filename();
#if BOOST_FILESYSTEM_VERSION == 3
    return dir.string();
#else
    return dir.native_file_string();
#endif
  }
  catch (const boost::filesystem::filesystem_error &e) {
    IMP_THROW("Error splitting file name \"" << fileordirectory << "\" got "
                                             << e.what(),
              IOException);
  }
}
Пример #4
0
double _Complex
test (int d, int t, double *x, double *y, double *z, int n,
      double _Complex (*fnp) (double))
{
  int m = n / 2;
  double min = y[t], max = z[t], med = x[m * d + t];
  double _Complex result = 0.0;

  if (n == 0)
    return 0.0;

  if (min > med)
    result += test (d, (t + 1) % d, x + (m + 1) * d, y, z, n - m - 1, fnp);
  else if (max < med)
    result += test (d, (t + 1) % d, x, y, z, m, fnp);
  else
    {
      result += fnp (y[0] + x[m]);
      result += test (d, (t + 1) % d, x + (m + 1) * d, y, z, n - m - 1, fnp);
    }
  return result;
}
Пример #5
0
//***********************************************************************
void CUlazDlg::Planete(int dan, int mje, int god, int sat, int min)
{
 double D[13],X[13],Y[13],Z[13],K[13],C[13],M[13];
 int br=0,rvs,ix; //brojac podataka
 double a,b,d,e,f,g,g1,ii,l,ll,l1,m,n,r,s,s1,s2,t,u,v,x,y,z,au,ea,fl,k1,qq=3,tn,td,ml,jd,Gvr;
 int i,j;
 double pi=3.1415927;
 double gmt=m_iGmt;

Gvr=(double)(sat-gmt+min/60.); //Globalno vrijeme

jd=367*(double)god-floor(7.*((double)god+floor(((double)mje+9)/12.))/4.);
jd+=floor(275.*mje/9.)+(double)dan+1721013.5;
jd=jd-.5*sgn(100.*god+(double)mje-190002.5)+.5;

ix=18;
do {
if( (god<ix*100 || (god==ix*100 && mje<3)) && fmod2(ix*100,400)!=0) jd++;
else break;
ix--;
} while(1);
if(god<1582 || (god==1582 && mje<10) ||(god==1582 && mje==10 && dan<15)) jd+=10;

t=td=((jd-2415020)+Gvr/24)/36525.;

for(i=1;i<=9;i++) {
   readdata(&br,&s);readdata(&br,&s1);readdata(&br,&s2); s+=s1*td+s2*td*td;
  m=pi/180*fnmo(s);
   readdata(&br,&s);readdata(&br,&s1);readdata(&br,&s2); s+=s1*td+s2*td*td;
  e=s; ea=m;
  for(a=1;a<=5;a++) ea=m+e*sin(ea);
   readdata(&br,&au); Z[i]=pi/180*au*(1-e*cos(ea));
  x=au*(cos(ea)-e); y=au*sin(ea)*sqrt(1-e*e); ln1060(x,&y,&r,&a);
   readdata(&br,&s);readdata(&br,&s1);readdata(&br,&s2); s+=s1*td+s2*td*td;
  a=s+a*180/pi;
   readdata(&br,&s);readdata(&br,&s1);readdata(&br,&s2); s+=s1*td+s2*td*td;
  v=fnmo(a+s); m=pi/180*s; b=pi/180*v;
   readdata(&br,&s);readdata(&br,&s1);readdata(&br,&s2); s+=s1*td+s2*td*td;
  ii=pi/180*s; a=atan(cos(ii)*tan(b-m)); if(a<0) a+=pi;
  a=180/pi*(a+m); if(fabs(v-a)>10) a-=180;
  a=fnmo(a); b=pi/180*a; b=180/pi*(atan(sin(b-m)*tan(ii)));
  C[i]=a; D[i]=b; if(D[i]>20) D[i]-=360;
} //next i

u=9;

ln460:   fl=1; if(s==1) fl=0;
for(i=1; i<=u; i++) K[i]=C[i];
for(i=1; i<=u-1; i++) {
  for(j=i+1; j<=u; j++) {
      if(K[j]>=K[i]) continue;
      k1=K[i]; K[i]=K[j]; K[j]=k1;
  }
}
a=1;
for(i=1;i<=u;i++) {
  for(j=1;j<=u;j++) if(K[(int)a]==C[j]) break;

	 rvs=0; if(qq==1 && Z[j]==1) {Z[j]=pi; rvs=1;}
	 z=K[(int)a]; K[(int)a]=pi; if(fl==1) goto ln540;
	  objx[j+1]=z; //objy[j+1]=rvs;
ln540:   a++;
} //next i;

u=11; if(qq==1) goto ln1600;

for(i=1;i<=9;i++) {
	C[i]*=pi/180; D[i]*=pi/180; if(i==1) {M[1]=Z[i]; goto ln600;}
	x=( (sqrt(Z[i])+sqrt(M[1]))*(sqrt(M[1])*sqrt(Z[i])) )/(pow(Z[i],1.5)+pow(M[1],1.5));
	x-=cos(C[1]-C[i]); if(x<0) {M[i]=1; goto ln600;}
	M[i]=0;
ln600:  X[i]=Z[i]*cos(D[i])*cos(C[i]); Y[i]=Z[i]*cos(D[i])*sin(C[i]);
	Z[i]*=sin(D[i]);
}

for(i=2;i<=9;i++) { X[i]-=X[1]; Y[i]-=Y[1]; Z[i]-=Z[1]; y=Y[i]; x=X[i];
		    ln1060(x,&y,&r,&a); g=a; y=Z[i]; x=r; ln1060(x,&y,&r,&a);
		    C[i]=180/pi*g; Z[i]=M[i]; M[i]=pi; D[i]=pi;
		  }
C[1]=fnmo(180/pi*C[1]+180);

ll=973563+1732564379*t-4*t*t;
g=1012395+6189*t; n=933060-6962911*t+7.5*t*t;
g1=1203586+14648523*t-37*t*t; d=1262655+1602961611*t-5*t*t; m=3600;

l=(ll-g1)/m; l1=((ll-d)-g)/m; f=(ll-n)/m; d/=m; y=2*d;

ml=22639.6*fns(l)-4586.4*fns(l-y)+2369.9*fns(y)+769*fns(2*l)-669*fns(l1);
ml=ml-411.6*fns(2*f)-212*fns(2*l-y)-206*fns(l+l1-y)+192*fns(l+y);
ml=ml-165*fns(l1-y)+148*fns(l-l1)-125*fns(d)-110*fns(l+l1)-55*fns(2*f-y);
tn=n+5392*fns(2*f-y)-541*fns(l1)-442*fns(y)+423*fns(2*f)-291*fns(2*l-2*f);
tn+=221*fns(l1+2*f-y)-176*fns(l-y)+147*fns(l-2*f)+118*fns(l);

C[10]=fnp(ll+ml,m); C[11]=fnmo(fnp(tn,m));
qq=1; s=1; goto ln460;

ln1600:
objx[1]=objx[2]; //objy[1]=objy[2];
objx[2]=objx[11]; //objy[2]=objy[11];
for(i=1;i<=12;i++) objx[i]=fnmo(objx[i]);
return;
}
Пример #6
0
void CODECHECK_sexActivity(Population &P)
{
	vector<double> age = vector_seq(10.0, 80.0, 200);
	vector<double> rskgrp = vector_seq(0, 2, 3);
	vector<double> nprtn = vector_seq(0, 9, 10);
	
	// --- Age

	vector<double> fage(age.size());
	
	for (int i=0; i<age.size(); i++) {
		fage[i] = P.sexAct_reduce_age(age[i]);
	}
	
	dcMatrix Mage(age);
	Mage.addColVector(fage);
	Mage.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_age.out");

	
	// --- Risk
	
	vector<double> frisk(rskgrp.size());
	
	for (int i=0; i<rskgrp.size(); i++) {
		frisk[i] = P.sexAct_reduce_riskGroup((int)(rskgrp[i]));
	}
	
	dcMatrix Mrisk(rskgrp);
	Mrisk.addColVector(frisk);
	Mrisk.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_risk.out");

	
	// --- Number of partners
	
	vector<double> fnp(nprtn.size());
	
	for (int i=0; i<nprtn.size(); i++) {
		fnp[i] = P.sexAct_reduce_nPartners((int)(nprtn[i]));
	}
	
	dcMatrix Mnp(nprtn);
	Mnp.addColVector(fnp);
	Mnp.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_npartner.out");
	
	
	// --- Maximum number of concurrent partners
	
	vector<double> maxp(rskgrp.size());
	
	for (int i=0; i<rskgrp.size(); i++) {
		maxp[i] = P.proba_nMaxCurrSexPartner(male, (int)(rskgrp[i]));
	}
	
	dcMatrix Mmaxp(rskgrp);
	Mmaxp.addColVector(maxp);
	Mmaxp.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_maxpartner_male.out");
	
	
	maxp.clear();
	maxp.resize(rskgrp.size());
	
	for (int i=0; i<rskgrp.size(); i++) {
		maxp[i] = P.proba_nMaxCurrSexPartner(female, (int)(rskgrp[i]));
	}
	
	dcMatrix Mmaxp2(rskgrp);
	Mmaxp2.addColVector(maxp);
	Mmaxp2.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_maxpartner_female.out");

	
	// --- Probability sex with CSW
	
	vector<double> pcsw(rskgrp.size());
	
	for (int i=0; i<rskgrp.size(); i++) {
		pcsw[i] = P.probaSex_sexworker((int)(rskgrp[i]));
	}
	
	dcMatrix Mpcsw(rskgrp);
	Mpcsw.addColVector(pcsw);
	Mpcsw.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_probacsw.out");

	
	// --- Probability sex type 0
	
	vector<double> psex0;
	vector<double> r1;
	vector<double> r2;
	
	for (int i=0; i<=rskgrp.size(); i++) {
		for (int j=0; j<=rskgrp.size(); j++) {
			r1.push_back(i);
			r2.push_back(j);
			psex0.push_back(P.probaSex_type0(i, j));
		}
	}
	
	dcMatrix Msex0(r1);
	Msex0.addColVector(r2);
	Msex0.addColVector(psex0);
	Msex0.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_probatype0.out");
	
	// --- Probability sex type 1
	
	vector<double> psex1;
	r1.clear();
	r2.clear();
	
	for (int i=0; i<=rskgrp.size(); i++) {
		for (int j=0; j<=rskgrp.size(); j++) {
			r1.push_back(i);
			r2.push_back(j);
			psex1.push_back(P.probaSex_type1(i, j));
		}
	}
	
	dcMatrix Msex1(r1);
	Msex1.addColVector(r2);
	Msex1.addColVector(psex1);
	Msex1.WriteToFileCSV(_DIR_VIZINPUT + "viz_input_sexact_probatype1.out");

	
}