Files
Upsilon/poincare/include/poincare/binomial_coefficient.h
Émilie Feral cb432e165e [poincare] Cap binomial and permute coefficient reducing
Change-Id: Ib0c08a9788d77025e709d295bf05f30de50e9253
2017-11-20 14:52:21 +01:00

33 lines
1.2 KiB
C++

#ifndef POINCARE_BINOMIAL_COEFFICIENT_H
#define POINCARE_BINOMIAL_COEFFICIENT_H
#include <poincare/layout_engine.h>
#include <poincare/static_hierarchy.h>
namespace Poincare {
class BinomialCoefficient : public StaticHierarchy<2> {
using StaticHierarchy<2>::StaticHierarchy;
public:
Type type() const override;
Expression * clone() const override;
private:
constexpr static int k_maxNValue = 300;
/* Layout */
ExpressionLayout * privateCreateLayout(FloatDisplayMode floatDisplayMode, ComplexFormat complexFormat) const override;
int writeTextInBuffer(char * buffer, int bufferSize) const override {
return LayoutEngine::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, "binomial");
}
/* Simplification */
Expression * shallowReduce(Context& context, AngleUnit angleUnit) override;
/* Evaluation */
Expression * privateEvaluate(SinglePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedEvaluate<float>(context, angleUnit); }
Expression * privateEvaluate(DoublePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedEvaluate<double>(context, angleUnit); }
template<typename T> Expression * templatedEvaluate(Context& context, AngleUnit angleUnit) const;
};
}
#endif