mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-26 09:10:48 +01:00
[poincare] Implement evaluate in Rational
Change-Id: I8ef2b879ce3f61c0c33ad478f831202788ece532
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user