X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=simpson.cpp;h=edc35bd6c04f42c3d687dce377df6b6442e36a18;hp=d260800a9f80368295c2c1a099dd0a3dd3af8a30;hb=cf9987b67aa49777a4c91c2d21f96e58bf17aa82;hpb=510b1cfc25cd79391d6973ca20c5ec25fb1bb3b2 diff --git a/simpson.cpp b/simpson.cpp index d260800..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,7 +58,7 @@ EstOutput Simpson::getValues(SAbundVector* rank){ return data; } catch(exception& e) { - errorOut(e, "Simpson", "getValues"); + m->errorOut(e, "Simpson", "getValues"); exit(1); } }