summaryrefslogtreecommitdiff
path: root/sc/source/ui
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2014-11-19 16:27:33 +0200
committerTor Lillqvist <tml@collabora.com>2014-11-19 18:55:37 +0200
commitf8e17ff09f03240a71b1292b9bd8af9a17c10ca7 (patch)
treefbfe3420934dd9585101e8e569ea90cd3868d6eb /sc/source/ui
parent122d97673d762cc5fc043bdadfdf4cb80ac871cf (diff)
Test also MIN, MAX and PRODUCT
Change-Id: Ibbc4c65271142b63c85d08ab4c9162ba96d32b6a
Diffstat (limited to 'sc/source/ui')
-rw-r--r--sc/source/ui/optdlg/calcoptionsdlg.cxx29
1 files changed, 23 insertions, 6 deletions
diff --git a/sc/source/ui/optdlg/calcoptionsdlg.cxx b/sc/source/ui/optdlg/calcoptionsdlg.cxx
index 92af35a784b0..a92b75df223a 100644
--- a/sc/source/ui/optdlg/calcoptionsdlg.cxx
+++ b/sc/source/ui/optdlg/calcoptionsdlg.cxx
@@ -9,6 +9,7 @@
#include <sal/config.h>
+#include <algorithm>
#include <cmath>
#include "calcconfig.hxx"
@@ -999,27 +1000,43 @@ IMPL_LINK( ScCalcOptionsDialog, TestClickHdl, PushButton*, )
pDoc->SetValue(ScAddress(0,i,1), (i%13)/13.);
#endif
pDoc->SetValue(ScAddress(1,i,1), comphelper::rng::uniform_real_distribution(0, 1000));
+ // The [0.1,2.5) interval is carefully chosen to keep the product of them likely "sane"
+ pDoc->SetValue(ScAddress(6,i,1), comphelper::rng::uniform_real_distribution(0.1, 2.5));
pDoc->SetString(ScAddress(10,i,1), OUString("=IF(AND(A") + OUString::number(i+1) + ">= 0,A" + OUString::number(i+1) + "<= 1),0,1)");
}
pDoc->SetString(ScAddress(0,1,0), OUString("=SUM(RAND.K1:RAND.K") + sN + ")");
- for (int i = 0; i < N/10; ++i)
+ for (int i = 0; i < N/3; ++i)
{
pDoc->SetString(ScAddress(2,i,1), OUString("=SUM(B") + OUString::number(i+1) + ":B" + OUString::number(i+N/2) + ")");
pDoc->SetString(ScAddress(3,i,1), OUString("=AVERAGE(B") + OUString::number(i+1) + ":B" + OUString::number(i+N/2) + ")");
+ pDoc->SetString(ScAddress(4,i,1), OUString("=MIN(B") + OUString::number(i+1) + ":B" + OUString::number(i+N/2) + ")");
+ pDoc->SetString(ScAddress(5,i,1), OUString("=MAX(B") + OUString::number(i+1) + ":B" + OUString::number(i+N/2) + ")");
+ pDoc->SetString(ScAddress(7,i,1), OUString("=PRODUCT(G") + OUString::number(i+1) + ":G" + OUString::number(i+N/2) + ")");
- double sum(0);
+ double nSum(0), nMin(DBL_MAX), nMax(-DBL_MAX), nProduct(1);
for (int j = 0; j < N/2; ++j)
- sum += pDoc->GetValue(ScAddress(1,i+j,1));
+ {
+ nSum += pDoc->GetValue(ScAddress(1,i+j,1));
+ nMin = std::min(nMin, pDoc->GetValue(ScAddress(1,i+j,1)));
+ nMax = std::max(nMax, pDoc->GetValue(ScAddress(1,i+j,1)));
+ nProduct *= pDoc->GetValue(ScAddress(6,i+j,1));
+ }
pDoc->SetString(ScAddress(12,i,1),
- OUString("=IF(C") + OUString::number(i+1) + "-" + OUString::number(sum) + "<" + sEpsilon + ",0,1");
+ OUString("=IF(C") + OUString::number(i+1) + "-" + OUString::number(nSum) + "<" + sEpsilon + ",0,1");
pDoc->SetString(ScAddress(13,i,1),
- OUString("=IF(D") + OUString::number(i+1) + "-" + OUString::number(sum/(N/2)) + "<" + sEpsilon + ",0,1");
+ OUString("=IF(D") + OUString::number(i+1) + "-" + OUString::number(nSum/(N/2)) + "<" + sEpsilon + ",0,1");
+ pDoc->SetString(ScAddress(14,i,1),
+ OUString("=IF(E") + OUString::number(i+1) + "-" + OUString::number(nMin) + "<" + sEpsilon + ",0,1");
+ pDoc->SetString(ScAddress(15,i,1),
+ OUString("=IF(F") + OUString::number(i+1) + "-" + OUString::number(nMax) + "<" + sEpsilon + ",0,1");
+ pDoc->SetString(ScAddress(16,i,1),
+ OUString("=IF((H") + OUString::number(i+1) + "-" + OUString::number(nProduct) + ")/H" + OUString::number(i+1) + "<" + sEpsilon + ",0,1");
}
- pDoc->SetString(ScAddress(0,2,0), OUString("=SUM(RAND.M1:RAND.N") + OUString::number(N/10) + ")");
+ pDoc->SetString(ScAddress(0,2,0), OUString("=SUM(RAND.M1:RAND.Q") + OUString::number(N/3) + ")");
// MISCMATH sheet
pDoc->InsertTab(2, "MISCMATH");