#include "MeanR0CI.h" /*-------------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------------*/ //function declarations: void ReadRiDist(int Npre, int Ntot, char *DataFile, double **RiDist, double **RiCumDist); double CalcMeanR(int Npre, int Ntot, double **RiDist); double SampleMeanR(int Npre, int Ntot, double **RiCumDist); void sort(int n, double *arr); /*-------------------------------------------------------------------------------------------*/ //Global variables: long seed, rcount; /*-------------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------------*/ int main(int argc, char *argv[]) { char DataFile[255], outFile[255]; FILE *out; int Npre, Ntot; int SampleSize; double **RiDist, **RiCumDist; double meanR, CImin, CImax, *sampledMeanR; int i; printf("MeanR0CI: main started.\n"); if(argc<6) ERR_CRITICAL("Syntax:\n \n"); sscanf_s(argv[1], "%d", &Npre); sscanf_s(argv[2], "%d", &Ntot); sscanf_s(argv[3], "%s", DataFile, sizeof(DataFile)); sscanf_s(argv[4], "%d", &SampleSize); sscanf_s(argv[5], "%d", &seed); if(seed>0) seed=-seed; if(seed==0) { seed=(long)time(NULL); if(seed>0) seed=-seed; } ran3(&seed); if( (RiDist=dmatrix(0, Npre, 0, Ntot+1))==0 ) ERR_CRITICAL("main: Unable to allocate memory for RiDist.\n"); if( (RiCumDist=dmatrix(0, Npre, 0, Ntot+1))==0 ) ERR_CRITICAL("main: Unable to allocate memory for RiCumDist.\n"); if( (sampledMeanR=(double *) calloc(SampleSize, sizeof(double)))==0 ) ERR_CRITICAL("main: Unable to allocate memory for sampledMeanR.\n"); ReadRiDist(Npre, Ntot, DataFile, RiDist, RiCumDist); meanR=CalcMeanR(Npre, Ntot, RiDist); for(i=0;i=l;i--) { if(arr[i-1] <= a) break; arr[i]=arr[i-1]; } arr[i]=a; } if(jstack == -1) break; ir=istack[jstack--]; l=istack[jstack--]; } else { k=(l+ir) >> 1; SWAP(arr[k-1], arr[l]) if(arr[l-1] > arr[ir-1]) { SWAP(arr[l-1], arr[ir-1]) } if(arr[l] > arr[ir-1]) { SWAP(arr[l], arr[ir-1]) } if(arr[l-1] > arr[l]) { SWAP(arr[l-1],arr[l]) } i=l+1; j=ir; a=arr[l]; for (;;) { do i++; while (arr[i-1]a); if (j < i) break; SWAP(arr[i-1],arr[j-1]); } arr[l]=arr[j-1]; arr[j-1]=a; jstack +=2; if(jstack > NSTACK-1) ERR_CRITICAL("STACK too small in sort.\n"); if(ir-i+1 >= j-l) { istack[jstack]=ir; istack[jstack-1]=i; ir=j-1; } else { istack[jstack]=j-1; istack[jstack-1]=l; l=i; } } } free(istack); } /*-------------------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------------------*/