/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#pragma once
#include"opbase.hxx" #include"utils.hxx"
namespace sc::opencl {
/// Implements functions in the form of FUNC(x), e.g. COS(). /// The function should take one simple argument (i.e. no ranges). class OpMathOneArgument : public Normal
{ virtualvoid GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override; /// This writes out OpenCL code returning the computed value, the argument is "arg0". virtualvoid GenerateCode( outputstream& ss ) const = 0;
};
/// Implements functions in the form of FUNC(x1, x2), e.g. ATAN2(). /// The function should take exactly two simple arguments (i.e. no ranges). class OpMathTwoArguments : public Normal
{ virtualvoid GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override; /// This writes out OpenCL code returning the computed value, the arguments are "arg0" and "arg1". virtualvoid GenerateCode( outputstream& ss ) const = 0;
};
class OpCos: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Cos"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpSec: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Sec"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpSecH: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"SecH"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpMROUND: public OpMathTwoArguments
{ public: virtual std::string BinFuncName() const override { return"MROUND"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpCsc: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Csc"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpCosh: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Cosh"; } virtualvoid BinInlineFun(std::set<std::string>& ,std::set<std::string>& ) override; virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpSinh: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Sinh"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpSin: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Sin"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpAbs: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"ScAbs"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpArcCos: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"ScACos"; } virtualvoid BinInlineFun(std::set<std::string>& ,std::set<std::string>&) override; virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpArcCosHyp : public OpMathOneArgument
{ public: virtual std::string GetBottom() override { return"1.0"; } virtual std::string BinFuncName() const override { return"ScACosH"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpTan: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Tan"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpTanH: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"TanH"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpSqrt: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Sqrt"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpArcCot : public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"ScACot"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpArcCotHyp : public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"ScACotH"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpArcSin : public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"ScASin"; } virtualvoid BinInlineFun(std::set<std::string>& ,std::set<std::string>&) override; virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpArcSinHyp : public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"ScASinH"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpArcTan2 : public OpMathTwoArguments
{ public: virtual std::string BinFuncName() const override { return"ScATan2"; } virtualvoid BinInlineFun(std::set<std::string>& ,std::set<std::string>&) override; virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpArcTan : public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"ScATan"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpArcTanH : public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"ScATanH"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpBitAnd : public OpMathTwoArguments
{ public: virtual std::string BinFuncName() const override { return"ScBitAnd"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpBitOr : public OpMathTwoArguments
{ public: virtual std::string BinFuncName() const override { return"ScBitOr"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpBitXor : public OpMathTwoArguments
{ public: virtual std::string BinFuncName() const override { return"ScBitXor"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpBitLshift : public OpMathTwoArguments
{ public: virtual std::string BinFuncName() const override { return"ScBitLshift"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpBitRshift : public OpMathTwoArguments
{ public: virtual std::string BinFuncName() const override { return"ScBitRshift"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpLn: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Ln"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpRound: public Normal
{ public: virtualvoid GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override; virtual std::string BinFuncName() const override { return"Round"; } virtualvoid BinInlineFun(std::set<std::string>& , std::set<std::string>& ) override;
}; class OpRoundUp: public Normal
{ public: virtualvoid GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override; virtual std::string BinFuncName() const override { return"RoundUp"; }
}; class OpRoundDown: public Normal
{ public: virtualvoid GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override; virtual std::string BinFuncName() const override { return"RoundDown"; }
}; class OpTrunc: public OpRoundDown
{ public: virtual std::string BinFuncName() const override { return"Trunc"; }
}; class OpInt: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Int"; } virtualvoid GenerateCode( outputstream& ss ) const override; virtualvoid BinInlineFun(std::set<std::string>& , std::set<std::string>& ) override;
};
class OpRadians: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Radians"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpIsEven: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"IsEven"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpIsOdd: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"IsOdd"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpCot: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"Cot"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpSumSQ: public Normal
{ public: virtualvoid GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override;
class OpSqrtPi: public OpMathOneArgument
{ public: virtual std::string BinFuncName() const override { return"SqrtPi"; } virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpCombinA: public OpMathTwoArguments
{ public: virtual std::string BinFuncName() const override { return"Combina"; } virtualvoid BinInlineFun(std::set<std::string>& ,std::set<std::string>& ) override; virtualvoid GenerateCode( outputstream& ss ) const override;
};
class OpLog: public Normal
{ public: virtualvoid GenSlidingWindowFunction(outputstream &ss, const std::string &sSymName, SubArguments &vSubArguments) override;
/// Technically not a reduction, but fits the framework. class OpDiv : public Reduction
{ public: explicit OpDiv(int nResultSize) : Reduction(nResultSize) {}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.