1
0
Fork 0
libreoffice/sc/qa/unit/opencl-test-1.cxx
Daniel Baumann 8e63e14cf6
Adding upstream version 4:25.2.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 16:20:04 +02:00

2104 lines
66 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
#include <sal/config.h>
#include "helper/qahelper.hxx"
#include <docsh.hxx>
#include <document.hxx>
using namespace ::com::sun::star;
class ScOpenCLTest1
: public ScModelTestBase
{
public:
ScOpenCLTest1();
};
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testCompilerHorizontal)
{
initTestEnv(u"ods/opencl/compiler/horizontal.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i < 5; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(12, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(12, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
fLibre = pDoc->GetValue(ScAddress(13, i, 0));
fExcel = pDocRes->GetValue(ScAddress(13, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
fLibre = pDoc->GetValue(ScAddress(14, i, 0));
fExcel = pDocRes->GetValue(ScAddress(14, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testCompilerNested)
{
initTestEnv(u"ods/opencl/compiler/nested.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i < 5; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testCompilerString)
{
initTestEnv(u"ods/opencl/compiler/string.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i < 5; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
fLibre = pDoc->GetValue(ScAddress(3, i, 0));
fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testCompilerInEq)
{
initTestEnv(u"ods/opencl/compiler/ineq.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i < 7; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testCompilerPrecision)
{
initTestEnv(u"ods/opencl/compiler/precision.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
// Check that values with and without opencl are the same/similar enough.
enableOpenCL();
pDoc->CalcAll();
disableOpenCL();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i < 3; ++i)
{
double fOpenCL = pDoc->GetValue(ScAddress(0, i, 0));
double fNormal = pDocRes->GetValue(ScAddress(0, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fNormal, fOpenCL, fabs(1e-14*fOpenCL));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testSystematic)
{
initTestEnv(u"xls/systematic.xls");
ScDocument* pDoc = getScDoc();
pDoc->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 (pDoc->GetString(ScAddress(0, nRow, 0)) == "a")
{
nAVertBegin = nRow + 1;
for (nCol = 0; nCol < 1000; ++nCol)
{
if (pDoc->GetString(ScAddress(nCol, nRow, 0)) != "a")
{
nAHorEnd = nCol;
break;
}
}
break;
}
}
for (; nRow < 1000; ++nRow)
{
if (pDoc->GetString(ScAddress(0, nRow, 0)) != "a")
{
nAVertEnd = nRow;
break;
}
}
for (; nRow < 1000; ++nRow)
{
if (pDoc->GetString(ScAddress(0, nRow, 0)) == "b")
{
nBVertBegin = nRow + 1;
for (nCol = 0; nCol < 1000; ++nCol)
{
if (pDoc->GetString(ScAddress(nCol, nRow, 0)) != "b")
{
nBHorEnd = nCol;
break;
}
}
break;
}
}
for (; nRow < 1000; ++nRow)
{
if (pDoc->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 = pDoc->GetValue(ScAddress(j, i, 0));
double fExcel = pDoc->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);
}
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testSharedFormulaXLS)
{
initTestEnv(u"xls/sum_ex.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 0; i < 5; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
}
for (SCROW i = 6; i < 14; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
}
for (SCROW i = 15; i < 18; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
}
for (SCROW i = 19; i < 22; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
}
for (SCROW i = 23; i < 25; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
//double fExcel = pDocRes->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 = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
}
for (SCROW i = 28; i < 35; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
}
// workaround for a Calc beta bug
ASSERT_DOUBLES_EQUAL(25.0, pDoc->GetValue(ScAddress(2, 35, 0)));
ASSERT_DOUBLES_EQUAL(24.0, pDoc->GetValue(ScAddress(2, 36, 0)));
for (SCROW i = 38; i < 43; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
ASSERT_DOUBLES_EQUAL(fExcel, fLibre);
}
for (SCROW i = 5; i < 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 1));
double fExcel = pDocRes->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 = pDoc->GetValue(ScAddress(j, i, 1));
double fExcel = pDocRes->GetValue(ScAddress(j, i, 1));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre,
fabs(fExcel*0.0001));
}
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaCos)
{
initTestEnv(u"xls/opencl/math/cos.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 15; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaSinh)
{
initTestEnv(u"xls/opencl/math/sinh.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
ScDocShell* pDocSh = getScDocShell();
pDocSh->DoHardRecalc();
for (SCROW i = 0; i <= 15; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialFormula)
{
initTestEnv(u"xls/opencl/financial/general.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2,i,0));
double fExcel = pDocRes->GetValue(ScAddress(2,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6,i,1));
double fExcel = pDocRes->GetValue(ScAddress(6,i,1));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2,i,2));
double fExcel = pDocRes->GetValue(ScAddress(2,i,2));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6,i,3));
double fExcel = pDocRes->GetValue(ScAddress(6,i,3));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,4));
double fExcel = pDocRes->GetValue(ScAddress(3,i,4));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,5));
double fExcel = pDocRes->GetValue(ScAddress(3,i,5));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 0; i < 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5,i,6));
double fExcel = pDocRes->GetValue(ScAddress(5,i,6));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,7));
double fExcel = pDocRes->GetValue(ScAddress(3,i,7));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,8));
double fExcel = pDocRes->GetValue(ScAddress(3,i,8));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,9));
double fExcel = pDocRes->GetValue(ScAddress(3,i,9));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2,i,10));
double fExcel = pDocRes->GetValue(ScAddress(2,i,10));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(7,i,11));
double fExcel = pDocRes->GetValue(ScAddress(7,i,11));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5,i,12));
double fExcel = pDocRes->GetValue(ScAddress(5,i,12));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 0; i <= 12; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6,i,13));
double fExcel = pDocRes->GetValue(ScAddress(6,i,13));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,14));
double fExcel = pDocRes->GetValue(ScAddress(3,i,14));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6,i,15));
double fExcel = pDocRes->GetValue(ScAddress(6,i,15));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6,i,16));
double fExcel = pDocRes->GetValue(ScAddress(6,i,16));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 1; i <= 5; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6,i,17));
double fExcel = pDocRes->GetValue(ScAddress(6,i,17));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 0; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,18));
double fExcel = pDocRes->GetValue(ScAddress(3,i,18));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 0; i <= 18; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,19));
double fExcel = pDocRes->GetValue(ScAddress(3,i,19));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaCorrel)
{
initTestEnv(u"ods/opencl/statistical/Correl.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 20; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaFisher)
{
initTestEnv(u"xls/opencl/statistical/Fisher.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaFisherInv)
{
initTestEnv(u"xls/opencl/statistical/FisherInv.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaGamma)
{
initTestEnv(u"xls/opencl/statistical/Gamma.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialFvscheduleFormula)
{
initTestEnv(u"xls/opencl/financial/Fvschedule.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaAbs)
{
initTestEnv(u"ods/opencl/math/Abs.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Verify ABS Function
for (SCROW i = 1; i <= 1000; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialSYDFormula)
{
initTestEnv(u"xls/opencl/financial/SYD.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4, i, 0));
double fExcel = pDocRes->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
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialIRRFormula)
{
initTestEnv(u"xls/opencl/financial/IRR.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
#endif
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaGammaLn)
{
initTestEnv(u"xls/opencl/statistical/GammaLn.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaGauss)
{
initTestEnv(u"xls/opencl/statistical/Gauss.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaGeoMean)
{
initTestEnv(u"xls/opencl/statistical/GeoMean.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaHarMean)
{
initTestEnv(u"xls/opencl/statistical/HarMean.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialSLNFormula)
{
initTestEnv(u"xls/opencl/financial/SLN.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialMIRRFormula)
{
initTestEnv(u"xls/opencl/financial/MIRR.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialCoupdaybsFormula)
{
initTestEnv(u"xls/opencl/financial/Coupdaybs.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 1; i <=10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(4, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialDollardeFormula)
{
initTestEnv(u"xls/opencl/financial/Dollarde.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialCoupdaysFormula)
{
initTestEnv(u"xls/opencl/financial/Coupdays.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 1; i <=10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(4, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialCoupdaysncFormula)
{
initTestEnv(u"xls/opencl/financial/Coupdaysnc.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 1; i <=10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(4, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialRateFormula)
{
initTestEnv(u"xls/opencl/financial/RATE.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 1; i <= 5; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(6, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialAccrintmFormula)
{
initTestEnv(u"xls/opencl/financial/Accrintm.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialCoupnumFormula)
{
initTestEnv(u"xls/opencl/financial/Coupnum.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(4, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaNegbinomdist)
{
initTestEnv(u"xls/opencl/statistical/Negbinomdist.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,0));
double fExcel = pDocRes->GetValue(ScAddress(3,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaSin)
{
initTestEnv(u"xls/opencl/math/sin.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 15; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaTan)
{
initTestEnv(u"xls/opencl/math/tan.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 15; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaTanH)
{
initTestEnv(u"xls/opencl/math/tanh.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 15; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaSqrt)
{
initTestEnv(u"xls/opencl/math/sqrt.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 15; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialPriceFormula)
{
initTestEnv(u"xls/opencl/financial/Price.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(7, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(7, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialDollarfrFormula)
{
initTestEnv(u"xls/opencl/financial/Dollarfr.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialPriceDiscFormula)
{
initTestEnv(u"xls/opencl/financial/PriceDisc.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialODDLPRICEFormula)
{
initTestEnv(u"xls/opencl/financial/Oddlprice.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(8, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(8, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialOddlyieldFormula)
{
initTestEnv(u"xls/opencl/financial/Oddlyield.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(8, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(8, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialDISCFormula)
{
initTestEnv(u"xls/opencl/financial/DISC.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialPVFormula)
{
initTestEnv(u"xls/opencl/financial/PV.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialINTRATEFormula)
{
initTestEnv(u"xls/opencl/financial/INTRATE.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaStandard)
{
initTestEnv(u"xls/opencl/statistical/Standard.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 20; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,0));
double fExcel = pDocRes->GetValue(ScAddress(3,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaWeibull)
{
initTestEnv(u"xls/opencl/statistical/Weibull.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 20; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4,i,0));
double fExcel = pDocRes->GetValue(ScAddress(4,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre,
fExcel == 0?1e-4:fabs(1e-4*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaPearson)
{
initTestEnv(u"xls/opencl/statistical/Pearson.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2,i,0));
double fExcel = pDocRes->GetValue(ScAddress(2,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaRsq)
{
initTestEnv(u"xls/opencl/statistical/Rsq.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2,i,0));
double fExcel = pDocRes->GetValue(ScAddress(2,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaCosh)
{
initTestEnv(u"xls/opencl/math/cosh.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 15; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaKurt)
{
initTestEnv(u"xls/opencl/statistical/Kurt.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaCot)
{
initTestEnv(u"ods/opencl/math/cot.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 15; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaCsc)
{
initTestEnv(u"ods/opencl/math/csc.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 15; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaCoth)
{
initTestEnv(u"ods/opencl/math/coth.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 15; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialXNPVFormula)
{
initTestEnv(u"xls/opencl/financial/XNPV.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 1; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 16; i <= 26; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaIntercept)
{
initTestEnv(u"xls/opencl/statistical/Intercept.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2,i,0));
double fExcel = pDocRes->GetValue(ScAddress(2,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialAmordegrcFormula)
{
initTestEnv(u"xls/opencl/financial/Amordegrc.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(7, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(7, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialISPMTFormula)
{
initTestEnv(u"xls/opencl/financial/ISPMT.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(4, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaMedian)
{
initTestEnv(u"xls/opencl/statistical/Median.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaNormdist)
{
initTestEnv(u"xls/opencl/statistical/Normdist.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4,i,0));
double fExcel = pDocRes->GetValue(ScAddress(4,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaNormsdist)
{
initTestEnv(u"xls/opencl/statistical/Normsdist.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaPermut)
{
initTestEnv(u"xls/opencl/statistical/Permut.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2,i,0));
double fExcel = pDocRes->GetValue(ScAddress(2,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaPermutation)
{
initTestEnv(u"xls/opencl/statistical/Permutation.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2,i,0));
double fExcel = pDocRes->GetValue(ScAddress(2,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaPhi)
{
initTestEnv(u"xls/opencl/statistical/Phi.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaLogInv)
{
initTestEnv(u"xls/opencl/statistical/LogInv.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,0));
double fExcel = pDocRes->GetValue(ScAddress(3,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialNPERFormula)
{
initTestEnv(u"xls/opencl/financial/NPER.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaForecast)
{
initTestEnv(u"xls/opencl/statistical/Forecast.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,0));
double fExcel = pDocRes->GetValue(ScAddress(3,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialAmorlincFormula)
{
initTestEnv(u"xls/opencl/financial/Amorlinc.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(7, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(7, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialDDBFormula)
{
initTestEnv(u"xls/opencl/financial/ddb.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialPriceMatFormula)
{
initTestEnv(u"xls/opencl/financial/PriceMat.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(6, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialFormulaReceived)
{
initTestEnv(u"xls/opencl/financial/Received.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 0; i < 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5,i,0));
double fExcel = pDocRes->GetValue(ScAddress(5,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialFormulaCumipmt)
{
initTestEnv(u"xls/opencl/financial/Cumipmt.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6,i,0));
double fExcel = pDocRes->GetValue(ScAddress(6,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialFormulaCumprinc)
{
initTestEnv(u"xls/opencl/financial/Cumprinc.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6,i,0));
double fExcel = pDocRes->GetValue(ScAddress(6,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialRRIFormula)
{
initTestEnv(u"xls/opencl/financial/RRI.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialEFFECT_ADDFormula)
{
initTestEnv(u"xls/opencl/financial/EFFECT_ADD.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(2, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialNominalFormula)
{
initTestEnv(u"xls/opencl/financial/Nominal.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,0));
double fExcel = pDocRes->GetValue(ScAddress(3,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialTBILLEQFormula)
{
initTestEnv(u"xls/opencl/financial/TBILLEQ.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialTBILLPRICEFormula)
{
initTestEnv(u"xls/opencl/financial/TBILLPRICE.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialTBILLYIELDFormula)
{
initTestEnv(u"xls/opencl/financial/TBILLYIELD.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialYIELDFormula)
{
initTestEnv(u"xls/opencl/financial/YIELD.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(7, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(7, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialYIELDDISCFormula)
{
initTestEnv(u"xls/opencl/financial/YIELDDISC.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialYIELDMATFormula)
{
initTestEnv(u"xls/opencl/financial/YIELDMAT.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(6, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialPMTFormula)
{
initTestEnv(u"xls/opencl/financial/PMT.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialDurationFormula)
{
initTestEnv(u"ods/opencl/financial/Duration.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(3, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaLogNormDist)
{
initTestEnv(u"ods/opencl/statistical/LogNormDist.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4,i,0));
double fExcel = pDocRes->GetValue(ScAddress(4,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaArcCos)
{
initTestEnv(u"ods/opencl/math/ArcCos.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Verify ACos Function
for (SCROW i = 1; i <= 1000; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialPPMTFormula)
{
initTestEnv(u"xls/opencl/financial/PPMT.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(6, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialNPVFormula)
{
initTestEnv(u"xls/opencl/financial/NPV.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(6, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialDuration_ADDFormula)
{
initTestEnv(u"xls/opencl/financial/Duration_ADD.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(6, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaNorminv)
{
initTestEnv(u"xls/opencl/statistical/Norminv.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,0));
double fExcel = pDocRes->GetValue(ScAddress(3,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaNormsinv)
{
initTestEnv(u"xls/opencl/statistical/Normsinv.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaArcCosHyp)
{
initTestEnv(u"ods/opencl/math/ArcCosHyp.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Verify ACosH Function
for (SCROW i = 1; i <= 1000; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialMDurationFormula)
{
initTestEnv(u"xls/opencl/financial/MDuration.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(6, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaArcCot)
{
initTestEnv(u"ods/opencl/math/ArcCot.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Verify ACot Function
for (SCROW i = 1; i <= 1000; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialFVFormula)
{
initTestEnv(u"xls/opencl/financial/FV.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialDBFormula)
{
initTestEnv(u"xls/opencl/financial/db.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialCouppcdFormula)
{
initTestEnv(u"xls/opencl/financial/Couppcd.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(4, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathSumIfsFormula)
{
initTestEnv(u"xls/opencl/math/sumifs.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
ScDocShell* pDocSh = getScDocShell();
pDocSh->DoHardRecalc();
for (SCROW i = 2; i <= 11; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5,i,0));
double fExcel = pDocRes->GetValue(ScAddress(5,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 2; i <= 11; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6,i,0));
double fExcel = pDocRes->GetValue(ScAddress(6,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 2; i <= 11; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(7,i,0));
double fExcel = pDocRes->GetValue(ScAddress(7,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 2; i <= 11; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(8,i,0));
double fExcel = pDocRes->GetValue(ScAddress(8,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaArcCotHyp)
{
initTestEnv(u"ods/opencl/math/ArcCotHyp.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Verify ACotH Function
for (SCROW i = 1; i <= 1000; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaArcSin)
{
initTestEnv(u"ods/opencl/math/ArcSin.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Verify ACotH Function
for (SCROW i = 1; i <= 1000; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialVDBFormula)
{
initTestEnv(u"xls/opencl/financial/VDB.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 10; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(7, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(7, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 15; i <= 26; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(6, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 30; i <= 41; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialIPMTFormula)
{
initTestEnv(u"xls/opencl/financial/IPMT.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(6, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(6, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaConfidence)
{
initTestEnv(u"xls/opencl/statistical/Confidence.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,0));
double fExcel = pDocRes->GetValue(ScAddress(3,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialCoupncdFormula)
{
initTestEnv(u"xls/opencl/financial/Coupncd.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(4, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinancialAccrintFormula)
{
initTestEnv(u"xls/opencl/financial/Accrint.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(7, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(7, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaCritBinom)
{
initTestEnv(u"xls/opencl/statistical/CritBinom.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 0; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(3,i,0));
double fExcel = pDocRes->GetValue(ScAddress(3,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaArcSinHyp)
{
initTestEnv(u"ods/opencl/math/ArcSinHyp.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Verify ASinH Function
for (SCROW i = 1; i <= 1000; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaArcTan)
{
initTestEnv(u"ods/opencl/math/ArcTan.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Verify ATan Function
for (SCROW i = 1; i <= 1000; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaArcTanHyp)
{
initTestEnv(u"ods/opencl/math/ArcTanHyp.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Verify ATanH Function
for (SCROW i = 1; i <= 1000; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testFinacialNPER1Formula)
{
initTestEnv(u"xls/opencl/financial/NPER1.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
for (SCROW i = 0; i <= 6; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(5, i, 0));
double fExcel = pDocRes->GetValue(ScAddress(5, i, 0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaBitAnd)
{
initTestEnv(u"ods/opencl/math/BitAnd.ods");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Verify BitAnd Function
for (SCROW i = 1; i <= 1000; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(2,i,0));
double fExcel = pDocRes->GetValue(ScAddress(2,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaLN)
{
initTestEnv(u"xls/opencl/math/LN.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testMathFormulaRound)
{
initTestEnv(u"xls/opencl/math/ROUND.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 9; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
for (SCROW i = 15; i <= 25; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(1,i,0));
double fExcel = pDocRes->GetValue(ScAddress(1,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
CPPUNIT_TEST_FIXTURE(ScOpenCLTest1, testStatisticalFormulaGammaDist)
{
initTestEnv(u"xls/opencl/statistical/GammaDist.xls");
ScDocument* pDoc = getScDoc();
ScDocument* pDocRes = getScDoc2();
pDoc->CalcAll();
// Check the results of formula cells in the shared formula range.
for (SCROW i = 1; i <= 19; ++i)
{
double fLibre = pDoc->GetValue(ScAddress(4,i,0));
double fExcel = pDocRes->GetValue(ScAddress(4,i,0));
CPPUNIT_ASSERT_DOUBLES_EQUAL(fExcel, fLibre, fabs(0.0001*fExcel));
}
}
ScOpenCLTest1::ScOpenCLTest1()
: ScModelTestBase( u"sc/qa/unit/data"_ustr )
{
}
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */