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); } }
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); } }
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); } }
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; }
//*********************************************************************** 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; }
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"); }