[Libreoffice-commits] core.git: Branch 'feature/calc-group-interpreter-4' - 3 commits - sc/qa sc/source solenv/gbuild
Markus Mohrhard
markus.mohrhard at googlemail.com
Mon Nov 4 08:00:11 CET 2013
sc/qa/unit/data/xls/opencl/math/sinh.xls |binary
sc/qa/unit/opencl-test.cxx | 20 ++++++++++++++++++++
sc/source/core/opencl/formulagroupcl.cxx | 3 +++
sc/source/core/opencl/op_math.cxx | 31 +++++++++++++++++++++++++++++++
sc/source/core/opencl/op_math.hxx | 7 +++++++
sc/source/core/tool/token.cxx | 1 +
solenv/gbuild/platform/com_MSC_defs.mk | 2 +-
7 files changed, 63 insertions(+), 1 deletion(-)
New commits:
commit 75240ea50fcbc6e66297948614e2cb2e9a6c0b2d
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Mon Nov 4 00:27:53 2013 +0100
add original PATH to PATH during unit tests
we need this for our opencl tests to be able to execute the opencl compiler during the test
Change-Id: I9f9e8f3ceb26ff62789d888e6eb9f4f94010bb1f
diff --git a/solenv/gbuild/platform/com_MSC_defs.mk b/solenv/gbuild/platform/com_MSC_defs.mk
index b57dad0..de82c9f 100644
--- a/solenv/gbuild/platform/com_MSC_defs.mk
+++ b/solenv/gbuild/platform/com_MSC_defs.mk
@@ -296,6 +296,6 @@ gb_LTOFLAGS := $(if $(filter TRUE,$(ENABLE_LTO)),-GL)
gb_Helper_OUTDIRLIBDIR := $(OUTDIR)/bin
# need windows path with backslashes here
-gb_Helper_set_ld_path := PATH="$(shell cygpath -w $(OUTDIR)/bin);$(shell cygpath -w $(INSTDIR)/$(LIBO_URE_LIB_FOLDER));$(shell cygpath -w $(INSTDIR)/$(LIBO_BIN_FOLDER))"
+gb_Helper_set_ld_path := PATH="$(PATH);$(shell cygpath -w $(OUTDIR)/bin);$(shell cygpath -w $(INSTDIR)/$(LIBO_URE_LIB_FOLDER));$(shell cygpath -w $(INSTDIR)/$(LIBO_BIN_FOLDER))"
# vim: set noet sw=4:
commit 9cde31bff56cc489ef86999d5816fc698a31f0ba
Author: dechuang <dechuang at multicorewareinc.com>
Date: Mon Nov 4 14:35:12 2013 +0800
GPU Calc: implement fix for SINH
AMLOEXT-116 FIX
Change-Id: I0c369a65ffb3de2ac91fdd3d04ca6afe658b9bee
Signed-off-by: haochen <haochen at multicorewareinc.com>
Signed-off-by: I-Jui (Ray) Sung <ray at multicorewareinc.com>
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx
index 07ea246..3e80351 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -1020,6 +1020,9 @@ DynamicKernelSoPArguments::DynamicKernelSoPArguments(
mvSubArguments.push_back(SoPHelper(ts,
ft->Children[i], new OpDuration));
break;
+ case ocSinHyp:
+ mvSubArguments.push_back(SoPHelper(ts,
+ ft->Children[i],new OpSinh));
case ocExternal:
if ( !(pChild->GetExternal().compareTo(OUString(
"com.sun.star.sheet.addin.Analysis.getEffect"))))
diff --git a/sc/source/core/opencl/op_math.cxx b/sc/source/core/opencl/op_math.cxx
index 33ca0e5..32d2eb5 100644
--- a/sc/source/core/opencl/op_math.cxx
+++ b/sc/source/core/opencl/op_math.cxx
@@ -80,6 +80,37 @@ void OpCsc::GenSlidingWindowFunction(
ss << "}";
}
+void OpSinh::GenSlidingWindowFunction(std::stringstream &ss,
+ const std::string sSymName, SubArguments &vSubArguments)
+{
+ FormulaToken *tmpCur = vSubArguments[0]->GetFormulaToken();
+ const formula::SingleVectorRefToken*tmpCurDVR= dynamic_cast<const
+ formula::SingleVectorRefToken *>(tmpCur);
+ ss << "\ndouble " << sSymName;
+ ss << "_"<< BinFuncName() <<"(";
+ for (unsigned i = 0; i < vSubArguments.size(); i++)
+ {
+ if (i)
+ ss << ",";
+ vSubArguments[i]->GenSlidingWindowDecl(ss);
+ }
+ ss <<") {\n";
+ ss <<" int gid0=get_global_id(0);\n";
+ ss <<" double arg0 = " <<
+ vSubArguments[0]->GenSlidingWindowDeclRef();
+ ss <<";\n";
+#ifdef ISNAN
+ ss<< " if(isNan(arg0)||(gid0>=";
+ ss<<tmpCurDVR->GetArrayLength();
+ ss<<"))\n";
+ ss<<" arg0 = 0;\n";
+#endif
+ ss << " double tmp=( exp(arg0)-exp(-arg0) )/2;\n";
+ ss << " return tmp;\n";
+ ss << "}";
+}
+
+
}}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/opencl/op_math.hxx b/sc/source/core/opencl/op_math.hxx
index dd497fb..7399a6a 100644
--- a/sc/source/core/opencl/op_math.hxx
+++ b/sc/source/core/opencl/op_math.hxx
@@ -31,6 +31,13 @@ public:
virtual std::string BinFuncName(void) const { return "Csc"; }
};
+class OpSinh: public Normal
+{
+public:
+ virtual void GenSlidingWindowFunction(std::stringstream &ss,
+ const std::string sSymName, SubArguments &vSubArguments);
+ virtual std::string BinFuncName(void) const { return "Sinh"; }
+};
}}
#endif
commit 1f94fc3cd5f35c952d496a500272d9138e553c7e
Author: dechuang <dechuang at multicorewareinc.com>
Date: Mon Nov 4 14:23:11 2013 +0800
GPU Calc: unit test cases for SINH
Need open macro NO_FALLBACK_TO_SWINTERP in formulagroupcl.cxx for test
AMLOEXT-116 BUG
Change-Id: Ic3cf18c9b475bc37bdca40cb64c582742bba8a5a
Signed-off-by: haochen <haochen at multicorewareinc.com>
Signed-off-by: I-Jui (Ray) Sung <ray at multicorewareinc.com>
diff --git a/sc/qa/unit/data/xls/opencl/math/sinh.xls b/sc/qa/unit/data/xls/opencl/math/sinh.xls
new file mode 100644
index 0000000..1a960b2
Binary files /dev/null and b/sc/qa/unit/data/xls/opencl/math/sinh.xls differ
diff --git a/sc/qa/unit/opencl-test.cxx b/sc/qa/unit/opencl-test.cxx
index 9199a5d..f0d1e88 100644
--- a/sc/qa/unit/opencl-test.cxx
+++ b/sc/qa/unit/opencl-test.cxx
@@ -124,6 +124,7 @@ public:
void testFinacialPriceFormula();
void testFinancialDurationFormula();
void testFinancialCoupnumFormula();
+ void testMathFormulaSinh();
CPPUNIT_TEST_SUITE(ScOpenclTest);
CPPUNIT_TEST(testSharedFormulaXLS);
CPPUNIT_TEST(testFinacialFormula);
@@ -177,6 +178,7 @@ public:
CPPUNIT_TEST(testFinacialPriceFormula);
CPPUNIT_TEST(testFinancialDurationFormula);
CPPUNIT_TEST(testFinancialCoupnumFormula);
+ CPPUNIT_TEST(testMathFormulaSinh);
CPPUNIT_TEST_SUITE_END();
private:
@@ -473,6 +475,24 @@ void ScOpenclTest::testMathFormulaCos()
xDocSh->DoClose();
xDocShRes->DoClose();
}
+//[AMLOEXT-116]
+void ScOpenclTest::testMathFormulaSinh()
+{
+ ScDocShellRef xDocSh = loadDoc("opencl/math/sinh.", XLS);
+ enableOpenCL(); ScDocument* pDoc = xDocSh->GetDocument();
+ CPPUNIT_ASSERT(pDoc); xDocSh->DoHardRecalc(true);
+ ScDocShellRef xDocShRes = loadDoc("opencl/math/sinh.", XLS);
+ ScDocument* pDocRes = xDocShRes->GetDocument();
+ CPPUNIT_ASSERT(pDocRes);
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = pDoc->GetValue(ScAddress(1,i,0));
+ double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ xDocSh->DoClose();
+ xDocShRes->DoClose();
+}
void ScOpenclTest::testFinacialFormula()
{
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index 5845c63..6333abb 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -1368,6 +1368,7 @@ void ScTokenArray::CheckToken( const FormulaToken& r )
case ocCosecantHyp:
case ocISPMT:
case ocLaufz:
+ case ocSinHyp:
// Don't change the state.
break;
default:
More information about the Libreoffice-commits
mailing list