diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2022-09-06 12:37:43 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2022-09-13 09:04:51 +0200 |
commit | b58acf93626456f9d9b9ff66f9208a3f944180ac (patch) | |
tree | 0dc81fd01af2669f40787f888e05e8a6b863c02e /sc | |
parent | b9fcf43a38773f81ef1833897c4e36d8db16c0b1 (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.cxx | 32 | ||||
-rw-r--r-- | sc/source/core/opencl/op_addin.cxx | 21 | ||||
-rw-r--r-- | sc/source/core/opencl/op_array.cxx | 33 | ||||
-rw-r--r-- | sc/source/core/opencl/op_database.cxx | 121 | ||||
-rw-r--r-- | sc/source/core/opencl/op_financial.cxx | 586 | ||||
-rw-r--r-- | sc/source/core/opencl/op_logical.cxx | 55 | ||||
-rw-r--r-- | sc/source/core/opencl/op_math.cxx | 657 | ||||
-rw-r--r-- | sc/source/core/opencl/op_spreadsheet.cxx | 11 | ||||
-rw-r--r-- | sc/source/core/opencl/op_statistical.cxx | 724 | ||||
-rw-r--r-- | sc/source/core/opencl/opbase.cxx | 22 | ||||
-rw-r--r-- | sc/source/core/opencl/opbase.hxx | 2 |
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 |