diff options
author | Eike Rathke <erack@redhat.com> | 2015-09-25 13:42:04 +0200 |
---|---|---|
committer | Łukasz Hryniuk <lukasz.hryniuk@wp.pl> | 2015-09-25 13:18:43 +0000 |
commit | 38db1a25a9c68ce9fe6d5a8f9af74c487daa9f2a (patch) | |
tree | 03f93f8afd921fe14db1449f9faf9e184d4a8cab /sc | |
parent | bda6cdbb1735674f7372520ddd710709a995c054 (diff) |
fix IterateMatrix for ifPRODUCT and ifSUMSQ
... if more than one argument is passed to PRODUCT() or SUMSQ() and
matrix/array arguments are involved the functions returned wrong
results.
For example, wrong behavior
=PRODUCT({2,3},{4,5}) gave 6
=SUMSQ({2,3},{4,5}) gave 34
Correct is
=PRODUCT({2,3},{4,5}) result 120
=SUMSQ({2,3},{4,5}) result 54
Change-Id: Iec7b136a5cc678416f28b1abfe19cd0901ef22b6
(cherry picked from commit c1780ad265ce5f6abb3b91a4f70bf2b3d7a47149)
Reviewed-on: https://gerrit.libreoffice.org/18867
Reviewed-by: Łukasz Hryniuk <lukasz.hryniuk@wp.pl>
Tested-by: Łukasz Hryniuk <lukasz.hryniuk@wp.pl>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/tool/interpr6.cxx | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sc/source/core/tool/interpr6.cxx b/sc/source/core/tool/interpr6.cxx index 7eac4eb90f73..f9d511c2556b 100644 --- a/sc/source/core/tool/interpr6.cxx +++ b/sc/source/core/tool/interpr6.cxx @@ -387,7 +387,7 @@ void IterateMatrix( case ifPRODUCT: { ScMatrix::IterateResult aRes = pMat->Product(bTextAsZero); - fRes = aRes.mfFirst; + fRes *= aRes.mfFirst; fRes *= aRes.mfRest; rCount += aRes.mnCount; } @@ -395,6 +395,7 @@ void IterateMatrix( case ifSUMSQ: { ScMatrix::IterateResult aRes = pMat->SumSquare(bTextAsZero); + fRes += aRes.mfFirst; fRes += aRes.mfRest; rCount += aRes.mnCount; } |