X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=sharedthetayc.cpp;fp=sharedthetayc.cpp;h=4d8a5d91b67f5854b6a87b6df01dcdf93589fdba;hb=e4c80376cc4533f66c8dfc18f3e1a86a60ac17fe;hp=ca066dd04bdb586a86cd5e6716daa949ac458734;hpb=8f7164a88df624fd0a8d1eddbb3d744463cc9ecb;p=mothur.git diff --git a/sharedthetayc.cpp b/sharedthetayc.cpp index ca066dd..4d8a5d9 100644 --- a/sharedthetayc.cpp +++ b/sharedthetayc.cpp @@ -14,19 +14,19 @@ EstOutput ThetaYC::getValues(vector shared) { try { data.resize(3,0.0000); - float Atotal = 0; - float Btotal = 0; - float thetaYC = 0; - float pi = 0; - float qi = 0; - float a = 0; - float b = 0; - float d = 0; + double Atotal = 0; + double Btotal = 0; + double thetaYC = 0; + double pi = 0; + double qi = 0; + double a = 0; + double b = 0; + double d = 0; - float sumPcubed = 0; - float sumQcubed = 0; - float sumPQsq = 0; - float sumPsqQ = 0; + double sumPcubed = 0; + double sumQcubed = 0; + double sumPQsq = 0; + double sumPsqQ = 0; //get the total values we need to calculate the theta denominator sums for (int i = 0; i < shared[0]->size(); i++) { @@ -55,16 +55,16 @@ EstOutput ThetaYC::getValues(vector shared) { if (isnan(thetaYC) || isinf(thetaYC)) { thetaYC = 0; } - float varA = 4 / Atotal * (sumPcubed - a * a); - float varB = 4 / Btotal * (sumQcubed - b * b); - float varD = sumPQsq / Atotal + sumPsqQ / Btotal - d * d * (1/Atotal + 1/Btotal); - float covAD = 2 / Atotal * (sumPsqQ - a * d); - float covBD = 2 / Btotal * (sumPQsq - b* d); + double varA = 4 / Atotal * (sumPcubed - a * a); + double varB = 4 / Btotal * (sumQcubed - b * b); + double varD = sumPQsq / Atotal + sumPsqQ / Btotal - d * d * (1/Atotal + 1/Btotal); + double covAD = 2 / Atotal * (sumPsqQ - a * d); + double covBD = 2 / Btotal * (sumPQsq - b* d); - float varT = d * d * (varA + varB) / pow(a + b - d, (float)4.0) + pow(a+b, (float)2.0) * varD / pow(a+b-d, (float)4.0) - - 2.0 * (a + b) * d / pow(a + b - d, (float)4.0) * (covAD + covBD); + double varT = d * d * (varA + varB) / pow(a + b - d, (double)4.0) + pow(a+b, (double)2.0) * varD / pow(a+b-d, (double)4.0) + - 2.0 * (a + b) * d / pow(a + b - d, (double)4.0) * (covAD + covBD); - float ci = 1.95 * sqrt(varT); + double ci = 1.95 * sqrt(varT); data[0] = thetaYC; data[1] = thetaYC - ci;