tdf#89387 Use Collect method in FTest

Change-Id: Ib397b70f5c33fcf0f8ab26c82bffe7713e1042fd
Reviewed-on: https://gerrit.libreoffice.org/17595
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
This commit is contained in:
Łukasz Hryniuk
2015-08-08 15:59:01 +02:00
committed by Markus Mohrhard
parent 69374b8a48
commit 20f7267887

View File

@@ -27,6 +27,7 @@
#include "formulacell.hxx"
#include "document.hxx"
#include "dociter.hxx"
#include "matrixoperators.hxx"
#include "scmatrix.hxx"
#include "globstr.hrc"
@@ -2761,7 +2762,6 @@ void ScInterpreter::ScFTest()
}
SCSIZE nC1, nC2;
SCSIZE nR1, nR2;
SCSIZE i, j;
pMat1->GetDimensions(nC1, nR1);
pMat2->GetDimensions(nC2, nR2);
double fCount1 = 0.0;
@@ -2770,29 +2770,21 @@ void ScInterpreter::ScFTest()
double fSumSqr1 = 0.0;
double fSum2 = 0.0;
double fSumSqr2 = 0.0;
double fVal;
for (i = 0; i < nC1; i++)
for (j = 0; j < nR1; j++)
{
if (!pMat1->IsString(i,j))
{
fVal = pMat1->GetDouble(i,j);
fSum1 += fVal;
fSumSqr1 += fVal * fVal;
fCount1++;
}
}
for (i = 0; i < nC2; i++)
for (j = 0; j < nR2; j++)
{
if (!pMat2->IsString(i,j))
{
fVal = pMat2->GetDouble(i,j);
fSum2 += fVal;
fSumSqr2 += fVal * fVal;
fCount2++;
}
}
std::vector<std::unique_ptr<sc::op::Op>> aOp;
aOp.emplace_back(new sc::op::Op(0.0, [](double& rAccum, double fVal){rAccum += fVal;}));
aOp.emplace_back(new sc::op::Op(0.0, [](double& rAccum, double fVal){rAccum += fVal * fVal;}));
auto aVal1 = pMat1->Collect(false, aOp);
fSum1 = aVal1[0].mfFirst + aVal1[0].mfRest;
fSumSqr1 = aVal1[1].mfFirst + aVal1[1].mfRest;
fCount1 = aVal1[2].mnCount;
auto aVal2 = pMat2->Collect(false, aOp);
fSum2 = aVal2[0].mfFirst + aVal2[0].mfRest;
fSumSqr2 = aVal2[1].mfFirst + aVal2[1].mfRest;
fCount2 = aVal2[2].mnCount;
if (fCount1 < 2.0 || fCount2 < 2.0)
{
PushNoValue();