void period(VecDoub_I &x, VecDoub_I &y, const Doub ofac, const Doub hifac, VecDoub_O &px, VecDoub_O &py, Int &nout, Int &jmax, Doub &prob) { const Doub TWOPI=6.283185307179586476; Int i,j,n=x.size(),np=px.size(); Doub ave,c,cc,cwtau,effm,expy,pnow,pymax,s,ss,sumc,sumcy,sums,sumsh, sumsy,swtau,var,wtau,xave,xdif,xmax,xmin,yy,arg,wtemp; VecDoub wi(n),wpi(n),wpr(n),wr(n); nout=Int(0.5*ofac*hifac*n); if (np < nout) {px.resize(nout); py.resize(nout);} avevar(y,ave,var); if (var == 0.0) throw("zero variance in period"); xmax=xmin=x[0]; for (j=0;j xmax) xmax=x[j]; if (x[j] < xmin) xmin=x[j]; } xdif=xmax-xmin; xave=0.5*(xmax+xmin); pymax=0.0; pnow=1.0/(xdif*ofac); for (j=0;j= pymax) pymax=py[jmax=i]; pnow += 1.0/(ofac*xdif); } expy=exp(-pymax); effm=2.0*nout/ofac; prob=effm*expy; if (prob > 0.01) prob=1.0-pow(1.0-expy,effm); }