mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
Rename UCodePointUnknownX to UCodePointUnknown
This commit is contained in:
committed by
Léa Saviot
parent
b728fb8a1b
commit
c3cf5c1ef4
@@ -129,7 +129,7 @@ T Sequence::approximateToNextRank(int n, SequenceContext * sqctx) const {
|
||||
|
||||
constexpr int bufferSize = CodePoint::MaxCodePointCharLength + 1;
|
||||
char unknownN[bufferSize];
|
||||
Poincare::SerializationHelper::CodePoint(unknownN, bufferSize, UCodePointUnknownX);
|
||||
Poincare::SerializationHelper::CodePoint(unknownN, bufferSize, UCodePointUnknown);
|
||||
|
||||
CacheContext<T> ctx = CacheContext<T>(sqctx);
|
||||
// Hold values u(n), u(n-1), u(n-2), v(n), v(n-1), v(n-2)...
|
||||
|
||||
@@ -165,9 +165,9 @@ void ContinuousFunction::setPlotType(PlotType newPlotType, Poincare::Preferences
|
||||
Expression e = expressionClone();
|
||||
// Change y(t) to [t y(t)]
|
||||
Matrix newExpr = Matrix::Builder();
|
||||
newExpr.addChildAtIndexInPlace(Symbol::Builder(UCodePointUnknownX), 0, 0);
|
||||
newExpr.addChildAtIndexInPlace(Symbol::Builder(UCodePointUnknown), 0, 0);
|
||||
// if y(t) was not uninitialized, insert [t 2t] to set an example
|
||||
e = e.isUninitialized() ? Multiplication::Builder(Rational::Builder(2), Symbol::Builder(UCodePointUnknownX)) : e;
|
||||
e = e.isUninitialized() ? Multiplication::Builder(Rational::Builder(2), Symbol::Builder(UCodePointUnknown)) : e;
|
||||
newExpr.addChildAtIndexInPlace(e, newExpr.numberOfChildren(), newExpr.numberOfChildren());
|
||||
newExpr.setDimensions(2, 1);
|
||||
setExpressionContent(newExpr);
|
||||
@@ -237,7 +237,7 @@ double ContinuousFunction::approximateDerivative(double x, Poincare::Context * c
|
||||
if (x < tMin() || x > tMax()) {
|
||||
return NAN;
|
||||
}
|
||||
Poincare::Derivative derivative = Poincare::Derivative::Builder(expressionReduced(context).clone(), Symbol::Builder(UCodePointUnknownX), Poincare::Float<double>::Builder(x)); // derivative takes ownership of Poincare::Float<double>::Builder(x) and the clone of expression
|
||||
Poincare::Derivative derivative = Poincare::Derivative::Builder(expressionReduced(context).clone(), Symbol::Builder(UCodePointUnknown), Poincare::Float<double>::Builder(x)); // derivative takes ownership of Poincare::Float<double>::Builder(x) and the clone of expression
|
||||
/* TODO: when we approximate derivative, we might want to simplify the
|
||||
* derivative here. However, we might want to do it once for all x (to avoid
|
||||
* lagging in the derivative table. */
|
||||
@@ -281,7 +281,7 @@ Coordinate2D<T> ContinuousFunction::templatedApproximateAtParameter(T t, Poincar
|
||||
}
|
||||
constexpr int bufferSize = CodePoint::MaxCodePointCharLength + 1;
|
||||
char unknown[bufferSize];
|
||||
Poincare::SerializationHelper::CodePoint(unknown, bufferSize, UCodePointUnknownX);
|
||||
Poincare::SerializationHelper::CodePoint(unknown, bufferSize, UCodePointUnknown);
|
||||
PlotType type = plotType();
|
||||
Expression e = expressionReduced(context);
|
||||
if (type != PlotType::Parametric) {
|
||||
@@ -312,7 +312,7 @@ Coordinate2D<double> ContinuousFunction::nextIntersectionFrom(double start, doub
|
||||
assert(plotType() == PlotType::Cartesian);
|
||||
constexpr int bufferSize = CodePoint::MaxCodePointCharLength + 1;
|
||||
char unknownX[bufferSize];
|
||||
SerializationHelper::CodePoint(unknownX, bufferSize, UCodePointUnknownX);
|
||||
SerializationHelper::CodePoint(unknownX, bufferSize, UCodePointUnknown);
|
||||
double domainMin = maxDouble(tMin(), eDomainMin);
|
||||
double domainMax = minDouble(tMax(), eDomainMax);
|
||||
if (step > 0.0f) {
|
||||
@@ -329,7 +329,7 @@ Coordinate2D<double> ContinuousFunction::nextPointOfInterestFrom(double start, d
|
||||
assert(plotType() == PlotType::Cartesian);
|
||||
constexpr int bufferSize = CodePoint::MaxCodePointCharLength + 1;
|
||||
char unknownX[bufferSize];
|
||||
SerializationHelper::CodePoint(unknownX, bufferSize, UCodePointUnknownX);
|
||||
SerializationHelper::CodePoint(unknownX, bufferSize, UCodePointUnknown);
|
||||
if (step > 0.0f) {
|
||||
start = maxDouble(start, tMin());
|
||||
max = minDouble(max, tMax());
|
||||
@@ -344,7 +344,7 @@ Poincare::Expression ContinuousFunction::sumBetweenBounds(double start, double e
|
||||
assert(plotType() == PlotType::Cartesian);
|
||||
start = maxDouble(start, tMin());
|
||||
end = minDouble(end, tMax());
|
||||
return Poincare::Integral::Builder(expressionReduced(context).clone(), Poincare::Symbol::Builder(UCodePointUnknownX), Poincare::Float<double>::Builder(start), Poincare::Float<double>::Builder(end)); // Integral takes ownership of args
|
||||
return Poincare::Integral::Builder(expressionReduced(context).clone(), Poincare::Symbol::Builder(UCodePointUnknown), Poincare::Float<double>::Builder(start), Poincare::Float<double>::Builder(end)); // Integral takes ownership of args
|
||||
/* TODO: when we approximate integral, we might want to simplify the integral
|
||||
* here. However, we might want to do it once for all x (to avoid lagging in
|
||||
* the derivative table. */
|
||||
|
||||
@@ -27,7 +27,7 @@ void ExpressionModel::text(const Storage::Record * record, char * buffer, size_t
|
||||
buffer[0] = 0;
|
||||
} else {
|
||||
if (symbol != 0 && !e.isUninitialized()) {
|
||||
e = e.replaceSymbolWithExpression(Symbol::Builder(UCodePointUnknownX), Symbol::Builder(symbol));
|
||||
e = e.replaceSymbolWithExpression(Symbol::Builder(UCodePointUnknown), Symbol::Builder(symbol));
|
||||
}
|
||||
e.serialize(buffer, bufferSize);
|
||||
}
|
||||
@@ -67,7 +67,7 @@ Layout ExpressionModel::layout(const Storage::Record * record, CodePoint symbol)
|
||||
if (m_layout.isUninitialized()) {
|
||||
Expression clone = expressionClone(record);
|
||||
if (!clone.isUninitialized() && symbol != 0) {
|
||||
clone = clone.replaceSymbolWithExpression(Symbol::Builder(UCodePointUnknownX), Symbol::Builder(symbol));
|
||||
clone = clone.replaceSymbolWithExpression(Symbol::Builder(UCodePointUnknown), Symbol::Builder(symbol));
|
||||
}
|
||||
m_layout = PoincareHelpers::CreateLayout(clone);
|
||||
if (m_layout.isUninitialized()) {
|
||||
@@ -134,7 +134,7 @@ Poincare::Expression ExpressionModel::BuildExpressionFromText(const char * c, Co
|
||||
// Compute the expression to store, without replacing symbols
|
||||
expressionToStore = Expression::Parse(c);
|
||||
if (!expressionToStore.isUninitialized() && symbol != 0) {
|
||||
expressionToStore = expressionToStore.replaceSymbolWithExpression(Symbol::Builder(symbol), Symbol::Builder(UCodePointUnknownX));
|
||||
expressionToStore = expressionToStore.replaceSymbolWithExpression(Symbol::Builder(symbol), Symbol::Builder(UCodePointUnknown));
|
||||
}
|
||||
}
|
||||
return expressionToStore;
|
||||
|
||||
@@ -54,7 +54,7 @@ void GlobalContext::setExpressionForSymbolAbstract(const Expression & expression
|
||||
assert(symbol.type() == ExpressionNode::Type::Function);
|
||||
Expression child = symbol.childAtIndex(0);
|
||||
assert(child.type() == ExpressionNode::Type::Symbol);
|
||||
finalExpression = finalExpression.replaceSymbolWithExpression(static_cast<Symbol&>(child), Symbol::Builder(UCodePointUnknownX));
|
||||
finalExpression = finalExpression.replaceSymbolWithExpression(static_cast<Symbol&>(child), Symbol::Builder(UCodePointUnknown));
|
||||
SetExpressionForFunction(finalExpression, symbol, record);
|
||||
}
|
||||
}
|
||||
@@ -84,7 +84,7 @@ const Expression GlobalContext::ExpressionForFunction(const SymbolAbstract & sym
|
||||
* expression, use the function record handle. */
|
||||
Expression e = ContinuousFunction(r).expressionClone();
|
||||
if (!e.isUninitialized()) {
|
||||
e = e.replaceSymbolWithExpression(Symbol::Builder(UCodePointUnknownX), symbol.childAtIndex(0));
|
||||
e = e.replaceSymbolWithExpression(Symbol::Builder(UCodePointUnknown), symbol.childAtIndex(0));
|
||||
}
|
||||
return e;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ private:
|
||||
static constexpr CodePoint UCodePointNull = 0x0;
|
||||
|
||||
// 0x1 represents soh. It is not used, so we can use it for another purpose.
|
||||
static constexpr CodePoint UCodePointUnknownX = 0x1;
|
||||
static constexpr CodePoint UCodePointUnknown = 0x1;
|
||||
|
||||
static constexpr CodePoint UCodePointTabulation = 0x9;
|
||||
static constexpr CodePoint UCodePointLineFeed = 0xa;
|
||||
|
||||
@@ -127,7 +127,7 @@ Evaluation<T> SymbolNode::templatedApproximate(Context * context, Preferences::C
|
||||
}
|
||||
|
||||
bool SymbolNode::isUnknown() const {
|
||||
bool result = UTF8Helper::CodePointIs(m_name, UCodePointUnknownX);
|
||||
bool result = UTF8Helper::CodePointIs(m_name, UCodePointUnknown);
|
||||
if (result) {
|
||||
assert(m_name[1] == 0);
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ float Trigonometry::characteristicXRange(const Expression & e, Context * context
|
||||
|
||||
constexpr int bufferSize = CodePoint::MaxCodePointCharLength + 1;
|
||||
char x[bufferSize];
|
||||
SerializationHelper::CodePoint(x, bufferSize, UCodePointUnknownX);
|
||||
SerializationHelper::CodePoint(x, bufferSize, UCodePointUnknown);
|
||||
|
||||
int d = e.childAtIndex(0).polynomialDegree(context, x);
|
||||
if (d < 0 || d > 1) {
|
||||
|
||||
@@ -189,11 +189,11 @@ QUIZ_CASE(poincare_context_user_variable_functions_approximation_with_value_for_
|
||||
|
||||
constexpr int bufferSize = CodePoint::MaxCodePointCharLength + 1;
|
||||
char x[bufferSize];
|
||||
Poincare::SerializationHelper::CodePoint(x, bufferSize, UCodePointUnknownX);
|
||||
Poincare::SerializationHelper::CodePoint(x, bufferSize, UCodePointUnknown);
|
||||
|
||||
assert_parsed_expression_approximates_with_value_for_symbol(Function::Builder("f", 1, Subtraction::Builder(Symbol::Builder(UCodePointUnknownX), Rational::Builder(2))), x, 5.0, 9.0);
|
||||
assert_parsed_expression_approximates_with_value_for_symbol(Function::Builder("f", 1, Subtraction::Builder(Symbol::Builder(UCodePointUnknown), Rational::Builder(2))), x, 5.0, 9.0);
|
||||
// Approximate f(?-1)+f(?+1) with ? = 3
|
||||
assert_parsed_expression_approximates_with_value_for_symbol(Addition::Builder(Function::Builder("f", 1, Subtraction::Builder(Symbol::Builder(UCodePointUnknownX), Rational::Builder(1))), Function::Builder("f", 1, Addition::Builder(Symbol::Builder(UCodePointUnknownX), Rational::Builder(1)))), x, 3.0, 20.0);
|
||||
assert_parsed_expression_approximates_with_value_for_symbol(Addition::Builder(Function::Builder("f", 1, Subtraction::Builder(Symbol::Builder(UCodePointUnknown), Rational::Builder(1))), Function::Builder("f", 1, Addition::Builder(Symbol::Builder(UCodePointUnknown), Rational::Builder(1)))), x, 3.0, 20.0);
|
||||
|
||||
// Clean the storage for other tests
|
||||
Ion::Storage::sharedStorage()->recordNamed("f.func").destroy();
|
||||
@@ -202,9 +202,9 @@ QUIZ_CASE(poincare_context_user_variable_functions_approximation_with_value_for_
|
||||
assert_simplify("√(-1)×√(-1)→f(x)");
|
||||
// Approximate f(?) with ? = 5
|
||||
// Cartesian
|
||||
assert_parsed_expression_approximates_with_value_for_symbol(Function::Builder("f", 1, Symbol::Builder(UCodePointUnknownX)), x, 1.0, -1.0);
|
||||
assert_parsed_expression_approximates_with_value_for_symbol(Function::Builder("f", 1, Symbol::Builder(UCodePointUnknown)), x, 1.0, -1.0);
|
||||
// Real
|
||||
assert_parsed_expression_approximates_with_value_for_symbol(Function::Builder("f", 1, Symbol::Builder(UCodePointUnknownX)), x, 1.0, (double)NAN, Real);
|
||||
assert_parsed_expression_approximates_with_value_for_symbol(Function::Builder("f", 1, Symbol::Builder(UCodePointUnknown)), x, 1.0, (double)NAN, Real);
|
||||
|
||||
// Clean the storage for other tests
|
||||
Ion::Storage::sharedStorage()->recordNamed("f.func").destroy();
|
||||
|
||||
@@ -243,30 +243,30 @@ void assert_reduced_expression_has_characteristic_range(Expression e, float rang
|
||||
|
||||
QUIZ_CASE(poincare_properties_characteristic_range) {
|
||||
// cos(x), degree
|
||||
assert_reduced_expression_has_characteristic_range(Cosine::Builder(Symbol::Builder(UCodePointUnknownX)), 360.0f);
|
||||
assert_reduced_expression_has_characteristic_range(Cosine::Builder(Symbol::Builder(UCodePointUnknown)), 360.0f);
|
||||
// cos(-x), degree
|
||||
assert_reduced_expression_has_characteristic_range(Cosine::Builder(Opposite::Builder(Symbol::Builder(UCodePointUnknownX))), 360.0f);
|
||||
assert_reduced_expression_has_characteristic_range(Cosine::Builder(Opposite::Builder(Symbol::Builder(UCodePointUnknown))), 360.0f);
|
||||
// cos(x), radian
|
||||
assert_reduced_expression_has_characteristic_range(Cosine::Builder(Symbol::Builder(UCodePointUnknownX)), 2.0f*M_PI, Preferences::AngleUnit::Radian);
|
||||
assert_reduced_expression_has_characteristic_range(Cosine::Builder(Symbol::Builder(UCodePointUnknown)), 2.0f*M_PI, Preferences::AngleUnit::Radian);
|
||||
// cos(-x), radian
|
||||
assert_reduced_expression_has_characteristic_range(Cosine::Builder(Opposite::Builder(Symbol::Builder(UCodePointUnknownX))), 2.0f*M_PI, Preferences::AngleUnit::Radian);
|
||||
assert_reduced_expression_has_characteristic_range(Cosine::Builder(Opposite::Builder(Symbol::Builder(UCodePointUnknown))), 2.0f*M_PI, Preferences::AngleUnit::Radian);
|
||||
// sin(9x+10), degree
|
||||
assert_reduced_expression_has_characteristic_range(Sine::Builder(Addition::Builder(Multiplication::Builder(Rational::Builder(9),Symbol::Builder(UCodePointUnknownX)),Rational::Builder(10))), 40.0f);
|
||||
assert_reduced_expression_has_characteristic_range(Sine::Builder(Addition::Builder(Multiplication::Builder(Rational::Builder(9),Symbol::Builder(UCodePointUnknown)),Rational::Builder(10))), 40.0f);
|
||||
// sin(9x+10)+cos(x/2), degree
|
||||
assert_reduced_expression_has_characteristic_range(Addition::Builder(Sine::Builder(Addition::Builder(Multiplication::Builder(Rational::Builder(9),Symbol::Builder(UCodePointUnknownX)),Rational::Builder(10))),Cosine::Builder(Division::Builder(Symbol::Builder(UCodePointUnknownX),Rational::Builder(2)))), 720.0f);
|
||||
assert_reduced_expression_has_characteristic_range(Addition::Builder(Sine::Builder(Addition::Builder(Multiplication::Builder(Rational::Builder(9),Symbol::Builder(UCodePointUnknown)),Rational::Builder(10))),Cosine::Builder(Division::Builder(Symbol::Builder(UCodePointUnknown),Rational::Builder(2)))), 720.0f);
|
||||
// sin(9x+10)+cos(x/2), radian
|
||||
assert_reduced_expression_has_characteristic_range(Addition::Builder(Sine::Builder(Addition::Builder(Multiplication::Builder(Rational::Builder(9),Symbol::Builder(UCodePointUnknownX)),Rational::Builder(10))),Cosine::Builder(Division::Builder(Symbol::Builder(UCodePointUnknownX),Rational::Builder(2)))), 4.0f*M_PI, Preferences::AngleUnit::Radian);
|
||||
assert_reduced_expression_has_characteristic_range(Addition::Builder(Sine::Builder(Addition::Builder(Multiplication::Builder(Rational::Builder(9),Symbol::Builder(UCodePointUnknown)),Rational::Builder(10))),Cosine::Builder(Division::Builder(Symbol::Builder(UCodePointUnknown),Rational::Builder(2)))), 4.0f*M_PI, Preferences::AngleUnit::Radian);
|
||||
// x, degree
|
||||
assert_reduced_expression_has_characteristic_range(Symbol::Builder(UCodePointUnknownX), NAN);
|
||||
assert_reduced_expression_has_characteristic_range(Symbol::Builder(UCodePointUnknown), NAN);
|
||||
// cos(3)+2, degree
|
||||
assert_reduced_expression_has_characteristic_range(Addition::Builder(Cosine::Builder(Rational::Builder(3)),Rational::Builder(2)), 0.0f);
|
||||
// log(cos(40x), degree
|
||||
assert_reduced_expression_has_characteristic_range(CommonLogarithm::Builder(Cosine::Builder(Multiplication::Builder(Rational::Builder(40),Symbol::Builder(UCodePointUnknownX)))), 9.0f);
|
||||
assert_reduced_expression_has_characteristic_range(CommonLogarithm::Builder(Cosine::Builder(Multiplication::Builder(Rational::Builder(40),Symbol::Builder(UCodePointUnknown)))), 9.0f);
|
||||
// cos(cos(x)), degree
|
||||
assert_reduced_expression_has_characteristic_range(Cosine::Builder((Expression)Cosine::Builder(Symbol::Builder(UCodePointUnknownX))), 360.0f);
|
||||
assert_reduced_expression_has_characteristic_range(Cosine::Builder((Expression)Cosine::Builder(Symbol::Builder(UCodePointUnknown))), 360.0f);
|
||||
// f(x) with f : x --> cos(x), degree
|
||||
assert_simplify("cos(x)→f(x)");
|
||||
assert_reduced_expression_has_characteristic_range(Function::Builder("f",1,Symbol::Builder(UCodePointUnknownX)), 360.0f);
|
||||
assert_reduced_expression_has_characteristic_range(Function::Builder("f",1,Symbol::Builder(UCodePointUnknown)), 360.0f);
|
||||
Ion::Storage::sharedStorage()->recordNamed("f.func").destroy();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user