22 const std::string &sSymName,
SubArguments &vSubArguments)
override;
32 const std::string &sSymName,
SubArguments &vSubArguments)
override;
41 virtual std::string
BinFuncName()
const override {
return "Cos"; }
48 virtual std::string
BinFuncName()
const override {
return "Sec"; }
55 virtual std::string
BinFuncName()
const override {
return "SecH"; }
62 virtual std::string
BinFuncName()
const override {
return "MROUND"; }
69 virtual std::string
BinFuncName()
const override {
return "Csc"; }
78 const std::string &sSymName,
SubArguments &vSubArguments)
override;
79 virtual std::string
BinFuncName()
const override {
return "SumIfs"; }
88 virtual std::string
BinFuncName()
const override {
return "Cosh"; }
89 virtual void BinInlineFun(std::set<std::string>& ,std::set<std::string>& )
override;
96 virtual std::string
BinFuncName()
const override {
return "Sinh"; }
103 virtual std::string
BinFuncName()
const override {
return "Sin"; }
110 virtual std::string
BinFuncName()
const override {
return "ScAbs"; }
117 virtual std::string
BinFuncName()
const override {
return "ScACos"; }
118 virtual void BinInlineFun(std::set<std::string>& ,std::set<std::string>&)
override;
125 virtual std::string
GetBottom()
override {
return "1.0"; }
126 virtual std::string
BinFuncName()
const override {
return "ScACosH"; }
133 virtual std::string
BinFuncName()
const override {
return "Tan"; }
140 virtual std::string
BinFuncName()
const override {
return "TanH"; }
147 virtual std::string
BinFuncName()
const override {
return "Sqrt"; }
154 virtual std::string
BinFuncName()
const override {
return "ScACot"; }
161 virtual std::string
BinFuncName()
const override {
return "ScACotH"; }
168 virtual std::string
BinFuncName()
const override {
return "ScASin"; }
169 virtual void BinInlineFun(std::set<std::string>& ,std::set<std::string>&)
override;
176 virtual std::string
BinFuncName()
const override {
return "ScASinH"; }
183 virtual std::string
BinFuncName()
const override {
return "ScATan2"; }
184 virtual void BinInlineFun(std::set<std::string>& ,std::set<std::string>&)
override;
191 virtual std::string
BinFuncName()
const override {
return "ScATan"; }
198 virtual std::string
BinFuncName()
const override {
return "ScATanH"; }
205 virtual std::string
BinFuncName()
const override {
return "ScBitAnd"; }
212 virtual std::string
BinFuncName()
const override {
return "ScBitOr"; }
219 virtual std::string
BinFuncName()
const override {
return "ScBitXor"; }
226 virtual std::string
BinFuncName()
const override {
return "ScBitLshift"; }
233 virtual std::string
BinFuncName()
const override {
return "ScBitRshift"; }
248 const std::string &sSymName,
SubArguments &vSubArguments)
override;
249 virtual std::string
BinFuncName()
const override {
return "Round"; }
250 virtual void BinInlineFun(std::set<std::string>& , std::set<std::string>& )
override;
256 const std::string &sSymName,
SubArguments &vSubArguments)
override;
257 virtual std::string
BinFuncName()
const override {
return "RoundUp"; }
263 const std::string &sSymName,
SubArguments &vSubArguments)
override;
264 virtual std::string
BinFuncName()
const override {
return "RoundDown"; }
269 virtual std::string
BinFuncName()
const override {
return "Trunc"; }
274 virtual std::string
BinFuncName()
const override {
return "Int"; }
276 virtual void BinInlineFun(std::set<std::string>& , std::set<std::string>& )
override;
282 virtual std::string
BinFuncName()
const override {
return "Radians"; }
289 virtual std::string
BinFuncName()
const override {
return "IsEven"; }
296 virtual std::string
BinFuncName()
const override {
return "IsOdd"; }
303 virtual std::string
BinFuncName()
const override {
return "Cot"; }
311 const std::string &sSymName,
SubArguments &vSubArguments)
override;
313 virtual std::string
BinFuncName()
const override {
return "SumSQ"; }
321 std::set<std::string>& )
override;
322 virtual std::string
BinFuncName()
const override {
return "Coth"; }
329 virtual std::string
BinFuncName()
const override {
return "Power"; }
336 virtual void BinInlineFun(std::set<std::string>& ,std::set<std::string>&)
override;
337 virtual std::string
BinFuncName()
const override {
return "Odd"; }
345 const std::string &sSymName,
SubArguments &vSubArguments)
override;
346 virtual std::string
BinFuncName()
const override {
return "Floor"; }
352 virtual std::string
BinFuncName()
const override {
return "CscH"; }
359 const std::string &sSymName,
SubArguments &vSubArguments)
override;
360 virtual std::string
GetBottom()
override {
return "0.0"; }
361 virtual std::string
BinFuncName()
const override {
return "ScCeil"; }
367 virtual std::string
BinFuncName()
const override {
return "Exp"; }
374 virtual std::string
BinFuncName()
const override {
return "Log10"; }
381 virtual std::string
BinFuncName()
const override {
return "Even"; }
389 const std::string &sSymName,
SubArguments &vSubArguments)
override;
390 virtual std::string
BinFuncName()
const override {
return "AverageIfs"; }
396 const std::string &sSymName,
SubArguments &vSubArguments)
override;
397 virtual std::string
BinFuncName()
const override {
return "CountIfs"; }
402 virtual std::string
BinFuncName()
const override {
return "Mod"; }
404 virtual void BinInlineFun(std::set<std::string>& ,std::set<std::string>& )
override;
411 const std::string &sSymName,
SubArguments &vSubArguments)
override;
412 virtual std::string
BinFuncName()
const override {
return "Product"; }
419 virtual std::string
BinFuncName()
const override {
return "SqrtPi"; }
426 virtual std::string
BinFuncName()
const override {
return "Combina"; }
427 virtual void BinInlineFun(std::set<std::string>& ,std::set<std::string>& )
override;
435 const std::string &sSymName,
SubArguments &vSubArguments)
override;
437 virtual std::string
BinFuncName()
const override {
return "Log"; }
443 virtual std::string
BinFuncName()
const override {
return "ScCombin"; }
451 const std::string &sSymName,
SubArguments &vSubArguments)
override;
453 virtual std::string
BinFuncName()
const override {
return "AverageIf"; }
458 virtual std::string
BinFuncName()
const override {
return "Degrees"; }
466 const std::string &sSymName,
SubArguments &vSubArguments)
override;
467 virtual std::string
BinFuncName()
const override {
return "Countif"; }
472 virtual std::string
BinFuncName()
const override {
return "Fact"; }
480 const std::string &sSymName,
SubArguments &vSubArguments)
override;
481 virtual std::string
BinFuncName()
const override {
return "SeriesSum"; }
488 const std::string &sSymName,
SubArguments &vSubArguments)
override;
489 virtual std::string
BinFuncName()
const override {
return "SumIf"; }
495 virtual std::string
BinFuncName()
const override {
return "Quotient"; }
502 virtual std::string
BinFuncName()
const override {
return "NegSub"; }
510 const std::string &sSymName,
SubArguments &vSubArguments)
override;
512 virtual void BinInlineFun(std::set<std::string>& , std::set<std::string>& )
override;
520 const std::string &sSymName,
SubArguments &vSubArguments)
override;
521 virtual std::string
BinFuncName()
const override {
return "neq"; }
522 virtual void BinInlineFun(std::set<std::string>& , std::set<std::string>& )
override;
531 virtual void BinInlineFun(std::set<std::string>& , std::set<std::string>& )
override;
546 virtual void BinInlineFun(std::set<std::string>& , std::set<std::string>& )
override;
560 const std::string& sSymName,
SubArguments& vSubArguments )
override;
568 virtual std::string
Gen2(
const std::string& lhs,
const std::string& rhs )
const override
570 return lhs +
"*" + rhs;
572 virtual std::string
BinFuncName()
const override {
return "fsop"; }
581 virtual std::string
GetBottom()
override {
return "0"; }
582 virtual std::string
Gen2(
const std::string& lhs,
const std::string& )
const override
586 virtual std::string
BinFuncName()
const override {
return "nop"; }
594 virtual std::string
GetBottom()
override {
return "0"; }
595 virtual std::string
Gen2(
const std::string& lhs,
const std::string& rhs )
const override
598 ss <<
"fsum_approx((" << lhs <<
"),(" << rhs <<
"))";
601 virtual void BinInlineFun(std::set<std::string>& decls,std::set<std::string>& funs)
override;
602 virtual std::string
BinFuncName()
const override {
return "fsum"; }
612 virtual std::string
GetBottom()
override {
return "0"; }
613 virtual std::string
Gen2(
const std::string& lhs,
const std::string& rhs )
const override
615 return "fsub_approx(" + lhs +
"," + rhs +
")";
617 virtual void BinInlineFun(std::set<std::string>& decls,std::set<std::string>& funs)
override;
618 virtual std::string
BinFuncName()
const override {
return "fsub"; }
626 virtual std::string
GetBottom()
override {
return "1"; }
627 virtual std::string
Gen2(
const std::string& lhs,
const std::string& rhs )
const override
629 return lhs +
"*" + rhs;
631 virtual std::string
BinFuncName()
const override {
return "fmul"; }
641 virtual std::string
GetBottom()
override {
return "1.0"; }
642 virtual std::string
Gen2(
const std::string& lhs,
const std::string& rhs )
const override
644 return "(" + rhs +
"==0 ? CreateDoubleError(DivisionByZero) : (" + lhs +
"/" + rhs +
") )";
646 virtual std::string
BinFuncName()
const override {
return "fdiv"; }
653 "if (isnan(" << vSubArguments[argno]->GenSlidingWindowDeclRef() <<
")) {\n"
654 " return CreateDoubleError(DivisionByZero);\n"
661 "if (isnan(" << vSubArguments[argno]->GenSlidingWindowDeclRef() <<
") &&\n"
662 " !(isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef() <<
") || " << vSubArguments[1]->GenSlidingWindowDeclRef() <<
" == 0)) {\n"
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual std::string GetBottom() override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string BinFuncName() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual std::string BinFuncName() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string GetBottom() override
virtual std::string BinFuncName() const override
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
Technically not a reduction, but fits the framework.
virtual std::string GetBottom() override
virtual bool HandleNaNArgument(outputstream &ss, unsigned argno, SubArguments &vSubArguments) const override
virtual std::string BinFuncName() const override
virtual std::string Gen2(const std::string &lhs, const std::string &rhs) const override
virtual bool takeString() const override
virtual std::string BinFuncName() const override
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual std::string BinFuncName() const override
Implements functions in the form of FUNC(x), e.g.
virtual void GenerateCode(outputstream &ss) const =0
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
Implements functions in the form of FUNC(x1, x2), e.g.
virtual void GenerateCode(outputstream &ss) const =0
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string BinFuncName() const override
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual std::string GetBottom() override
virtual std::string BinFuncName() const override
virtual bool ZeroReturnZero() override
virtual std::string Gen2(const std::string &lhs, const std::string &rhs) const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual std::string Gen2(const std::string &lhs, const std::string &) const override
virtual std::string GetBottom() override
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual bool takeString() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string BinFuncName() const override
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual bool canHandleMultiVector() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string BinFuncName() const override
virtual void BinInlineFun(std::set< std::string > &, std::set< std::string > &) override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string BinFuncName() const override
virtual bool canHandleMultiVector() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual void BinInlineFun(std::set< std::string > &decls, std::set< std::string > &funs) override
virtual std::string GetBottom() override
virtual std::string Gen2(const std::string &lhs, const std::string &rhs) const override
virtual std::string BinFuncName() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
bool NeedReductionKernel() const
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string BinFuncName() const override
bool mNeedReductionKernel
virtual std::string Gen2(const std::string &lhs, const std::string &rhs) const override
virtual std::string BinFuncName() const override
virtual bool canHandleMultiVector() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override
virtual std::string BinFuncName() const override
virtual std::string GetBottom() override
virtual std::string BinFuncName() const override
virtual bool canHandleMultiVector() const override
virtual std::string Gen2(const std::string &lhs, const std::string &rhs) const override
virtual void BinInlineFun(std::set< std::string > &decls, std::set< std::string > &funs) override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
virtual std::string BinFuncName() const override
virtual void GenerateCode(outputstream &ss) const override
This writes out OpenCL code returning the computed value, the argument is "arg0".
virtual std::string BinFuncName() const override
std::vector< DynamicKernelArgumentRef > SubArguments
virtual bool takeString() const override
virtual bool takeNumeric() const override
virtual void GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override