X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=simpson.cpp;h=edc35bd6c04f42c3d687dce377df6b6442e36a18;hp=758c4a39b8d7638b2abf07b37539b71e56de7ed2;hb=cf9987b67aa49777a4c91c2d21f96e58bf17aa82;hpb=20a2d0350a737a434c89f303662d64a8eeea7b05 diff --git a/simpson.cpp b/simpson.cpp index 758c4a3..edc35bd 100644 --- a/simpson.cpp +++ b/simpson.cpp @@ -19,8 +19,8 @@ EstOutput Simpson::getValues(SAbundVector* rank){ double ci = 0; double maxRank = (double)rank->getMaxRank(); - int sampled = rank->getNumSeqs(); - int sobs = rank->getNumBins(); + double sampled = (double)rank->getNumSeqs(); + double sobs = (double)rank->getNumBins(); double firstTerm = 0; double secondTerm = 0; @@ -28,19 +28,19 @@ EstOutput Simpson::getValues(SAbundVector* rank){ if(sobs != 0){ double simnum=0.0000; - for(int i=1;i<=maxRank;i++){ + for(unsigned long long i=1;i<=maxRank;i++){ simnum += (double)(rank->get(i)*i*(i-1)); } + + simpson = simnum / (sampled*(sampled-1)); - simpson = simnum / (double)(sampled*(sampled-1)); - - for(int i=1;i<=maxRank;i++){ + for(unsigned long long i=1;i<=maxRank;i++){ double piI = (double) i / (double)sampled; firstTerm += rank->get(i) * pow(piI, 3); secondTerm += rank->get(i) * pow(piI, 2); } - double var = (4.0 / (double)sampled) * (firstTerm - secondTerm*secondTerm); + double var = (4.0 / sampled) * (firstTerm - secondTerm*secondTerm); ci = 1.95 * pow(var, 0.5); } @@ -58,13 +58,9 @@ EstOutput Simpson::getValues(SAbundVector* rank){ return data; } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the Simpson class Function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "Simpson", "getValues"); exit(1); } - catch(...) { - cout << "An unknown error has occurred in the Simpson class function getValues. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } } /***********************************************************************/