summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2015-10-15 11:45:49 +0300
committerTor Lillqvist <tml@collabora.com>2015-10-15 13:45:44 +0300
commit5e0e953f8f8fc5b27db8421ba15e33cfa664fb7a (patch)
tree1eef70a20aede23887ee5bcfc87c98f51733e7bd
parentd67262fb540114b2c29d19cfd4075cc7faa20d74 (diff)
tdf#94924: Return correct #DIV/0! error from AVERAGE in the OpenCL case
Change-Id: If7326fd1242d90ff92e62d141714960476198605
-rw-r--r--sc/source/core/opencl/formulagroupcl.cxx6
1 files changed, 5 insertions, 1 deletions
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx
index 7690035c1956..82ef58d81e1c 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -1779,6 +1779,10 @@ public:
ss << ";\n";
}
}
+ if (isAverage())
+ ss <<
+ "if (nCount==0)\n"
+ " return CreateDoubleError(errDivisionByZero);\n";
ss << "return tmp";
if (isAverage())
ss << "*pow((double)nCount,-1.0)";
@@ -2127,7 +2131,7 @@ public:
ss << "fsum_count(" << lhs << "," << rhs << ", &nCount)";
return ss.str();
}
- virtual std::string BinFuncName() const override { return "fsum"; }
+ virtual std::string BinFuncName() const override { return "average"; }
virtual bool isAverage() const override { return true; }
};