summaryrefslogtreecommitdiffstats
path: root/sc/qa/unit/opencl-test.cxx
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:06:44 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:06:44 +0000
commited5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch)
tree7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /sc/qa/unit/opencl-test.cxx
parentInitial commit. (diff)
downloadlibreoffice-upstream.tar.xz
libreoffice-upstream.zip
Adding upstream version 4:7.4.7.upstream/4%7.4.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sc/qa/unit/opencl-test.cxx')
-rw-r--r--sc/qa/unit/opencl-test.cxx4722
1 files changed, 4722 insertions, 0 deletions
diff --git a/sc/qa/unit/opencl-test.cxx b/sc/qa/unit/opencl-test.cxx
new file mode 100644
index 000000000..3b1132629
--- /dev/null
+++ b/sc/qa/unit/opencl-test.cxx
@@ -0,0 +1,4722 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+
+#include <sal/config.h>
+
+#include <string_view>
+
+#include <test/bootstrapfixture.hxx>
+
+#include "helper/qahelper.hxx"
+
+#include <docsh.hxx>
+#include <document.hxx>
+#include <formulagroup.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+class ScOpenCLTest
+ : public ScBootstrapFixture
+{
+public:
+ ScOpenCLTest();
+
+ /**
+ * Try to auto-detect OpenCL device if one is available.
+ *
+ * @return true if a usable OpenCL device is found, false otherwise.
+ */
+ bool detectOpenCLDevice();
+
+ /**
+ * Turn on OpenCL group interpreter. Call this after the document is
+ * loaded and before performing formula calculation.
+ */
+ void enableOpenCL();
+
+ virtual void setUp() override;
+ virtual void tearDown() override;
+
+ void testSystematic();
+ void testSharedFormulaXLS();
+#if 0
+ void testSharedFormulaXLSGroundWater();
+ void testSharedFormulaXLSStockHistory();
+#endif
+ void testFinacialFormula();
+ void testStatisticalFormulaFisher();
+ void testStatisticalFormulaFisherInv();
+ void testStatisticalFormulaGamma();
+ void testFinacialFvscheduleFormula();
+// this test has intermittent failures on OSX
+#if !defined MACOSX
+ void testFinacialIRRFormula();
+#endif
+ void testFinacialMIRRFormula();
+ void testFinacialRateFormula();
+ void testFinancialAccrintmFormula();
+ void testFinancialAccrintFormula();
+ void testCompilerHorizontal();
+ void testCompilerNested();
+ void testFinacialSLNFormula();
+ void testStatisticalFormulaGammaLn();
+ void testStatisticalFormulaGauss();
+ void testStatisticalFormulaGeoMean();
+ void testStatisticalFormulaHarMean();
+ void testFinancialCoupdaybsFormula();
+ void testFinacialDollardeFormula();
+ void testCompilerString();
+ void testCompilerInEq();
+ void testFinacialDollarfrFormula();
+ void testFinacialSYDFormula();
+ void testStatisticalFormulaCorrel();
+ void testFinancialCoupdaysFormula();
+ void testFinancialCoupdaysncFormula();
+ void testFinacialDISCFormula();
+ void testFinacialINTRATEFormula();
+ void testMathFormulaCos();
+ void testMathFormulaCsc();
+ void testStatisticalFormulaRsq();
+ void testStatisticalFormulaPearson();
+ void testStatisticalFormulaNegbinomdist();
+ void testFinacialXNPVFormula();
+ void testFinacialPriceMatFormula();
+ void testFinacialFormulaReceived();
+ void testFinancialFormulaCumipmt();
+ void testFinancialFormulaCumprinc();
+ void testFinacialRRIFormula();
+ void testFinacialEFFECT_ADDFormula();
+ void testFinacialNominalFormula();
+ void testFinacialTBILLEQFormula();
+ void testFinacialTBILLPRICEFormula();
+ void testFinacialTBILLYIELDFormula();
+ void testFinacialYIELDFormula();
+ void testFinacialYIELDDISCFormula();
+ void testFinacialYIELDMATFormula();
+ void testFinacialPMTFormula();
+ void testFinacialPPMTFormula();
+ void testFinancialISPMTFormula();
+ void testFinacialPriceFormula();
+ void testFinancialDurationFormula();
+ void testFinancialCoupnumFormula();
+ void testMathFormulaSinh();
+ void testMathFormulaAbs();
+ void testFinacialPVFormula();
+ void testMathFormulaSin();
+ void testMathFormulaTan();
+ void testMathFormulaTanH();
+ void testStatisticalFormulaStandard();
+ void testStatisticalFormulaWeibull();
+ void testStatisticalFormulaMedian();
+ void testFinancialDuration_ADDFormula();
+ void testFinancialAmordegrcFormula();
+ void testFinancialAmorlincFormula();
+ void testFinancialDDBFormula();
+ void testFinancialFVFormula();
+ void testFinancialMDurationFormula();
+ void testMathSumIfsFormula();
+ void testFinancialVDBFormula();
+ void testStatisticalFormulaKurt();
+ void testFinacialNPERFormula();
+ void testStatisticalFormulaNormdist();
+ void testMathFormulaArcCos();
+ void testMathFormulaSqrt();
+ void testMathFormulaArcCosHyp();
+ void testFinacialNPVFormula();
+ void testStatisticalFormulaNormsdist();
+ void testStatisticalFormulaNorminv();
+ void testStatisticalFormulaNormsinv();
+ void testStatisticalFormulaPermut();
+ void testStatisticalFormulaPermutation();
+ void testStatisticalFormulaPhi();
+ void testFinancialIPMTFormula();
+ void testStatisticalFormulaConfidence();
+ void testStatisticalFormulaIntercept();
+ void testFinacialODDLPRICEFormula();
+ void testFinacialOddlyieldFormula();
+ void testFinacialPriceDiscFormula();
+ void testFinancialDBFormula();
+ void testFinancialCouppcdFormula();
+ void testFinancialCoupncdFormula();
+ void testStatisticalFormulaLogInv();
+ void testMathFormulaArcCot();
+ void testMathFormulaCosh();
+ void testStatisticalFormulaCritBinom();
+ void testMathFormulaArcCotHyp();
+ void testMathFormulaArcSin();
+ void testMathFormulaArcSinHyp();
+ void testMathFormulaArcTan();
+ void testMathFormulaArcTanHyp();
+ void testMathFormulaBitAnd();
+ void testStatisticalFormulaForecast();
+ void testStatisticalFormulaLogNormDist();
+ void testStatisticalFormulaGammaDist();
+ void testMathFormulaLN();
+ void testMathFormulaRound();
+ void testMathFormulaCot();
+ void testMathFormulaCoth();
+ void testFinacialNPER1Formula();
+ void testStatisticalFormulaFDist();
+ void testStatisticalFormulaVar();
+ void testStatisticalFormulaChiDist();
+ void testMathFormulaPower();
+ void testMathFormulaOdd();
+ void testStatisticalFormulaChiSqDist();
+ void testStatisticalFormulaChiSqInv();
+ void testStatisticalFormulaGammaInv();
+ void testMathFormulaFloor();
+ void testStatisticalFormulaFInv();
+ void testStatisticalFormulaFTest();
+ void testStatisticalFormulaB();
+ void testStatisticalFormulaBetaDist();
+ void testMathFormulaCscH();
+ void testMathFormulaExp();
+ void testMathFormulaLog10();
+ void testStatisticalFormulaExpondist();
+ void testMathAverageIfsFormula();
+ void testMathCountIfsFormula();
+ void testMathFormulaCombina();
+ void testMathFormulaEven();
+ void testMathFormulaLog();
+ void testMathFormulaMod();
+ void testMathFormulaTrunc();
+ void testStatisticalFormulaSkew();
+ void testMathFormulaArcTan2();
+ void testMathFormulaBitOr();
+ void testMathFormulaBitLshift();
+ void testMathFormulaBitRshift();
+ void testMathFormulaBitXor();
+ void testStatisticalFormulaChiInv();
+ void testStatisticalFormulaPoisson();
+ void testMathFormulaSumSQ();
+ void testStatisticalFormulaSkewp();
+ void testMathFormulaSqrtPi();
+ void testStatisticalFormulaBinomDist();
+ void testStatisticalFormulaVarP();
+ void testMathFormulaCeil();
+ // void testMathFormulaKombin();
+ void testStatisticalFormulaDevSq();
+ void testStatisticalFormulaStDev();
+ void testStatisticalFormulaSlope();
+ void testStatisticalFormulaSTEYX();
+ void testStatisticalFormulaZTest();
+ void testMathFormulaPi();
+ void testMathFormulaRandom();
+ void testMathFormulaConvert();
+ void testMathFormulaProduct();
+ void testStatisticalFormulaHypGeomDist();
+ void testArrayFormulaSumX2MY2();
+ void testArrayFormulaSumX2PY2();
+ void testStatisticalFormulaBetainv();
+ void testStatisticalFormulaTTest();
+ void testStatisticalFormulaTDist();
+ void testStatisticalFormulaTInv();
+ void testArrayFormulaSumXMY2();
+ void testStatisticalFormulaStDevP();
+ void testStatisticalFormulaCovar();
+ void testLogicalFormulaAnd();
+ void testLogicalFormulaOr();
+ void testMathFormulaSumProduct();
+ void testMathFormulaSumProduct2();
+ void testStatisticalParallelCountBug();
+ void testSpreadSheetFormulaVLookup();
+ void testLogicalFormulaNot();
+ void testLogicalFormulaXor();
+ void testDatabaseFormulaDmax();
+ void testDatabaseFormulaDmin();
+ void testDatabaseFormulaDproduct();
+ void testDatabaseFormulaDaverage();
+ void testDatabaseFormulaDstdev();
+ void testDatabaseFormulaDstdevp();
+ void testDatabaseFormulaDsum();
+ void testDatabaseFormulaDvar();
+ void testDatabaseFormulaDvarp();
+ void testMathFormulaAverageIf();
+ void testDatabaseFormulaDcount();
+ void testDatabaseFormulaDcountA();
+ void testMathFormulaDegrees();
+ void testMathFormulaRoundUp();
+ void testMathFormulaRoundDown();
+ void testMathFormulaInt();
+ void testMathFormulaRadians();
+ void testMathFormulaCountIf();
+ void testMathFormulaIsEven();
+ void testMathFormulaIsOdd();
+ void testMathFormulaFact();
+ void testStatisticalFormulaMina();
+ void testStatisticalFormulaCountA();
+ void testStatisticalFormulaMaxa();
+ void testStatisticalFormulaAverageA();
+ void testStatisticalFormulaVarA();
+ void testStatisticalFormulaVarPA();
+ void testStatisticalFormulaStDevA();
+ void testStatisticalFormulaStDevPA();
+ void testMathFormulaSEC();
+ void testMathFormulaSECH();
+ void testMathFormulaMROUND();
+ void testMathFormulaSeriesSum();
+ void testMathFormulaQuotient();
+ void testMathFormulaSumIf();
+ void testAddInFormulaBesseLJ();
+ void testNegSub();
+ void testStatisticalFormulaAvedev();
+ void testMathFormulaAverageIf_Mix();
+ void testStatisticalFormulaKurt1();
+ void testStatisticalFormulaHarMean1();
+ void testStatisticalFormulaVarA1();
+ void testStatisticalFormulaVarPA1();
+ void testStatisticalFormulaStDevA1();
+ void testStatisticalFormulaStDevPA1();
+ void testFinancialMDurationFormula1();
+
+ CPPUNIT_TEST_SUITE(ScOpenCLTest);
+ CPPUNIT_TEST(testSystematic);
+ CPPUNIT_TEST(testSharedFormulaXLS);
+ CPPUNIT_TEST(testFinacialFormula);
+ CPPUNIT_TEST(testStatisticalFormulaFisher);
+ CPPUNIT_TEST(testStatisticalFormulaFisherInv);
+ CPPUNIT_TEST(testStatisticalFormulaGamma);
+ CPPUNIT_TEST(testFinacialFvscheduleFormula);
+// this test has intermittent failures on OSX
+#if !defined MACOSX
+ CPPUNIT_TEST(testFinacialIRRFormula);
+#endif
+ CPPUNIT_TEST(testFinacialMIRRFormula);
+ CPPUNIT_TEST(testFinacialRateFormula);
+ CPPUNIT_TEST(testCompilerHorizontal);
+ CPPUNIT_TEST(testCompilerNested);
+ CPPUNIT_TEST(testFinacialSLNFormula);
+ CPPUNIT_TEST(testFinancialAccrintmFormula);
+ CPPUNIT_TEST(testStatisticalFormulaGammaLn);
+ CPPUNIT_TEST(testStatisticalFormulaGauss);
+ CPPUNIT_TEST(testStatisticalFormulaGeoMean);
+ CPPUNIT_TEST(testStatisticalFormulaHarMean);
+ CPPUNIT_TEST(testFinancialCoupdaybsFormula);
+ CPPUNIT_TEST(testFinacialDollardeFormula);
+ CPPUNIT_TEST(testCompilerString);
+ CPPUNIT_TEST(testCompilerInEq);
+ CPPUNIT_TEST(testFinacialDollarfrFormula);
+ CPPUNIT_TEST(testFinacialSYDFormula);
+ CPPUNIT_TEST(testStatisticalFormulaCorrel);
+ CPPUNIT_TEST(testFinancialCoupdaysFormula);
+ CPPUNIT_TEST(testFinancialCoupdaysncFormula);
+ CPPUNIT_TEST(testFinacialDISCFormula);
+ CPPUNIT_TEST(testFinacialINTRATEFormula);
+ CPPUNIT_TEST(testMathFormulaCos);
+ CPPUNIT_TEST(testStatisticalFormulaNegbinomdist);
+ CPPUNIT_TEST(testStatisticalFormulaRsq);
+ CPPUNIT_TEST(testStatisticalFormulaPearson);
+ CPPUNIT_TEST(testMathFormulaCsc);
+ CPPUNIT_TEST(testFinacialPriceMatFormula);
+ CPPUNIT_TEST(testFinacialXNPVFormula);
+ CPPUNIT_TEST(testFinacialFormulaReceived);
+ CPPUNIT_TEST(testFinancialFormulaCumipmt);
+ CPPUNIT_TEST(testFinancialFormulaCumprinc);
+ CPPUNIT_TEST(testFinacialRRIFormula);
+ CPPUNIT_TEST(testFinacialEFFECT_ADDFormula);
+ CPPUNIT_TEST(testFinacialNominalFormula);
+ CPPUNIT_TEST(testFinacialTBILLEQFormula);
+ CPPUNIT_TEST(testFinacialTBILLPRICEFormula);
+ CPPUNIT_TEST(testFinacialTBILLYIELDFormula);
+ CPPUNIT_TEST(testFinacialYIELDFormula);
+ CPPUNIT_TEST(testFinacialYIELDDISCFormula);
+ CPPUNIT_TEST(testFinacialYIELDMATFormula);
+ CPPUNIT_TEST(testFinacialPPMTFormula);
+ CPPUNIT_TEST(testFinacialPMTFormula);
+ CPPUNIT_TEST(testFinancialISPMTFormula);
+ CPPUNIT_TEST(testFinacialPriceFormula);
+ CPPUNIT_TEST(testFinancialDurationFormula);
+ CPPUNIT_TEST(testFinancialCoupnumFormula);
+ CPPUNIT_TEST(testMathFormulaSinh);
+ CPPUNIT_TEST(testMathFormulaAbs);
+ CPPUNIT_TEST(testFinacialPVFormula);
+ CPPUNIT_TEST(testMathFormulaSin);
+ CPPUNIT_TEST(testMathFormulaTan);
+ CPPUNIT_TEST(testMathFormulaTanH);
+ CPPUNIT_TEST(testStatisticalFormulaStandard);
+ CPPUNIT_TEST(testStatisticalFormulaWeibull);
+ CPPUNIT_TEST(testStatisticalFormulaMedian);
+ CPPUNIT_TEST(testFinancialDuration_ADDFormula);
+ CPPUNIT_TEST(testFinancialAmordegrcFormula);
+ CPPUNIT_TEST(testFinancialAmorlincFormula);
+ CPPUNIT_TEST(testFinancialDDBFormula);
+ CPPUNIT_TEST(testFinancialFVFormula);
+ CPPUNIT_TEST(testFinancialMDurationFormula);
+ CPPUNIT_TEST(testMathSumIfsFormula);
+ CPPUNIT_TEST(testFinancialVDBFormula);
+ CPPUNIT_TEST(testStatisticalFormulaKurt);
+ CPPUNIT_TEST(testFinacialNPERFormula);
+ CPPUNIT_TEST(testStatisticalFormulaNormdist);
+ CPPUNIT_TEST(testMathFormulaArcCos);
+ CPPUNIT_TEST(testMathFormulaSqrt);
+ CPPUNIT_TEST(testMathFormulaArcCosHyp);
+ CPPUNIT_TEST(testFinacialNPVFormula);
+ CPPUNIT_TEST(testStatisticalFormulaNormsdist);
+ CPPUNIT_TEST(testStatisticalFormulaNorminv);
+ CPPUNIT_TEST(testStatisticalFormulaNormsinv);
+ CPPUNIT_TEST(testStatisticalFormulaPermut);
+ CPPUNIT_TEST(testStatisticalFormulaPermutation);
+ CPPUNIT_TEST(testStatisticalFormulaPhi);
+ CPPUNIT_TEST(testFinancialIPMTFormula);
+ CPPUNIT_TEST(testStatisticalFormulaConfidence);
+ CPPUNIT_TEST(testStatisticalFormulaIntercept);
+ CPPUNIT_TEST(testFinacialODDLPRICEFormula);
+ CPPUNIT_TEST(testFinacialOddlyieldFormula);
+ CPPUNIT_TEST(testFinacialPriceDiscFormula);
+ CPPUNIT_TEST(testFinancialDBFormula);
+ CPPUNIT_TEST(testFinancialCouppcdFormula);
+ CPPUNIT_TEST(testFinancialCoupncdFormula);
+ CPPUNIT_TEST(testFinancialAccrintFormula);
+ CPPUNIT_TEST(testStatisticalFormulaLogInv);
+ CPPUNIT_TEST(testMathFormulaArcCot);
+ CPPUNIT_TEST(testMathFormulaCosh);
+ CPPUNIT_TEST(testStatisticalFormulaCritBinom);
+ CPPUNIT_TEST(testMathFormulaArcCotHyp);
+ CPPUNIT_TEST(testMathFormulaArcSin);
+ CPPUNIT_TEST(testMathFormulaArcSinHyp);
+ CPPUNIT_TEST(testMathFormulaArcTan);
+ CPPUNIT_TEST(testMathFormulaArcTanHyp);
+ CPPUNIT_TEST(testMathFormulaBitAnd);
+ CPPUNIT_TEST(testStatisticalFormulaForecast);
+ CPPUNIT_TEST(testStatisticalFormulaLogNormDist);
+ CPPUNIT_TEST(testStatisticalFormulaGammaDist);
+ CPPUNIT_TEST(testMathFormulaLN);
+ CPPUNIT_TEST(testMathFormulaRound);
+ CPPUNIT_TEST(testMathFormulaCot);
+ CPPUNIT_TEST(testMathFormulaCoth);
+ CPPUNIT_TEST(testFinacialNPER1Formula);
+ CPPUNIT_TEST(testStatisticalFormulaFDist);
+ CPPUNIT_TEST(testStatisticalFormulaVar);
+ CPPUNIT_TEST(testStatisticalFormulaChiDist);
+ CPPUNIT_TEST(testMathFormulaPower);
+ CPPUNIT_TEST(testMathFormulaOdd);
+ CPPUNIT_TEST(testStatisticalFormulaChiSqDist);
+ CPPUNIT_TEST(testStatisticalFormulaChiSqInv);
+ CPPUNIT_TEST(testStatisticalFormulaGammaInv);
+ CPPUNIT_TEST(testMathFormulaFloor);
+ CPPUNIT_TEST(testStatisticalFormulaFInv);
+ CPPUNIT_TEST(testStatisticalFormulaFTest);
+ CPPUNIT_TEST(testStatisticalFormulaB);
+ CPPUNIT_TEST(testStatisticalFormulaBetaDist);
+ CPPUNIT_TEST(testMathFormulaCscH);
+ CPPUNIT_TEST(testMathFormulaExp);
+ CPPUNIT_TEST(testMathFormulaLog10);
+ CPPUNIT_TEST(testStatisticalFormulaExpondist);
+ CPPUNIT_TEST(testMathAverageIfsFormula);
+ CPPUNIT_TEST(testMathCountIfsFormula);
+ CPPUNIT_TEST(testMathFormulaCombina);
+ CPPUNIT_TEST(testMathFormulaEven);
+ CPPUNIT_TEST(testMathFormulaLog);
+ CPPUNIT_TEST(testMathFormulaMod);
+ CPPUNIT_TEST(testMathFormulaTrunc);
+ CPPUNIT_TEST(testStatisticalFormulaSkew);
+ CPPUNIT_TEST(testMathFormulaArcTan2);
+ CPPUNIT_TEST(testMathFormulaBitOr);
+ CPPUNIT_TEST(testMathFormulaBitLshift);
+ CPPUNIT_TEST(testMathFormulaBitRshift);
+ CPPUNIT_TEST(testMathFormulaBitXor);
+ CPPUNIT_TEST(testStatisticalFormulaChiInv);
+ CPPUNIT_TEST(testStatisticalFormulaPoisson);
+ CPPUNIT_TEST(testMathFormulaSumSQ);
+ CPPUNIT_TEST(testStatisticalFormulaSkewp);
+ CPPUNIT_TEST(testMathFormulaSqrtPi);
+ CPPUNIT_TEST(testStatisticalFormulaBinomDist);
+ CPPUNIT_TEST(testStatisticalFormulaVarP);
+ CPPUNIT_TEST(testMathFormulaCeil);
+ // This test fails MacOS 10.8. Disabled temporarily
+ // CPPUNIT_TEST(testMathFormulaKombin);
+ CPPUNIT_TEST(testStatisticalFormulaDevSq);
+ CPPUNIT_TEST(testStatisticalFormulaStDev);
+ CPPUNIT_TEST(testStatisticalFormulaSlope);
+ CPPUNIT_TEST(testStatisticalFormulaSTEYX);
+ CPPUNIT_TEST(testStatisticalFormulaZTest);
+ CPPUNIT_TEST(testMathFormulaPi);
+ CPPUNIT_TEST(testMathFormulaRandom);
+ CPPUNIT_TEST(testMathFormulaConvert);
+ CPPUNIT_TEST(testMathFormulaProduct);
+ CPPUNIT_TEST(testStatisticalFormulaHypGeomDist);
+ CPPUNIT_TEST(testArrayFormulaSumX2MY2);
+ CPPUNIT_TEST(testArrayFormulaSumX2PY2);
+ CPPUNIT_TEST(testStatisticalFormulaBetainv);
+ CPPUNIT_TEST(testStatisticalFormulaTTest);
+ CPPUNIT_TEST(testStatisticalFormulaTDist);
+ CPPUNIT_TEST(testStatisticalFormulaTInv);
+ CPPUNIT_TEST(testArrayFormulaSumXMY2);
+ CPPUNIT_TEST(testStatisticalFormulaStDevP);
+ CPPUNIT_TEST(testStatisticalFormulaCovar);
+ CPPUNIT_TEST(testLogicalFormulaAnd);
+ CPPUNIT_TEST(testMathFormulaSumProduct);
+ CPPUNIT_TEST(testMathFormulaSumProduct2);
+ CPPUNIT_TEST(testStatisticalParallelCountBug);
+ CPPUNIT_TEST(testSpreadSheetFormulaVLookup);
+ CPPUNIT_TEST(testLogicalFormulaOr);
+ CPPUNIT_TEST(testLogicalFormulaNot);
+ CPPUNIT_TEST(testLogicalFormulaXor);
+ CPPUNIT_TEST(testDatabaseFormulaDmax);
+ CPPUNIT_TEST(testDatabaseFormulaDmin);
+ CPPUNIT_TEST(testDatabaseFormulaDproduct);
+ CPPUNIT_TEST(testDatabaseFormulaDaverage);
+ CPPUNIT_TEST(testDatabaseFormulaDstdev);
+ CPPUNIT_TEST(testDatabaseFormulaDstdevp);
+ CPPUNIT_TEST(testDatabaseFormulaDsum);
+ CPPUNIT_TEST(testDatabaseFormulaDvar);
+ CPPUNIT_TEST(testDatabaseFormulaDvarp);
+ CPPUNIT_TEST(testMathFormulaAverageIf);
+ CPPUNIT_TEST(testDatabaseFormulaDcount);
+ CPPUNIT_TEST(testDatabaseFormulaDcountA);
+ CPPUNIT_TEST(testMathFormulaDegrees);
+ CPPUNIT_TEST(testMathFormulaRoundUp);
+ CPPUNIT_TEST(testMathFormulaRoundDown);
+ CPPUNIT_TEST(testMathFormulaInt);
+ CPPUNIT_TEST(testMathFormulaRadians);
+ CPPUNIT_TEST(testMathFormulaCountIf);
+ CPPUNIT_TEST(testMathFormulaIsEven);
+ CPPUNIT_TEST(testMathFormulaIsOdd);
+ CPPUNIT_TEST(testMathFormulaFact);
+ CPPUNIT_TEST(testStatisticalFormulaMaxa);
+ CPPUNIT_TEST(testStatisticalFormulaMina);
+ CPPUNIT_TEST(testStatisticalFormulaCountA);
+ CPPUNIT_TEST(testStatisticalFormulaAverageA);
+ CPPUNIT_TEST(testStatisticalFormulaVarA);
+ CPPUNIT_TEST(testStatisticalFormulaVarPA);
+ CPPUNIT_TEST(testStatisticalFormulaStDevA);
+ CPPUNIT_TEST(testStatisticalFormulaStDevPA);
+ CPPUNIT_TEST(testMathFormulaSEC);
+ CPPUNIT_TEST(testMathFormulaSECH);
+ CPPUNIT_TEST(testMathFormulaMROUND);
+ CPPUNIT_TEST(testMathFormulaQuotient);
+ CPPUNIT_TEST(testMathFormulaSeriesSum);
+ CPPUNIT_TEST(testMathFormulaSumIf);
+ CPPUNIT_TEST(testAddInFormulaBesseLJ);
+ CPPUNIT_TEST(testNegSub);
+ CPPUNIT_TEST(testStatisticalFormulaAvedev);
+ CPPUNIT_TEST(testMathFormulaAverageIf_Mix);
+ CPPUNIT_TEST(testStatisticalFormulaKurt1);
+ CPPUNIT_TEST(testStatisticalFormulaHarMean1);
+ CPPUNIT_TEST(testStatisticalFormulaVarA1);
+ CPPUNIT_TEST(testStatisticalFormulaVarPA1);
+ CPPUNIT_TEST(testStatisticalFormulaStDevA1);
+ CPPUNIT_TEST(testStatisticalFormulaStDevPA1);
+ CPPUNIT_TEST(testFinancialMDurationFormula1);
+ CPPUNIT_TEST_SUITE_END();
+
+private:
+ uno::Reference<uno::XInterface> m_xCalcComponent;
+
+ // Test env variables and methods
+ ScDocShellRef xDocSh;
+ ScDocShellRef xDocShRes;
+ bool initTestEnv(std::u16string_view fileName, sal_Int32 nFormat,
+ bool bReadWrite);
+};
+
+bool ScOpenCLTest::initTestEnv(std::u16string_view fileName, sal_Int32 nFormat,
+ bool bReadWrite)
+{
+ if(!detectOpenCLDevice())
+ return false;
+
+ xDocSh = loadDoc(fileName, nFormat, bReadWrite);
+ enableOpenCL();
+
+ xDocShRes = loadDoc(fileName, nFormat, bReadWrite);
+
+ return true;
+}
+
+bool ScOpenCLTest::detectOpenCLDevice()
+{
+ sc::FormulaGroupInterpreter::enableOpenCL_UnitTestsOnly();
+ return sc::FormulaGroupInterpreter::switchOpenCLDevice(OUString(),true);
+}
+
+void ScOpenCLTest::enableOpenCL()
+{
+ sc::FormulaGroupInterpreter::enableOpenCL_UnitTestsOnly();
+}
+
+void ScOpenCLTest::testCompilerHorizontal()
+{
+ if(!initTestEnv(u"opencl/compiler/horizontal.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i < 5; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(12, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(12, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ fLibre = rDoc.GetValue(ScAddress(13, i, 0));
+ fExcel = rDocRes.GetValue(ScAddress(13, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ fLibre = rDoc.GetValue(ScAddress(14, i, 0));
+ fExcel = rDocRes.GetValue(ScAddress(14, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testCompilerNested()
+{
+ if(!initTestEnv(u"opencl/compiler/nested.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i < 5; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testCompilerString()
+{
+ if(!initTestEnv(u"opencl/compiler/string.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i < 5; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+
+ fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testCompilerInEq()
+{
+ if(!initTestEnv(u"opencl/compiler/ineq.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i < 7; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+#if 0
+void ScOpenCLTest::testSharedFormulaXLSStockHistory()
+{
+ if(!initTestEnv("stock-history.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ xDocSh->DoHardRecalc();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 33; i < 44; ++i)
+ { // Cell H34:H44 in S&P 500 (tab 1)
+ double fLibre = rDoc.GetValue(ScAddress(7, i, 1));
+ double fExcel = rDocRes.GetValue(ScAddress(7, i, 1));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, 0.0001*fExcel);
+ }
+
+ for (SCROW i = 33; i < 44; ++i)
+ { // Cell J34:J44 in S&P 500 (tab 1)
+ double fLibre = rDoc.GetValue(ScAddress(9, i, 1));
+ double fExcel = rDocRes.GetValue(ScAddress(9, i, 1));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, 0.0001*fExcel);
+ }
+}
+
+void ScOpenCLTest::testSharedFormulaXLSGroundWater()
+{
+ if(!initTestEnv("ground-water-daily.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ xDocSh->DoHardRecalc();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 5; i <= 77; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(11,i,1));
+ double fExcel = rDocRes.GetValue(ScAddress(11,i,1));
+ ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
+ }
+
+
+}
+#endif
+
+void ScOpenCLTest::testSystematic()
+{
+ if(!initTestEnv(u"systematic.", FORMAT_XLS, false))
+ return;
+
+ ScDocument& rDoc = xDocSh->GetDocument();
+ rDoc.CalcAll();
+
+ int nAVertBegin(0), nAVertEnd(0), nBVertBegin(0), nBVertEnd(0);
+ int nAHorEnd(0), nBHorEnd(0);
+
+ int nRow, nCol;
+ for (nRow = 0; nRow < 1000; ++nRow)
+ {
+ if (rDoc.GetString(ScAddress(0, nRow, 0)) == "a")
+ {
+ nAVertBegin = nRow + 1;
+
+ for (nCol = 0; nCol < 1000; ++nCol)
+ {
+ if (rDoc.GetString(ScAddress(nCol, nRow, 0)) != "a")
+ {
+ nAHorEnd = nCol;
+ break;
+ }
+ }
+ break;
+ }
+ }
+ for (; nRow < 1000; ++nRow)
+ {
+ if (rDoc.GetString(ScAddress(0, nRow, 0)) != "a")
+ {
+ nAVertEnd = nRow;
+ break;
+ }
+ }
+
+ for (; nRow < 1000; ++nRow)
+ {
+ if (rDoc.GetString(ScAddress(0, nRow, 0)) == "b")
+ {
+ nBVertBegin = nRow + 1;
+
+ for (nCol = 0; nCol < 1000; ++nCol)
+ {
+ if (rDoc.GetString(ScAddress(nCol, nRow, 0)) != "b")
+ {
+ nBHorEnd = nCol;
+ break;
+ }
+ }
+ break;
+ }
+ }
+ for (; nRow < 1000; ++nRow)
+ {
+ if (rDoc.GetString(ScAddress(0, nRow, 0)) != "b")
+ {
+ nBVertEnd = nRow;
+ break;
+ }
+ }
+
+ CPPUNIT_ASSERT(nAVertBegin != 0);
+ CPPUNIT_ASSERT(nBVertBegin != 0);
+ CPPUNIT_ASSERT(nAVertEnd > nAVertBegin + 100);
+ CPPUNIT_ASSERT(nBVertEnd > nBVertBegin + 100);
+ CPPUNIT_ASSERT_EQUAL(nAVertEnd-nAVertBegin, nBVertEnd-nBVertBegin);
+ CPPUNIT_ASSERT(nAHorEnd > 10);
+ CPPUNIT_ASSERT(nBHorEnd > 10);
+ CPPUNIT_ASSERT_EQUAL(nAHorEnd, nBHorEnd);
+
+ for (SCROW i = nAVertBegin; i < nAVertEnd; ++i)
+ {
+ for (int j = 1; j < nAHorEnd; ++j)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(j, i, 0));
+ double fExcel = rDoc.GetValue(ScAddress(j, nBVertBegin + (i - nAVertBegin), 0));
+
+ const OString sFailedMessage =
+ OStringChar(static_cast<char>('A'+j)) +
+ OString::number(i+1) +
+ "!=" +
+ OStringChar(static_cast<char>('A'+j)) +
+ OString::number(nBVertBegin+(i-nAVertBegin)+1);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(sFailedMessage.getStr(), fExcel, fLibre, 1e-10);
+ }
+ }
+}
+
+
+void ScOpenCLTest::testSharedFormulaXLS()
+{
+ if(!initTestEnv(u"sum_ex.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 0; i < 5; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
+ }
+
+ for (SCROW i = 6; i < 14; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
+ }
+
+ for (SCROW i = 15; i < 18; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
+ }
+
+ for (SCROW i = 19; i < 22; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
+ }
+
+ for (SCROW i = 23; i < 25; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ //double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ // There seems to be a bug in LibreOffice beta
+ ASSERT_DOUBLES_EQUAL(/*fExcel*/ 60.0, fLibre);
+ }
+
+ for (SCROW i = 25; i < 27; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
+ }
+
+ for (SCROW i = 28; i < 35; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
+ }
+
+ // workaround for a Calc beta bug
+ ASSERT_DOUBLES_EQUAL(25.0, rDoc.GetValue(ScAddress(2, 35, 0)));
+ ASSERT_DOUBLES_EQUAL(24.0, rDoc.GetValue(ScAddress(2, 36, 0)));
+
+ for (SCROW i = 38; i < 43; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
+ }
+
+ for (SCROW i = 5; i < 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 1));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 1));
+ ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
+ }
+
+ for (SCROW i = 5; i < 10; ++i)
+ {
+ for (SCCOL j = 6; j < 11; ++j)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(j, i, 1));
+ double fExcel = rDocRes.GetValue(ScAddress(j, i, 1));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre,
+ fabs(fExcel*0.0001));
+ }
+ }
+}
+
+void ScOpenCLTest::testMathFormulaCos()
+{
+ if(!initTestEnv(u"opencl/math/cos.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaSinh()
+{
+ if(!initTestEnv(u"opencl/math/sinh.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ xDocSh->DoHardRecalc();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaPi()
+{
+ if(!initTestEnv(u"opencl/math/pi.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(0,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(0,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaRandom()
+{
+ if(!initTestEnv(u"opencl/math/random.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ rDoc.GetValue(ScAddress(0,i,0)); // LO
+ rDocRes.GetValue(ScAddress(0,i,0)); // Excel
+ //because the random numbers will always change,so give the test "true"
+ CPPUNIT_ASSERT(true);
+ }
+}
+void ScOpenCLTest::testFinacialFormula()
+{
+ if(!initTestEnv(u"opencl/financial/general.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6,i,1));
+ double fExcel = rDocRes.GetValue(ScAddress(6,i,1));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,2));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,2));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6,i,3));
+ double fExcel = rDocRes.GetValue(ScAddress(6,i,3));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,4));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,4));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,5));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,5));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 0; i < 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5,i,6));
+ double fExcel = rDocRes.GetValue(ScAddress(5,i,6));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,7));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,7));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,8));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,8));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,9));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,9));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,10));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,10));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(7,i,11));
+ double fExcel = rDocRes.GetValue(ScAddress(7,i,11));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5,i,12));
+ double fExcel = rDocRes.GetValue(ScAddress(5,i,12));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 0; i <= 12; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6,i,13));
+ double fExcel = rDocRes.GetValue(ScAddress(6,i,13));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,14));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,14));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6,i,15));
+ double fExcel = rDocRes.GetValue(ScAddress(6,i,15));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6,i,16));
+ double fExcel = rDocRes.GetValue(ScAddress(6,i,16));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 1; i <= 5; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6,i,17));
+ double fExcel = rDocRes.GetValue(ScAddress(6,i,17));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 0; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,18));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,18));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 0; i <= 18; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,19));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,19));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaCorrel()
+{
+ if(!initTestEnv(u"opencl/statistical/Correl.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testStatisticalFormulaFisher()
+{
+ if(!initTestEnv(u"opencl/statistical/Fisher.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaFisherInv()
+{
+ if(!initTestEnv(u"opencl/statistical/FisherInv.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaGamma()
+{
+ if(!initTestEnv(u"opencl/statistical/Gamma.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialFvscheduleFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Fvschedule.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaAbs()
+{
+ if(!initTestEnv(u"opencl/math/Abs.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify ABS Function
+ for (SCROW i = 1; i <= 1000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialSYDFormula()
+{
+ if(!initTestEnv(u"opencl/financial/SYD.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(4, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+// this test has intermittent failures on OSX
+#if !defined MACOSX
+void ScOpenCLTest::testFinacialIRRFormula()
+{
+ if(!initTestEnv(u"opencl/financial/IRR.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+#endif
+
+void ScOpenCLTest::testStatisticalFormulaGammaLn()
+{
+ if(!initTestEnv(u"opencl/statistical/GammaLn.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaGauss()
+{
+ if(!initTestEnv(u"opencl/statistical/Gauss.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaGeoMean()
+{
+ if(!initTestEnv(u"opencl/statistical/GeoMean.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaHarMean()
+{
+ if(!initTestEnv(u"opencl/statistical/HarMean.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialSLNFormula()
+{
+ if(!initTestEnv(u"opencl/financial/SLN.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialMIRRFormula()
+{
+ if(!initTestEnv(u"opencl/financial/MIRR.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinancialCoupdaybsFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Coupdaybs.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 1; i <=10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(4, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialDollardeFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Dollarde.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinancialCoupdaysFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Coupdays.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 1; i <=10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(4, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+}
+
+void ScOpenCLTest::testFinancialCoupdaysncFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Coupdaysnc.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 1; i <=10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(4, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinacialRateFormula()
+{
+ if(!initTestEnv(u"opencl/financial/RATE.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 1; i <= 5; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinancialAccrintmFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Accrintm.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinancialCoupnumFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Coupnum.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(4, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaNegbinomdist()
+{
+ if(!initTestEnv(u"opencl/statistical/Negbinomdist.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaSin()
+{
+ if(!initTestEnv(u"opencl/math/sin.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaSumSQ()
+{
+ if(!initTestEnv(u"opencl/math/sumsq.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i < 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(5,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaTan()
+{
+ if(!initTestEnv(u"opencl/math/tan.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaTanH()
+{
+ if(!initTestEnv(u"opencl/math/tanh.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaSqrt()
+{
+ if(!initTestEnv(u"opencl/math/sqrt.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialPriceFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Price.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(7, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(7, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialDollarfrFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Dollarfr.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialPriceDiscFormula()
+{
+ if(!initTestEnv(u"opencl/financial/PriceDisc.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialODDLPRICEFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Oddlprice.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(8, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(8, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinacialOddlyieldFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Oddlyield.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(8, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(8, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialDISCFormula()
+{
+ if(!initTestEnv(u"opencl/financial/DISC.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinacialPVFormula()
+{
+ if(!initTestEnv(u"opencl/financial/PV.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialINTRATEFormula()
+{
+ if(!initTestEnv(u"opencl/financial/INTRATE.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaStandard()
+{
+ if(!initTestEnv(u"opencl/statistical/Standard.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaWeibull()
+{
+ if(!initTestEnv(u"opencl/statistical/Weibull.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(4,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre,
+ fExcel == 0?1e-4:fabs(1e-4*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaVar()
+{
+ if(!initTestEnv(u"opencl/statistical/Var.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaSkew()
+{
+ if(!initTestEnv(u"opencl/statistical/Skew.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaSkewp()
+{
+ if(!initTestEnv(u"opencl/statistical/Skewp.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaPearson()
+{
+ if(!initTestEnv(u"opencl/statistical/Pearson.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaRsq()
+{
+ if(!initTestEnv(u"opencl/statistical/Rsq.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaTrunc()
+{
+ if(!initTestEnv(u"opencl/math/trunc.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaCosh()
+{
+ if(!initTestEnv(u"opencl/math/cosh.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testStatisticalFormulaCovar()
+{
+ if(!initTestEnv(u"opencl/statistical/Covar.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 0; i <= 16; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaKurt()
+{
+ if(!initTestEnv(u"opencl/statistical/Kurt.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaCot()
+{
+ if(!initTestEnv(u"opencl/math/cot.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaDevSq()
+{
+ if(!initTestEnv(u"opencl/statistical/DevSq.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 0; i <= 11; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaCsc()
+{
+ if(!initTestEnv(u"opencl/math/csc.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaCoth()
+{
+ if(!initTestEnv(u"opencl/math/coth.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialXNPVFormula()
+{
+ if(!initTestEnv(u"opencl/financial/XNPV.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+
+ for (SCROW i = 16; i <= 26; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaIntercept()
+{
+ if(!initTestEnv(u"opencl/statistical/Intercept.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinancialAmordegrcFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Amordegrc.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(7, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(7, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinancialISPMTFormula()
+{
+ if(!initTestEnv(u"opencl/financial/ISPMT.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(4, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaMedian()
+{
+ if(!initTestEnv(u"opencl/statistical/Median.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaNormdist()
+{
+ if(!initTestEnv(u"opencl/statistical/Normdist.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(4,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaNormsdist()
+{
+ if(!initTestEnv(u"opencl/statistical/Normsdist.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaPermut()
+{
+ if(!initTestEnv(u"opencl/statistical/Permut.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaPermutation()
+{
+ if(!initTestEnv(u"opencl/statistical/Permutation.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaPhi()
+{
+ if(!initTestEnv(u"opencl/statistical/Phi.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaCscH()
+{
+ if(!initTestEnv(u"opencl/math/csch.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaLogInv()
+{
+ if(!initTestEnv(u"opencl/statistical/LogInv.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialNPERFormula()
+{
+ if(!initTestEnv(u"opencl/financial/NPER.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaForecast()
+{
+ if(!initTestEnv(u"opencl/statistical/Forecast.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinancialAmorlincFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Amorlinc.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(7, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(7, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinancialDDBFormula()
+{
+ if(!initTestEnv(u"opencl/financial/ddb.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinacialPriceMatFormula()
+{
+ if(!initTestEnv(u"opencl/financial/PriceMat.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinacialFormulaReceived()
+{
+ if(!initTestEnv(u"opencl/financial/Received.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 0; i < 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(5,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinancialFormulaCumipmt()
+{
+ if(!initTestEnv(u"opencl/financial/Cumipmt.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(6,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinancialFormulaCumprinc()
+{
+ if(!initTestEnv(u"opencl/financial/Cumprinc.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(6,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinacialRRIFormula()
+{
+ if(!initTestEnv(u"opencl/financial/RRI.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinacialEFFECT_ADDFormula()
+{
+ if(!initTestEnv(u"opencl/financial/EFFECT_ADD.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinacialNominalFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Nominal.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinacialTBILLEQFormula()
+{
+ if(!initTestEnv(u"opencl/financial/TBILLEQ.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinacialTBILLPRICEFormula()
+{
+ if(!initTestEnv(u"opencl/financial/TBILLPRICE.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinacialTBILLYIELDFormula()
+{
+ if(!initTestEnv(u"opencl/financial/TBILLYIELD.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest::testFinacialYIELDFormula()
+{
+ if(!initTestEnv(u"opencl/financial/YIELD.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(7, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(7, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialYIELDDISCFormula()
+{
+ if(!initTestEnv(u"opencl/financial/YIELDDISC.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinacialYIELDMATFormula()
+{
+ if(!initTestEnv(u"opencl/financial/YIELDMAT.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+void ScOpenCLTest:: testFinacialPMTFormula()
+{
+ if(!initTestEnv(u"opencl/financial/PMT.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinancialDurationFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Duration.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaLogNormDist()
+{
+ if(!initTestEnv(u"opencl/statistical/LogNormDist.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(4,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaArcCos()
+{
+ if(!initTestEnv(u"opencl/math/ArcCos.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify ACos Function
+ for (SCROW i = 1; i <= 1000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaPower()
+{
+ if(!initTestEnv(u"opencl/math/power.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinacialPPMTFormula()
+{
+ if(!initTestEnv(u"opencl/financial/PPMT.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinacialNPVFormula()
+{
+ if(!initTestEnv(u"opencl/financial/NPV.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinancialDuration_ADDFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Duration_ADD.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaNorminv()
+{
+ if(!initTestEnv(u"opencl/statistical/Norminv.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaNormsinv()
+{
+ if(!initTestEnv(u"opencl/statistical/Normsinv.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaArcCosHyp()
+{
+ if(!initTestEnv(u"opencl/math/ArcCosHyp.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify ACosH Function
+ for (SCROW i = 1; i <= 1000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinancialMDurationFormula()
+{
+ if(!initTestEnv(u"opencl/financial/MDuration.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaArcCot()
+{
+ if(!initTestEnv(u"opencl/math/ArcCot.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify ACot Function
+ for (SCROW i = 1; i <= 1000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinancialFVFormula()
+{
+ if(!initTestEnv(u"opencl/financial/FV.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinancialDBFormula()
+{
+ if(!initTestEnv(u"opencl/financial/db.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinancialCouppcdFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Couppcd.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(4, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathSumIfsFormula()
+{
+ if(!initTestEnv(u"opencl/math/sumifs.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ xDocSh->DoHardRecalc();
+
+ for (SCROW i = 2; i <= 11; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(5,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 2; i <= 11; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(6,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 2; i <= 11; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(7,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(7,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 2; i <= 11; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(8,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(8,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaArcCotHyp()
+{
+ if(!initTestEnv(u"opencl/math/ArcCotHyp.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify ACotH Function
+ for (SCROW i = 1; i <= 1000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaArcSin()
+{
+ if(!initTestEnv(u"opencl/math/ArcSin.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify ACotH Function
+ for (SCROW i = 1; i <= 1000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinancialVDBFormula()
+{
+ if(!initTestEnv(u"opencl/financial/VDB.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(7, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(7, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 15; i <= 26; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 30; i <= 41; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinancialIPMTFormula()
+{
+ if(!initTestEnv(u"opencl/financial/IPMT.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaChiSqDist()
+{
+ if(!initTestEnv(u"opencl/statistical/CHISQDIST.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaConfidence()
+{
+ if(!initTestEnv(u"opencl/statistical/Confidence.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaFDist()
+{
+ if(!initTestEnv(u"opencl/statistical/Fdist.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinancialCoupncdFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Coupncd.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(4, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testFinancialAccrintFormula()
+{
+ if(!initTestEnv(u"opencl/financial/Accrint.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(7, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(7, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaCritBinom()
+{
+ if(!initTestEnv(u"opencl/statistical/CritBinom.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaArcSinHyp()
+{
+ if(!initTestEnv(u"opencl/math/ArcSinHyp.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify ASinH Function
+ for (SCROW i = 1; i <= 1000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaArcTan()
+{
+ if(!initTestEnv(u"opencl/math/ArcTan.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify ATan Function
+ for (SCROW i = 1; i <= 1000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaArcTanHyp()
+{
+ if(!initTestEnv(u"opencl/math/ArcTanHyp.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify ATanH Function
+ for (SCROW i = 1; i <= 1000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinacialNPER1Formula()
+{
+ if(!initTestEnv(u"opencl/financial/NPER1.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 6; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(5, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaArcTan2()
+{
+ if(!initTestEnv(u"opencl/math/ArcTan2.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify ATan2 Function
+ for (SCROW i = 1; i <= 17; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, 0.000001);
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaChiSqInv()
+{
+ if(!initTestEnv(u"opencl/statistical/CHISQINV.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaBitAnd()
+{
+ if(!initTestEnv(u"opencl/math/BitAnd.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify BitAnd Function
+ for (SCROW i = 1; i <= 1000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaPoisson()
+{
+ if(!initTestEnv(u"opencl/statistical/Poisson.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaExpondist()
+{
+ if(!initTestEnv(u"opencl/statistical/Expondist.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaBitOr()
+{
+ if(!initTestEnv(u"opencl/math/BitOr.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify BitOr Function
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaOdd()
+{
+ if(!initTestEnv(u"opencl/math/odd.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaLN()
+{
+ if(!initTestEnv(u"opencl/math/LN.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaMod()
+{
+ if(!initTestEnv(u"opencl/math/mod.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ if(fExcel == 0.0f)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, 1e-10);
+ else
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaRound()
+{
+ if(!initTestEnv(u"opencl/math/ROUND.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 15; i <= 25; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaGammaDist()
+{
+ if(!initTestEnv(u"opencl/statistical/GammaDist.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(4,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaGammaInv()
+{
+ if(!initTestEnv(u"opencl/statistical/GammaInv.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ fLibre = rDoc.GetValue(ScAddress(4,i,0));
+ fExcel = rDocRes.GetValue(ScAddress(4,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaFInv()
+{
+ if(!initTestEnv(u"opencl/statistical/FInv.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ fLibre = rDoc.GetValue(ScAddress(4,i,0));
+ fExcel = rDocRes.GetValue(ScAddress(4,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaFTest()
+{
+ if(!initTestEnv(u"opencl/statistical/FTest.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaB()
+{
+ if(!initTestEnv(u"opencl/statistical/B.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(4,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ fLibre = rDoc.GetValue(ScAddress(5,i,0));
+ fExcel = rDocRes.GetValue(ScAddress(5,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaBetaDist()
+{
+ if(!initTestEnv(u"opencl/statistical/BetaDist.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(6,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ fLibre = rDoc.GetValue(ScAddress(7,i,0));
+ fExcel = rDocRes.GetValue(ScAddress(7,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaEven()
+{
+ if(!initTestEnv(u"opencl/math/even.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaExp()
+{
+ if(!initTestEnv(u"opencl/math/exp.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaChiDist()
+{
+ if(!initTestEnv(u"opencl/statistical/ChiDist.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaBitLshift()
+{
+ if(!initTestEnv(u"opencl/math/BitLshift.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify BitLshift Function
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaBitRshift()
+{
+ if(!initTestEnv(u"opencl/math/BitRshift.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify BitRshift Function
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaFloor()
+{
+ if(!initTestEnv(u"opencl/math/floor.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaLog()
+{
+ if(!initTestEnv(u"opencl/math/log.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 47; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testSpreadSheetFormulaVLookup()
+{
+ if(!initTestEnv(u"opencl/spreadsheet/VLookup.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(5,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 40; i <= 50; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(5,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaChiInv()
+{
+ if(!initTestEnv(u"opencl/statistical/ChiInv.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaConvert()
+{
+ if(!initTestEnv(u"opencl/math/convert.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 3; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathCountIfsFormula()
+{
+ if(!initTestEnv(u"opencl/math/countifs.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ xDocSh->DoHardRecalc();
+
+ for (SCROW i = 1; i < 10; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(4, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaBitXor()
+{
+ if(!initTestEnv(u"opencl/math/BitXor.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify BitXor Function
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathAverageIfsFormula()
+{
+ if(!initTestEnv(u"opencl/math/averageifs.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+
+ xDocSh->DoHardRecalc();
+
+ for (SCROW i = 1; i <= 11; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(4,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaLog10()
+{
+ if(!initTestEnv(u"opencl/math/log10.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaCombina()
+{
+ if(!initTestEnv(u"opencl/math/combina.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 47; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaCeil()
+{
+ if(!initTestEnv(u"opencl/math/Ceil.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify Ceiling Function
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaSqrtPi()
+{
+ if(!initTestEnv(u"opencl/math/sqrtpi.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i < 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaVarP()
+{
+ if(!initTestEnv(u"opencl/statistical/VarP.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaStDev()
+{
+ if(!initTestEnv(u"opencl/statistical/StDev.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaStDevP()
+{
+ if(!initTestEnv(u"opencl/statistical/StDevP.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaSlope()
+{
+ if(!initTestEnv(u"opencl/statistical/Slope.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaSTEYX()
+{
+ if(!initTestEnv(u"opencl/statistical/STEYX.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaZTest()
+{
+ if(!initTestEnv(u"opencl/statistical/ZTest.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaTTest()
+{
+ if(!initTestEnv(u"opencl/statistical/TTest.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(4,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaTDist()
+{
+ if(!initTestEnv(u"opencl/statistical/TDist.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaTInv()
+{
+ if(!initTestEnv(u"opencl/statistical/TInv.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaBinomDist()
+{
+ if(!initTestEnv(u"opencl/statistical/BinomDist.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(4,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaProduct()
+{
+ if(!initTestEnv(u"opencl/math/product.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 3; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+#if 0 //Disabled temporarily
+void ScOpenCLTest::testMathFormulaKombin()
+{
+ if(!initTestEnv("opencl/math/Kombin.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify Combin Function
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+#endif
+
+void ScOpenCLTest:: testArrayFormulaSumX2MY2()
+{
+ if(!initTestEnv(u"opencl/array/SUMX2MY2.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 20; i <= 26; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaHypGeomDist()
+{
+ if(!initTestEnv(u"opencl/statistical/HypGeomDist.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(4,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testArrayFormulaSumX2PY2()
+{
+ if(!initTestEnv(u"opencl/array/SUMX2PY2.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 20; i <= 26; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaBetainv()
+{
+ if(!initTestEnv(u"opencl/statistical/Betainv.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(5,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(5,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaMina()
+{
+ if(!initTestEnv(u"opencl/statistical/Mina.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testArrayFormulaSumXMY2()
+{
+ if(!initTestEnv(u"opencl/array/SUMXMY2.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 20; i <= 26; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaCountA()
+{
+ if(!initTestEnv(u"opencl/statistical/counta.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaMaxa()
+{
+ if(!initTestEnv(u"opencl/statistical/Maxa.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaSumProduct()
+{
+ if(!initTestEnv(u"opencl/math/sumproduct_mixSliding.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ if ( i == 1 )
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(82, fLibre, fabs(0.0001*fExcel));
+ else if ( i == 2 )
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(113, fLibre, fabs(0.0001*fExcel));
+ else if ( i == 4 )
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(175, fLibre, fabs(0.0001*fExcel));
+ else if ( i == 5 )
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(206, fLibre, fabs(0.0001*fExcel));
+ else if ( i == 6 )
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(237, fLibre, fabs(0.0001*fExcel));
+ else if ( i == 7 )
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(268, fLibre, fabs(0.0001*fExcel));
+ else
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaAverageIf()
+{
+ if(!initTestEnv(u"opencl/math/averageif.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 2; i <= 21; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(6,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaAverageA()
+{
+ if(!initTestEnv(u"opencl/statistical/AverageA.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testLogicalFormulaAnd()
+{
+ if(!initTestEnv(u"opencl/logical/and.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(3, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaVarA()
+{
+ if(!initTestEnv(u"opencl/statistical/VarA.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaVarPA()
+{
+ if(!initTestEnv(u"opencl/statistical/VarPA.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaStDevA()
+{
+ if(!initTestEnv(u"opencl/statistical/StDevA.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaStDevPA()
+{
+ if(!initTestEnv(u"opencl/statistical/StDevPA.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testFinancialMDurationFormula1()
+{
+ if(!initTestEnv(u"opencl/financial/MDuration1.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(6, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(6, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel,fLibre,fabs(0.00000000001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaSumProduct2()
+{
+ if(!initTestEnv(u"opencl/math/sumproductTest.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 2; i <= 12; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(4,i,1));
+ double fExcel = rDocRes.GetValue(ScAddress(4,i,1));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testStatisticalParallelCountBug()
+{
+ if(!initTestEnv(u"opencl/statistical/parallel_count_bug_243.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i < 13; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testLogicalFormulaOr()
+{
+ if(!initTestEnv(u"opencl/logical/or.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i < 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(2, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testLogicalFormulaNot()
+{
+ if(!initTestEnv(u"opencl/logical/not.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i < 3000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(1, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest:: testLogicalFormulaXor()
+{
+ if(!initTestEnv(u"opencl/logical/xor.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i < 3000; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1, i, 0));
+ double fExcel = rDocRes.GetValue(ScAddress(1, i, 0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testDatabaseFormulaDcount()
+{
+ if(!initTestEnv(u"opencl/database/dcount.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(9,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(10,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.00000000001));
+ }
+}
+
+void ScOpenCLTest::testDatabaseFormulaDcountA()
+{
+ if(!initTestEnv(u"opencl/database/dcountA.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(9,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(10,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.00000000001));
+ }
+}
+
+void ScOpenCLTest::testDatabaseFormulaDmax()
+{
+ if(!initTestEnv(u"opencl/database/dmax.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(9,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(10,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.00000000001));
+ }
+}
+
+void ScOpenCLTest::testDatabaseFormulaDmin()
+{
+ if(!initTestEnv(u"opencl/database/dmin.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(9,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(10,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.00000000001));
+ }
+}
+
+void ScOpenCLTest::testDatabaseFormulaDproduct()
+{
+ if(!initTestEnv(u"opencl/database/dproduct.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(9,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(10,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.00000000001));
+ }
+}
+
+void ScOpenCLTest::testDatabaseFormulaDaverage()
+{
+ if(!initTestEnv(u"opencl/database/daverage.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(9,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(10,i,0));
+ //CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.00000000001));
+ }
+}
+
+void ScOpenCLTest::testDatabaseFormulaDstdev()
+{
+ if(!initTestEnv(u"opencl/database/dstdev.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(9,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(10,i,0));
+ //CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.00000000001));
+ }
+}
+
+void ScOpenCLTest::testDatabaseFormulaDstdevp()
+{
+ if(!initTestEnv(u"opencl/database/dstdevp.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(9,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(10,i,0));
+ //CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.00000000001));
+ }
+}
+
+void ScOpenCLTest::testDatabaseFormulaDsum()
+{
+ if(!initTestEnv(u"opencl/database/dsum.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(9,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(10,i,0));
+ //CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.00000000001));
+ }
+}
+
+void ScOpenCLTest::testDatabaseFormulaDvar()
+{
+ if(!initTestEnv(u"opencl/database/dvar.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(9,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(10,i,0));
+ //CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.00000000001));
+ }
+}
+
+void ScOpenCLTest::testDatabaseFormulaDvarp()
+{
+ if(!initTestEnv(u"opencl/database/dvarp.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 32; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(9,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(10,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.00000000001));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaRoundUp()
+{
+ if(!initTestEnv(u"opencl/math/roundup.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaRoundDown()
+{
+ if(!initTestEnv(u"opencl/math/rounddown.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaInt()
+{
+ if(!initTestEnv(u"opencl/math/int.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaRadians()
+{
+ if(!initTestEnv(u"opencl/math/radians.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaDegrees()
+{
+ if(!initTestEnv(u"opencl/math/degrees.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 200; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaIsEven()
+{
+ if(!initTestEnv(u"opencl/math/iseven.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaCountIf()
+{
+ if(!initTestEnv(u"opencl/math/countif.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 26; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaIsOdd()
+{
+ if(!initTestEnv(u"opencl/math/isodd.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaFact()
+{
+ if(!initTestEnv(u"opencl/math/fact.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 18; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaSEC()
+{
+ if(!initTestEnv(u"opencl/math/sec.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaSECH()
+{
+ if(!initTestEnv(u"opencl/math/sech.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaMROUND()
+{
+ if(!initTestEnv(u"opencl/math/MROUND.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 13; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaQuotient()
+{
+ if(!initTestEnv(u"opencl/math/Quotient.", FORMAT_ODS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Verify BitAnd Function
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaSeriesSum()
+{
+ if(!initTestEnv(u"opencl/math/seriessum.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 15; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaSumIf()
+{
+ if(!initTestEnv(u"opencl/math/sumif.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 26; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testAddInFormulaBesseLJ()
+{
+ if(!initTestEnv(u"opencl/addin/besselj.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaAvedev()
+{
+ if(!initTestEnv(u"opencl/statistical/Avedev.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(3,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(3,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testNegSub()
+{
+ if(!initTestEnv(u"opencl/math/NegSub.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testMathFormulaAverageIf_Mix()
+{
+ if(!initTestEnv(u"opencl/math/averageif_mix.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ for (SCROW i = 0; i <= 9; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaKurt1()
+{
+ if(!initTestEnv(u"opencl/statistical/Kurt1.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(2,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(2,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaHarMean1()
+{
+ if(!initTestEnv(u"opencl/statistical/HarMean1.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 19; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaVarA1()
+{
+ if(!initTestEnv(u"opencl/statistical/VarA1.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaVarPA1()
+{
+ if(!initTestEnv(u"opencl/statistical/VarPA1.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaStDevA1()
+{
+ if(!initTestEnv(u"opencl/statistical/StDevA1.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+void ScOpenCLTest::testStatisticalFormulaStDevPA1()
+{
+ if(!initTestEnv(u"opencl/statistical/StDevPA1.", FORMAT_XLS, false))
+ return;
+ ScDocument& rDoc = xDocSh->GetDocument();
+ ScDocument& rDocRes = xDocShRes->GetDocument();
+ rDoc.CalcAll();
+
+ // Check the results of formula cells in the shared formula range.
+ for (SCROW i = 1; i <= 20; ++i)
+ {
+ double fLibre = rDoc.GetValue(ScAddress(1,i,0));
+ double fExcel = rDocRes.GetValue(ScAddress(1,i,0));
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
+ }
+}
+
+ScOpenCLTest::ScOpenCLTest()
+ : ScBootstrapFixture( "sc/qa/unit/data" )
+{
+}
+
+void ScOpenCLTest::setUp()
+{
+ test::BootstrapFixture::setUp();
+ // This is a bit of a fudge, we do this to ensure that ScGlobals::ensure,
+ // which is a private symbol to us, gets called
+ m_xCalcComponent =
+ getMultiServiceFactory()->
+ createInstance("com.sun.star.comp.Calc.SpreadsheetDocument");
+ CPPUNIT_ASSERT_MESSAGE("no calc component!", m_xCalcComponent.is());
+}
+
+void ScOpenCLTest::tearDown()
+{
+ //close test env
+ if(xDocSh.is())
+ {
+ xDocSh->DoClose();
+ xDocSh.clear();
+ }
+ if(xDocShRes.is())
+ {
+ xDocShRes->DoClose();
+ xDocShRes.clear();
+ }
+
+ uno::Reference< lang::XComponent >
+ ( m_xCalcComponent, UNO_QUERY_THROW )->dispose();
+ test::BootstrapFixture::tearDown();
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(ScOpenCLTest);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */