summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
authoryiming ju <yiming@multicorewareinc.com>2013-12-06 12:46:24 +0800
committerI-Jui (Ray) Sung <ray@multicorewareinc.com>2013-12-19 17:53:41 -0600
commitc1c6701a46128b795d6a98a82068fb2b7c322329 (patch)
treebe0bafcfc5b44c38b5571baa7d5d8ede814aea44 /sc/source
parent6dfd73beffefb625a1c5a42764fe85969ccfb45d (diff)
GPU Calc: Optimized RECEIVED
AMLOEXT-328 Change-Id: I8b6031aa9cebf15ce1aa9f4ae38cabe0995b3aed Signed-off-by: haochen <haochen@multicorewareinc.com> Signed-off-by: Wei Wei <weiwei@multicorewareinc.com> Signed-off-by: I-Jui (Ray) Sung <ray@multicorewareinc.com>
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/core/opencl/op_financial.cxx89
1 files changed, 45 insertions, 44 deletions
diff --git a/sc/source/core/opencl/op_financial.cxx b/sc/source/core/opencl/op_financial.cxx
index 529e76df8b7d..f5cc04e24fbb 100644
--- a/sc/source/core/opencl/op_financial.cxx
+++ b/sc/source/core/opencl/op_financial.cxx
@@ -4542,12 +4542,12 @@ void OpReceived::GenSlidingWindowFunction(std::stringstream &ss,
ss << ",";
vSubArguments[i]->GenSlidingWindowDecl(ss);
}
- ss << ") {\n\t";
- ss << "double tmp = " << GetBottom() <<";\n\t";
- ss << "int gid0 = get_global_id(0);\n\t";
- ss << "int nSettle, nMat;\n\t";
- ss << "double fInvest,fDisc;\n\t";
- ss << "int rOB;\n\t";
+ ss << ") {\n";
+ ss << " double tmp = " << GetBottom() <<";\n";
+ ss << " int gid0 = get_global_id(0);\n";
+ ss << " int nSettle, nMat;\n";
+ ss << " double fInvest,fDisc;\n";
+ ss << " int rOB;\n";
#ifdef ISNAN
FormulaToken *tmpCur0 = vSubArguments[0]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR0= dynamic_cast<const
@@ -4564,67 +4564,68 @@ void OpReceived::GenSlidingWindowFunction(std::stringstream &ss,
FormulaToken *tmpCur4 = vSubArguments[4]->GetFormulaToken();
const formula::SingleVectorRefToken*tmpCurDVR4= dynamic_cast<const
formula::SingleVectorRefToken *>(tmpCur4);
- ss<< "int buffer_settle_len = ";
+ ss<< " int buffer_settle_len = ";
ss<< tmpCurDVR0->GetArrayLength();
- ss << ";\n\t";
- ss<< "int buffer_mat_len = ";
+ ss << ";\n";
+ ss<< " int buffer_mat_len = ";
ss<< tmpCurDVR1->GetArrayLength();
- ss << ";\n\t";
- ss<< "int buffer_invest_len = ";
+ ss << ";\n";
+ ss<< " int buffer_invest_len = ";
ss<< tmpCurDVR2->GetArrayLength();
- ss << ";\n\t";
- ss<< "int buffer_disc_len = ";
+ ss << ";\n";
+ ss<< " int buffer_disc_len = ";
ss<< tmpCurDVR3->GetArrayLength();
- ss << ";\n\t";
- ss<< "int buffer_rob_len = ";
+ ss << ";\n";
+ ss<< " int buffer_rob_len = ";
ss<< tmpCurDVR4->GetArrayLength();
- ss << ";\n\t";
+ ss << ";\n";
#endif
#ifdef ISNAN
- ss <<"if(gid0 >= buffer_settle_len || isNan(";
+ ss <<" if(gid0 >= buffer_settle_len || isNan(";
ss <<vSubArguments[0]->GenSlidingWindowDeclRef();
- ss <<"))\n\t\t";
- ss <<"nSettle = 0;\n\telse\n\t\t";
+ ss <<"))\n";
+ ss <<" nSettle = 0;\n\telse\n";
#endif
- ss <<"nSettle = (int)"<<vSubArguments[0]->GenSlidingWindowDeclRef();
- ss <<";\n\t";
+ ss <<" nSettle = (int)"<<vSubArguments[0]->GenSlidingWindowDeclRef();
+ ss <<";\n";
#ifdef ISNAN
- ss <<"if(gid0 >= buffer_mat_len || isNan(";
+ ss <<" if(gid0 >= buffer_mat_len || isNan(";
ss <<vSubArguments[1]->GenSlidingWindowDeclRef();
- ss <<"))\n\t\t";
- ss <<"nMat = 0;\n\telse\n\t\t";
+ ss <<"))\n";
+ ss <<" nMat = 0;\n\telse\n";
#endif
- ss <<"nMat = (int)";
+ ss <<" nMat = (int)";
ss <<vSubArguments[1]->GenSlidingWindowDeclRef();
- ss <<";\n\t";
+ ss <<";\n";
#ifdef ISNAN
- ss <<"if(gid0 >= buffer_invest_len || isNan(";
+ ss <<" if(gid0 >= buffer_invest_len || isNan(";
ss <<vSubArguments[2]->GenSlidingWindowDeclRef();
- ss <<"))\n\t\t";
- ss <<"fInvest = 0;\n\telse\n\t\t";
+ ss <<"))\n";
+ ss <<" fInvest = 0;\n\telse\n";
#endif
- ss <<"fInvest = "<<vSubArguments[2]->GenSlidingWindowDeclRef();
- ss <<";\n\t";
+ ss <<" fInvest = "<<vSubArguments[2]->GenSlidingWindowDeclRef();
+ ss <<";\n";
#ifdef ISNAN
- ss <<"if(gid0 >= buffer_disc_len || isNan(";
+ ss <<" if(gid0 >= buffer_disc_len || isNan(";
ss <<vSubArguments[3]->GenSlidingWindowDeclRef();
- ss <<"))\n\t\t";
- ss <<"fDisc = 0;\n\telse\n\t\t";
+ ss <<"))\n";
+ ss <<" fDisc = 0;\n\telse\n";
#endif
- ss <<"fDisc = "<<vSubArguments[3]->GenSlidingWindowDeclRef();
- ss <<";\n\t";
+ ss <<" fDisc = "<<vSubArguments[3]->GenSlidingWindowDeclRef();
+ ss <<";\n";
#ifdef ISNAN
- ss <<"if(gid0 >= buffer_rob_len || isNan(";
+ ss <<" if(gid0 >= buffer_rob_len || isNan(";
ss <<vSubArguments[4]->GenSlidingWindowDeclRef();
- ss <<"))\n\t\t";
- ss <<"rOB = 0;\n\telse\n\t\t";
+ ss <<"))\n";
+ ss <<" rOB = 0;\n\telse\n";
#endif
- ss <<"rOB = (int)"<<vSubArguments[4]->GenSlidingWindowDeclRef();
- ss <<";\n\t";
- ss << "tmp = fInvest/(1.0-(fDisc";
+ ss <<" rOB = (int)"<<vSubArguments[4]->GenSlidingWindowDeclRef();
+ ss <<";\n";
+ ss << " double tmpvalue = (1.0-(fDisc";
ss <<" * GetYearDiff( GetNullDate()";
- ss <<",nSettle,nMat,rOB)));";
- ss << "\n\treturn tmp;\n";
+ ss <<",nSettle,nMat,rOB)));\n";
+ ss << " tmp = fInvest*pow(tmpvalue,-1);\n";
+ ss << " return tmp;\n";
ss << "}";
}