diff options
author | shiming zhang <shiming@multicorewareinc.com> | 2013-12-06 14:19:19 +0800 |
---|---|---|
committer | I-Jui (Ray) Sung <ray@multicorewareinc.com> | 2013-12-19 17:53:40 -0600 |
commit | b9bbf293131f0bcab497c00f0149a95dc73e198c (patch) | |
tree | 5b8c0d720bab158cbc009596cbdec448a7e46908 /sc/source/core/opencl/opinlinefun_statistical.cxx | |
parent | 9ffe437a1df3e849cf1d1f459e3dc9d2a31e3566 (diff) |
GPU Calc: Optimized TTEST
AMLOEXT-322
Change-Id: I946bdf56794148d65cbff9af0f434cab953e7ff2
Signed-off-by: haochen <haochen@multicorewareinc.com>
Signed-off-by: Wei Wei <weiwei@multicorewareinc.com>
Signed-off-by: I-Jui (Ray) Sung <ray@multicorewareinc.com>
Diffstat (limited to 'sc/source/core/opencl/opinlinefun_statistical.cxx')
-rw-r--r-- | sc/source/core/opencl/opinlinefun_statistical.cxx | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/sc/source/core/opencl/opinlinefun_statistical.cxx b/sc/source/core/opencl/opinlinefun_statistical.cxx index 59221c6dfc9b..8fbd1eb92c32 100644 --- a/sc/source/core/opencl/opinlinefun_statistical.cxx +++ b/sc/source/core/opencl/opinlinefun_statistical.cxx @@ -191,7 +191,7 @@ std::string GetBetaDist = " double flnX = log(fXin);\n" " double fA = fAlpha;\n" " double fB = fBeta;\n" -" bool bReflect = fXin > fAlpha/(fAlpha+fBeta);\n" +" bool bReflect = fXin > fAlpha*pow((fAlpha+fBeta),-1.0);\n" " if (bReflect)\n" " {\n" " fA = fBeta;\n" @@ -201,16 +201,13 @@ std::string GetBetaDist = " flnX = flnY;\n" " flnY = log(fXin);\n" " }\n" -" fResult = lcl_GetBetaHelperContFrac(fX,fA,fB);\n" -" fResult = fResult/fA;\n" -" double fP = fA/(fA+fB);\n" -" double fQ = fB/(fA+fB);\n" -" double fTemp;\n" +" fResult = lcl_GetBetaHelperContFrac(fX,fA,fB)*pow(fA,-1.0);\n" +" double fP = fA*pow((fA+fB),-1.0);\n" +" double fQ = fB*pow((fA+fB),-1.0);\n" " if (fA > 1.0 && fB > 1.0 && fP < 0.97 && fQ < 0.97)\n" -" fTemp = GetBetaDistPDF(fX,fA,fB)*fX*fY;\n" +" fResult *= GetBetaDistPDF(fX,fA,fB)*fX*fY;\n" " else\n" -" fTemp = exp(fA*flnX + fB*flnY - GetLogBeta(fA,fB));\n" -" fResult *= fTemp;\n" +" fResult *= exp(fA*flnX + fB*flnY - GetLogBeta(fA,fB));\n" " if (bReflect)\n" " fResult = 0.5 - fResult + 0.5;\n" " if (fResult > 1.0)\n" @@ -219,6 +216,7 @@ std::string GetBetaDist = " fResult = 0.0;\n" " return fResult;\n" "}\n"; + std::string GetFDistDecl = "double GetFDist(double x, double fF1, double fF2);\n"; std::string GetFDist = @@ -1060,7 +1058,7 @@ std::string GetTDistDecl=" double GetTDist(double T, double fDF);\n"; std::string GetTDist = "double GetTDist(double T, double fDF)\n" "{\n" -" return 0.5 * GetBetaDist(fDF/(fDF+T*T), fDF/2.0, 0.5);\n" +" return 0.5 * GetBetaDist(fDF*pow(fDF+T*T,-1.0),fDF*pow(2.0,-1.0), 0.5);\n" "}\n"; std::string GetBetaDecl=" double GetBeta(double fAlpha, double fBeta);\n"; |