[poincare] Implement evaluate in Rational

Change-Id: I8ef2b879ce3f61c0c33ad478f831202788ece532
This commit is contained in:
Émilie Feral
2017-10-19 18:13:17 +02:00
parent 1363c3a65f
commit 36925e08c1
2 changed files with 7 additions and 10 deletions

View File

@@ -39,8 +39,9 @@ public:
private:
ExpressionLayout * privateCreateLayout(FloatDisplayMode floatDisplayMode, ComplexFormat complexFormat) const override;
int writeTextInBuffer(char * buffer, int bufferSize) const override;
Evaluation<float> * privateEvaluate(SinglePrecision p, Context& context, AngleUnit angleUnit) const override;
Evaluation<double> * privateEvaluate(DoublePrecision p, Context& context, AngleUnit angleUnit) const override;
Evaluation<float> * privateEvaluate(SinglePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedEvaluate<float>(context, angleUnit); }
Evaluation<double> * privateEvaluate(DoublePrecision p, Context& context, AngleUnit angleUnit) const override { return templatedEvaluate<double>(context, angleUnit); }
template<typename U> Evaluation<U> * templatedEvaluate(Context& context, Expression::AngleUnit angleUnit) const;
/* Sorting */
int compareToSameTypeExpression(const Expression * e) const override;

View File

@@ -104,14 +104,10 @@ int Rational::compareToSameTypeExpression(const Expression * e) const {
return i1.compareTo(&i2);
}
Evaluation<float> * Rational::privateEvaluate(SinglePrecision p, Context& context, AngleUnit angleUnit) const {
// TODO: implement when needed, use Integer.privateEvaluate
return new Complex<float>(Complex<float>::Float(NAN));
}
Evaluation<double> * Rational::privateEvaluate(DoublePrecision p, Context& context, AngleUnit angleUnit) const {
// TODO: implement when needed, use Integer.privateEvaluate
return new Complex<double>(Complex<double>::Float(NAN));
template<typename T> Evaluation<T> * Rational::templatedEvaluate(Context& context, Expression::AngleUnit angleUnit) const {
T n = m_numerator.approximate<T>();
T d = m_denominator.approximate<T>();
return new Complex<T>(Complex<T>::Float(n/d));
}
ExpressionLayout * Rational::privateCreateLayout(FloatDisplayMode floatDisplayMode, ComplexFormat complexFormat) const {