summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhongyu zhong <hongyu@multicorewareinc.com>2013-12-13 15:34:25 +0800
committerI-Jui (Ray) Sung <ray@multicorewareinc.com>2013-12-19 17:53:57 -0600
commit7469b5a3d2baaf3ee4b26cddc1e19384d95a0617 (patch)
tree79adace9e8cf24ced5aab445b54060cf39a25fc8
parent85605e15e90308c94aa510e42c45db740464021a (diff)
GPU Calc: Optimized BETADIST
AMLOEXT-364 Change-Id: Ife6444d998b250023fcbb5173bd371e4bc51947d 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>
-rw-r--r--sc/source/core/opencl/op_statistical.cxx6
-rw-r--r--sc/source/core/opencl/opinlinefun_statistical.cxx6
2 files changed, 6 insertions, 6 deletions
diff --git a/sc/source/core/opencl/op_statistical.cxx b/sc/source/core/opencl/op_statistical.cxx
index 3f2d43cf94aa..5d4241421433 100644
--- a/sc/source/core/opencl/op_statistical.cxx
+++ b/sc/source/core/opencl/op_statistical.cxx
@@ -8312,7 +8312,7 @@ void OpBetaDist::GenSlidingWindowFunction(std::stringstream &ss,
" tmp = 1.0;\n"
" return tmp;\n"
" }\n"
- " arg0 = (arg0-arg3)/fScale;\n"
+ " arg0 = (arg0-arg3)*pow(fScale,-1);\n"
" tmp = GetBetaDist(arg0, arg1, arg2);\n"
" }\n"
" else\n"
@@ -8322,8 +8322,8 @@ void OpBetaDist::GenSlidingWindowFunction(std::stringstream &ss,
" tmp = 0.0;\n"
" return tmp;\n"
" }\n"
- " arg0 = (arg0 - arg3)/fScale;\n"
- " tmp = GetBetaDistPDF(arg0, arg1, arg2)/fScale;\n"
+ " arg0 = (arg0 - arg3)*pow(fScale,-1);\n"
+ " tmp = GetBetaDistPDF(arg0, arg1, arg2)*pow(fScale,-1);\n"
" }\n";
ss << " return tmp;\n";
ss << "}\n";
diff --git a/sc/source/core/opencl/opinlinefun_statistical.cxx b/sc/source/core/opencl/opinlinefun_statistical.cxx
index 9e9b8cc7c58c..71cfd3df01b7 100644
--- a/sc/source/core/opencl/opinlinefun_statistical.cxx
+++ b/sc/source/core/opencl/opinlinefun_statistical.cxx
@@ -207,7 +207,7 @@ std::string GetBetaDist =
" if (fA > 1.0 && fB > 1.0 && fP < 0.97 && fQ < 0.97)\n"
" fResult *= GetBetaDistPDF(fX,fA,fB)*fX*fY;\n"
" else\n"
-" fResult *= exp(fA*flnX + fB*flnY - GetLogBeta(fA,fB));\n"
+" fResult *= pow(exp(1.0),(fA*flnX + fB*flnY - GetLogBeta(fA,fB)));\n"
" if (bReflect)\n"
" fResult = 0.5 - fResult + 0.5;\n"
" if (fResult > 1.0)\n"
@@ -359,7 +359,7 @@ std::string GetLogGamma =
" if (fZ >= 1.0)\n"
" return log(lcl_GetGammaHelper(fZ));\n"
" if (fZ >= 0.5)\n"
-" return log( lcl_GetGammaHelper(fZ+1) / fZ);\n"
+" return log( lcl_GetGammaHelper(fZ+1) *pow(fZ,-1.0));\n"
" return lcl_GetLogGammaHelper(fZ+2) - log(fZ+1) - log(fZ);\n"
"}\n";
@@ -1076,7 +1076,7 @@ std::string GetBeta =
" double fLanczos = lcl_getLanczosSum(fA)*lcl_getLanczosSum(fB)\n"
" *pow(lcl_getLanczosSum(fAB),-1.0);\n"
" fLanczos *= sqrt(((fAB + fgm)*pow(fA + fgm,-1.0))*pow(fB + fgm,-1.0));\n"
-" return fLanczos * exp(-fA*log1p(fB*pow(fA + fgm,-1.0))\n"
+" return fLanczos * pow(exp(1.0),(-fA*log1p(fB*pow(fA + fgm,-1.0)))"
" - fB*log1p(fA*pow(fB + fgm,-1.0)) - fgm);\n"
"}\n";