mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[poincare] Tests about basic matrix simplifications + fix tests
This commit is contained in:
@@ -96,7 +96,7 @@ QUIZ_CASE(calculation_display_exact_approximate) {
|
||||
assertCalculationDisplay("1/0", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, "undef", "undef", &globalContext, &store);
|
||||
assertCalculationDisplay("2x-x", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, "undef", "undef", &globalContext, &store);
|
||||
assertCalculationDisplay("[[1,2,3]]", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, nullptr, nullptr, &globalContext, &store);
|
||||
assertCalculationDisplay("[[1,x,3]]", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, nullptr, "[[1,undef,3]]", &globalContext, &store);
|
||||
assertCalculationDisplay("[[1,x,3]]", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, nullptr, "undef", &globalContext, &store);
|
||||
assertCalculationDisplay("28^7", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Unknown, nullptr, nullptr, &globalContext, &store);
|
||||
assertCalculationDisplay("3+√(2)→a", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "√(2)+3", nullptr, &globalContext, &store);
|
||||
Ion::Storage::sharedStorage()->recordNamed("a.exp").destroy();
|
||||
|
||||
@@ -50,10 +50,10 @@ QUIZ_CASE(poincare_addition_evaluate) {
|
||||
assert_parsed_expression_evaluates_to<float>("𝐢", "𝐢");
|
||||
assert_parsed_expression_evaluates_to<float>("𝐢+𝐢", "2×𝐢");
|
||||
assert_parsed_expression_evaluates_to<double>("2+𝐢+4+𝐢", "6+2×𝐢");
|
||||
assert_parsed_expression_evaluates_to<float>("[[1,2][3,4][5,6]]+3", "[[4,5][6,7][8,9]]");
|
||||
assert_parsed_expression_evaluates_to<double>("[[1,2+𝐢][3,4][5,6]]+3+𝐢", "[[4+𝐢,5+2×𝐢][6+𝐢,7+𝐢][8+𝐢,9+𝐢]]");
|
||||
assert_parsed_expression_evaluates_to<float>("3+[[1,2][3,4][5,6]]", "[[4,5][6,7][8,9]]");
|
||||
assert_parsed_expression_evaluates_to<double>("3+𝐢+[[1,2+𝐢][3,4][5,6]]", "[[4+𝐢,5+2×𝐢][6+𝐢,7+𝐢][8+𝐢,9+𝐢]]");
|
||||
assert_parsed_expression_evaluates_to<float>("[[1,2][3,4][5,6]]+3", "undef");
|
||||
assert_parsed_expression_evaluates_to<double>("[[1,2+𝐢][3,4][5,6]]+3+𝐢", "undef");
|
||||
assert_parsed_expression_evaluates_to<float>("3+[[1,2][3,4][5,6]]", "undef");
|
||||
assert_parsed_expression_evaluates_to<double>("3+𝐢+[[1,2+𝐢][3,4][5,6]]", "undef");
|
||||
assert_parsed_expression_evaluates_to<float>("[[1,2][3,4][5,6]]+[[1,2][3,4][5,6]]", "[[2,4][6,8][10,12]]");
|
||||
assert_parsed_expression_evaluates_to<double>("[[1,2+𝐢][3,4][5,6]]+[[1,2+𝐢][3,4][5,6]]", "[[2,4+2×𝐢][6,8][10,12]]");
|
||||
}
|
||||
|
||||
@@ -86,5 +86,75 @@ QUIZ_CASE(poincare_simplify_mix) {
|
||||
//assert_parsed_expression_simplify_to("log(cos(9)^ln(6), 9)", "ln(6)×log(cos(9), 9)"); // TODO: for this to work, we must know the sign of cos(9)
|
||||
assert_parsed_expression_simplify_to("(((√(6)-√(2))/4)/((√(6)+√(2))/4))+1", "-√(3)+3");
|
||||
//assert_parsed_expression_simplify_to("1/√(𝐢) × (√(2)-𝐢×√(2))", "-2𝐢"); // TODO: get rid of complex at denominator?
|
||||
|
||||
}
|
||||
|
||||
QUIZ_CASE(poincare_simplify_matrix) {
|
||||
assert_parsed_expression_simplify_to("abs([[1,-1][2,-3]])", "[[1,1][2,3]]");
|
||||
assert_parsed_expression_simplify_to("acos([[1,0]])", "[[0,π/2]]");
|
||||
assert_parsed_expression_simplify_to("asin([[1,0]])", "[[π/2,0]]");
|
||||
assert_parsed_expression_simplify_to("atan([[1,0]])", "[[π/4,0]]");
|
||||
assert_parsed_expression_simplify_to("binomial([[0,180]],1)", "undef");
|
||||
assert_parsed_expression_simplify_to("binomial(1,[[0,180]])", "undef");
|
||||
assert_parsed_expression_simplify_to("binomial([[0,180]],[[1]])", "undef");
|
||||
assert_parsed_expression_simplify_to("ceil([[0.3,180]])", "[[1,180]]");
|
||||
assert_parsed_expression_simplify_to("arg([[1,1+𝐢]])", "[[0,π/4]]");
|
||||
assert_parsed_expression_simplify_to("confidence([[0,180]],1)", "undef");
|
||||
assert_parsed_expression_simplify_to("confidence(1,[[0,180]])", "undef");
|
||||
assert_parsed_expression_simplify_to("confidence([[0,180]],[[1]])", "undef");
|
||||
assert_parsed_expression_simplify_to("conj([[1,1+𝐢]])", "[[1,1-𝐢]]");
|
||||
assert_parsed_expression_simplify_to("cos([[0,π]])", "[[1,-1]]");
|
||||
assert_parsed_expression_simplify_to("diff([[0,180]],x,1)", "undef");
|
||||
assert_parsed_expression_simplify_to("diff(1,x,[[0,180]])", "undef");
|
||||
assert_parsed_expression_simplify_to("quo([[0,180]],1)", "undef");
|
||||
assert_parsed_expression_simplify_to("quo(1,[[0,180]])", "undef");
|
||||
assert_parsed_expression_simplify_to("quo([[0,180]],[[1]])", "undef");
|
||||
assert_parsed_expression_simplify_to("rem([[0,180]],1)", "undef");
|
||||
assert_parsed_expression_simplify_to("rem(1,[[0,180]])", "undef");
|
||||
assert_parsed_expression_simplify_to("rem([[0,180]],[[1]])", "undef");
|
||||
assert_parsed_expression_simplify_to("factor([[0,180]])", "undef");
|
||||
assert_parsed_expression_simplify_to("[[1,3]]!", "[[1,6]]");
|
||||
assert_parsed_expression_simplify_to("floor([[0.3,180]])", "[[0,180]]");
|
||||
assert_parsed_expression_simplify_to("frac([[0.3,180]])", "[[3/10,0]]");
|
||||
assert_parsed_expression_simplify_to("gcd([[0,180]],1)", "undef");
|
||||
assert_parsed_expression_simplify_to("gcd(1,[[0,180]])", "undef");
|
||||
assert_parsed_expression_simplify_to("gcd([[0,180]],[[1]])", "undef");
|
||||
assert_parsed_expression_simplify_to("acosh([[0,π]])", "[[acosh(0),acosh(π)]]");
|
||||
assert_parsed_expression_simplify_to("asinh([[0,π]])", "[[asinh(0),asinh(π)]]");
|
||||
assert_parsed_expression_simplify_to("atanh([[0,π]])", "[[atanh(0),atanh(π)]]");
|
||||
assert_parsed_expression_simplify_to("cosh([[0,π]])", "[[cosh(0),cosh(π)]]");
|
||||
assert_parsed_expression_simplify_to("sinh([[0,π]])", "[[sinh(0),sinh(π)]]");
|
||||
assert_parsed_expression_simplify_to("tanh([[0,π]])", "[[tanh(0),tanh(π)]]");
|
||||
assert_parsed_expression_simplify_to("im([[1,1+𝐢]])", "[[0,1]]");
|
||||
assert_parsed_expression_simplify_to("int([[0,180]],x,1,2)", "undef");
|
||||
assert_parsed_expression_simplify_to("int(1,x,[[0,180]],1)", "undef");
|
||||
assert_parsed_expression_simplify_to("int(1,x,1,[[0,180]])", "undef");
|
||||
assert_parsed_expression_simplify_to("log([[2,3]])", "[[log(2),log(3)]]");
|
||||
assert_parsed_expression_simplify_to("log([[2,3]],5)", "[[log(2,5),log(3,5)]]");
|
||||
assert_parsed_expression_simplify_to("log(5,[[2,3]])", "undef");
|
||||
assert_parsed_expression_simplify_to("ln([[2,3]])", "[[ln(2),ln(3)]]");
|
||||
assert_parsed_expression_simplify_to("root([[2,3]],5)", "undef");
|
||||
assert_parsed_expression_simplify_to("root(5,[[2,3]])", "undef");
|
||||
assert_parsed_expression_simplify_to("permute([[2,3]],5)", "undef");
|
||||
assert_parsed_expression_simplify_to("permute(5,[[2,3]])", "undef");
|
||||
assert_parsed_expression_simplify_to("prediction([[2,3]],5)", "undef");
|
||||
assert_parsed_expression_simplify_to("prediction(5,[[2,3]])", "undef");
|
||||
assert_parsed_expression_simplify_to("prediction95([[2,3]],5)", "undef");
|
||||
assert_parsed_expression_simplify_to("prediction95(5,[[2,3]])", "undef");
|
||||
assert_parsed_expression_simplify_to("product(1,x,[[0,180]],1)", "undef");
|
||||
assert_parsed_expression_simplify_to("product(1,x,1,[[0,180]])", "undef");
|
||||
assert_parsed_expression_simplify_to("randint([[2,3]],5)", "undef");
|
||||
assert_parsed_expression_simplify_to("randint(5,[[2,3]])", "undef");
|
||||
assert_parsed_expression_simplify_to("re([[1,𝐢]])", "[[1,0]]");
|
||||
assert_parsed_expression_simplify_to("round([[2.12,3.42]], 1)", "[[21/10,17/5]]");
|
||||
assert_parsed_expression_simplify_to("round(1.3, [[2.1,3.4]])", "undef");
|
||||
assert_parsed_expression_simplify_to("round(1.3, [[2.1,3.4]])", "undef");
|
||||
assert_parsed_expression_simplify_to("sign([[2.1,3.4]])", "undef");
|
||||
assert_parsed_expression_simplify_to("sin([[0,π]])", "[[0,0]]");
|
||||
assert_parsed_expression_simplify_to("sum(1,x,[[0,180]],1)", "undef");
|
||||
assert_parsed_expression_simplify_to("sum(1,x,1,[[0,180]])", "undef");
|
||||
assert_parsed_expression_simplify_to("√([[2.1,3.4]])", "undef");
|
||||
assert_parsed_expression_simplify_to("[[2,3.4]]-[[0.1,3.1]]", "[[19/10,3/10]]");
|
||||
assert_parsed_expression_simplify_to("[[2,3.4]]-1", "undef");
|
||||
assert_parsed_expression_simplify_to("1-[[0.1,3.1]]", "undef");
|
||||
assert_parsed_expression_simplify_to("tan([[0,π/4]])", "[[0,1]]");
|
||||
}
|
||||
|
||||
@@ -8,10 +8,10 @@ using namespace Poincare;
|
||||
QUIZ_CASE(poincare_subtraction_evaluate) {
|
||||
assert_parsed_expression_evaluates_to<float>("1-2", "-1");
|
||||
assert_parsed_expression_evaluates_to<double>("3+𝐢-(4+𝐢)", "-1");
|
||||
assert_parsed_expression_evaluates_to<float>("[[1,2][3,4][5,6]]-3", "[[-2,-1][0,1][2,3]]");
|
||||
assert_parsed_expression_evaluates_to<double>("[[1,2+𝐢][3,4][5,6]]-(4+𝐢)", "[[-3-𝐢,-2][-1-𝐢,-𝐢][1-𝐢,2-𝐢]]");
|
||||
assert_parsed_expression_evaluates_to<float>("3-[[1,2][3,4][5,6]]", "[[2,1][0,-1][-2,-3]]");
|
||||
assert_parsed_expression_evaluates_to<double>("3+𝐢-[[1,2+𝐢][3,4][5,6]]", "[[2+𝐢,1][𝐢,-1+𝐢][-2+𝐢,-3+𝐢]]");
|
||||
assert_parsed_expression_evaluates_to<float>("[[1,2][3,4][5,6]]-3", "undef");
|
||||
assert_parsed_expression_evaluates_to<double>("[[1,2+𝐢][3,4][5,6]]-(4+𝐢)", "undef");
|
||||
assert_parsed_expression_evaluates_to<float>("3-[[1,2][3,4][5,6]]", "undef");
|
||||
assert_parsed_expression_evaluates_to<double>("3+𝐢-[[1,2+𝐢][3,4][5,6]]", "undef");
|
||||
assert_parsed_expression_evaluates_to<float>("[[1,2][3,4][5,6]]-[[6,5][4,3][2,1]]", "[[-5,-3][-1,1][3,5]]");
|
||||
assert_parsed_expression_evaluates_to<double>("[[1,2+𝐢][3,4][5,6]]-[[1,2+𝐢][3,4][5,6]]", "[[0,0][0,0][0,0]]");
|
||||
}
|
||||
|
||||
@@ -138,15 +138,15 @@ QUIZ_CASE(poincare_user_variable_composed_functions) {
|
||||
|
||||
// g: x→f(x-2)+f(x+1)
|
||||
assert_simplify("f(x-2)+f(x+1)→g(x)");
|
||||
// Add a matrix to bypass simplification
|
||||
assert_parsed_expression_evaluates_to<double>("g(3)+[[1]]", "[[18]]");
|
||||
// Add a sum to bypass simplification
|
||||
assert_parsed_expression_evaluates_to<double>("g(3)+sum(1, n, 2, 4)", "20");
|
||||
assert_parsed_expression_evaluates_to<double>("g(5)", "45");
|
||||
|
||||
// g: x→x+1
|
||||
assert_simplify("x+1→g(x)");
|
||||
assert_parsed_expression_evaluates_to<double>("f(g(4))", "25");
|
||||
// Add a matrix to bypass simplification
|
||||
assert_parsed_expression_evaluates_to<double>("f(g(4))+[[1]]", "[[26]]");
|
||||
// Add a sum to bypass simplification
|
||||
assert_parsed_expression_evaluates_to<double>("f(g(4))+sum(1, n, 2, 4)", "28");
|
||||
|
||||
// Clean the storage for other tests
|
||||
Ion::Storage::sharedStorage()->recordNamed("f.func").destroy();
|
||||
|
||||
Reference in New Issue
Block a user