summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2022-09-06 12:37:43 +0200
committerLuboš Luňák <l.lunak@collabora.com>2022-09-13 09:04:51 +0200
commitb58acf93626456f9d9b9ff66f9208a3f944180ac (patch)
tree0dc81fd01af2669f40787f888e05e8a6b863c02e /sc
parentb9fcf43a38773f81ef1833897c4e36d8db16c0b1 (diff)
reduce opencl copy&paste when generating function declaration
Change-Id: Ibe3677ed56423aeb0d19b510664bc402fc53366d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139484 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/opencl/formulagroupcl.cxx32
-rw-r--r--sc/source/core/opencl/op_addin.cxx21
-rw-r--r--sc/source/core/opencl/op_array.cxx33
-rw-r--r--sc/source/core/opencl/op_database.cxx121
-rw-r--r--sc/source/core/opencl/op_financial.cxx586
-rw-r--r--sc/source/core/opencl/op_logical.cxx55
-rw-r--r--sc/source/core/opencl/op_math.cxx657
-rw-r--r--sc/source/core/opencl/op_spreadsheet.cxx11
-rw-r--r--sc/source/core/opencl/op_statistical.cxx724
-rw-r--r--sc/source/core/opencl/opbase.cxx22
-rw-r--r--sc/source/core/opencl/opbase.hxx2
11 files changed, 401 insertions, 1863 deletions
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx
index 9838e9adaef2..28b4c87fdb07 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -1419,15 +1419,8 @@ public:
virtual void GenSlidingWindowFunction( outputstream& ss,
const std::string& sSymName, SubArguments& vSubArguments ) override
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ", ";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << "double tmp = " << GetBottom() << ";\n";
ss << "int gid0 = get_global_id(0);\n";
if (isAverage() || isMinOrMax())
@@ -1534,16 +1527,9 @@ public:
virtual void GenSlidingWindowFunction( outputstream& ss,
const std::string& sSymName, SubArguments& vSubArguments ) override
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- assert(vSubArguments.size() == 2);
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ", ";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ CHECK_PARAMETER_COUNT( 2, 2 );
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "int gid0 = get_global_id(0), i = 0;\n\t";
ss << "double tmp = ";
ss << Gen2(vSubArguments[0]->GenSlidingWindowDeclRef(),
@@ -1563,13 +1549,10 @@ public:
size_t nCurWindowSize = 0;
FormulaToken* tmpCur = nullptr;
const formula::DoubleVectorRefToken* pCurDVR = nullptr;
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
for (size_t i = 0; i < vSubArguments.size(); i++)
{
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
size_t nCurChildWindowSize = vSubArguments[i]->GetWindowSize();
nCurWindowSize = (nCurWindowSize < nCurChildWindowSize) ?
nCurChildWindowSize : nCurWindowSize;
@@ -1582,7 +1565,6 @@ public:
throw Unhandled(__FILE__, __LINE__);
}
}
- ss << ") {\n";
ss << " double tmp = 0.0;\n";
ss << " int gid0 = get_global_id(0);\n";
diff --git a/sc/source/core/opencl/op_addin.cxx b/sc/source/core/opencl/op_addin.cxx
index 5e4dc04a2b0b..a9c2f9508ac8 100644
--- a/sc/source/core/opencl/op_addin.cxx
+++ b/sc/source/core/opencl/op_addin.cxx
@@ -20,15 +20,8 @@ void OpBesselj::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double x = 0.0;\n";
ss << " double N = 0.0;\n";
@@ -177,15 +170,7 @@ void OpGestep::GenSlidingWindowFunction(
outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " double tmp=0,tmp0 =0,tmp1 = 0;\n";
ss << " int gid0=get_global_id(0);\n";
diff --git a/sc/source/core/opencl/op_array.cxx b/sc/source/core/opencl/op_array.cxx
index cf54a5be8b92..65a1caf65fbc 100644
--- a/sc/source/core/opencl/op_array.cxx
+++ b/sc/source/core/opencl/op_array.cxx
@@ -19,15 +19,8 @@ namespace sc::opencl {
void OpSumX2MY2::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss << " double tmp =0;\n";
GenTmpVariables(ss,vSubArguments);
@@ -76,15 +69,8 @@ void OpSumX2MY2::GenSlidingWindowFunction(outputstream &ss,
void OpSumX2PY2::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp =0;\n";
GenTmpVariables(ss,vSubArguments);
@@ -132,15 +118,8 @@ void OpSumX2PY2::GenSlidingWindowFunction(outputstream &ss,
void OpSumXMY2::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp =0;\n";
GenTmpVariables(ss,vSubArguments);
diff --git a/sc/source/core/opencl/op_database.cxx b/sc/source/core/opencl/op_database.cxx
index 2a76a4171501..8c7e92e3654e 100644
--- a/sc/source/core/opencl/op_database.cxx
+++ b/sc/source/core/opencl/op_database.cxx
@@ -17,15 +17,8 @@ namespace sc::opencl {
void OpDmax::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double max = -1000000000000;\n";
ss << " double value=0.0;\n";
@@ -144,15 +137,8 @@ void OpDmax::GenSlidingWindowFunction(outputstream &ss,
void OpDmin::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double min = 1000000000000;\n";
ss << " double value=0.0;\n";
@@ -272,15 +258,8 @@ void OpDmin::GenSlidingWindowFunction(outputstream &ss,
void OpDproduct::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double product = 1;\n";
ss << " double value =0;\n";
@@ -398,15 +377,8 @@ void OpDproduct::GenSlidingWindowFunction(outputstream &ss,
void OpDaverage::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double sum = 0;\n";
ss << " int count = 0;\n";
@@ -529,15 +501,8 @@ void OpDaverage::GenSlidingWindowFunction(outputstream &ss,
void OpDstdev::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double var = 0;\n";
ss << " double mean = 0;\n";
@@ -711,15 +676,8 @@ void OpDstdev::GenSlidingWindowFunction(outputstream &ss,
void OpDstdevp::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double var = 0;\n";
ss << " double mean = 0;\n";
@@ -893,15 +851,8 @@ void OpDstdevp::GenSlidingWindowFunction(outputstream &ss,
void OpDsum::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double sum = 0;\n";
ss << " double value =0;\n";
@@ -1020,15 +971,8 @@ void OpDsum::GenSlidingWindowFunction(outputstream &ss,
void OpDvar::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double var = 0;\n";
ss << " double mean = 0;\n";
@@ -1202,15 +1146,8 @@ void OpDvar::GenSlidingWindowFunction(outputstream &ss,
void OpDvarp::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double var = 0;\n";
ss << " double mean = 0;\n";
@@ -1384,15 +1321,8 @@ void OpDvarp::GenSlidingWindowFunction(outputstream &ss,
void OpDcount::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double value=0;\n";
ss << " int count = 0;\n";
@@ -1512,15 +1442,8 @@ void OpDcount::GenSlidingWindowFunction(outputstream &ss,
void OpDcount2::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double value=0;\n";
ss << " int count = 0;\n";
diff --git a/sc/source/core/opencl/op_financial.cxx b/sc/source/core/opencl/op_financial.cxx
index 12acbb435081..0840c334f7df 100644
--- a/sc/source/core/opencl/op_financial.cxx
+++ b/sc/source/core/opencl/op_financial.cxx
@@ -22,15 +22,8 @@ void RRI::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 3, 3 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() <<";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fv;\n";
@@ -92,15 +85,8 @@ void OpNominal::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &
vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "double tmp = 0;\n\t";
ss << "double temp = 0;\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
@@ -150,15 +136,8 @@ void OpDollarde::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "double tmp = " << GetBottom() <<";\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "double fInt = " << GetBottom() <<";\n\t";
@@ -201,15 +180,8 @@ void OpDollarde::GenSlidingWindowFunction(
void OpDollarfr::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "double tmp = " << GetBottom() <<";\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "double fInt = " << GetBottom() <<";\n\t";
@@ -261,15 +233,8 @@ void OpDISC::BinInlineFun(std::set<std::string>& decls,
void OpDISC::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << " double tmp = " << GetBottom() << ";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double arg0 = " << GetBottom() << ";\n";
@@ -332,15 +297,8 @@ void OpINTRATE::BinInlineFun(std::set<std::string>& decls,
void OpINTRATE::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() << ";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double arg0 = " << GetBottom() << ";\n";
@@ -396,15 +354,8 @@ void OpFV::BinInlineFun(std::set<std::string>& decls,
void OpFV::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() << ";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double arg0 = " << GetBottom() << ";\n";
@@ -446,15 +397,8 @@ void OpIPMT::BinInlineFun(std::set<std::string>& decls,
void OpIPMT::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() << ";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double arg0 = " << GetBottom() << ";\n";
@@ -515,15 +459,8 @@ void OpISPMT::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
CHECK_PARAMETER_COUNT( 4, 4 );
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() << ";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double arg0 = " << GetBottom() << ";\n";
@@ -569,15 +506,8 @@ void OpISPMT::GenSlidingWindowFunction(outputstream& ss,
void OpPDuration::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() << ";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double arg0 = " << GetBottom() << ";\n";
@@ -635,15 +565,8 @@ void OpDuration_ADD::BinInlineFun(std::set<std::string>& decls,
void OpDuration_ADD::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() << ";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double arg0 = " << GetBottom() << ";\n";
@@ -695,15 +618,8 @@ void OpMDuration::BinInlineFun(std::set<std::string>& decls,
void OpMDuration::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() << ";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double arg0 = " << GetBottom() << ";\n";
@@ -761,15 +677,8 @@ void Fvschedule::GenSlidingWindowFunction(
const formula::DoubleVectorRefToken* pCurDVR =
static_cast<const formula::DoubleVectorRefToken *>(pCur);
size_t nCurWindowSize = pCurDVR->GetRefRowSize();
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "double tmp = 1.0;\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
@@ -800,15 +709,8 @@ void Cumipmt::GenSlidingWindowFunction(
vSubArguments)
{
CHECK_PARAMETER_COUNT( 6, 6 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fRate,fVal;\n";
ss << " int nStartPer,nEndPer,nNumPeriods,nPayType;\n";
@@ -915,15 +817,8 @@ void IRR::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " #define Epsilon 1.0E-7\n";
ss << " int gid0 = get_global_id(0);\n";
FormulaToken* pSur = vSubArguments[1]->GetFormulaToken();
@@ -1080,16 +975,8 @@ void XNPV::GenSlidingWindowFunction(
const formula::DoubleVectorRefToken* pCurDVR =
static_cast<const formula::DoubleVectorRefToken *>(pCur);
size_t nCurWindowSize = pCurDVR->GetRefRowSize();
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"( ";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
-
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "double result = 0.0;\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "int i=0;\n\t";
@@ -1187,15 +1074,8 @@ void PriceMat::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 6, 6 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "double result=0;\n\t";
ss<< "int nNullDate = GetNullDate( );\n\t";
@@ -1298,15 +1178,8 @@ void PriceMat::GenSlidingWindowFunction(
void OpSYD::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double result=0;\n";
ss << " double cost;\n";
@@ -1398,15 +1271,8 @@ void MIRR::GenSlidingWindowFunction(
static_cast< const formula::SingleVectorRefToken* >(pCur2);
assert(pSVR2);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "double tmp = " << GetBottom() <<";\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "double arg0, arg1, arg2;\n\t";
@@ -1456,15 +1322,8 @@ void MIRR::GenSlidingWindowFunction(
void OpEffective::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() <<";\n";
ss << " int gid0 = get_global_id(0);\n\t";
ss << " double arg0 = " << GetBottom() << ";\n";
@@ -1520,15 +1379,8 @@ void OpEffective::GenSlidingWindowFunction(outputstream& ss,
void OpTbilleq::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << " int gid0 = get_global_id(0);\n";
ss << "double tmp = 0;\n\t";
ss << "double tmp000;\n\t";
@@ -1599,15 +1451,8 @@ void OpCumprinc::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 6, 6 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() <<";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fRate,fVal;\n";
@@ -1726,15 +1571,8 @@ void OpAccrint::GenSlidingWindowFunction(
SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 7, 7 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = 0;\n";
ss << " int nStartDate,nEndDate,mode,freq;\n";
@@ -1841,15 +1679,8 @@ void OpAccrintm::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 5, 5 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "double tmp = " << GetBottom() <<";\n\t";
ss << "int nStartDate,nEndDate,mode;\n\t";
@@ -1969,15 +1800,8 @@ void OpYield::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 7, 7 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "double tmp = 0;\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "double tmp000;\n\t";
@@ -2109,15 +1933,8 @@ void OpYield::GenSlidingWindowFunction(
void OpSLN::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double cost;\n";
@@ -2186,15 +2003,8 @@ void OpYieldmat::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 6, 6 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "double tmp = 0;\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "double tmp000;\n\t";
@@ -2309,15 +2119,8 @@ void OpYieldmat::GenSlidingWindowFunction(
void OpPMT::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ", ";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss<<") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss<<" double tmp = 0;\n";
ss<<" double temp=0.0;\n";
ss<<" int gid0 = get_global_id(0);\n";
@@ -2369,15 +2172,8 @@ void OpPMT::GenSlidingWindowFunction(outputstream &ss,
void OpNPV::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ", ";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0.0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int nCount = 1;\n";
@@ -2499,15 +2295,8 @@ void OpNPV::GenSlidingWindowFunction(outputstream &ss,
void OpPrice::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ", ";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss<<") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss<<" double tmp = 0;\n";
ss<<" int gid0 = get_global_id(0);\n";
ss<<" double tmp0=0;\n";
@@ -2573,15 +2362,8 @@ void OpOddlprice::BinInlineFun(std::set<std::string>& decls,
void OpOddlprice::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ", ";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss <<") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" double tmp = 0;\n";
ss <<" int gid0 = get_global_id(0);\n";
ss <<" double tmp0=0;\n";
@@ -2670,15 +2452,8 @@ void OpOddlyield::BinInlineFun(std::set<std::string>& decls,
void OpOddlyield::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ", ";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss <<") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" double tmp = 0;\n";
ss <<" int gid0 = get_global_id(0);\n";
ss <<" double tmp0=0;\n";
@@ -2771,15 +2546,8 @@ void OpPriceDisc::BinInlineFun(std::set<std::string>& decls,
void OpPriceDisc::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ", ";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss<<" double tmp0=0;\n";
@@ -2831,15 +2599,8 @@ void OpPriceDisc::GenSlidingWindowFunction(outputstream &ss,
void OpNper::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ", ";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss <<" double tmp0=0;\n";
@@ -2904,15 +2665,8 @@ void OpPPMT::BinInlineFun(std::set<std::string>& decls,
void OpPPMT::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ", ";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss<<") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss<<" double tmp = 0;\n";
ss<<" int gid0 = get_global_id(0);\n";
ss<<" double arg=0;\n";
@@ -3008,15 +2762,8 @@ void OpCoupdaybs::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &
vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int nSettle,nMat,nFreq,nBase;\n";
@@ -3099,15 +2846,8 @@ void OpCoupdays::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &
vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int nSettle,nMat,nFreq,nBase;\n";
@@ -3185,15 +2925,8 @@ void OpCouppcd::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int nSettle,nMat,nFreq,nBase;\n";
@@ -3272,15 +3005,8 @@ void OpCoupncd::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &
vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int nSettle,nMat,nFreq,nBase;\n";
@@ -3372,15 +3098,8 @@ void OpCoupdaysnc::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int nSettle,nMat,nFreq,nBase;\n";
@@ -3458,15 +3177,8 @@ void OpCoupnum::BinInlineFun(std::set<std::string>& decls,
void OpCoupnum::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int nSettle,nMat,nFreq,nBase;\n";
@@ -3538,16 +3250,9 @@ void OpAmordegrc::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 6, 7 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n ";
- ss << "int gid0 = get_global_id(0);\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
+ ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = " << GetBottom() <<";\n";
ss << " double fCost,fRestVal,fPer,fRate;\n";
ss << " int nDate,nFirstPer,nBase;\n";
@@ -3694,15 +3399,8 @@ void OpAmorlinc::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 6, 7 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = 0;\n";
ss << " double fCost,fRestVal,fPer,fRate;\n";
@@ -3833,15 +3531,8 @@ void OpReceived::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 5, 5 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() <<";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int nSettle, nMat;\n";
@@ -3931,15 +3622,8 @@ void OpYielddisc::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT(5,5);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "double tmp = 0;\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "double tmp000;\n\t";
@@ -4051,15 +3735,8 @@ void OpYielddisc::GenSlidingWindowFunction(
void OpTbillprice::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = 0;\n";
@@ -4087,21 +3764,14 @@ void RATE::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 6, 6 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
FormulaToken* pCur = vSubArguments[5]->GetFormulaToken();
assert(pCur);
const formula::SingleVectorRefToken* pSVR =
static_cast< const formula::SingleVectorRefToken* >(pCur);
assert(pSVR);
- ss << ") {\n";
ss << " double result;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " bool bValid = true, bFound = false;\n";
@@ -4226,15 +3896,8 @@ void RATE::GenSlidingWindowFunction(
void OpTbillyield::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "double tmp = 0;\n\t";
ss << "double tmp000;\n\t";
@@ -4302,15 +3965,8 @@ void OpDDB::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
CHECK_PARAMETER_COUNT( 5, 5 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = 0;\n";
ss << " double fCost, fSalvage, fLife, fPeriod, fFactor;\n";
@@ -4403,15 +4059,8 @@ void OpPV::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &
vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double result = 0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double rate;\n";
@@ -4538,15 +4187,8 @@ tmpCur4);
void OpVDB::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
ss << " double result = 0;\n";
@@ -4587,15 +4229,8 @@ void OpXirr::GenSlidingWindowFunction(outputstream &ss,
size_t nCurWindowSize = pCurDVR->GetArrayLength() <
pCurDVR->GetRefRowSize() ? pCurDVR->GetArrayLength():
pCurDVR->GetRefRowSize() ;
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int doubleIndex = gid0;\n";
ss << " int singleIndex = gid0;\n";
@@ -4700,15 +4335,8 @@ void OpDB::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
CHECK_PARAMETER_COUNT( 5, 5 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fCost, fSalvage, fLife, fPeriod;\n";
ss << " int nMonths;\n";
diff --git a/sc/source/core/opencl/op_logical.cxx b/sc/source/core/opencl/op_logical.cxx
index 1fa21e8250e6..ae4bb9d03de7 100644
--- a/sc/source/core/opencl/op_logical.cxx
+++ b/sc/source/core/opencl/op_logical.cxx
@@ -19,15 +19,8 @@ void OpAnd::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT_MIN( 1 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double t = 1,tmp=0;\n";
for(size_t j = 0; j< vSubArguments.size(); j++)
@@ -105,15 +98,8 @@ void OpOr::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT_MIN( 1 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double t = 0,tmp=0;\n";
for(size_t j = 0; j< vSubArguments.size(); j++)
@@ -185,15 +171,8 @@ void OpNot::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 1, 1 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp=0;\n";
FormulaToken *tmpCur0 = vSubArguments[0]->GetFormulaToken();
@@ -223,15 +202,8 @@ void OpXor::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT_MIN( 1 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int t = 0,tmp0 = 0;\n";
ss << " double tmp = 0;\n";
@@ -303,15 +275,8 @@ void OpIf::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 1, 3 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
FormulaToken *tmpCur0 = vSubArguments[0]->GetFormulaToken();
diff --git a/sc/source/core/opencl/op_math.cxx b/sc/source/core/opencl/op_math.cxx
index 4dec63ac654f..b837d930910f 100644
--- a/sc/source/core/opencl/op_math.cxx
+++ b/sc/source/core/opencl/op_math.cxx
@@ -20,14 +20,7 @@ namespace sc::opencl {
void OpCos::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = 0.0f;\n";
@@ -71,15 +64,8 @@ void OpSec::GenSlidingWindowFunction(outputstream &ss,
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss <<" double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss <<";\n";
@@ -102,15 +88,8 @@ void OpSecH::GenSlidingWindowFunction(outputstream &ss,
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss <<" double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss <<";\n";
@@ -125,15 +104,8 @@ void OpMROUND::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT(2, 2);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ", ";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss<<") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss<<" double tmp = 0;\n";
ss<<" int gid0 = get_global_id(0);\n";
ss<<" double arg0=0;\n";
@@ -184,15 +156,8 @@ void OpCosh::GenSlidingWindowFunction(outputstream &ss,
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss << " double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n";
@@ -208,15 +173,7 @@ void OpCosh::GenSlidingWindowFunction(outputstream &ss,
void OpCot::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = 0.0f;\n";
@@ -269,15 +226,8 @@ void OpCoth::GenSlidingWindowFunction(outputstream &ss,
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss << " double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n";
@@ -301,15 +251,8 @@ void OpCombinA::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tem;\n";
ss << " double arg0,arg1;\n";
@@ -358,15 +301,8 @@ void OpEven::GenSlidingWindowFunction(outputstream &ss,
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss << " double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n";
@@ -390,15 +326,8 @@ void OpMod::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss << " double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n";
@@ -424,15 +353,8 @@ void OpMod::GenSlidingWindowFunction(outputstream &ss,
void OpLog::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tem;\n";
ss << " double arg0,arg1;\n";
@@ -475,15 +397,8 @@ void OpCsc::GenSlidingWindowFunction(
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss <<"int gid0=get_global_id(0);\n\t";
ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n\t";
@@ -504,15 +419,8 @@ void OpCountIfs::GenSlidingWindowFunction(outputstream &ss,
size_t nCurWindowSize = pCurDVR->GetArrayLength() <
pCurDVR->GetRefRowSize() ? pCurDVR->GetArrayLength():
pCurDVR->GetRefRowSize() ;
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss << " int tmp =0;\n";
ss << " int loop;\n";
@@ -696,15 +604,8 @@ void OpSumIfs::GenSlidingWindowFunction(outputstream &ss,
ss << "}\n";
}// finish generate reduction code
// generate functions as usual
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss << " double tmp =0;\n";
if (!mNeedReductionKernel)
@@ -767,15 +668,8 @@ void OpCscH::GenSlidingWindowFunction(
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss <<"int gid0=get_global_id(0);\n\t";
ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n\t";
@@ -790,14 +684,7 @@ void OpCscH::GenSlidingWindowFunction(
void OpExp::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = 0.0f;\n";
@@ -844,15 +731,8 @@ void OpAverageIfs::GenSlidingWindowFunction(outputstream &ss,
size_t nCurWindowSize = pCurDVR->GetArrayLength() <
pCurDVR->GetRefRowSize() ? pCurDVR->GetArrayLength():
pCurDVR->GetRefRowSize() ;
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss << " double tmp =0;\n";
ss << " int count=0;\n";
@@ -901,15 +781,8 @@ void OpLog10::GenSlidingWindowFunction(outputstream &ss,
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss <<"int gid0=get_global_id(0);\n\t";
ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n\t";
@@ -925,15 +798,8 @@ void OpLog10::GenSlidingWindowFunction(outputstream &ss,
void OpSinh::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss <<") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss <<" double arg0 = " <<
vSubArguments[0]->GenSlidingWindowDeclRef();
@@ -947,14 +813,7 @@ void OpSinh::GenSlidingWindowFunction(outputstream &ss,
void OpSin::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = 0.0f;\n";
@@ -996,15 +855,8 @@ void OpSin::GenSlidingWindowFunction(outputstream &ss,
void OpAbs::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = " << GetBottom() << ";\n";
FormulaToken *tmpCur0 = vSubArguments[0]->GetFormulaToken();
@@ -1032,14 +884,8 @@ void OpArcCos::BinInlineFun(std::set<std::string>& decls,
void OpArcCos::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = " << GetBottom() << ";\n";
FormulaToken *tmpCur0 = vSubArguments[0]->GetFormulaToken();
@@ -1058,14 +904,8 @@ void OpArcCos::GenSlidingWindowFunction(outputstream &ss,
void OpArcCosHyp::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = " << GetBottom() << ";\n";
FormulaToken *tmpCur0 = vSubArguments[0]->GetFormulaToken();
@@ -1103,14 +943,7 @@ void OpArcCosHyp::GenSlidingWindowFunction(outputstream &ss,
void OpTan::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = 0.0f;\n";
@@ -1154,15 +987,7 @@ void OpTanH::GenSlidingWindowFunction(outputstream &ss,
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = "<< vSubArguments[0]->GenSlidingWindowDeclRef();
@@ -1178,15 +1003,7 @@ void OpTanH::GenSlidingWindowFunction(outputstream &ss,
void OpPower::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg[2];\n";
@@ -1246,15 +1063,7 @@ void OpPower::GenSlidingWindowFunction(outputstream &ss,
void OpSqrt::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = 0.0f;\n";
@@ -1301,14 +1110,8 @@ void OpSqrt::GenSlidingWindowFunction(outputstream &ss,
void OpArcCot::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = " << GetBottom() << ";\n";
FormulaToken *tmpCur0 = vSubArguments[0]->GetFormulaToken();
@@ -1326,14 +1129,7 @@ void OpArcCot::GenSlidingWindowFunction(outputstream &ss,
void OpArcCotHyp::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = 0.0f;\n";
@@ -1380,14 +1176,8 @@ void OpArcSin::BinInlineFun(std::set<std::string>& decls,
void OpArcSin::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = " << GetBottom() << ";\n";
FormulaToken *tmpCur0 = vSubArguments[0]->GetFormulaToken();
@@ -1405,14 +1195,8 @@ void OpArcSin::GenSlidingWindowFunction(outputstream &ss,
void OpArcSinHyp::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = " << GetBottom() << ";\n";
FormulaToken *tmpCur0 = vSubArguments[0]->GetFormulaToken();
@@ -1453,14 +1237,8 @@ void OpArcTan2::BinInlineFun(std::set<std::string>& decls,
void OpArcTan2::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double x_num = " << GetBottom() << ";\n";
ss << " double y_num = " << GetBottom() << ";\n";
@@ -1488,14 +1266,7 @@ void OpArcTan2::GenSlidingWindowFunction(outputstream &ss,
void OpArcTan::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = 0.0f;\n";
@@ -1535,14 +1306,8 @@ void OpArcTan::GenSlidingWindowFunction(outputstream &ss,
void OpArcTanH::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = " << GetBottom() << ";\n";
FormulaToken *tmpCur0 = vSubArguments[0]->GetFormulaToken();
@@ -1563,14 +1328,8 @@ void OpBitAnd::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double num1 = " << GetBottom() << ";\n";
ss << " double num2 = " << GetBottom() << ";\n";
@@ -1600,15 +1359,8 @@ void OpBitAnd::GenSlidingWindowFunction(outputstream &ss,
void OpLn::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
@@ -1624,15 +1376,8 @@ void OpRound::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 1, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
GenTmpVariables(ss,vSubArguments);
@@ -1659,15 +1404,8 @@ void OpRoundUp::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 1, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
ss << " int intTmp;\n";
@@ -1701,15 +1439,8 @@ void OpRoundDown::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 1, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
ss << " int intTmp;\n";
@@ -1739,15 +1470,8 @@ void OpRoundDown::GenSlidingWindowFunction(outputstream &ss,
void OpInt::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
ss << " int intTmp;\n";
@@ -1768,15 +1492,8 @@ void OpInt::GenSlidingWindowFunction(outputstream &ss,
void OpNegSub::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
GenTmpVariables(ss,vSubArguments);
@@ -1788,15 +1505,8 @@ void OpNegSub::GenSlidingWindowFunction(outputstream &ss,
void OpRadians::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
ss << " double tmp;\n";
@@ -1809,15 +1519,8 @@ void OpRadians::GenSlidingWindowFunction(outputstream &ss,
void OpIsEven::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
ss << " double tmp;\n";
@@ -1830,15 +1533,8 @@ void OpIsEven::GenSlidingWindowFunction(outputstream &ss,
void OpIsOdd::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
ss << " double tmp;\n";
@@ -1856,15 +1552,8 @@ void OpOdd::GenSlidingWindowFunction(
const formula::SingleVectorRefToken*tmpCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
ss << Math_Intg_Str;
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss << " double tmp=0;\n";
ss << " double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
@@ -1889,15 +1578,7 @@ void OpOdd::GenSlidingWindowFunction(
void OpCountIf::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (unsigned i = 0; i < 2; i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double vara, varb;\n";
@@ -1994,19 +1675,11 @@ void OpCountIf::GenSlidingWindowFunction(outputstream &ss,
void OpSumIf::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- int flag = 3 == vSubArguments.size() ? 2 : 0;
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double vara, varb, varc, sum = 0.0f;\n";
+ int flag = 3 == vSubArguments.size() ? 2 : 0;
FormulaToken *tmpCur = vSubArguments[1]->GetFormulaToken();
assert(tmpCur);
if(ocPush == vSubArguments[1]->GetFormulaToken()->GetOpCode())
@@ -2114,15 +1787,7 @@ void OpSumIf::GenSlidingWindowFunction(outputstream &ss,
void OpTrunc::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg[2];\n";
@@ -2198,15 +1863,8 @@ void OpFloor::GenSlidingWindowFunction(
SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 3 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0,arg1,arg2=0.0;\n";
ss << " arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
@@ -2236,14 +1894,8 @@ void OpBitOr::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double num1 = " << GetBottom() << ";\n";
ss << " double num2 = " << GetBottom() << ";\n";
@@ -2276,14 +1928,8 @@ void OpBitXor::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double num1 = " << GetBottom() << ";\n";
ss << " double num2 = " << GetBottom() << ";\n";
@@ -2317,14 +1963,8 @@ void OpBitLshift::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double num = " << GetBottom() << ";\n";
ss << " double shift_amount = " << GetBottom() << ";\n";
@@ -2360,14 +2000,8 @@ void OpBitRshift::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double num = " << GetBottom() << ";\n";
ss << " double shift_amount = " << GetBottom() << ";\n";
@@ -2404,15 +2038,7 @@ void OpBitRshift::GenSlidingWindowFunction(outputstream &ss,
void OpSumSQ::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); ++i)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double sum = 0.0f, arg;\n";
@@ -2494,15 +2120,7 @@ void OpSumSQ::GenSlidingWindowFunction(outputstream &ss,
void OpSqrtPi::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = 0.0f;\n";
@@ -2544,14 +2162,8 @@ void OpCeil::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 3 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double num = " << GetBottom() << ";\n";
ss << " double significance = " << GetBottom() << ";\n";
@@ -2606,14 +2218,8 @@ void OpCombin::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 2, 2 );
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double result = -1.0;\n";
GenerateArg( 0, vSubArguments, ss );
@@ -2660,15 +2266,8 @@ void OpCombin::GenSlidingWindowFunction(outputstream &ss,
void OpProduct::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"( ";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int i = 0;\n";
ss << " double product=1.0;\n";
@@ -2743,15 +2342,8 @@ void OpProduct::GenSlidingWindowFunction(outputstream &ss,
void OpAverageIf::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
-
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp =0;\n";
ss << " double count=0;\n";
@@ -2901,15 +2493,7 @@ void OpAverageIf::GenSlidingWindowFunction(outputstream &ss,
void OpDeg::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0 = 0.0f;\n";
@@ -2952,15 +2536,8 @@ void OpFact::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
CHECK_PARAMETER_COUNT( 1, 1 );
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() << ";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double arg0 = " << GetBottom() << ";\n";
@@ -3017,14 +2594,8 @@ void OpFact::GenSlidingWindowFunction(outputstream& ss,
void OpQuotient::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i) ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double num1 = 1.0;\n";
ss << " double num2 = 1.0;\n";
@@ -3045,15 +2616,7 @@ void OpSeriesSum::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT(4,4);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double var[3], coeff, res = 0.0f;\n";
diff --git a/sc/source/core/opencl/op_spreadsheet.cxx b/sc/source/core/opencl/op_spreadsheet.cxx
index acebe4c0ede7..db99a1e7cf74 100644
--- a/sc/source/core/opencl/op_spreadsheet.cxx
+++ b/sc/source/core/opencl/op_spreadsheet.cxx
@@ -22,15 +22,8 @@ namespace sc::opencl {
void OpVLookup::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp = CreateDoubleError(NOTAVAILABLE);\n";
ss << " double intermediate = DBL_MAX;\n";
diff --git a/sc/source/core/opencl/op_statistical.cxx b/sc/source/core/opencl/op_statistical.cxx
index bad9626a0717..5690d9d9260c 100644
--- a/sc/source/core/opencl/op_statistical.cxx
+++ b/sc/source/core/opencl/op_statistical.cxx
@@ -19,15 +19,8 @@ namespace sc::opencl {
void OpVar::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double fMean = 0.0;\n";
@@ -206,15 +199,8 @@ void OpZTest::BinInlineFun(std::set<std::string>& decls,
void OpZTest::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double fSumSqr = 0.0;\n";
@@ -466,15 +452,8 @@ void OpTTest::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 4, 4 );
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum1 = 0.0;\n";
ss << " double fSum2 = 0.0;\n";
@@ -791,15 +770,8 @@ void OpTTest::GenSlidingWindowFunction(outputstream &ss,
void OpVarP::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double fMean = 0.0;\n";
@@ -989,15 +961,8 @@ void OpTDist::BinInlineFun(std::set<std::string>& decls,
void OpTDist::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double x = 0.0;\n";
ss << " double fDF = 0.0;\n";
@@ -1123,15 +1088,8 @@ void OpTDist::GenSlidingWindowFunction(outputstream &ss,
void OpExponDist::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0,tmp0=0,tmp1=0,tmp2=0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double rx,rlambda,rkum;\n";
@@ -1210,15 +1168,8 @@ void OpFdist::BinInlineFun(std::set<std::string>& decls,
void OpFdist::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = 0,tmp0=0,tmp1=0,tmp2=0;\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double rF1,rF2,rX;\n";
@@ -1271,15 +1222,8 @@ void OpFdist::GenSlidingWindowFunction(outputstream &ss,
void OpStandard::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double x = 0.0;\n";
ss << " double mu = 0.0;\n";
@@ -1397,15 +1341,8 @@ void OpWeibull::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT( 4, 4 );
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double x = 0.0;\n";
ss << " double alpha = 0.0;\n";
@@ -1559,15 +1496,8 @@ void OpWeibull::GenSlidingWindowFunction(outputstream &ss,
void OpSkew::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double fMean = 0.0;\n";
@@ -1816,15 +1746,8 @@ void OpSkew::GenSlidingWindowFunction(outputstream &ss,
void OpSkewp::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double fMean = 0.0;\n";
@@ -2101,15 +2024,8 @@ void OpTInv::BinInlineFun(std::set<std::string>& decls,
void OpTInv::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double x = 0.0;\n";
ss << " double fDF = 0.0;\n";
@@ -2199,15 +2115,8 @@ void OpTInv::GenSlidingWindowFunction(outputstream &ss,
void OpStDev::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double vSum = 0.0;\n";
@@ -2373,15 +2282,8 @@ void OpStDev::GenSlidingWindowFunction(outputstream &ss,
void OpStDevP::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double fMean = 0.0;\n";
@@ -2550,15 +2452,8 @@ void OpSlope::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT(2,2);
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSumX = 0.0;\n";
ss << " double fSumY = 0.0;\n";
@@ -2693,15 +2588,8 @@ void OpSlope::GenSlidingWindowFunction(outputstream &ss,
void OpSTEYX::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSumX = 0.0;\n";
ss << " double fSumY = 0.0;\n";
@@ -2851,15 +2739,8 @@ void OpFisher::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &
vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss <<" double arg0;\n";
if(vSubArguments.size() != 1)
@@ -2905,15 +2786,8 @@ void OpFisherInv::GenSlidingWindowFunction(
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR = static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss <<"int gid0=get_global_id(0);\n\t";
ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n\t";
@@ -2929,15 +2803,8 @@ void OpFisherInv::GenSlidingWindowFunction(
void OpGamma::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss <<"int gid0=get_global_id(0);\n\t";
ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n\t";
@@ -2963,15 +2830,8 @@ void OpCorrel::GenSlidingWindowFunction(
if( pCurDVRX->GetRefRowSize() != pCurDVRY->GetRefRowSize() )
throw Unhandled(__FILE__, __LINE__);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "double vSum = 0.0;\n\t";
ss << "double vXSum = 0.0;\n\t";
ss << "double vYSum = 0.0;\n\t";
@@ -3146,15 +3006,7 @@ void OpCorrel::GenSlidingWindowFunction(
void OpNegbinomdist::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n\t";
ss << "double f,s,p,tmp0,tmp1,tmp2;\n";
ss << " int gid0=get_global_id(0);\n";
@@ -3224,15 +3076,7 @@ void OpPearson::GenSlidingWindowFunction(
size_t nCurWindowSize = pDVR->GetRefRowSize();
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double fCount = 0.0;\n";
@@ -3308,15 +3152,8 @@ void OpGammaLn::GenSlidingWindowFunction(
FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR= static_cast<const
formula::SingleVectorRefToken *>(tmpCur);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n\t";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss <<"int gid0=get_global_id(0);\n\t";
ss << "double arg0 = " << vSubArguments[0]->GenSlidingWindowDeclRef();
ss << ";\n\t";
@@ -3341,15 +3178,8 @@ void OpGauss::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &
vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss <<" double arg0;\n";
if(vSubArguments.size() != 1)
@@ -3534,15 +3364,8 @@ void OpGeoMean::GenSlidingWindowFunction(
ss << " result[writePos] = exp(current_sum/current_count);\n";
ss << "}\n";
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss << " double tmp =0;\n";
ss << " tmp =";
@@ -3556,17 +3379,8 @@ void OpHarMean::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &
vSubArguments)
{
-
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"( ";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
- ss <<"{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double nVal=0.0;\n";
ss << " double tmp = 0;\n";
@@ -3640,15 +3454,8 @@ void OpConfidence::BinInlineFun(std::set<std::string>& decls,
void OpConfidence::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() <<";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double alpha = " << GetBottom() <<";\n";
@@ -3711,15 +3518,8 @@ void OpCritBinom::BinInlineFun(std::set<std::string>& decls,
void OpCritBinom::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " double tmp = " << GetBottom() <<";\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double n = " << GetBottom() <<";\n";
@@ -3823,15 +3623,7 @@ void OpRsq::GenSlidingWindowFunction(
size_t nCurWindowSize = pCurDVR1->GetRefRowSize();
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double fCount = 0.0;\n";
@@ -3919,15 +3711,7 @@ void OpChiInv::GenSlidingWindowFunction(
outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " double tmp0,tmp1,tmp;\n";
ss << " int gid0=get_global_id(0);\n";
@@ -4000,15 +3784,7 @@ void OpNormdist::GenSlidingWindowFunction(
SubArguments &vSubArguments)
{
CHECK_PARAMETER_COUNT(3,4);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " double x,mue,sigma,c;\n";
ss << " int gid0=get_global_id(0);\n";
@@ -4065,15 +3841,7 @@ void OpNormsdist::GenSlidingWindowFunction(
outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " double x = 0,tmp0 = 0;\n";
ss << " int gid0=get_global_id(0);\n";
@@ -4120,15 +3888,8 @@ void OpPermut::GenSlidingWindowFunction(
outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss <<" double inA;\n";
ss <<" double inB;\n";
@@ -4182,15 +3943,8 @@ void OpPermutationA::GenSlidingWindowFunction(
outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss <<" int gid0=get_global_id(0);\n";
ss <<" double inA;\n";
ss <<" double inB;\n";
@@ -4231,15 +3985,7 @@ void OpPhi::GenSlidingWindowFunction(
outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " double x,tmp0;\n";
ss << " int gid0=get_global_id(0);\n";
@@ -4286,15 +4032,7 @@ void OpNorminv::GenSlidingWindowFunction(
outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss <<" double q,t,z;\n";
ss <<" double x,mue,sigma;\n";
@@ -4498,15 +4236,7 @@ void OpNormsinv:: GenSlidingWindowFunction
(outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " double q,t,z,x,tmp0;\n";
ss << " int gid0=get_global_id(0);\n";
@@ -4707,15 +4437,8 @@ void OpMedian::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double tmp = 0;\n";
ss << " int i;\n";
@@ -4771,16 +4494,8 @@ void OpMedian::GenSlidingWindowFunction(
void OpKurt:: GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"( ";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
- ss <<"{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double vSum = 0.0;\n";
@@ -4943,15 +4658,8 @@ void OpKurt:: GenSlidingWindowFunction(outputstream &ss,
void OpIntercept::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSumX = 0.0;\n";
ss << " double fSumY = 0.0;\n";
@@ -5104,15 +4812,8 @@ void OpIntercept::GenSlidingWindowFunction(outputstream &ss,
void OpLogInv:: GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp;\n";
ss << " double arg0,arg1,arg2,arg3;\n";
@@ -5351,15 +5052,8 @@ void OpForecast::GenSlidingWindowFunction(outputstream &ss,
const formula::DoubleVectorRefToken* pCurDVR2 =
static_cast<const formula::DoubleVectorRefToken *>(pCur2);
size_t nCurWindowSize1 = pCurDVR2->GetRefRowSize();
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"( ";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSumX = 0.0;\n";
ss << " double fSumY = 0.0;\n";
@@ -5462,15 +5156,8 @@ void OpLogNormDist::GenSlidingWindowFunction(outputstream &ss,
FormulaToken *tmpCur3 = vSubArguments[3]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR3= static_cast<const
formula::SingleVectorRefToken *>(tmpCur3);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0,arg1,arg2,arg3;\n";
for (size_t i = 0; i < vSubArguments.size(); i++)
@@ -5575,15 +5262,8 @@ void OpGammaDist::BinInlineFun(std::set<std::string>& decls,
void OpGammaDist::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp;\n";
ss << " double arg0,arg1,arg2,arg3;\n";
@@ -5669,15 +5349,7 @@ void OpChiDist::GenSlidingWindowFunction(
outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " double fx,fDF,tmp=0,tmp0=0,tmp1=0;\n";
ss << " int gid0=get_global_id(0);\n";
@@ -5776,15 +5448,7 @@ void OpBinomdist::GenSlidingWindowFunction(
outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " double tmp0,tmp1,tmp2,tmp3;\n";
ss << " int gid0=get_global_id(0);\n";
@@ -5927,15 +5591,8 @@ void OpChiSqDist::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &
vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
ss << " double result = 0;\n";
@@ -6018,15 +5675,8 @@ void OpChiSqInv::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &
vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " int singleIndex = gid0;\n";
ss << " double result = 0;\n";
@@ -6101,15 +5751,8 @@ void OpGammaInv::BinInlineFun(std::set<std::string>& decls,
void OpGammaInv::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp;\n";
ss << " double arg0,arg1,arg2;\n";
@@ -6292,15 +5935,8 @@ void OpFInv::BinInlineFun(std::set<std::string>& decls,
void OpFInv::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp;\n";
ss << " double arg0,arg1,arg2;\n";
@@ -6486,15 +6122,8 @@ void OpFTest::GenSlidingWindowFunction(outputstream &ss,
const formula::DoubleVectorRefToken* pCurDVR1 =
static_cast<const formula::DoubleVectorRefToken *>(pCur1);
size_t nCurWindowSize1 = pCurDVR1->GetRefRowSize();
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"( ";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum1 = 0.0;\n";
ss << " double fSumSqr1 = 0.0;\n";
@@ -6572,15 +6201,8 @@ void OpB::BinInlineFun(std::set<std::string>& decls,
void OpB::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double min = 2.22507e-308;\n";
ss << " double tmp;\n";
@@ -6727,15 +6349,7 @@ void OpPoisson::GenSlidingWindowFunction(
outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " double x,lambda,tmp,tmp0,tmp1,tmp2;\n";
ss << " int bCumulative;\n";
@@ -6840,15 +6454,8 @@ void OpCovar::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
CHECK_PARAMETER_COUNT(2,2);
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double vSum = 0.0;\n";
ss << " double vSum0 = 0.0;\n";
@@ -7123,15 +6730,8 @@ void OpCovar::GenSlidingWindowFunction(outputstream& ss,
void OpBetaDist::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp;\n";
ss << " double arg0,arg1,arg2,arg3,arg4,arg5;\n";
@@ -7255,15 +6855,7 @@ void OpBetainv::GenSlidingWindowFunction(
outputstream &ss,const std::string &sSymName,
SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " double tmp0,tmp1,tmp2,tmp3,tmp4;\n";
ss << " int gid0=get_global_id(0);\n";
@@ -7342,15 +6934,8 @@ void OpBetainv::GenSlidingWindowFunction(
void OpDevSq::GenSlidingWindowFunction(outputstream& ss,
const std::string &sSymName, SubArguments& vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double vSum = 0.0;\n";
ss << " double vMean = 0.0;\n";
@@ -7532,15 +7117,8 @@ void OpDevSq::GenSlidingWindowFunction(outputstream& ss,
void OpHypGeomDist::GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ") {\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double arg0,arg1,arg2,arg3;\n";
@@ -7659,15 +7237,7 @@ void OpMinA::GenSlidingWindowFunction(
outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments)
{
int isMixed = 0;
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp0 = 1.79769e+308;\n";
@@ -7805,15 +7375,7 @@ void OpCountA::GenSlidingWindowFunction(
vSubArguments)
{
int isMixed = 0;
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double nCount = 0.0;\n";
@@ -7941,15 +7503,7 @@ void OpMaxA::GenSlidingWindowFunction(
vSubArguments)
{
int isMixed = 0;
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp0 = 2.22507e-308;\n";
@@ -8088,15 +7642,7 @@ void OpAverageA::GenSlidingWindowFunction(
vSubArguments)
{
int isMixed = 0;
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
ss << "{\n";
ss << " int gid0=get_global_id(0);\n";
ss << " double tmp0 = 0.0;\n";
@@ -8236,15 +7782,8 @@ void OpVarA::GenSlidingWindowFunction(outputstream &ss,
{
int isMixedDV = 0;
int isMixedSV = 0;
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double fMean = 0.0;\n";
@@ -8606,15 +8145,8 @@ void OpVarPA::GenSlidingWindowFunction(outputstream &ss,
{
int isMixedDV = 0;
int isMixedSV = 0;
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double fMean = 0.0;\n";
@@ -8973,15 +8505,8 @@ void OpStDevA::GenSlidingWindowFunction(outputstream &ss,
{
int isMixedDV = 0;
int isMixedSV = 0;
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double fMean = 0.0;\n";
@@ -9341,15 +8866,8 @@ void OpStDevPA::GenSlidingWindowFunction(outputstream &ss,
{
int isMixedDV = 0;
int isMixedSV = 0;
- ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << "){\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double fSum = 0.0;\n";
ss << " double fMean = 0.0;\n";
@@ -9707,16 +9225,8 @@ void OpStDevPA::GenSlidingWindowFunction(outputstream &ss,
void OpAveDev:: GenSlidingWindowFunction(outputstream &ss,
const std::string &sSymName, SubArguments &vSubArguments)
{
- ss << "\ndouble " << sSymName;
- ss << "_"<< BinFuncName() <<"( ";
- for (size_t i = 0; i < vSubArguments.size(); i++)
- {
- if (i)
- ss << ",";
- vSubArguments[i]->GenSlidingWindowDecl(ss);
- }
- ss << ")\n";
- ss <<"{\n";
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n";
ss << " int gid0 = get_global_id(0);\n";
ss << " double sum=0.0;\n";
ss << " double length;\n";
diff --git a/sc/source/core/opencl/opbase.cxx b/sc/source/core/opencl/opbase.cxx
index 9cc69854ca9b..7f50d5523a15 100644
--- a/sc/source/core/opencl/opbase.cxx
+++ b/sc/source/core/opencl/opbase.cxx
@@ -204,23 +204,31 @@ void SlidingFunctionBase::GenerateArg( int num, SubArguments& vSubArguments, out
}
}
-void Normal::GenSlidingWindowFunction(
- outputstream& ss, const std::string& sSymName, SubArguments& vSubArguments )
+void SlidingFunctionBase::GenerateFunctionDeclaration( const std::string& sSymName,
+ SubArguments& vSubArguments, outputstream& ss )
{
- std::vector<std::string> argVector;
ss << "\ndouble " << sSymName;
- ss << "_" << BinFuncName() << "(";
+ ss << "_"<< BinFuncName() <<"(";
for (size_t i = 0; i < vSubArguments.size(); i++)
{
if (i)
- ss << ",";
+ ss << ", ";
vSubArguments[i]->GenSlidingWindowDecl(ss);
- argVector.push_back(vSubArguments[i]->GenSlidingWindowDeclRef());
}
- ss << ") {\n\t";
+ ss << ")\n";
+}
+
+void Normal::GenSlidingWindowFunction(
+ outputstream& ss, const std::string& sSymName, SubArguments& vSubArguments )
+{
+ GenerateFunctionDeclaration( sSymName, vSubArguments, ss );
+ ss << "{\n\t";
ss << "double tmp = " << GetBottom() << ";\n\t";
ss << "int gid0 = get_global_id(0);\n\t";
ss << "tmp = ";
+ std::vector<std::string> argVector;
+ for (size_t i = 0; i < vSubArguments.size(); i++)
+ argVector.push_back(vSubArguments[i]->GenSlidingWindowDeclRef());
ss << Gen(argVector);
ss << ";\n\t";
ss << "return tmp;\n";
diff --git a/sc/source/core/opencl/opbase.hxx b/sc/source/core/opencl/opbase.hxx
index ea1c7402ab23..1b118d39e93e 100644
--- a/sc/source/core/opencl/opbase.hxx
+++ b/sc/source/core/opencl/opbase.hxx
@@ -227,6 +227,8 @@ public:
protected:
// generate code for "double arg<num> = <value>;" from vSubArguments
static void GenerateArg( int num, SubArguments& vSubArguments, outputstream& ss );
+ void GenerateFunctionDeclaration( const std::string& sSymName,
+ SubArguments& vSubArguments, outputstream& ss );
};
class Normal : public SlidingFunctionBase