mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-27 01:29:58 +01:00
[poincare] First version of Simplification with matrix (no tests yet!)
Change-Id: I28ad4750ad31995836b23725f7d715669fcb7ae2
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include <poincare/symbol.h>
|
||||
#include <poincare/integer.h>
|
||||
#include <poincare/rational.h>
|
||||
#include <poincare/complex.h>
|
||||
#include <ion.h>
|
||||
#include <iostream>
|
||||
|
||||
@@ -17,6 +18,9 @@ void print_expression(const Expression * e, int indentationLevel) {
|
||||
}
|
||||
GlobalContext context;
|
||||
switch (e->type()) {
|
||||
case Expression::Type::AbsoluteValue:
|
||||
std::cout << "AbsoluteValue";
|
||||
break;
|
||||
case Expression::Type::Addition:
|
||||
std::cout << "Addition";
|
||||
break;
|
||||
@@ -29,35 +33,133 @@ void print_expression(const Expression * e, int indentationLevel) {
|
||||
case Expression::Type::ArcTangent:
|
||||
std::cout << "ArcTangent";
|
||||
break;
|
||||
case Expression::Type::Multiplication:
|
||||
std::cout << "Multiplication";
|
||||
case Expression::Type::BinomialCoefficient:
|
||||
std::cout << "BinomialCoefficient";
|
||||
break;
|
||||
case Expression::Type::NthRoot:
|
||||
std::cout << "NthRoot";
|
||||
case Expression::Type::Ceiling:
|
||||
std::cout << "Ceiling";
|
||||
break;
|
||||
case Expression::Type::Complex:
|
||||
std::cout << "Complex(";
|
||||
std::cout << static_cast<const Complex<double> *>(e)->a();
|
||||
std::cout << ", ";
|
||||
std::cout << static_cast<const Complex<double> *>(e)->b();
|
||||
std::cout << ")";
|
||||
break;
|
||||
case Expression::Type::ComplexArgument:
|
||||
std::cout << "ComplexArgument";
|
||||
break;
|
||||
case Expression::Type::ConfidenceInterval:
|
||||
std::cout << "ConfidenceInterval";
|
||||
break;
|
||||
case Expression::Type::Conjugate:
|
||||
std::cout << "Conjugate";
|
||||
break;
|
||||
case Expression::Type::Cosine:
|
||||
std::cout << "Cosine";
|
||||
break;
|
||||
case Expression::Type::Logarithm:
|
||||
std::cout << "Log";
|
||||
case Expression::Type::Decimal:
|
||||
std::cout << "Decimal(";
|
||||
std::cout << e->approximate<double>(context, Expression::AngleUnit::Radian);
|
||||
std::cout << ")";
|
||||
break;
|
||||
case Expression::Type::NaperianLogarithm:
|
||||
std::cout << "Ln";
|
||||
case Expression::Type::Derivative:
|
||||
std::cout << "Derivative";
|
||||
break;
|
||||
case Expression::Type::Determinant:
|
||||
std::cout << "Determinant";
|
||||
break;
|
||||
case Expression::Type::Division:
|
||||
std::cout << "Division";
|
||||
break;
|
||||
case Expression::Type::DivisionQuotient:
|
||||
std::cout << "DivisionQuotient";
|
||||
break;
|
||||
case Expression::Type::DivisionRemainder:
|
||||
std::cout << "DivisionRemainder";
|
||||
break;
|
||||
case Expression::Type::Factorial:
|
||||
std::cout << "Factorial";
|
||||
break;
|
||||
case Expression::Type::Floor:
|
||||
std::cout << "Floor";
|
||||
break;
|
||||
case Expression::Type::FracPart:
|
||||
std::cout << "FracPart";
|
||||
break;
|
||||
case Expression::Type::GreatCommonDivisor:
|
||||
std::cout << "GreatCommonDivisor";
|
||||
break;
|
||||
case Expression::Type::HyperbolicArcCosine:
|
||||
std::cout << "HyperbolicArcCosine";
|
||||
break;
|
||||
case Expression::Type::HyperbolicArcSine:
|
||||
std::cout << "HyperbolicArcSine";
|
||||
break;
|
||||
case Expression::Type::HyperbolicArcTangent:
|
||||
std::cout << "HyperbolicArcTangent";
|
||||
break;
|
||||
case Expression::Type::HyperbolicCosine:
|
||||
std::cout << "HyperbolicCosine";
|
||||
break;
|
||||
case Expression::Type::HyperbolicSine:
|
||||
std::cout << "HyperbolicSine";
|
||||
break;
|
||||
case Expression::Type::HyperbolicTangent:
|
||||
std::cout << "HyperbolicTangent";
|
||||
break;
|
||||
case Expression::Type::ImaginaryPart:
|
||||
std::cout << "ImaginaryPart";
|
||||
break;
|
||||
case Expression::Type::Integral:
|
||||
std::cout << "Integral";
|
||||
break;
|
||||
case Expression::Type::LeastCommonMultiple:
|
||||
std::cout << "LeastCommonMultiple";
|
||||
break;
|
||||
case Expression::Type::Logarithm:
|
||||
std::cout << "Logarithm";
|
||||
break;
|
||||
case Expression::Type::Matrix:
|
||||
std::cout << "Matrix(Rows: ";
|
||||
std::cout << static_cast<const Matrix *>(e)->numberOfRows();
|
||||
std::cout << ", Columns: ";
|
||||
std::cout << static_cast<const Matrix *>(e)->numberOfColumns();
|
||||
std::cout << ")";
|
||||
break;
|
||||
case Expression::Type::MatrixDimension:
|
||||
std::cout << "MatrixDimension";
|
||||
break;
|
||||
case Expression::Type::MatrixInverse:
|
||||
std::cout << "MatrixInverse";
|
||||
break;
|
||||
case Expression::Type::MatrixTrace:
|
||||
std::cout << "MatrixTrace";
|
||||
break;
|
||||
case Expression::Type::MatrixTranspose:
|
||||
std::cout << "MatrixTranspose";
|
||||
break;
|
||||
case Expression::Type::Multiplication:
|
||||
std::cout << "Multiplication";
|
||||
break;
|
||||
case Expression::Type::NaperianLogarithm:
|
||||
std::cout << "NaperianLogarithm";
|
||||
break;
|
||||
case Expression::Type::NthRoot:
|
||||
std::cout << "NthRoot";
|
||||
break;
|
||||
case Expression::Type::Opposite:
|
||||
std::cout << "Opposite";
|
||||
break;
|
||||
/*
|
||||
case Expression::Type::Matrix:
|
||||
std::cout << "Matrix";
|
||||
break;
|
||||
*/
|
||||
case Expression::Type::Parenthesis:
|
||||
std::cout << "Parenthesis";
|
||||
break;
|
||||
case Expression::Type::PermuteCoefficient:
|
||||
std::cout << "PermuteCoefficient";
|
||||
break;
|
||||
case Expression::Type::PredictionInterval:
|
||||
std::cout << "PredictionInterval";
|
||||
break;
|
||||
case Expression::Type::Power:
|
||||
std::cout << "Power";
|
||||
break;
|
||||
@@ -71,17 +173,32 @@ void print_expression(const Expression * e, int indentationLevel) {
|
||||
std::cout << static_cast<const Rational * >(e)->denominator().approximate<double>();
|
||||
std::cout << ")";
|
||||
break;
|
||||
case Expression::Type::RealPart:
|
||||
std::cout << "RealPart";
|
||||
break;
|
||||
case Expression::Type::Round:
|
||||
std::cout << "Round";
|
||||
break;
|
||||
case Expression::Type::SimplificationRoot:
|
||||
std::cout << "SimplificationRoot";
|
||||
break;
|
||||
case Expression::Type::Sine:
|
||||
std::cout << "Sine";
|
||||
break;
|
||||
case Expression::Type::SquareRoot:
|
||||
std::cout << "SquareRoot";
|
||||
break;
|
||||
case Expression::Type::Store:
|
||||
std::cout << "Store";
|
||||
break;
|
||||
case Expression::Type::Subtraction:
|
||||
std::cout << "Subtraction";
|
||||
break;
|
||||
case Expression::Type::Sum:
|
||||
std::cout << "Sum";
|
||||
break;
|
||||
case Expression::Type::Symbol:
|
||||
std::cout << "Symbol(";
|
||||
std::cout << "Symbol(";
|
||||
switch (((Symbol*)e)->name()) {
|
||||
case Ion::Charset::SmallPi:
|
||||
std::cout << "PI";
|
||||
|
||||
Reference in New Issue
Block a user