int main(int argc) { int answer, i; for (i = 0; i < 1000; i++) { answer = iter_factorial(523000); } }
void main(void) { int i = 0; printf("\nIf you want to quit, enter minus integer."); while (1) { printf("\nEnter integer to get factorial -> "); scanf("%d", &i); if (i < 0) break; printf("\nRecursive Ans : %d! = %d", i, factorial(i)); printf("\nIterative Ans : %d! = %d", i, iter_factorial(i)); } }
int main2(int argc) { int answer = iter_factorial(5); printf("%d\n", answer); }
void vHRedLinearLogLike(double *Cube, int &ndim, int &npars, double &lnew, void *context) { int numfit=((MNStruct *)context)->numFitTiming + ((MNStruct *)context)->numFitJumps+1; double Fitparams[numfit]; double *EFAC; double EQUAD, redamp, redalpha; int pcount=0; // printf("here1\n"); for(int p=0;p<ndim;p++){ // printf("param %i %g %g\n",p,((MNStruct *)context)->Dpriors[p][0],((MNStruct *)context)->Dpriors[p][1]); Cube[p]=(((MNStruct *)context)->Dpriors[p][1]-((MNStruct *)context)->Dpriors[p][0])*Cube[p]+((MNStruct *)context)->Dpriors[p][0]; } // printf("here1.5\n"); for(int p=0;p < numfit; p++){ Fitparams[p]=Cube[p]; pcount++; // printf("param: %i %g \n",p,Fitparams[p]); } if(((MNStruct *)context)->numFitEFAC == 0){ EFAC=new double[1]; EFAC[0]=1; // } else if(((MNStruct *)context)->numFitEFAC == 1){ EFAC=new double[1]; EFAC[0]=Cube[pcount]; pcount++; } else if(((MNStruct *)context)->numFitEFAC > 1){ EFAC=new double[((MNStruct *)context)->numFitEFAC]; for(int p=0;p< ((MNStruct *)context)->numFitEFAC; p++){ EFAC[p]=Cube[pcount]; pcount++; } } if(((MNStruct *)context)->numFitEQUAD == 0){ EQUAD=0; // printf("EQUAD: %g \n",EQUAD); } else{ EQUAD=pow(10.0,2*Cube[pcount]); pcount++; // printf("E: %g %g \n",EQUAD,EFAC[0]); } redamp=Cube[pcount]; pcount++; redalpha=Cube[pcount]; pcount++; double *Fitvec=new double[((MNStruct *)context)->pulse->nobs]; double *Diffvec=new double[((MNStruct *)context)->pulse->nobs]; dgemv(((MNStruct *)context)->DMatrix,Fitparams,Fitvec,((MNStruct *)context)->pulse->nobs,numfit,'N'); for(int o=0;o<((MNStruct *)context)->pulse->nobs; o++){ Diffvec[o]=((MNStruct *)context)->pulse->obsn[o].residual-Fitvec[o]; } double secday=24*60*60; double LongestPeriod=1.0/pow(10.0,-5); double flo=1.0/LongestPeriod; double modelalpha=redalpha; double gwamp=pow(10.0,redamp); double gwampsquared=gwamp*gwamp*(pow((365.25*secday),2)/(12*M_PI*M_PI))*(pow(365.25,(1-modelalpha)))/(pow(flo,(modelalpha-1))); double timdiff=0; double covconst=gsl_sf_gamma(1-modelalpha)*sin(0.5*M_PI*modelalpha); // printf("constants: %g %g \n",gwampsquared,covconst); double **CovMatrix = new double*[((MNStruct *)context)->pulse->nobs]; for(int o1=0;o1<((MNStruct *)context)->pulse->nobs;o1++)CovMatrix[o1]=new double[((MNStruct *)context)->pulse->nobs]; for(int o1=0;o1<((MNStruct *)context)->pulse->nobs; o1++){ for(int o2=0;o2<((MNStruct *)context)->pulse->nobs; o2++){ timdiff=((MNStruct *)context)->pulse->obsn[o1].bat-((MNStruct *)context)->pulse->obsn[o2].bat; double tau=2.0*M_PI*fabs(timdiff); double covsum=0; for(int k=0; k <=10; k++){ covsum=covsum+pow(-1.0,k)*(pow(flo*tau,2*k))/(iter_factorial(2*k)*(2*k+1-modelalpha)); } CovMatrix[o1][o2]=gwampsquared*(covconst*pow((flo*tau),(modelalpha-1)) - covsum); // printf("%i %i %g %g %g\n",o1,o2,CovMatrix[o1][o2],fabs(timdiff),covsum); if(o1==o2){ CovMatrix[o1][o2] += pow(((((MNStruct *)context)->pulse->obsn[o1].toaErr)*pow(10.0,-6))*EFAC[((MNStruct *)context)->sysFlags[o1]],2) + EQUAD; } } } double covdet=0; double *WorkDiffvec = new double[((MNStruct *)context)->pulse->nobs]; for(int o1=0;o1<((MNStruct *)context)->pulse->nobs; o1++){ WorkDiffvec[o1]=Diffvec[o1]; } dpotrf(CovMatrix, ((MNStruct *)context)->pulse->nobs, covdet); dpotrs(CovMatrix, WorkDiffvec, ((MNStruct *)context)->pulse->nobs); double Chisq=0; for(int o1=0;o1<((MNStruct *)context)->pulse->nobs; o1++){ Chisq += Diffvec[o1]*WorkDiffvec[o1]; } if(isnan(covdet) || isinf(covdet) || isnan(Chisq) || isinf(Chisq)){ lnew=-pow(10.0,200); // printf("red amp and alpha %g %g\n",redamp,redalpha); // printf("Like: %g %g %g \n",lnew,Chisq,covdet); } else{ lnew = -0.5*(((MNStruct *)context)->pulse->nobs*log(2*M_PI) + covdet + Chisq); // printf("red amp and alpha %g %g\n",redamp,redalpha); } // endClock = clock(); // // printf("Finishing off: time taken = %.2f (s)\n",(endClock-startClock)/(float)CLOCKS_PER_SEC); delete[] EFAC; for(int o=0;o<((MNStruct *)context)->pulse->nobs;o++){delete[] CovMatrix[o];} delete[] CovMatrix; delete[] WorkDiffvec; delete[] Diffvec; delete[] Fitvec; printf("Like: %g %g %g \n",lnew,Chisq,covdet); }
void store_factorial(){ for(int k=0; k <=20; k++){ TNFactorialList[k]=iter_factorial(k); } }