void *__paused_thread(void *req) { LPVOID (*funk)(void *arg); THREAD *thread; struct thread_conditional *tc = (struct thread_conditional *)(req); tc->thread->id = gettid(); signal(SIGTERM, __thread_cancelled); pthread_mutex_lock(&tc->suspend_mutex); while(tc->engine_running == FALSE) { pthread_cond_wait(&tc->suspend_cond, &tc->suspend_mutex); } pthread_mutex_unlock(&tc->suspend_mutex); funk = tc->funk; thread = tc->thread; free(tc); if(event_poll(thread->sigterm, 0) == TRUE) { /* * In some cases, we might want to stop a thread before it does anything :/ */ return NULL; } return funk(thread); }
unsigned int funk(int n) { if (cache[n] != 0 || n == 0 || n == 1) { return cache[n]; } unsigned int a = funk(n-1); cache[n-1] = a; unsigned int b = funk(n-2); cache[n-2] = b; unsigned int c = funk(n-3); cache[n-3] = c; return a+b+c; }
int main(void) { int n,i; for (i=0; i<40; i++) { cache[i] = 0; } cache[2] = 1; for (n=0; n<39; n++) { printf("t(%d)=%d \n",n,funk(n)); } return 0; }
void funk(arr[3][3],int drag) { int tmp; //flyttad pusselbit if (test(arr)) { if (drag < min) { min = drag; } } else { if (arr[0][1] == EMPTY && arr[1][1] != EMPTY) { tmp = arr[0][1]; arr[0][1] = arr[1][1]; arr[1][1] = tmp; funk(arr,drag+1); arr[1][1] = arr[0][1]; arr[0][1] = tmp; } //andra möjliga förflyttningar } return; }
int main() { int hjemvegen123 = 2; printf ("%d %d", hjemvegen123, funk()); return 0; }
int main() { int a = funk(2,3); printf("%d\n",a); printf("%d\n",hemmelig_funksjon(2,3)); return 0; }
/* * Fit to a gaussian */ int SimplexFitting::fitGaussian(double* fitting, double &err, int howToInitParams) // mIndex1 and mIndex2 are the //starting index and endind index of the fitting range. { float pp[VARNUM+1][VARNUM+1], yy[VARNUM+1]; float da[VARNUM]={2.0, 2.0, 2.0, 2.0, 2.0}; float a[VARNUM]={0.7, 0.0, 0.2, 0.0, 0.0}; float min_a[VARNUM]; float ptol[VARNUM]; int nvar=4; int iter, jmin, i, iter_counter; float errmin; float delfac=2.0; float ftol2=5.0e-4; float ptol2=5.0e-4; float ftol1=1.0e-5; float ptol1=1.0e-5; //init params if (howToInitParams == 0) { a[0]=mRaw[mIndex1]; a[2]=1.414*(mIndex2-mIndex1)/(mDim-1); } else { a[0]=mRaw[(mIndex1+mIndex2)/2-1]; a[1]=0.5*(mIndex2-mIndex1)/(mDim-1); //sigma=0.3*(mIndex2-mIndex1)/(mDim-1); a[2]=1.414*0.3*(mIndex2-mIndex1)/(mDim-1); } //find the range of fitting data; double min, max; double range; if( (mIndex2-mIndex1)>0 ){ if( mRaw[mIndex1]> mRaw[mIndex1+1] ){ max=mRaw[mIndex1]; min=mRaw[mIndex1+1]; }else{ min=mRaw[mIndex1]; max=mRaw[mIndex1+1]; } for(i=mIndex1+1;i<mIndex2;i++){ if( mRaw[i]>max ) max=mRaw[i]; else if( mRaw[i]<min) min=mRaw[i]; } range=max-min; } else range=mRaw[mIndex1]; iter_counter=0; err=100000.0; double scaling; while(iter_counter<MAX_ITER){ amoebaInit(&pp[0][0], yy, VARNUM+1, nvar, delfac, ptol2, a, da, &SimplexFitting::funk, ptol); amoeba(&pp[0][0], yy, VARNUM+1, nvar, ftol2, &SimplexFitting::funk, &iter, ptol, &jmin); for (i = 0; i < nvar; i++) a[i] = pp[i][jmin]; amoebaInit(&pp[0][0], yy, VARNUM+1, nvar, delfac, ptol1, a, da, &SimplexFitting::funk, ptol); amoeba(&pp[0][0], yy, VARNUM+1, nvar, ftol1, &SimplexFitting::funk, &iter, ptol, &jmin); for (i = 0; i < nvar; i++) a[i] = pp[i][jmin]; funk(a, &errmin); if( (errmin<err || errmin<MIN_ERROR*range) && a[0]>0.0){ err=errmin; for(i=0;i<nvar;i++) min_a[i]=a[i]; } iter_counter++; if(errmin<MIN_ERROR*range && a[0]>0.0) break; //re-initialize parameters if(iter_counter%2) scaling=0.5*iter_counter/(MAX_ITER-1); else scaling=-0.5*iter_counter/(MAX_ITER-1); a[0]=(1+scaling)*mRaw[mIndex1]; if(howToInitParams==0) a[1]=0.0; else a[1]=0.5*(mIndex2-mIndex1)/(mDim-1); a[2]=(1+scaling)*1.414*(mIndex2-mIndex1)/(mDim-1); a[3]=0.0; }// iteration for (i=0; i < mDim; i++) { fitting[i]=min_a[0]*exp( -((float)(i-mIndex1)/(mDim-1)-min_a[1])* ((float)(i-mIndex1)/(mDim-1)-min_a[1])/(min_a[2]*min_a[2])) +min_a[3]; } if( debugLevel>=3){ printf("Iteration Num=%d threshold=%f Simplex fitting parameters for \ range %d to %d are:\n", iter_counter, MIN_ERROR*range, mIndex1, mIndex2); printf("Fitting error=%f\t a[0]=%f\t a[1]=%f\t a[2]=%f\t a[3]=%f\n",err, min_a[0], min_a[1], min_a[2], min_a[3]); }
int main() { int a = funk(2,3); printf("%d",a); return 0; }