ModuleMath.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef MDD_MODULEMATH_H
  2. #define MDD_MODULEMATH_H
  3. #include "ModuleBase.h"
  4. namespace mdd {
  5. enum class MathOperation : char {
  6. ADD = 1,
  7. SUBTRACT = 2,
  8. MULTIPLY = 3,
  9. DIVIDE = 4,
  10. POWER = 5,
  11. LOGARITHM = 6,
  12. MINIMUM = 7,
  13. MAXIMUM = 8,
  14. LESS_THAN = 9,
  15. GREATER_THAN = 10
  16. };
  17. class ModuleMath : public ModuleBase {
  18. private:
  19. MathOperation _operation;
  20. static std::vector<double> add(const std::vector<double>&val1, const std::vector<double>&val2);
  21. static std::vector<double> subtract(const std::vector<double>&val1, const std::vector<double>&val2);
  22. static std::vector<double> multiply(const std::vector<double>&val1, const std::vector<double>&val2);
  23. static std::vector<double> divide(const std::vector<double>&val1, const std::vector<double>&val2);
  24. static std::vector<double> power(const std::vector<double>&val1, const std::vector<double>&val2);
  25. static std::vector<double> logarithm(const std::vector<double>&val1, const std::vector<double>&val2);
  26. static std::vector<double> minimum(const std::vector<double>&val1, const std::vector<double>&val2);
  27. static std::vector<double> maximum(const std::vector<double>&val1, const std::vector<double>&val2);
  28. static std::vector<double> less(const std::vector<double>&val1, const std::vector<double>&val2);
  29. static std::vector<double> greater(const std::vector<double>&val1, const std::vector<double>&val2);
  30. public:
  31. explicit ModuleMath(MathOperation operation = MathOperation::ADD);
  32. state update() override;
  33. void setMathOperation(MathOperation operation);
  34. MathOperation getMathOperation();
  35. };
  36. }
  37. #endif