diff options
author | Tor Lillqvist <tml@collabora.com> | 2015-10-14 21:47:20 +0300 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2015-10-15 13:45:44 +0300 |
commit | d67262fb540114b2c29d19cfd4075cc7faa20d74 (patch) | |
tree | b7122fd2fb34c32e4b08a30746c3b6565884e912 /sc | |
parent | bdef079b39d273d2985d360a52597672c96b43fc (diff) |
tdf#94924: Fix handling of empty cells in OpenCL division
Not sure why the code from f5e7207053b857b6903a0ab9c161bed9ad7bcee9
did not produce correct results any longer. Anyway, now OpenCL
division works right in case of empty or zero cells.
Clearly I need to add unit tests to make sure this stuff keeps
working. In later commits.
Change-Id: I93b787ad5da453af1601768308fb614a332ed142
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/opencl/formulagroupcl.cxx | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx index 4c56d03fdf18..7690035c1956 100644 --- a/sc/source/core/opencl/formulagroupcl.cxx +++ b/sc/source/core/opencl/formulagroupcl.cxx @@ -2177,20 +2177,16 @@ public: { ss << "if (isnan(" << vSubArguments[argno]->GenSlidingWindowDeclRef() << ")) {\n" - " if (GetDoubleErrorValue(" << vSubArguments[argno]->GenSlidingWindowDeclRef() << ") == errNoValue)\n" - " return CreateDoubleError(errDivisionByZero);\n" + " return CreateDoubleError(errDivisionByZero);\n" "}\n"; return true; } else if (argno == 0) { ss << - "if (isnan(" << vSubArguments[argno]->GenSlidingWindowDeclRef() << ")) {\n" - " if (GetDoubleErrorValue(" << vSubArguments[argno]->GenSlidingWindowDeclRef() << ") == errNoValue) {\n" - " if (" << vSubArguments[1]->GenSlidingWindowDeclRef() << " == 0)\n" - " return CreateDoubleError(errDivisionByZero);\n" - " return 0;\n" - " }\n" + "if (isnan(" << vSubArguments[argno]->GenSlidingWindowDeclRef() << ") &&\n" + " !(isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef() << ") || " << vSubArguments[1]->GenSlidingWindowDeclRef() << " == 0)) {\n" + " return 0;\n" "}\n"; } return false; |