#include #include #include #define PI 3.141592653589793 #define WIN 400 #define BLOCK WIN/2 #define PV 0.025 void isort(); int rand_table[98],jindic; float gfsr4(); void opengfsr(),closegfsr(); void mom(); float qnorm(); main() { FILE *input,*out; int j,ic,n,index[20000],index2[20000],k,i; float x0[20000],y0[20000],x1[20000],y1[20000]; float xmed[20000],ymed[20000],ytop[20000],ybot[20000],y2[20000]; float mean,sdev,skew,kurt,min,max,g1,d1,l1,xi1,nvar,qval; int ifault,itype1; char instr[20],outstr[20]; qval = qnorm(PV); printf("%f\n",qval); opengfsr(); printf("infile, outfile ?:"); scanf("%s %s",instr,outstr); input = fopen(instr,"r"); out = fopen(outstr,"w"); for(j=0;;++j){ ic = fscanf(input,"%f %f ",&x0[j],&y0[j]); if(ic == EOF)break; } n = j; isort(n,x0,index); for(j=0;j0.5)p=1.0-p; p = sqrt(log(1.0/(p*p))); return p-(a0+a1*p)/(1+b1*p+b2*p*p); } void mom(x,n,x1,x2,x3,x4,min,max) int n; float x[],*x1,*x2,*x3,*x4,*min,*max; { int i; float s1,s2,s3,s4,an,an1,dx,dx2,xi,var; s1 = x[0]; s2 = 0.0; s3 = 0.0; s4 = 0.0; *min = s1; *max = s1; for(i=1;i*max)*max=xi; } *x1 = s1; var = n>1 ? s2/(n-1) : 0.0; *x2 = sqrt(var); *x3 = var>0.0 ? 1.0/(n-1)*s3/pow(var,1.5) : 0.0; *x4 = var>0.0 ? 1.0/(n-1)*s4/pow(var,2.0) : 0.0; return; } void isort(n,inar,index) int n,index[]; float inar[]; { int i,j,l,rrb,ir; float rra; float *ra; ra = (float *)malloc(n*sizeof(float)); for(i=0;i1){ --l; rra = ra[l-1]; rrb = index[l-1]; } else{ rra = ra[ir-1]; rrb = index[ir-1]; ra[ir-1] = ra[0]; index[ir-1] = index[0]; --ir; if(ir == 0){ ra[0] = rra; index[0] = rrb; /* for(i=1;i>= 1; ++j; if(j>32){ orran = intrand(); j = 1; } return orran & 1; } int rbit32() { static int j = 32; static unsigned int orran; orran >>= 5; j += 5; if(j>32){ orran = intrand(); j = 5; } return orran & 31; } int intrand() { int k; ++jindic; if(jindic>97)jindic=0; k = jindic+27; if(k>97)k=k-98; rand_table[jindic] = rand_table[jindic]^rand_table[k]; return(rand_table[jindic]); } int disrand(l,t) int l,t; { int k; if(t97)jindic=0; k = jindic+27; if(k>97)k=k-98; rand_table[jindic] = rand_table[jindic]^rand_table[k]; return((unsigned)rand_table[jindic]%(t-l+1)+l); } float gfsr4() { int k; ++jindic; if(jindic>97)jindic=0; k = jindic+27; if(k>97)k=k-98; rand_table[jindic] = rand_table[jindic]^rand_table[k]; return((unsigned)rand_table[jindic]/4294967296.0); } float gammln(xx) float xx; { double x,tmp,ser; static double cof[6]={76.18009173,-86.50532033,24.01409822, -1.231739516,0.120858003e-2,-0.536382e-5}; int j; x=xx-1.0; tmp=x+5.5; tmp -= (x+0.5)*log(tmp); ser=1.0; for (j=0;j<=5;j++) { x += 1.0; ser += cof[j]/x; } return -tmp+log(2.50662827465*ser); } float expdev() { int k; ++jindic; if(jindic>97)jindic=0; k = jindic+27; if(k>97)k=k-98; rand_table[jindic] = rand_table[jindic]^rand_table[k]; return(-log((unsigned)rand_table[jindic]/4294967296.0)); } void opengfsr() { FILE *rt,*fopen(); int j; rt = fopen("INTFILE","r"); if(rt==NULL) { printf("I need INTFILE! Where is INTFILE?\n"); exit(1); } for(j=0;j<98;++j)fscanf(rt,"%d",&rand_table[j]); fscanf(rt,"%d",&jindic); fclose(rt); } void closegfsr() { FILE *rt,*fopen(); int j; rt = fopen("INTFILE","w"); for(j=0;j<98;++j)fprintf(rt,"%d\n",rand_table[j]); fprintf(rt,"%d\n",jindic); fclose(rt); }