double sumr (double val) { mtk::CheckScopeTime cs("sumr"); if (val>1) return sumr(val-1) + val; else return val; }
int main(int /*argc*/, char** /*argv[]*/) { std::cout << "sum recursivo... " << sumr (10000) << std::endl; std::cout << "sum lineal ... " << suml (1000000) << std::endl; std::cout << "sum lineal2 ... " << suml2(100000000) << std::endl; std::cout << "sum lineal3 ... " << suml3(100000000) << std::endl; std::cout << "sum lineal4 ... " << suml4(100000000) << std::endl; std::cout << std::endl << std::endl; mtk::CheckScopeTime::PrintTimes(); std::cout << std::endl << std::endl; }
void main() { int r,c,a[5][5],j,i; clrscr(); printf("Enter the order of the matrix\n"); scanf("%d%d",&r,&c); printf("enter the elements of the matrix\n"); for(i=0;i<r;i++) for(j=0;j<c;j++) scanf("%d",&a[i][j]); printf("input matrix is\n"); for(i=0;i<r;i++) { for(j=0;j<c;j++) printf ("%d\t",a[i][j]); printf("\n"); } sumr(r,c,a); sumc(r,c,a); getch(); }
void invert_overlap(const int op_id, const int index_start) { operator * optr; void (*op)(spinor*,spinor*); static complex alpha={0,0}; spinorPrecWS *ws; optr = &operator_list[op_id]; op=&Dov_psi; /* here we need to (re)compute the kernel eigenvectors */ /* for new gauge fields */ if(g_proc_id == 0) {printf("# Not using even/odd preconditioning!\n"); fflush(stdout);} convert_eo_to_lexic(g_spinor_field[DUM_DERI], optr->sr0, optr->sr1); convert_eo_to_lexic(g_spinor_field[DUM_DERI+1], optr->prop0, optr->prop1); if(optr->solver == 13 ){ optr->iterations = sumr(g_spinor_field[DUM_DERI+1],g_spinor_field[DUM_DERI] , optr->maxiter, optr->eps_sq); } else if(optr->solver == 1 /* CG */) { gamma5(g_spinor_field[DUM_DERI+1], g_spinor_field[DUM_DERI], VOLUME); if(use_preconditioning==1 && g_precWS!=NULL){ ws=(spinorPrecWS*)g_precWS; printf("# Using preconditioning (which one?)!\n"); alpha.re=ws->precExpo[2]; spinorPrecondition(g_spinor_field[DUM_DERI+1],g_spinor_field[DUM_DERI+1],ws,T,L,alpha,0,1); /* iter = cg_her(g_spinor_field[DUM_DERI], g_spinor_field[DUM_DERI+1], max_iter, precision, */ /* rel_prec, VOLUME, &Q_pm_psi_prec); */ optr->iterations = cg_her(g_spinor_field[DUM_DERI], g_spinor_field[DUM_DERI+1], optr->maxiter, optr->eps_sq, optr->rel_prec, VOLUME, &Qov_sq_psi_prec); alpha.re=ws->precExpo[0]; spinorPrecondition(g_spinor_field[DUM_DERI],g_spinor_field[DUM_DERI],ws,T,L,alpha,0,1); } else { printf("# Not using preconditioning (which one?)!\n"); /* iter = cg_her(g_spinor_field[DUM_DERI], g_spinor_field[DUM_DERI+1], max_iter, precision, */ /* rel_prec, VOLUME, &Q_pm_psi); */ optr->iterations = cg_her(g_spinor_field[DUM_DERI], g_spinor_field[DUM_DERI+1], optr->maxiter, optr->eps_sq, optr->rel_prec, VOLUME, &Qov_sq_psi); } Qov_psi(g_spinor_field[DUM_DERI+1], g_spinor_field[DUM_DERI]); if(use_preconditioning == 1 && g_precWS!=NULL){ ws=(spinorPrecWS*)g_precWS; alpha.re=ws->precExpo[1]; spinorPrecondition(g_spinor_field[DUM_DERI+1],g_spinor_field[DUM_DERI+1],ws,T,L,alpha,0,1); } } op(g_spinor_field[4],g_spinor_field[DUM_DERI+1]); convert_eo_to_lexic(g_spinor_field[DUM_DERI], optr->sr0, optr->sr1); optr->reached_prec=diff_and_square_norm(g_spinor_field[4],g_spinor_field[DUM_DERI],VOLUME); convert_lexic_to_eo(optr->prop0, optr->prop1 , g_spinor_field[DUM_DERI+1]); return; }
int main(){ std::cout<<sumr(3); }
double sumr(double n){ return n<1?1:sumr(n-1)+1/(1+n); }