Numworks Epsilon  1.4.1
Graphing Calculator Operating System
factor.h
Go to the documentation of this file.
1 #ifndef POINCARE_FACTOR_H
2 #define POINCARE_FACTOR_H
3 
7 #include <poincare/rational.h>
8 #include <poincare/complex.h>
9 #include <cmath>
10 
11 namespace Poincare {
12 
13 class Factor : public StaticHierarchy<1> {
15 public:
16  Type type() const override;
17  Expression * clone() const override;
18 private:
19  /* Layout */
20  ExpressionLayout * privateCreateLayout(PrintFloat::Mode floatDisplayMode, ComplexFormat complexFormat) const override {
21  return LayoutEngine::createPrefixLayout(this, floatDisplayMode, complexFormat, name());
22  }
23  int writeTextInBuffer(char * buffer, int bufferSize, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const override {
24  return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, numberOfSignificantDigits, name());
25  }
26  const char * name() const { return "factor"; }
27  /* Simplification */
28  Expression * shallowBeautify(Context& context, AngleUnit angleUnit) override;
29  Expression * createMultiplicationOfIntegerPrimeDecomposition(Integer i, Context & context, AngleUnit angleUnit);
30  /* Evaluation */
31  Expression * privateApproximate(SinglePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedApproximate<float>(context, angleUnit); }
32  Expression * privateApproximate(DoublePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedApproximate<double>(context, angleUnit); }
33  template<typename T> Expression * templatedApproximate(Context& context, AngleUnit angleUnit) const {
34  return operand(0)->approximate<T>(context, angleUnit);
35  }
36 };
37 
38 }
39 
40 #endif
41 
Expression * approximate(Context &context, AngleUnit angleUnit=AngleUnit::Default) const
Definition: expression.cpp:338
#define T(x)
Definition: events.cpp:26
static ExpressionLayout * createPrefixLayout(const Expression *expression, PrintFloat::Mode floatDisplayMode, Expression::ComplexFormat complexFormat, const char *operatorName)
static int writePrefixExpressionTextInBuffer(const Expression *expression, char *buffer, int bufferSize, int numberOfDigits, const char *operatorName)
Type type() const override
Definition: factor.cpp:16
const Expression * operand(int i) const
Definition: expression.cpp:78
Expression * clone() const override
Definition: factor.cpp:20