diff --git a/apps/calculation/test/calculation_store.cpp b/apps/calculation/test/calculation_store.cpp index 2062b777f..f3ee5df53 100644 --- a/apps/calculation/test/calculation_store.cpp +++ b/apps/calculation/test/calculation_store.cpp @@ -152,18 +152,18 @@ QUIZ_CASE(calculation_complex_format) { assertCalculationDisplay("√(-1)", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, nullptr, "𝐒", &globalContext, &store); assertCalculationDisplay("ln(-2)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "ln(-2)", nullptr, &globalContext, &store); assertCalculationDisplay("√(-1)Γ—βˆš(-1)", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, nullptr, "-1", &globalContext, &store); - assertCalculationDisplay("(-8)^(1/3)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "1+√(3)𝐒", nullptr, &globalContext, &store); - assertCalculationDisplay("(-8)^(2/3)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "-2+2√(3)𝐒", nullptr, &globalContext, &store); - assertCalculationDisplay("(-2)^(1/4)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "root(8,4)/2+\u0012root(8,4)/2\u0013𝐒", nullptr, &globalContext, &store); + assertCalculationDisplay("(-8)^(1/3)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "1+√(3)×𝐒", nullptr, &globalContext, &store); + assertCalculationDisplay("(-8)^(2/3)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "-2+2Γ—βˆš(3)×𝐒", nullptr, &globalContext, &store); + assertCalculationDisplay("(-2)^(1/4)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "root(8,4)/2+root(8,4)/2×𝐒", nullptr, &globalContext, &store); Poincare::Preferences::sharedPreferences()->setComplexFormat(Poincare::Preferences::ComplexFormat::Polar); - assertCalculationDisplay("1+𝐒", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "√(2)β„―^\u0012\u0012Ο€/4\u0013𝐒\u0013", nullptr, &globalContext, &store); - assertCalculationDisplay("√(-1)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "β„―^\u0012\u0012Ο€/2\u0013𝐒\u0013", nullptr, &globalContext, &store); + assertCalculationDisplay("1+𝐒", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "√(2)Γ—β„―^\u0012Ο€/4×𝐒\u0013", nullptr, &globalContext, &store); + assertCalculationDisplay("√(-1)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "β„―^\u0012Ο€/2×𝐒\u0013", nullptr, &globalContext, &store); assertCalculationDisplay("ln(-2)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "ln(-2)", nullptr, &globalContext, &store); - assertCalculationDisplay("√(-1)Γ—βˆš(-1)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Unknown, nullptr, "β„―^\u00123.1415926535898𝐒\u0013", &globalContext, &store); - assertCalculationDisplay("(-8)^(1/3)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "2β„―^\u0012\u0012Ο€/3\u0013𝐒\u0013", nullptr, &globalContext, &store); - assertCalculationDisplay("(-8)^(2/3)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "4β„―^\u0012\u00122Ο€/3\u0013𝐒\u0013", nullptr, &globalContext, &store); - assertCalculationDisplay("(-2)^(1/4)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "root(2,4)β„―^\u0012\u0012Ο€/4\u0013𝐒\u0013", nullptr, &globalContext, &store); + assertCalculationDisplay("√(-1)Γ—βˆš(-1)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Unknown, nullptr, "β„―^\u00123.1415926535898×𝐒\u0013", &globalContext, &store); + assertCalculationDisplay("(-8)^(1/3)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "2Γ—β„―^\u0012Ο€/3×𝐒\u0013", nullptr, &globalContext, &store); + assertCalculationDisplay("(-8)^(2/3)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "4Γ—β„―^\u0012\u00122Γ—Ο€\u0013/3×𝐒\u0013", nullptr, &globalContext, &store); + assertCalculationDisplay("(-2)^(1/4)", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "root(2,4)Γ—β„―^\u0012Ο€/4×𝐒\u0013", nullptr, &globalContext, &store); Poincare::Preferences::sharedPreferences()->setComplexFormat(Poincare::Preferences::ComplexFormat::Cartesian); } diff --git a/apps/solver/test/equation_store.cpp b/apps/solver/test/equation_store.cpp index 3ab0cfe33..f98a56125 100644 --- a/apps/solver/test/equation_store.cpp +++ b/apps/solver/test/equation_store.cpp @@ -233,7 +233,7 @@ QUIZ_CASE(equation_solve_complex_format) { assert_equation_system_exact_solve_to(equations1, EquationStore::Error::NoError, EquationStore::Type::LinearSystem, (const char **)variablesx, solutions0Polar, 1); // x^2+x+1=0 - const char * solutions2Polar[] = {"β„―^\u0012-\u0012\u00122Ο€\u0013/\u00123\u0013\u0013𝐒\u0013","β„―^\u0012\u0012\u00122Ο€\u0013/\u00123\u0013\u0013𝐒\u0013", "3β„―^\u0012π𝐒\u0013"}; // β„―^(-(2Ο€/3)𝐒), β„―^((2Ο€/3)𝐒), 3β„―^(π𝐒) + const char * solutions2Polar[] = {"β„―^\u0012-\u0012\u00122Ο€\u0013/\u00123\u0013\u0013𝐒\u0013","β„―^\u0012\u0012\u00122Ο€\u0013/\u00123\u0013\u0013𝐒\u0013", "3β„―^\u0012π·𝐒\u0013"}; // β„―^(-(2Ο€/3)𝐒), β„―^((2Ο€/3)𝐒), 3β„―^(π𝐒) assert_equation_system_exact_solve_to(equations2, EquationStore::Error::NoError, EquationStore::Type::PolynomialMonovariable, (const char **)variablesx, solutions2Polar, 3); // x^2-√(-1)=0 diff --git a/poincare/test/approximation.cpp b/poincare/test/approximation.cpp index ac2e35ebd..90879fb3b 100644 --- a/poincare/test/approximation.cpp +++ b/poincare/test/approximation.cpp @@ -91,14 +91,14 @@ QUIZ_CASE(poincare_approximation_infinity) { QUIZ_CASE(poincare_approximation_addition) { assert_expression_approximates_to("1+2", "3"); - assert_expression_approximates_to("𝐒+𝐒", "2𝐒"); - assert_expression_approximates_to("2+𝐒+4+𝐒", "6+2𝐒"); + assert_expression_approximates_to("𝐒+𝐒", "2×𝐒"); + assert_expression_approximates_to("2+𝐒+4+𝐒", "6+2×𝐒"); assert_expression_approximates_to("[[1,2][3,4][5,6]]+3", "undef"); assert_expression_approximates_to("[[1,2+𝐒][3,4][5,6]]+3+𝐒", "undef"); assert_expression_approximates_to("3+[[1,2][3,4][5,6]]", "undef"); assert_expression_approximates_to("3+𝐒+[[1,2+𝐒][3,4][5,6]]", "undef"); assert_expression_approximates_to("[[1,2][3,4][5,6]]+[[1,2][3,4][5,6]]", "[[2,4][6,8][10,12]]"); - assert_expression_approximates_to("[[1,2+𝐒][3,4][5,6]]+[[1,2+𝐒][3,4][5,6]]", "[[2,4+2𝐒][6,8][10,12]]"); + assert_expression_approximates_to("[[1,2+𝐒][3,4][5,6]]+[[1,2+𝐒][3,4][5,6]]", "[[2,4+2×𝐒][6,8][10,12]]"); assert_expression_approximates_to_scalar("1+2", 3.0f); assert_expression_approximates_to_scalar("𝐒+𝐒", NAN); @@ -107,13 +107,13 @@ QUIZ_CASE(poincare_approximation_addition) { QUIZ_CASE(poincare_approximation_multiplication) { assert_expression_approximates_to("1Γ—2", "2"); - assert_expression_approximates_to("(3+𝐒)Γ—(4+𝐒)", "11+7𝐒"); + assert_expression_approximates_to("(3+𝐒)Γ—(4+𝐒)", "11+7×𝐒"); assert_expression_approximates_to("[[1,2][3,4][5,6]]Γ—2", "[[2,4][6,8][10,12]]"); - assert_expression_approximates_to("[[1,2+𝐒][3,4][5,6]]Γ—(3+𝐒)", "[[3+𝐒,5+5𝐒][9+3𝐒,12+4𝐒][15+5𝐒,18+6𝐒]]"); + assert_expression_approximates_to("[[1,2+𝐒][3,4][5,6]]Γ—(3+𝐒)", "[[3+𝐒,5+5×𝐒][9+3×𝐒,12+4×𝐒][15+5×𝐒,18+6×𝐒]]"); assert_expression_approximates_to("2Γ—[[1,2][3,4][5,6]]", "[[2,4][6,8][10,12]]"); - assert_expression_approximates_to("(3+𝐒)Γ—[[1,2+𝐒][3,4][5,6]]", "[[3+𝐒,5+5𝐒][9+3𝐒,12+4𝐒][15+5𝐒,18+6𝐒]]"); + assert_expression_approximates_to("(3+𝐒)Γ—[[1,2+𝐒][3,4][5,6]]", "[[3+𝐒,5+5×𝐒][9+3×𝐒,12+4×𝐒][15+5×𝐒,18+6×𝐒]]"); assert_expression_approximates_to("[[1,2][3,4][5,6]]Γ—[[1,2,3,4][5,6,7,8]]", "[[11,14,17,20][23,30,37,44][35,46,57,68]]"); - assert_expression_approximates_to("[[1,2+𝐒][3,4][5,6]]Γ—[[1,2+𝐒,3,4][5,6+𝐒,7,8]]", "[[11+5𝐒,13+9𝐒,17+7𝐒,20+8𝐒][23,30+7𝐒,37,44][35,46+11𝐒,57,68]]"); + assert_expression_approximates_to("[[1,2+𝐒][3,4][5,6]]Γ—[[1,2+𝐒,3,4][5,6+𝐒,7,8]]", "[[11+5×𝐒,13+9×𝐒,17+7×𝐒,20+8×𝐒][23,30+7×𝐒,37,44][35,46+11×𝐒,57,68]]"); assert_expression_approximates_to_scalar("1Γ—2", 2.0f); assert_expression_approximates_to_scalar("(3+𝐒)Γ—(4+𝐒)", NAN); @@ -122,15 +122,15 @@ QUIZ_CASE(poincare_approximation_multiplication) { QUIZ_CASE(poincare_approximation_power) { assert_expression_approximates_to("2^3", "8"); - assert_expression_approximates_to("(3+𝐒)^4", "28+96𝐒"); - assert_expression_approximates_to("4^(3+𝐒)", "11.74125+62.91378𝐒"); - assert_expression_approximates_to("(3+𝐒)^(3+𝐒)", "-11.898191759852+19.592921596609𝐒"); + assert_expression_approximates_to("(3+𝐒)^4", "28+96×𝐒"); + assert_expression_approximates_to("4^(3+𝐒)", "11.74125+62.91378×𝐒"); + assert_expression_approximates_to("(3+𝐒)^(3+𝐒)", "-11.898191759852+19.592921596609×𝐒"); assert_expression_approximates_to("0^0", Undefined::Name()); assert_expression_approximates_to("0^2", "0"); assert_expression_approximates_to("0^(-2)", Undefined::Name()); - assert_expression_approximates_to("(-2)^4.2", "14.8690638497+10.8030072384𝐒", Radian, Cartesian, 12); + assert_expression_approximates_to("(-2)^4.2", "14.8690638497+10.8030072384×𝐒", Radian, Cartesian, 12); assert_expression_approximates_to("(-0.1)^4", "0.0001", Radian, Cartesian, 12); assert_expression_approximates_to("0^2", "0"); @@ -141,12 +141,12 @@ QUIZ_CASE(poincare_approximation_power) { assert_expression_approximates_to("β„―^(𝐒×π)", "-1"); assert_expression_approximates_to("β„―^(𝐒×π+2)", "-7.38906", Radian, Cartesian, 6); assert_expression_approximates_to("β„―^(𝐒×π+2)", "-7.3890560989307"); - assert_expression_approximates_to("(-1)^(1/3)", "0.5+0.8660254𝐒"); - assert_expression_approximates_to("(-1)^(1/3)", "0.5+8.6602540378444ᴇ-1𝐒"); - assert_expression_approximates_to("β„―^(𝐒×π/3)", "0.5+0.866025𝐒", Radian, Cartesian, 6); - assert_expression_approximates_to("β„―^(𝐒×π/3)", "0.5+8.6602540378444ᴇ-1𝐒"); - assert_expression_approximates_to("𝐒^(2/3)", "0.5+0.8660254𝐒"); - assert_expression_approximates_to("𝐒^(2/3)", "0.5+8.6602540378444ᴇ-1𝐒"); + assert_expression_approximates_to("(-1)^(1/3)", "0.5+0.8660254×𝐒"); + assert_expression_approximates_to("(-1)^(1/3)", "0.5+8.6602540378444ᴇ-1×𝐒"); + assert_expression_approximates_to("β„―^(𝐒×π/3)", "0.5+0.866025×𝐒", Radian, Cartesian, 6); + assert_expression_approximates_to("β„―^(𝐒×π/3)", "0.5+8.6602540378444ᴇ-1×𝐒"); + assert_expression_approximates_to("𝐒^(2/3)", "0.5+0.8660254×𝐒"); + assert_expression_approximates_to("𝐒^(2/3)", "0.5+8.6602540378444ᴇ-1×𝐒"); assert_expression_approximates_to_scalar("2^3", 8.0f); assert_expression_approximates_to_scalar("(3+𝐒)^(4+𝐒)", NAN); @@ -180,15 +180,15 @@ QUIZ_CASE(poincare_approximation_constant) { QUIZ_CASE(poincare_approximation_division) { assert_expression_approximates_to("1/2", "0.5"); - assert_expression_approximates_to("(3+𝐒)/(4+𝐒)", "7.6470588235294ᴇ-1+5.8823529411765ᴇ-2𝐒"); + assert_expression_approximates_to("(3+𝐒)/(4+𝐒)", "7.6470588235294ᴇ-1+5.8823529411765ᴇ-2×𝐒"); assert_expression_approximates_to("[[1,2][3,4][5,6]]/2", "[[0.5,1][1.5,2][2.5,3]]"); - assert_expression_approximates_to("[[1,2+𝐒][3,4][5,6]]/(1+𝐒)", "[[0.5-0.5𝐒,1.5-0.5𝐒][1.5-1.5𝐒,2-2𝐒][2.5-2.5𝐒,3-3𝐒]]"); + assert_expression_approximates_to("[[1,2+𝐒][3,4][5,6]]/(1+𝐒)", "[[0.5-0.5×𝐒,1.5-0.5×𝐒][1.5-1.5×𝐒,2-2×𝐒][2.5-2.5×𝐒,3-3×𝐒]]"); assert_expression_approximates_to("[[1,2][3,4][5,6]]/2", "[[0.5,1][1.5,2][2.5,3]]"); assert_expression_approximates_to("[[1,2][3,4]]/[[3,4][6,9]]", "[[-1,6.6666666666667ᴇ-1][1,0]]"); assert_expression_approximates_to("3/[[3,4][5,6]]", "[[-9,6][7.5,-4.5]]"); - assert_expression_approximates_to("(3+4𝐒)/[[1,𝐒][3,4]]", "[[4𝐒,1][-3𝐒,𝐒]]"); - assert_expression_approximates_to("1ᴇ20/(1ᴇ20+1ᴇ20𝐒)", "0.5-0.5𝐒"); - assert_expression_approximates_to("1ᴇ155/(1ᴇ155+1ᴇ155𝐒)", "0.5-0.5𝐒"); + assert_expression_approximates_to("(3+4𝐒)/[[1,𝐒][3,4]]", "[[4×𝐒,1][-3×𝐒,𝐒]]"); + assert_expression_approximates_to("1ᴇ20/(1ᴇ20+1ᴇ20𝐒)", "0.5-0.5×𝐒"); + assert_expression_approximates_to("1ᴇ155/(1ᴇ155+1ᴇ155𝐒)", "0.5-0.5×𝐒"); assert_expression_approximates_to_scalar("1/2", 0.5f); assert_expression_approximates_to_scalar("(3+𝐒)/(4+𝐒)", NAN); @@ -200,16 +200,16 @@ QUIZ_CASE(poincare_approximation_logarithm) { assert_expression_approximates_to("log(6,7)", "0.9207822211616"); assert_expression_approximates_to("log(5)", "0.69897"); assert_expression_approximates_to("ln(5)", "1.6094379124341"); - assert_expression_approximates_to("log(2+5×𝐒,64)", "0.4048317+0.2862042𝐒"); - assert_expression_approximates_to("log(6,7+4×𝐒)", "8.0843880717528ᴇ-1-2.0108238082167ᴇ-1𝐒"); - assert_expression_approximates_to("log(5+2×𝐒)", "0.731199+0.1652518𝐒"); - assert_expression_approximates_to("ln(5+2×𝐒)", "1.6836479149932+3.8050637711236ᴇ-1𝐒"); + assert_expression_approximates_to("log(2+5×𝐒,64)", "0.4048317+0.2862042×𝐒"); + assert_expression_approximates_to("log(6,7+4×𝐒)", "8.0843880717528ᴇ-1-2.0108238082167ᴇ-1×𝐒"); + assert_expression_approximates_to("log(5+2×𝐒)", "0.731199+0.1652518×𝐒"); + assert_expression_approximates_to("ln(5+2×𝐒)", "1.6836479149932+3.8050637711236ᴇ-1×𝐒"); assert_expression_approximates_to("log(0,0)", Undefined::Name()); assert_expression_approximates_to("log(0)", "-inf"); assert_expression_approximates_to("log(2,0)", "0"); // WARNING: evaluate on branch cut can be multivalued - assert_expression_approximates_to("ln(-4)", "1.3862943611199+3.1415926535898𝐒"); + assert_expression_approximates_to("ln(-4)", "1.3862943611199+3.1415926535898×𝐒"); } template @@ -243,8 +243,8 @@ QUIZ_CASE(poincare_approximation_function) { assert_expression_approximates_to("det([[1,23,3][4,5,6][7,8,9]])", "126", Degree, Cartesian, 6); // FIXME: the determinant computation is not precised enough to be displayed with 7 significant digits assert_expression_approximates_to("det([[1,23,3][4,5,6][7,8,9]])", "126"); - assert_expression_approximates_to("det([[𝐒,23-2𝐒,3×𝐒][4+𝐒,5×𝐒,6][7,8×𝐒+2,9]])", "126-231𝐒", Degree, Cartesian, 6); // FIXME: the determinant computation is not precised enough to be displayed with 7 significant digits - assert_expression_approximates_to("det([[𝐒,23-2𝐒,3×𝐒][4+𝐒,5×𝐒,6][7,8×𝐒+2,9]])", "126-231𝐒"); + assert_expression_approximates_to("det([[𝐒,23-2𝐒,3×𝐒][4+𝐒,5×𝐒,6][7,8×𝐒+2,9]])", "126-231×𝐒", Degree, Cartesian, 6); // FIXME: the determinant computation is not precised enough to be displayed with 7 significant digits + assert_expression_approximates_to("det([[𝐒,23-2𝐒,3×𝐒][4+𝐒,5×𝐒,6][7,8×𝐒+2,9]])", "126-231×𝐒"); assert_expression_approximates_to("diff(2Γ—x, x, 2)", "2"); assert_expression_approximates_to("diff(2Γ—x, x, 2)", "2"); @@ -311,16 +311,16 @@ QUIZ_CASE(poincare_approximation_function) { assert_expression_approximates_to("dim([[1,2,3][4,5,-6]])", "[[2,3]]"); assert_expression_approximates_to("dim([[1,2,3][4,5,-6]])", "[[2,3]]"); - assert_expression_approximates_to("conj(3+2×𝐒)", "3-2𝐒"); - assert_expression_approximates_to("conj(3+2×𝐒)", "3-2𝐒"); + assert_expression_approximates_to("conj(3+2×𝐒)", "3-2×𝐒"); + assert_expression_approximates_to("conj(3+2×𝐒)", "3-2×𝐒"); assert_expression_approximates_to("factor(-23/4)", "-5.75"); assert_expression_approximates_to("factor(-123/24)", "-5.125"); assert_expression_approximates_to("inverse([[1,2,3][4,5,-6][7,8,9]])", "[[-1.2917,-0.083333,0.375][1.0833,0.16667,-0.25][0.041667,-0.083333,0.041667]]", Degree, Cartesian, 5); // inverse is not precise enough to display 7 significative digits assert_expression_approximates_to("inverse([[1,2,3][4,5,-6][7,8,9]])", "[[-1.2916666666667,-8.3333333333333ᴇ-2,0.375][1.0833333333333,1.6666666666667ᴇ-1,-0.25][4.1666666666667ᴇ-2,-8.3333333333333ᴇ-2,4.1666666666667ᴇ-2]]"); - assert_expression_approximates_to("inverse([[𝐒,23-2𝐒,3×𝐒][4+𝐒,5×𝐒,6][7,8×𝐒+2,9]])", "[[-0.0118-0.0455𝐒,-0.5-0.727𝐒,0.318+0.489𝐒][0.0409+0.00364𝐒,0.04-0.0218𝐒,-0.0255+0.00091𝐒][0.00334-0.00182𝐒,0.361+0.535𝐒,-0.13-0.358𝐒]]", Degree, Cartesian, 3); // inverse is not precise enough to display 7 significative digits - assert_expression_approximates_to("inverse([[𝐒,23-2𝐒,3×𝐒][4+𝐒,5×𝐒,6][7,8×𝐒+2,9]])", "[[-0.0118289353958-0.0454959053685𝐒,-0.500454959054-0.727024567789𝐒,0.31847133758+0.488626023658𝐒][0.0409463148317+3.63967242948ᴇ-3𝐒,0.0400363967243-0.0218380345769𝐒,-0.0254777070064+9.0991810737ᴇ-4𝐒][3.33636639369ᴇ-3-1.81983621474ᴇ-3𝐒,0.36093418259+0.534728541098𝐒,-0.130118289354-0.357597816197𝐒]]", Degree, Cartesian, 12); // FIXME: inverse is not precise enough to display 14 significative digits + assert_expression_approximates_to("inverse([[𝐒,23-2𝐒,3×𝐒][4+𝐒,5×𝐒,6][7,8×𝐒+2,9]])", "[[-0.0118-0.0455×𝐒,-0.5-0.727×𝐒,0.318+0.489×𝐒][0.0409+0.00364×𝐒,0.04-0.0218×𝐒,-0.0255+0.00091×𝐒][0.00334-0.00182×𝐒,0.361+0.535×𝐒,-0.13-0.358×𝐒]]", Degree, Cartesian, 3); // inverse is not precise enough to display 7 significative digits + assert_expression_approximates_to("inverse([[𝐒,23-2𝐒,3×𝐒][4+𝐒,5×𝐒,6][7,8×𝐒+2,9]])", "[[-0.0118289353958-0.0454959053685×𝐒,-0.500454959054-0.727024567789×𝐒,0.31847133758+0.488626023658×𝐒][0.0409463148317+3.63967242948ᴇ-3×𝐒,0.0400363967243-0.0218380345769×𝐒,-0.0254777070064+9.0991810737ᴇ-4×𝐒][3.33636639369ᴇ-3-1.81983621474ᴇ-3×𝐒,0.36093418259+0.534728541098×𝐒,-0.130118289354-0.357597816197×𝐒]]", Degree, Cartesian, 12); // FIXME: inverse is not precise enough to display 14 significative digits assert_expression_approximates_to("prediction(0.1, 100)", "[[0,0.2]]"); assert_expression_approximates_to("prediction(0.1, 100)", "[[0,0.2]]"); @@ -328,20 +328,20 @@ QUIZ_CASE(poincare_approximation_function) { assert_expression_approximates_to("prediction95(0.1, 100)", "[[0.0412,0.1588]]"); assert_expression_approximates_to("prediction95(0.1, 100)", "[[0.0412,0.1588]]"); - assert_expression_approximates_to("product(2+k×𝐒,k, 1, 5)", "-100-540𝐒"); - assert_expression_approximates_to("product(2+o×𝐒,o, 1, 5)", "-100-540𝐒"); + assert_expression_approximates_to("product(2+k×𝐒,k, 1, 5)", "-100-540×𝐒"); + assert_expression_approximates_to("product(2+o×𝐒,o, 1, 5)", "-100-540×𝐒"); - assert_expression_approximates_to("root(3+𝐒, 3)", "1.459366+0.1571201𝐒"); - assert_expression_approximates_to("root(3+𝐒, 3)", "1.4593656008684+1.5712012294394ᴇ-1𝐒"); + assert_expression_approximates_to("root(3+𝐒, 3)", "1.459366+0.1571201×𝐒"); + assert_expression_approximates_to("root(3+𝐒, 3)", "1.4593656008684+1.5712012294394ᴇ-1×𝐒"); - assert_expression_approximates_to("root(3, 3+𝐒)", "1.382007-0.1524428𝐒"); - assert_expression_approximates_to("root(3, 3+𝐒)", "1.3820069623326-0.1524427794159𝐒"); + assert_expression_approximates_to("root(3, 3+𝐒)", "1.382007-0.1524428×𝐒"); + assert_expression_approximates_to("root(3, 3+𝐒)", "1.3820069623326-0.1524427794159×𝐒"); assert_expression_approximates_to("root(5^((-𝐒)3^9),𝐒)", "3.504", Degree, Cartesian, 4); assert_expression_approximates_to("root(5^((-𝐒)3^9),𝐒)", "3.5039410843", Degree, Cartesian, 11); - assert_expression_approximates_to("√(3+𝐒)", "1.755317+0.2848488𝐒"); - assert_expression_approximates_to("√(3+𝐒)", "1.7553173018244+2.8484878459314ᴇ-1𝐒"); + assert_expression_approximates_to("√(3+𝐒)", "1.755317+0.2848488×𝐒"); + assert_expression_approximates_to("√(3+𝐒)", "1.7553173018244+2.8484878459314ᴇ-1×𝐒"); assert_expression_approximates_to("sign(-23+1)", "-1"); assert_expression_approximates_to("sign(inf)", "1"); @@ -352,8 +352,8 @@ QUIZ_CASE(poincare_approximation_function) { assert_expression_approximates_to("sign(2+𝐒)", "undef"); assert_expression_approximates_to("sign(undef)", "undef"); - assert_expression_approximates_to("sum(2+n×𝐒,n,1,5)", "10+15𝐒"); - assert_expression_approximates_to("sum(2+n×𝐒,n,1,5)", "10+15𝐒"); + assert_expression_approximates_to("sum(2+n×𝐒,n,1,5)", "10+15×𝐒"); + assert_expression_approximates_to("sum(2+n×𝐒,n,1,5)", "10+15×𝐒"); assert_expression_approximates_to("transpose([[1,2,3][4,5,-6][7,8,9]])", "[[1,4,7][2,5,8][3,-6,9]]"); assert_expression_approximates_to("transpose([[1,7,5][4,2,8]])", "[[1,4][7,2][5,8]]"); @@ -371,8 +371,8 @@ QUIZ_CASE(poincare_approximation_function) { assert_expression_approximates_to("√(-1)", "𝐒"); assert_expression_approximates_to("√(-1)", "𝐒"); - assert_expression_approximates_to("root(-1,3)", "0.5+0.8660254𝐒"); - assert_expression_approximates_to("root(-1,3)", "0.5+8.6602540378444ᴇ-1𝐒"); + assert_expression_approximates_to("root(-1,3)", "0.5+0.8660254×𝐒"); + assert_expression_approximates_to("root(-1,3)", "0.5+8.6602540378444ᴇ-1×𝐒"); assert_expression_approximates_to("int(int(xΓ—x,x,0,x),x,0,4)", "21.33333"); assert_expression_approximates_to("int(int(xΓ—x,x,0,x),x,0,4)", "21.333333333333"); @@ -406,8 +406,8 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("cos(2×𝐒)", "3.7621956910836", Radian); assert_expression_approximates_to("cos(2×𝐒)", "1.0006092967033", Degree); // On C - assert_expression_approximates_to("cos(𝐒-4)", "-1.008625-0.8893952𝐒", Radian); - assert_expression_approximates_to("cos(𝐒-4)", "0.997716+0.00121754𝐒", Degree, Cartesian, 6); + assert_expression_approximates_to("cos(𝐒-4)", "-1.008625-0.8893952×𝐒", Radian); + assert_expression_approximates_to("cos(𝐒-4)", "0.997716+0.00121754×𝐒", Degree, Cartesian, 6); /* sin: R -> R (oscillator) * Ri -> Ri (odd) @@ -421,14 +421,14 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("sin(3Γ—Ο€)", "0", Radian); assert_expression_approximates_to("sin(-540)", "0", Degree); // On RΓ—i - assert_expression_approximates_to("sin(3×𝐒)", "10.01787492741𝐒", Radian); - assert_expression_approximates_to("sin(3×𝐒)", "0.05238381𝐒", Degree); + assert_expression_approximates_to("sin(3×𝐒)", "10.01787492741×𝐒", Radian); + assert_expression_approximates_to("sin(3×𝐒)", "0.05238381×𝐒", Degree); // Symmetry: odd - assert_expression_approximates_to("sin(-3×𝐒)", "-10.01787492741𝐒", Radian); - assert_expression_approximates_to("sin(-3×𝐒)", "-0.05238381𝐒", Degree); + assert_expression_approximates_to("sin(-3×𝐒)", "-10.01787492741×𝐒", Radian); + assert_expression_approximates_to("sin(-3×𝐒)", "-0.05238381×𝐒", Degree); // On: C - assert_expression_approximates_to("sin(𝐒-4)", "1.16781-0.768163𝐒", Radian, Cartesian, 6); - assert_expression_approximates_to("sin(𝐒-4)", "-0.0697671+0.0174117𝐒", Degree, Cartesian, 6); + assert_expression_approximates_to("sin(𝐒-4)", "1.16781-0.768163×𝐒", Radian, Cartesian, 6); + assert_expression_approximates_to("sin(𝐒-4)", "-0.0697671+0.0174117×𝐒", Degree, Cartesian, 6); assert_expression_approximates_to("sin(1.234567890123456ᴇ-15)", "1.23457ᴇ-15", Radian, Cartesian, 6); /* tan: R -> R (tangent-style) @@ -443,14 +443,14 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("tan(3Γ—Ο€)", "0", Radian); assert_expression_approximates_to("tan(-540)", "0", Degree); // On RΓ—i - assert_expression_approximates_to("tan(-2×𝐒)", "-9.6402758007582ᴇ-1𝐒", Radian); - assert_expression_approximates_to("tan(-2×𝐒)", "-0.03489241𝐒", Degree); + assert_expression_approximates_to("tan(-2×𝐒)", "-9.6402758007582ᴇ-1×𝐒", Radian); + assert_expression_approximates_to("tan(-2×𝐒)", "-0.03489241×𝐒", Degree); // Symmetry: odd - assert_expression_approximates_to("tan(2×𝐒)", "9.6402758007582ᴇ-1𝐒", Radian); - assert_expression_approximates_to("tan(2×𝐒)", "0.03489241𝐒", Degree); + assert_expression_approximates_to("tan(2×𝐒)", "9.6402758007582ᴇ-1×𝐒", Radian); + assert_expression_approximates_to("tan(2×𝐒)", "0.03489241×𝐒", Degree); // On C - assert_expression_approximates_to("tan(𝐒-4)", "-0.273553+1.00281𝐒", Radian, Cartesian, 6); - assert_expression_approximates_to("tan(𝐒-4)", "-0.0699054+0.0175368𝐒", Degree, Cartesian, 6); + assert_expression_approximates_to("tan(𝐒-4)", "-0.273553+1.00281×𝐒", Radian, Cartesian, 6); + assert_expression_approximates_to("tan(𝐒-4)", "-0.0699054+0.0175368×𝐒", Degree, Cartesian, 6); /* acos: [-1,1] -> R * ]-inf,-1[ -> Ο€+RΓ—i (odd imaginary) @@ -462,23 +462,23 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("acos(0.03)", "1.5407918249714", Radian); assert_expression_approximates_to("acos(0.5)", "60", Degree); // On [1, inf[ - assert_expression_approximates_to("acos(2)", "1.3169578969248𝐒", Radian); - assert_expression_approximates_to("acos(2)", "75.456129290217𝐒", Degree); + assert_expression_approximates_to("acos(2)", "1.3169578969248×𝐒", Radian); + assert_expression_approximates_to("acos(2)", "75.456129290217×𝐒", Degree); // Symmetry: odd on imaginary - assert_expression_approximates_to("acos(-2)", "3.1415926535898-1.3169578969248𝐒", Radian); - assert_expression_approximates_to("acos(-2)", "180-75.456129290217𝐒", Degree); + assert_expression_approximates_to("acos(-2)", "3.1415926535898-1.3169578969248×𝐒", Radian); + assert_expression_approximates_to("acos(-2)", "180-75.456129290217×𝐒", Degree); // On ]-inf, -1[ - assert_expression_approximates_to("acos(-32)", "3.14159265359-4.158638853279𝐒", Radian, Cartesian, 13); - assert_expression_approximates_to("acos(-32)", "180-238.3𝐒", Degree, Cartesian, 4); + assert_expression_approximates_to("acos(-32)", "3.14159265359-4.158638853279×𝐒", Radian, Cartesian, 13); + assert_expression_approximates_to("acos(-32)", "180-238.3×𝐒", Degree, Cartesian, 4); // On RΓ—i - assert_expression_approximates_to("acos(3×𝐒)", "1.5708-1.8184𝐒", Radian, Cartesian, 5); - assert_expression_approximates_to("acos(3×𝐒)", "90-104.19𝐒", Degree, Cartesian, 5); + assert_expression_approximates_to("acos(3×𝐒)", "1.5708-1.8184×𝐒", Radian, Cartesian, 5); + assert_expression_approximates_to("acos(3×𝐒)", "90-104.19×𝐒", Degree, Cartesian, 5); // Symmetry: odd on imaginary - assert_expression_approximates_to("acos(-3×𝐒)", "1.5708+1.8184𝐒", Radian, Cartesian, 5); - assert_expression_approximates_to("acos(-3×𝐒)", "90+104.19𝐒", Degree, Cartesian, 5); + assert_expression_approximates_to("acos(-3×𝐒)", "1.5708+1.8184×𝐒", Radian, Cartesian, 5); + assert_expression_approximates_to("acos(-3×𝐒)", "90+104.19×𝐒", Degree, Cartesian, 5); // On C - assert_expression_approximates_to("acos(𝐒-4)", "2.8894-2.0966𝐒", Radian, Cartesian, 5); - assert_expression_approximates_to("acos(𝐒-4)", "165.551-120.126𝐒", Degree, Cartesian, 6); + assert_expression_approximates_to("acos(𝐒-4)", "2.8894-2.0966×𝐒", Radian, Cartesian, 5); + assert_expression_approximates_to("acos(𝐒-4)", "165.551-120.126×𝐒", Degree, Cartesian, 6); // Key values assert_expression_approximates_to("acos(0)", "90", Degree); assert_expression_approximates_to("acos(-1)", "180", Degree); @@ -494,21 +494,21 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("asin(0.03)", "3.0004501823477ᴇ-2", Radian); assert_expression_approximates_to("asin(0.5)", "30", Degree); // On [1, inf[ - assert_expression_approximates_to("asin(2)", "1.5707963267949-1.3169578969248𝐒", Radian); - assert_expression_approximates_to("asin(2)", "90-75.456129290217𝐒", Degree); + assert_expression_approximates_to("asin(2)", "1.5707963267949-1.3169578969248×𝐒", Radian); + assert_expression_approximates_to("asin(2)", "90-75.456129290217×𝐒", Degree); // Symmetry: odd - assert_expression_approximates_to("asin(-2)", "-1.5707963267949+1.3169578969248𝐒", Radian); - assert_expression_approximates_to("asin(-2)", "-90+75.456129290217𝐒", Degree); + assert_expression_approximates_to("asin(-2)", "-1.5707963267949+1.3169578969248×𝐒", Radian); + assert_expression_approximates_to("asin(-2)", "-90+75.456129290217×𝐒", Degree); // On ]-inf, -1[ - assert_expression_approximates_to("asin(-32)", "-1.571+4.159𝐒", Radian, Cartesian, 4); - assert_expression_approximates_to("asin(-32)", "-90+238𝐒", Degree, Cartesian, 3); + assert_expression_approximates_to("asin(-32)", "-1.571+4.159×𝐒", Radian, Cartesian, 4); + assert_expression_approximates_to("asin(-32)", "-90+238×𝐒", Degree, Cartesian, 3); // On RΓ—i - assert_expression_approximates_to("asin(3×𝐒)", "1.8184464592321𝐒", Radian); + assert_expression_approximates_to("asin(3×𝐒)", "1.8184464592321×𝐒", Radian); // Symmetry: odd - assert_expression_approximates_to("asin(-3×𝐒)", "-1.8184464592321𝐒", Radian); + assert_expression_approximates_to("asin(-3×𝐒)", "-1.8184464592321×𝐒", Radian); // On C - assert_expression_approximates_to("asin(𝐒-4)", "-1.3186+2.0966𝐒", Radian, Cartesian, 5); - assert_expression_approximates_to("asin(𝐒-4)", "-75.551+120.13𝐒", Degree, Cartesian, 5); + assert_expression_approximates_to("asin(𝐒-4)", "-1.3186+2.0966×𝐒", Radian, Cartesian, 5); + assert_expression_approximates_to("asin(𝐒-4)", "-75.551+120.13×𝐒", Degree, Cartesian, 5); // Key values assert_expression_approximates_to("asin(0)", "0", Degree); assert_expression_approximates_to("asin(-1)", "-90", Degree); @@ -527,24 +527,24 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { // Symmetry: odd assert_expression_approximates_to("atan(-2)", "-1.1071487177941", Radian); // On [-𝐒, 𝐒] - assert_expression_approximates_to("atan(0.2×𝐒)", "0.202733𝐒", Radian, Cartesian, 6); + assert_expression_approximates_to("atan(0.2×𝐒)", "0.202733×𝐒", Radian, Cartesian, 6); // Symmetry: odd - assert_expression_approximates_to("atan(-0.2×𝐒)", "-0.202733𝐒", Radian, Cartesian, 6); + assert_expression_approximates_to("atan(-0.2×𝐒)", "-0.202733×𝐒", Radian, Cartesian, 6); // On [𝐒, inf×𝐒[ - assert_expression_approximates_to("atan(26×𝐒)", "1.5707963267949+3.8480520568064ᴇ-2𝐒", Radian); - assert_expression_approximates_to("atan(26×𝐒)", "90+2.2047714220164𝐒", Degree); + assert_expression_approximates_to("atan(26×𝐒)", "1.5707963267949+3.8480520568064ᴇ-2×𝐒", Radian); + assert_expression_approximates_to("atan(26×𝐒)", "90+2.2047714220164×𝐒", Degree); // Symmetry: odd - assert_expression_approximates_to("atan(-26×𝐒)", "-1.5707963267949-3.8480520568064ᴇ-2𝐒", Radian); + assert_expression_approximates_to("atan(-26×𝐒)", "-1.5707963267949-3.8480520568064ᴇ-2×𝐒", Radian); // On ]-inf×𝐒, -𝐒[ - assert_expression_approximates_to("atan(-3.4×𝐒)", "-1.570796-0.3030679𝐒", Radian); - assert_expression_approximates_to("atan(-3.4×𝐒)", "-90-17.3645𝐒", Degree, Cartesian, 6); + assert_expression_approximates_to("atan(-3.4×𝐒)", "-1.570796-0.3030679×𝐒", Radian); + assert_expression_approximates_to("atan(-3.4×𝐒)", "-90-17.3645×𝐒", Degree, Cartesian, 6); // On C - assert_expression_approximates_to("atan(𝐒-4)", "-1.338973+0.05578589𝐒", Radian); - assert_expression_approximates_to("atan(𝐒-4)", "-76.7175+3.1963𝐒", Degree, Cartesian, 6); + assert_expression_approximates_to("atan(𝐒-4)", "-1.338973+0.05578589×𝐒", Radian); + assert_expression_approximates_to("atan(𝐒-4)", "-76.7175+3.1963×𝐒", Degree, Cartesian, 6); // Key values assert_expression_approximates_to("atan(0)", "0", Degree); - assert_expression_approximates_to("atan(-𝐒)", "-inf𝐒", Radian); - assert_expression_approximates_to("atan(𝐒)", "inf𝐒", Radian); + assert_expression_approximates_to("atan(-𝐒)", "-inf×𝐒", Radian); + assert_expression_approximates_to("atan(𝐒)", "inf×𝐒", Radian); /* cosh: R -> R (even) * R×𝐒 -> R (oscillator) @@ -563,8 +563,8 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("cosh(8×π×𝐒/2)", "1", Radian); assert_expression_approximates_to("cosh(9×π×𝐒/2)", "0", Radian); // On C - assert_expression_approximates_to("cosh(𝐒-4)", "14.7547-22.9637𝐒", Radian, Cartesian, 6); - assert_expression_approximates_to("cosh(𝐒-4)", "14.7547-22.9637𝐒", Degree, Cartesian, 6); + assert_expression_approximates_to("cosh(𝐒-4)", "14.7547-22.9637×𝐒", Radian, Cartesian, 6); + assert_expression_approximates_to("cosh(𝐒-4)", "14.7547-22.9637×𝐒", Degree, Cartesian, 6); /* sinh: R -> R (odd) * R×𝐒 -> R×𝐒 (oscillator) @@ -575,7 +575,7 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { // Symmetry: odd assert_expression_approximates_to("sinh(-2)", "-3.626860407847", Radian); // On R×𝐒 - assert_expression_approximates_to("sinh(43×𝐒)", "-0.8317747426286𝐒", Radian); + assert_expression_approximates_to("sinh(43×𝐒)", "-0.8317747426286×𝐒", Radian); // Oscillator assert_expression_approximates_to("sinh(π×𝐒/2)", "𝐒", Radian); assert_expression_approximates_to("sinh(5×π×𝐒/2)", "𝐒", Radian); @@ -583,8 +583,8 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("sinh(8×π×𝐒/2)", "0", Radian); assert_expression_approximates_to("sinh(9×π×𝐒/2)", "𝐒", Radian); // On C - assert_expression_approximates_to("sinh(𝐒-4)", "-14.7448+22.9791𝐒", Radian, Cartesian, 6); - assert_expression_approximates_to("sinh(𝐒-4)", "-14.7448+22.9791𝐒", Degree, Cartesian, 6); + assert_expression_approximates_to("sinh(𝐒-4)", "-14.7448+22.9791×𝐒", Radian, Cartesian, 6); + assert_expression_approximates_to("sinh(𝐒-4)", "-14.7448+22.9791×𝐒", Degree, Cartesian, 6); /* tanh: R -> R (odd) * R×𝐒 -> R×𝐒 (tangent-style) @@ -594,7 +594,7 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { // Symmetry: odd assert_expression_approximates_to("tanh(-2)", "-9.6402758007582ᴇ-1", Degree); // On RΓ—i - assert_expression_approximates_to("tanh(43×𝐒)", "-1.4983873388552𝐒", Radian); + assert_expression_approximates_to("tanh(43×𝐒)", "-1.4983873388552×𝐒", Radian); // Tangent-style // FIXME: this depends on the libm implementation and does not work on travis/appveyor servers /*assert_expression_approximates_to("tanh(π×𝐒/2)", Undefined::Name(), Radian); @@ -603,8 +603,8 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("tanh(8×π×𝐒/2)", "0", Radian); assert_expression_approximates_to("tanh(9×π×𝐒/2)", Undefined::Name(), Radian);*/ // On C - assert_expression_approximates_to("tanh(𝐒-4)", "-1.00028+0.000610241𝐒", Radian, Cartesian, 6); - assert_expression_approximates_to("tanh(𝐒-4)", "-1.00028+0.000610241𝐒", Degree, Cartesian, 6); + assert_expression_approximates_to("tanh(𝐒-4)", "-1.00028+0.000610241×𝐒", Radian, Cartesian, 6); + assert_expression_approximates_to("tanh(𝐒-4)", "-1.00028+0.000610241×𝐒", Degree, Cartesian, 6); /* acosh: [-1,1] -> R×𝐒 * ]-inf,-1[ -> π×𝐒+R (even on real) @@ -616,24 +616,24 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("acosh(2)", "1.3169578969248", Radian); assert_expression_approximates_to("acosh(2)", "1.3169578969248", Degree); // On ]-inf, -1[ - assert_expression_approximates_to("acosh(-4)", "2.0634370688956+3.1415926535898𝐒", Radian); - assert_expression_approximates_to("acosh(-4)", "2.06344+3.14159𝐒", Radian, Cartesian, 6); + assert_expression_approximates_to("acosh(-4)", "2.0634370688956+3.1415926535898×𝐒", Radian); + assert_expression_approximates_to("acosh(-4)", "2.06344+3.14159×𝐒", Radian, Cartesian, 6); // On ]1,inf[: Symmetry: even on real assert_expression_approximates_to("acosh(4)", "2.0634370688956", Radian); assert_expression_approximates_to("acosh(4)", "2.063437", Radian); // On ]-inf×𝐒, 0[ - assert_expression_approximates_to("acosh(-42×𝐒)", "4.4309584920805-1.5707963267949𝐒", Radian); - assert_expression_approximates_to("acosh(-42×𝐒)", "4.431-1.571𝐒", Radian, Cartesian, 4); + assert_expression_approximates_to("acosh(-42×𝐒)", "4.4309584920805-1.5707963267949×𝐒", Radian); + assert_expression_approximates_to("acosh(-42×𝐒)", "4.431-1.571×𝐒", Radian, Cartesian, 4); // On ]0, 𝐒×inf[: Symmetry: even on real - assert_expression_approximates_to("acosh(42×𝐒)", "4.4309584920805+1.5707963267949𝐒", Radian); - assert_expression_approximates_to("acosh(42×𝐒)", "4.431+1.571𝐒", Radian, Cartesian, 4); + assert_expression_approximates_to("acosh(42×𝐒)", "4.4309584920805+1.5707963267949×𝐒", Radian); + assert_expression_approximates_to("acosh(42×𝐒)", "4.431+1.571×𝐒", Radian, Cartesian, 4); // On C - assert_expression_approximates_to("acosh(𝐒-4)", "2.0966+2.8894𝐒", Radian, Cartesian, 5); - assert_expression_approximates_to("acosh(𝐒-4)", "2.0966+2.8894𝐒", Degree, Cartesian, 5); + assert_expression_approximates_to("acosh(𝐒-4)", "2.0966+2.8894×𝐒", Radian, Cartesian, 5); + assert_expression_approximates_to("acosh(𝐒-4)", "2.0966+2.8894×𝐒", Degree, Cartesian, 5); // Key values - //assert_expression_approximates_to("acosh(-1)", "3.1415926535898𝐒", Radian); + //assert_expression_approximates_to("acosh(-1)", "3.1415926535898×𝐒", Radian); assert_expression_approximates_to("acosh(1)", "0", Radian); - assert_expression_approximates_to("acosh(0)", "1.570796𝐒", Radian); + assert_expression_approximates_to("acosh(0)", "1.570796×𝐒", Radian); /* asinh: R -> R (odd) * [-𝐒,𝐒] -> R*𝐒 (odd) @@ -647,20 +647,20 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("asinh(-2)", "-1.4436354751788", Radian); assert_expression_approximates_to("asinh(-2)", "-1.4436354751788", Degree); // On [-𝐒,𝐒] - assert_expression_approximates_to("asinh(0.2×𝐒)", "2.0135792079033ᴇ-1𝐒", Radian); - assert_expression_approximates_to("asinh(0.2×𝐒)", "0.2013579𝐒", Degree); + assert_expression_approximates_to("asinh(0.2×𝐒)", "2.0135792079033ᴇ-1×𝐒", Radian); + assert_expression_approximates_to("asinh(0.2×𝐒)", "0.2013579×𝐒", Degree); // Symmetry: odd - assert_expression_approximates_to("asinh(-0.2×𝐒)", "-2.0135792079033ᴇ-1𝐒", Radian); - assert_expression_approximates_to("asinh(-0.2×𝐒)", "-0.2013579𝐒", Degree); + assert_expression_approximates_to("asinh(-0.2×𝐒)", "-2.0135792079033ᴇ-1×𝐒", Radian); + assert_expression_approximates_to("asinh(-0.2×𝐒)", "-0.2013579×𝐒", Degree); // On ]-inf×𝐒, -𝐒[ - assert_expression_approximates_to("asinh(-22×𝐒)", "-3.7836727043295-1.5707963267949𝐒", Radian); - assert_expression_approximates_to("asinh(-22×𝐒)", "-3.784-1.571𝐒", Degree, Cartesian, 4); + assert_expression_approximates_to("asinh(-22×𝐒)", "-3.7836727043295-1.5707963267949×𝐒", Radian); + assert_expression_approximates_to("asinh(-22×𝐒)", "-3.784-1.571×𝐒", Degree, Cartesian, 4); // On ]𝐒, inf×𝐒[, Symmetry: odd - assert_expression_approximates_to("asinh(22×𝐒)", "3.7836727043295+1.5707963267949𝐒", Radian); - assert_expression_approximates_to("asinh(22×𝐒)", "3.784+1.571𝐒", Degree, Cartesian, 4); + assert_expression_approximates_to("asinh(22×𝐒)", "3.7836727043295+1.5707963267949×𝐒", Radian); + assert_expression_approximates_to("asinh(22×𝐒)", "3.784+1.571×𝐒", Degree, Cartesian, 4); // On C - assert_expression_approximates_to("asinh(𝐒-4)", "-2.123+0.2383𝐒", Radian, Cartesian, 4); - assert_expression_approximates_to("asinh(𝐒-4)", "-2.123+0.2383𝐒", Degree, Cartesian, 4); + assert_expression_approximates_to("asinh(𝐒-4)", "-2.123+0.2383×𝐒", Radian, Cartesian, 4); + assert_expression_approximates_to("asinh(𝐒-4)", "-2.123+0.2383×𝐒", Degree, Cartesian, 4); /* atanh: [-1,1] -> R (odd) * ]-inf,-1[ -> Ο€/2*𝐒+R (odd) @@ -674,31 +674,31 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("atanh(-0.4)", "-0.4236489301936", Radian); assert_expression_approximates_to("atanh(-0.4)", "-0.4236489301936", Degree); // On ]1, inf[ - assert_expression_approximates_to("atanh(4)", "0.255412811883-1.5707963267949𝐒", Radian); - assert_expression_approximates_to("atanh(4)", "0.2554128-1.570796𝐒", Degree); + assert_expression_approximates_to("atanh(4)", "0.255412811883-1.5707963267949×𝐒", Radian); + assert_expression_approximates_to("atanh(4)", "0.2554128-1.570796×𝐒", Degree); // On ]-inf,-1[, Symmetry: odd - assert_expression_approximates_to("atanh(-4)", "-0.255412811883+1.5707963267949𝐒", Radian); - assert_expression_approximates_to("atanh(-4)", "-0.2554128+1.570796𝐒", Degree); + assert_expression_approximates_to("atanh(-4)", "-0.255412811883+1.5707963267949×𝐒", Radian); + assert_expression_approximates_to("atanh(-4)", "-0.2554128+1.570796×𝐒", Degree); // On R×𝐒 - assert_expression_approximates_to("atanh(4×𝐒)", "1.325817663668𝐒", Radian); - assert_expression_approximates_to("atanh(4×𝐒)", "1.325818𝐒", Radian); + assert_expression_approximates_to("atanh(4×𝐒)", "1.325817663668×𝐒", Radian); + assert_expression_approximates_to("atanh(4×𝐒)", "1.325818×𝐒", Radian); // Symmetry: odd - assert_expression_approximates_to("atanh(-4×𝐒)", "-1.325817663668𝐒", Radian); - assert_expression_approximates_to("atanh(-4×𝐒)", "-1.325818𝐒", Radian); + assert_expression_approximates_to("atanh(-4×𝐒)", "-1.325817663668×𝐒", Radian); + assert_expression_approximates_to("atanh(-4×𝐒)", "-1.325818×𝐒", Radian); // On C - assert_expression_approximates_to("atanh(𝐒-4)", "-0.238878+1.50862𝐒", Radian, Cartesian, 6); - assert_expression_approximates_to("atanh(𝐒-4)", "-0.238878+1.50862𝐒", Degree, Cartesian, 6); + assert_expression_approximates_to("atanh(𝐒-4)", "-0.238878+1.50862×𝐒", Radian, Cartesian, 6); + assert_expression_approximates_to("atanh(𝐒-4)", "-0.238878+1.50862×𝐒", Degree, Cartesian, 6); // WARNING: evaluate on branch cut can be multivalued - assert_expression_approximates_to("acos(2)", "1.3169578969248𝐒", Radian); - assert_expression_approximates_to("acos(2)", "75.456129290217𝐒", Degree); - assert_expression_approximates_to("asin(2)", "1.5707963267949-1.3169578969248𝐒", Radian); - assert_expression_approximates_to("asin(2)", "90-75.456129290217𝐒", Degree); - assert_expression_approximates_to("atanh(2)", "5.4930614433405ᴇ-1-1.5707963267949𝐒", Radian); - assert_expression_approximates_to("atan(2𝐒)", "1.5707963267949+5.4930614433405ᴇ-1𝐒", Radian); - assert_expression_approximates_to("atan(2𝐒)", "90+31.472923730945𝐒", Degree); - assert_expression_approximates_to("asinh(2𝐒)", "1.3169578969248+1.5707963267949𝐒", Radian); - assert_expression_approximates_to("acosh(-2)", "1.3169578969248+3.1415926535898𝐒", Radian); + assert_expression_approximates_to("acos(2)", "1.3169578969248×𝐒", Radian); + assert_expression_approximates_to("acos(2)", "75.456129290217×𝐒", Degree); + assert_expression_approximates_to("asin(2)", "1.5707963267949-1.3169578969248×𝐒", Radian); + assert_expression_approximates_to("asin(2)", "90-75.456129290217×𝐒", Degree); + assert_expression_approximates_to("atanh(2)", "5.4930614433405ᴇ-1-1.5707963267949×𝐒", Radian); + assert_expression_approximates_to("atan(2𝐒)", "1.5707963267949+5.4930614433405ᴇ-1×𝐒", Radian); + assert_expression_approximates_to("atan(2𝐒)", "90+31.472923730945×𝐒", Degree); + assert_expression_approximates_to("asinh(2𝐒)", "1.3169578969248+1.5707963267949×𝐒", Radian); + assert_expression_approximates_to("acosh(-2)", "1.3169578969248+3.1415926535898×𝐒", Radian); } QUIZ_CASE(poincare_approximation_matrix) { @@ -764,7 +764,7 @@ QUIZ_CASE(poincare_approximation_complex_format) { assert_expression_approximates_to("0.1", "0.1", Radian, Cartesian); assert_expression_approximates_to("0.1234567", "0.1234567", Radian, Cartesian); assert_expression_approximates_to("0.123456789012345", "1.2345678901235ᴇ-1", Radian, Cartesian); - assert_expression_approximates_to("1+2×𝐒", "1+2𝐒", Radian, Cartesian); + assert_expression_approximates_to("1+2×𝐒", "1+2×𝐒", Radian, Cartesian); assert_expression_approximates_to("1+𝐒-𝐒", "1", Radian, Cartesian); assert_expression_approximates_to("1+𝐒-1", "𝐒", Radian, Cartesian); assert_expression_approximates_to("1+𝐒", "1+𝐒", Radian, Cartesian); @@ -774,53 +774,53 @@ QUIZ_CASE(poincare_approximation_complex_format) { assert_expression_approximates_to("𝐒", "𝐒", Radian, Cartesian); assert_expression_approximates_to("√(-1)", "𝐒", Radian, Cartesian); assert_expression_approximates_to("√(-1)Γ—βˆš(-1)", "-1", Radian, Cartesian); - assert_expression_approximates_to("ln(-2)", "6.9314718055995ᴇ-1+3.1415926535898𝐒", Radian, Cartesian); - assert_expression_approximates_to("(-8)^(1/3)", "1+1.7320508075689𝐒", Radian, Cartesian); - assert_expression_approximates_to("(-8)^(2/3)", "-2+3.4641𝐒", Radian, Cartesian, 6); - assert_expression_approximates_to("root(-8,3)", "1+1.7320508075689𝐒", Radian, Cartesian); + assert_expression_approximates_to("ln(-2)", "6.9314718055995ᴇ-1+3.1415926535898×𝐒", Radian, Cartesian); + assert_expression_approximates_to("(-8)^(1/3)", "1+1.7320508075689×𝐒", Radian, Cartesian); + assert_expression_approximates_to("(-8)^(2/3)", "-2+3.4641×𝐒", Radian, Cartesian, 6); + assert_expression_approximates_to("root(-8,3)", "1+1.7320508075689×𝐒", Radian, Cartesian); // Polar assert_expression_approximates_to("0", "0", Radian, Polar); assert_expression_approximates_to("0", "0", Radian, Polar); assert_expression_approximates_to("10", "10", Radian, Polar); - assert_expression_approximates_to("-10", "10β„―^\u00123.1415926535898𝐒\u0013", Radian, Polar); + assert_expression_approximates_to("-10", "10Γ—β„―^\u00123.1415926535898×𝐒\u0013", Radian, Polar); assert_expression_approximates_to("100", "100", Radian, Polar); assert_expression_approximates_to("0.1", "0.1", Radian, Polar); assert_expression_approximates_to("0.1234567", "0.1234567", Radian, Polar); assert_expression_approximates_to("0.12345678", "0.12345678", Radian, Polar); - assert_expression_approximates_to("1+2×𝐒", "2.236068β„―^\u00121.107149𝐒\u0013", Radian, Polar); + assert_expression_approximates_to("1+2×𝐒", "2.236068Γ—β„―^\u00121.107149×𝐒\u0013", Radian, Polar); assert_expression_approximates_to("1+𝐒-𝐒", "1", Radian, Polar); - assert_expression_approximates_to("1+𝐒-1", "β„―^\u00121.57079632679𝐒\u0013", Radian, Polar, 12); - assert_expression_approximates_to("1+𝐒", "1.414214β„―^\u00120.7853982𝐒\u0013", Radian, Polar); - assert_expression_approximates_to("3+𝐒", "3.16227766017β„―^\u00120.321750554397𝐒\u0013", Radian, Polar,12); - assert_expression_approximates_to("3-𝐒", "3.162278β„―^\u0012-0.3217506𝐒\u0013", Radian, Polar); - assert_expression_approximates_to("3-𝐒-3", "β„―^\u0012-1.57079632679𝐒\u0013", Radian, Polar,12); - assert_expression_approximates_to("2β„―^(𝐒)", "2β„―^𝐒", Radian, Polar, 5); - assert_expression_approximates_to("2β„―^(-𝐒)", "2β„―^\u0012-𝐒\u0013", Radian, Polar, 5); + assert_expression_approximates_to("1+𝐒-1", "β„―^\u00121.57079632679×𝐒\u0013", Radian, Polar, 12); + assert_expression_approximates_to("1+𝐒", "1.414214Γ—β„―^\u00120.7853982×𝐒\u0013", Radian, Polar); + assert_expression_approximates_to("3+𝐒", "3.16227766017Γ—β„―^\u00120.321750554397×𝐒\u0013", Radian, Polar,12); + assert_expression_approximates_to("3-𝐒", "3.162278Γ—β„―^\u0012-0.3217506×𝐒\u0013", Radian, Polar); + assert_expression_approximates_to("3-𝐒-3", "β„―^\u0012-1.57079632679×𝐒\u0013", Radian, Polar,12); + assert_expression_approximates_to("2β„―^(𝐒)", "2Γ—β„―^𝐒", Radian, Polar, 5); + assert_expression_approximates_to("2β„―^(-𝐒)", "2Γ—β„―^\u0012-𝐒\u0013", Radian, Polar, 5); - assert_expression_approximates_to("𝐒", "β„―^\u00121.570796𝐒\u0013", Radian, Polar); - assert_expression_approximates_to("√(-1)", "β„―^\u00121.5707963267949𝐒\u0013", Radian, Polar); - assert_expression_approximates_to("√(-1)Γ—βˆš(-1)", "β„―^\u00123.1415926535898𝐒\u0013", Radian, Polar); - assert_expression_approximates_to("(-8)^(1/3)", "2β„―^\u00121.0471975511966𝐒\u0013", Radian, Polar); - assert_expression_approximates_to("(-8)^(2/3)", "4β„―^\u00122.094395𝐒\u0013", Radian, Polar); - assert_expression_approximates_to("root(-8,3)", "2β„―^\u00121.0471975511966𝐒\u0013", Radian, Polar); + assert_expression_approximates_to("𝐒", "β„―^\u00121.570796×𝐒\u0013", Radian, Polar); + assert_expression_approximates_to("√(-1)", "β„―^\u00121.5707963267949×𝐒\u0013", Radian, Polar); + assert_expression_approximates_to("√(-1)Γ—βˆš(-1)", "β„―^\u00123.1415926535898×𝐒\u0013", Radian, Polar); + assert_expression_approximates_to("(-8)^(1/3)", "2Γ—β„―^\u00121.0471975511966×𝐒\u0013", Radian, Polar); + assert_expression_approximates_to("(-8)^(2/3)", "4Γ—β„―^\u00122.094395×𝐒\u0013", Radian, Polar); + assert_expression_approximates_to("root(-8,3)", "2Γ—β„―^\u00121.0471975511966×𝐒\u0013", Radian, Polar); // Cartesian to Polar and vice versa - assert_expression_approximates_to("2+3×𝐒", "3.60555127546β„―^\u00120.982793723247𝐒\u0013", Radian, Polar, 12); - assert_expression_approximates_to("3.60555127546β„―^(0.982793723247×𝐒)", "2+3𝐒", Radian, Cartesian, 12); - assert_expression_approximates_to("12.04159457879229548012824103β„―^(1.4876550949×𝐒)", "1+12𝐒", Radian, Cartesian, 5); + assert_expression_approximates_to("2+3×𝐒", "3.60555127546Γ—β„―^\u00120.982793723247×𝐒\u0013", Radian, Polar, 12); + assert_expression_approximates_to("3.60555127546Γ—β„―^(0.982793723247×𝐒)", "2+3×𝐒", Radian, Cartesian, 12); + assert_expression_approximates_to("12.04159457879229548012824103Γ—β„―^(1.4876550949×𝐒)", "1+12×𝐒", Radian, Cartesian, 5); // Overflow - assert_expression_approximates_to("-2ᴇ20+2ᴇ20×𝐒", "-2ᴇ20+2ᴇ20𝐒", Radian, Cartesian); - assert_expression_approximates_to("-2ᴇ20+2ᴇ20×𝐒", "2.828427ᴇ20β„―^\u00122.356194𝐒\u0013", Radian, Polar); - assert_expression_approximates_to("1ᴇ155-1ᴇ155×𝐒", "1ᴇ155-1ᴇ155𝐒", Radian, Cartesian); - assert_expression_approximates_to("1ᴇ155-1ᴇ155×𝐒", "1.41421356237ᴇ155β„―^\u0012-0.785398163397𝐒\u0013", Radian, Polar,12); + assert_expression_approximates_to("-2ᴇ20+2ᴇ20×𝐒", "-2ᴇ20+2ᴇ20×𝐒", Radian, Cartesian); + assert_expression_approximates_to("-2ᴇ20+2ᴇ20×𝐒", "2.828427ᴇ20Γ—β„―^\u00122.356194×𝐒\u0013", Radian, Polar); + assert_expression_approximates_to("1ᴇ155-1ᴇ155×𝐒", "1ᴇ155-1ᴇ155×𝐒", Radian, Cartesian); + assert_expression_approximates_to("1ᴇ155-1ᴇ155×𝐒", "1.41421356237ᴇ155Γ—β„―^\u0012-0.785398163397×𝐒\u0013", Radian, Polar,12); assert_expression_approximates_to("-2ᴇ100+2ᴇ100×𝐒", Undefined::Name()); assert_expression_approximates_to("-2ᴇ360+2ᴇ360×𝐒", Undefined::Name()); - assert_expression_approximates_to("-2ᴇ100+2ᴇ10×𝐒", "-inf+2ᴇ10𝐒"); - assert_expression_approximates_to("-2ᴇ360+2×𝐒", "-inf+2𝐒"); + assert_expression_approximates_to("-2ᴇ100+2ᴇ10×𝐒", "-inf+2ᴇ10×𝐒"); + assert_expression_approximates_to("-2ᴇ360+2×𝐒", "-inf+2×𝐒"); assert_expression_approximates_to("undef+2ᴇ100×𝐒", Undefined::Name()); assert_expression_approximates_to("-2ᴇ360+undef×𝐒", Undefined::Name()); } diff --git a/poincare/test/simplification.cpp b/poincare/test/simplification.cpp index b66bfba15..d765e5b27 100644 --- a/poincare/test/simplification.cpp +++ b/poincare/test/simplification.cpp @@ -86,10 +86,10 @@ QUIZ_CASE(poincare_simplification_infinity) { assert_parsed_expression_simplify_to("inf^2", "inf"); assert_parsed_expression_simplify_to("(-inf)^2", "inf"); assert_parsed_expression_simplify_to("inf^√(2)", "inf"); - assert_parsed_expression_simplify_to("(-inf)^√(2)", "inf(-1)^√(2)"); + assert_parsed_expression_simplify_to("(-inf)^√(2)", "infΓ—(-1)^√(2)"); assert_parsed_expression_simplify_to("inf^x", "inf^x"); assert_parsed_expression_simplify_to("1/inf+24", "24"); - assert_parsed_expression_simplify_to("β„―^(inf)/inf", "0β„―^inf"); + assert_parsed_expression_simplify_to("β„―^(inf)/inf", "0Γ—β„―^inf"); // Logarithm assert_parsed_expression_simplify_to("log(inf,0)", "undef"); @@ -121,7 +121,7 @@ QUIZ_CASE(poincare_simplification_addition) { assert_parsed_expression_simplify_to("-2-6", "-8"); assert_parsed_expression_simplify_to("-A", "-A"); assert_parsed_expression_simplify_to("A-A", "0"); - assert_parsed_expression_simplify_to("-5Ο€+3Ο€", "-2Ο€"); + assert_parsed_expression_simplify_to("-5Ο€+3Ο€", "-2Γ—Ο€"); assert_parsed_expression_simplify_to("1-3+A-5+2A-4A", "-A-7"); assert_parsed_expression_simplify_to("A+B-A-B", "0"); assert_parsed_expression_simplify_to("A+B+(-1)Γ—A+(-1)Γ—B", "0"); @@ -134,8 +134,8 @@ QUIZ_CASE(poincare_simplification_addition) { assert_parsed_expression_simplify_to("1/x^2+1/(x^2Γ—Ο€)", "\u0012Ο€+1\u0013/\u0012π×x^2\u0013"); assert_parsed_expression_simplify_to("1/x^2+1/(x^3Γ—Ο€)", "\u0012π×x+1\u0013/\u0012π×x^3\u0013"); assert_parsed_expression_simplify_to("4x/x^2+3Ο€/(x^3Γ—Ο€)", "\u00124Γ—x^2+3\u0013/x^3"); - assert_parsed_expression_simplify_to("3^(1/2)+2^(-2Γ—3^(1/2)Γ—β„―^Ο€)/2", "\u00122Γ—\u00122^\u00122√(3)β„―^Ο€\u0013\u0013√(3)+1\u0013/\u00122Γ—2^\u00122√(3)β„―^Ο€\u0013\u0013"); - assert_parsed_expression_simplify_to("[[1,2+𝐒][3,4][5,6]]+[[1,2+𝐒][3,4][5,6]]", "[[2,4+2𝐒][6,8][10,12]]"); + assert_parsed_expression_simplify_to("3^(1/2)+2^(-2Γ—3^(1/2)Γ—β„―^Ο€)/2", "\u00122Γ—2^\u00122Γ—βˆš(3)Γ—β„―^Ο€\u0013Γ—βˆš(3)+1\u0013/\u00122Γ—2^\u00122Γ—βˆš(3)Γ—β„―^Ο€\u0013\u0013"); + assert_parsed_expression_simplify_to("[[1,2+𝐒][3,4][5,6]]+[[1,2+𝐒][3,4][5,6]]", "[[2,4+2×𝐒][6,8][10,12]]"); assert_parsed_expression_simplify_to("3+[[1,2][3,4]]", "undef"); assert_parsed_expression_simplify_to("[[1][3][5]]+[[1,2+𝐒][3,4][5,6]]", "undef"); assert_parsed_expression_simplify_to("[[1,3]]+confidence(Ο€/4, 6)+[[2,3]]", "[[3,6]]+confidence(Ο€/4,6)"); @@ -178,8 +178,8 @@ QUIZ_CASE(poincare_simplification_multiplication) { assert_parsed_expression_simplify_to("(x+1)Γ—(x+2)", "x^2+3Γ—x+2"); assert_parsed_expression_simplify_to("(x+1)Γ—(x-1)", "x^2-1"); assert_parsed_expression_simplify_to("11Ο€/(22Ο€+11Ο€)", "1/3"); - assert_parsed_expression_simplify_to("11/(22Ο€+11Ο€)", "1/3Ο€"); - assert_parsed_expression_simplify_to("-11/(22Ο€+11Ο€)", "-1/3Ο€"); + assert_parsed_expression_simplify_to("11/(22Ο€+11Ο€)", "1/\u00123Γ—Ο€\u0013"); + assert_parsed_expression_simplify_to("-11/(22Ο€+11Ο€)", "-1/\u00123Γ—Ο€\u0013"); assert_parsed_expression_simplify_to("A^2Γ—BΓ—A^(-2)Γ—B^(-2)", "1/B"); assert_parsed_expression_simplify_to("A^(-1)Γ—B^(-1)", "1/\u0012AΓ—B\u0013"); assert_parsed_expression_simplify_to("x+x", "2Γ—x"); @@ -191,11 +191,11 @@ QUIZ_CASE(poincare_simplification_multiplication) { assert_parsed_expression_simplify_to("x-x-n+n", "0"); assert_parsed_expression_simplify_to("x+n-x-n", "0"); assert_parsed_expression_simplify_to("x-x", "0"); - assert_parsed_expression_simplify_to("π×3^(1/2)Γ—(5Ο€)^(1/2)Γ—(4/5)^(1/2)", "2√(3)Ο€^\u00123/2\u0013"); - assert_parsed_expression_simplify_to("12^(1/4)Γ—(Ο€/6)Γ—(12Γ—Ο€)^(1/4)", "√(3)Ο€^\u00125/4\u0013/3"); - assert_parsed_expression_simplify_to("[[1,2+𝐒][3,4][5,6]]Γ—[[1,2+𝐒,3,4][5,6+𝐒,7,8]]", "[[11+5𝐒,13+9𝐒,17+7𝐒,20+8𝐒][23,30+7𝐒,37,44][35,46+11𝐒,57,68]]"); + assert_parsed_expression_simplify_to("π×3^(1/2)Γ—(5Ο€)^(1/2)Γ—(4/5)^(1/2)", "2Γ—βˆš(3)Γ—Ο€^\u00123/2\u0013"); + assert_parsed_expression_simplify_to("12^(1/4)Γ—(Ο€/6)Γ—(12Γ—Ο€)^(1/4)", "\u0012√(3)Γ—Ο€^\u00125/4\u0013\u0013/3"); + assert_parsed_expression_simplify_to("[[1,2+𝐒][3,4][5,6]]Γ—[[1,2+𝐒,3,4][5,6+𝐒,7,8]]", "[[11+5×𝐒,13+9×𝐒,17+7×𝐒,20+8×𝐒][23,30+7×𝐒,37,44][35,46+11×𝐒,57,68]]"); assert_parsed_expression_simplify_to("[[1,2][3,4]]Γ—[[1,3][5,6]]Γ—[[2,3][4,6]]", "[[82,123][178,267]]"); - assert_parsed_expression_simplify_to("π×confidence(Ο€/5,3)[[1,2]]", "π×confidence(Ο€/5,3)[[1,2]]"); + assert_parsed_expression_simplify_to("π×confidence(Ο€/5,3)[[1,2]]", "π×confidence(Ο€/5,3)Γ—[[1,2]]"); } QUIZ_CASE(poincare_simplification_power) { @@ -212,14 +212,14 @@ QUIZ_CASE(poincare_simplification_power) { assert_parsed_expression_simplify_to("0^0", Undefined::Name()); assert_parsed_expression_simplify_to("0^(-3)", Undefined::Name()); assert_parsed_expression_simplify_to("4^0.5", "2"); - assert_parsed_expression_simplify_to("8^0.5", "2√(2)"); - assert_parsed_expression_simplify_to("(12^4Γ—3)^(0.5)", "144√(3)"); + assert_parsed_expression_simplify_to("8^0.5", "2Γ—βˆš(2)"); + assert_parsed_expression_simplify_to("(12^4Γ—3)^(0.5)", "144Γ—βˆš(3)"); assert_parsed_expression_simplify_to("(Ο€^3)^4", "Ο€^12"); assert_parsed_expression_simplify_to("(AΓ—B)^3", "A^3Γ—B^3"); - assert_parsed_expression_simplify_to("(12^4Γ—x)^(0.5)", "144√(x)"); - assert_parsed_expression_simplify_to("√(32)", "4√(2)"); + assert_parsed_expression_simplify_to("(12^4Γ—x)^(0.5)", "144Γ—βˆš(x)"); + assert_parsed_expression_simplify_to("√(32)", "4Γ—βˆš(2)"); assert_parsed_expression_simplify_to("√(-1)", "𝐒"); - assert_parsed_expression_simplify_to("√(-1Γ—βˆš(-1))", "√(2)/2-\u0012√(2)/2\u0013𝐒"); + assert_parsed_expression_simplify_to("√(-1Γ—βˆš(-1))", "√(2)/2-√(2)/2×𝐒"); assert_parsed_expression_simplify_to("√(3^2)", "3"); assert_parsed_expression_simplify_to("2^(2+Ο€)", "4Γ—2^Ο€"); assert_parsed_expression_simplify_to("√(5513219850886344455940081)", "2348024669991"); @@ -227,10 +227,10 @@ QUIZ_CASE(poincare_simplification_power) { assert_parsed_expression_simplify_to("√(Ο€)^2", "Ο€"); assert_parsed_expression_simplify_to("√(Ο€^2)", "Ο€"); assert_parsed_expression_simplify_to("√((-Ο€)^2)", "Ο€"); - assert_parsed_expression_simplify_to("√(xΓ—144)", "12√(x)"); - assert_parsed_expression_simplify_to("√(xΓ—144Γ—Ο€^2)", "12Ο€βˆš(x)"); - assert_parsed_expression_simplify_to("√(xΓ—144Γ—Ο€)", "12√(Ο€)√(x)"); - assert_parsed_expression_simplify_to("(-1)Γ—(2+(-4Γ—βˆš(2)))", "4√(2)-2"); + assert_parsed_expression_simplify_to("√(xΓ—144)", "12Γ—βˆš(x)"); + assert_parsed_expression_simplify_to("√(xΓ—144Γ—Ο€^2)", "12Γ—Ο€Γ—βˆš(x)"); + assert_parsed_expression_simplify_to("√(xΓ—144Γ—Ο€)", "12Γ—βˆš(Ο€)Γ—βˆš(x)"); + assert_parsed_expression_simplify_to("(-1)Γ—(2+(-4Γ—βˆš(2)))", "4Γ—βˆš(2)-2"); assert_parsed_expression_simplify_to("x^(1/2)", "√(x)"); assert_parsed_expression_simplify_to("x^(-1/2)", "1/√(x)"); assert_parsed_expression_simplify_to("x^(1/7)", "root(x,7)"); @@ -241,7 +241,7 @@ QUIZ_CASE(poincare_simplification_power) { assert_parsed_expression_simplify_to("Ο€^log(√(3),Ο€)", "√(3)"); assert_parsed_expression_simplify_to("10^log(Ο€)", "Ο€"); assert_parsed_expression_simplify_to("β„―^ln(65)", "65"); - assert_parsed_expression_simplify_to("β„―^ln(Ο€β„―)", "Ο€β„―"); + assert_parsed_expression_simplify_to("β„―^ln(Ο€β„―)", "π×ℯ"); assert_parsed_expression_simplify_to("β„―^log(Ο€β„―)", "β„―^\u0012log(β„―)+log(Ο€)\u0013"); assert_parsed_expression_simplify_to("√(β„―^2)", "β„―"); assert_parsed_expression_simplify_to("999^(10000/3)", "999^\u001210000/3\u0013"); @@ -253,21 +253,21 @@ QUIZ_CASE(poincare_simplification_power) { * factors above k_maxNumberOfPrimeFactors. */ assert_parsed_expression_simplify_to("1002101470343^(1/3)", "root(1002101470343,3)"); assert_parsed_expression_simplify_to("π×π×π", "Ο€^3"); - assert_parsed_expression_simplify_to("(x+Ο€)^(3)", "x^3+3π×x^2+3Ο€^2Γ—x+Ο€^3"); - assert_parsed_expression_simplify_to("(5+√(2))^(-8)", "\u0012-1003320√(2)+1446241\u0013/78310985281"); - assert_parsed_expression_simplify_to("(5Γ—Ο€+√(2))^(-5)", "1/\u00123125Ο€^5+3125√(2)Ο€^4+2500Ο€^3+500√(2)Ο€^2+100Ο€+4√(2)\u0013"); - assert_parsed_expression_simplify_to("(1+√(2)+√(3))^5", "120√(6)+184√(3)+224√(2)+296"); - assert_parsed_expression_simplify_to("(Ο€+√(2)+√(3)+x)^(-3)", "1/\u0012x^3+3π×x^2+3√(3)Γ—x^2+3√(2)Γ—x^2+3Ο€^2Γ—x+6√(3)π×x+6√(2)π×x+6√(6)Γ—x+15Γ—x+Ο€^3+3√(3)Ο€^2+3√(2)Ο€^2+6√(6)Ο€+15Ο€+9√(3)+11√(2)\u0013"); + assert_parsed_expression_simplify_to("(x+Ο€)^(3)", "x^3+3×π×x^2+3Γ—Ο€^2Γ—x+Ο€^3"); + assert_parsed_expression_simplify_to("(5+√(2))^(-8)", "\u0012-1003320Γ—βˆš(2)+1446241\u0013/78310985281"); + assert_parsed_expression_simplify_to("(5Γ—Ο€+√(2))^(-5)", "1/\u00123125Γ—Ο€^5+3125Γ—βˆš(2)Γ—Ο€^4+2500Γ—Ο€^3+500Γ—βˆš(2)Γ—Ο€^2+100Γ—Ο€+4Γ—βˆš(2)\u0013"); + assert_parsed_expression_simplify_to("(1+√(2)+√(3))^5", "120Γ—βˆš(6)+184Γ—βˆš(3)+224Γ—βˆš(2)+296"); + assert_parsed_expression_simplify_to("(Ο€+√(2)+√(3)+x)^(-3)", "1/\u0012x^3+3×π×x^2+3Γ—βˆš(3)Γ—x^2+3Γ—βˆš(2)Γ—x^2+3Γ—Ο€^2Γ—x+6Γ—βˆš(3)×π×x+6Γ—βˆš(2)×π×x+6Γ—βˆš(6)Γ—x+15Γ—x+Ο€^3+3Γ—βˆš(3)Γ—Ο€^2+3Γ—βˆš(2)Γ—Ο€^2+6Γ—βˆš(6)Γ—Ο€+15Γ—Ο€+9Γ—βˆš(3)+11Γ—βˆš(2)\u0013"); assert_parsed_expression_simplify_to("1.0066666666667^60", "(10066666666667/10000000000000)^60"); assert_parsed_expression_simplify_to("2^(6+Ο€+x)", "64Γ—2^\u0012x+Ο€\u0013"); - assert_parsed_expression_simplify_to("𝐒^(2/3)", "1/2+\u0012√(3)/2\u0013𝐒"); - assert_parsed_expression_simplify_to("β„―^(𝐒×π/3)", "1/2+\u0012√(3)/2\u0013𝐒"); - assert_parsed_expression_simplify_to("(-1)^(1/3)", "1/2+\u0012√(3)/2\u0013𝐒"); + assert_parsed_expression_simplify_to("𝐒^(2/3)", "1/2+√(3)/2×𝐒"); + assert_parsed_expression_simplify_to("β„―^(𝐒×π/3)", "1/2+√(3)/2×𝐒"); + assert_parsed_expression_simplify_to("(-1)^(1/3)", "1/2+√(3)/2×𝐒"); assert_parsed_expression_simplify_to("R(-x)", "R(-x)"); assert_parsed_expression_simplify_to("√(x)^2", "x", User, Radian, Cartesian); assert_parsed_expression_simplify_to("√(-3)^2", "unreal", User, Radian, Real); // Principal angle of root of unity - assert_parsed_expression_simplify_to("(-5)^(-1/3)", "1/\u00122Γ—root(5,3)\u0013-\u0012√(3)/\u00122Γ—root(5,3)\u0013\u0013𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("(-5)^(-1/3)", "1/\u00122Γ—root(5,3)\u0013-√(3)/\u00122Γ—root(5,3)\u0013×𝐒", User, Radian, Cartesian); assert_parsed_expression_simplify_to("1+((8+√(6))^(1/2))^-1+(8+√(6))^(1/2)", "\u0012√(√(6)+8)+√(6)+9\u0013/√(√(6)+8)", User, Radian, Real); assert_parsed_expression_simplify_to("[[1,2][3,4]]^(-3)", "[[-59/4,27/4][81/8,-37/8]]"); assert_parsed_expression_simplify_to("[[1,2][3,4]]^3", "[[37,54][81,118]]"); @@ -302,7 +302,7 @@ QUIZ_CASE(poincare_simplification_logarithm) { assert_parsed_expression_simplify_to("log(√(3),√(3))", "1"); assert_parsed_expression_simplify_to("log(1/√(2))", "-log(2)/2"); assert_parsed_expression_simplify_to("log(-𝐒)", "log(-𝐒)"); - assert_parsed_expression_simplify_to("ln(β„―^(𝐒π/7))", "\u0012Ο€/7\u0013𝐒"); + assert_parsed_expression_simplify_to("ln(β„―^(𝐒π/7))", "Ο€/7×𝐒"); assert_parsed_expression_simplify_to("log(10^24)", "24"); assert_parsed_expression_simplify_to("log((23Ο€)^4,23Ο€)", "4"); assert_parsed_expression_simplify_to("log(10^(2+Ο€))", "Ο€+2"); @@ -401,22 +401,22 @@ QUIZ_CASE(poincare_simplication_trigonometry_functions) { assert_parsed_expression_simplify_to("sin(x)/(π×cos(x))", "tan(x)/Ο€"); assert_parsed_expression_simplify_to("1Γ—tan(2)Γ—tan(5)", "tan(2)Γ—tan(5)"); assert_parsed_expression_simplify_to("tan(62Ο€/21)", "-tan(Ο€/21)"); - assert_parsed_expression_simplify_to("cos(26Ο€/21)/sin(25Ο€/17)", "cos(5Ο€/21)/sin(8Ο€/17)"); - assert_parsed_expression_simplify_to("cos(62Ο€/21)×π×3/sin(62Ο€/21)", "-3Ο€/tan(Ο€/21)"); - assert_parsed_expression_simplify_to("cos(62Ο€/21)/(π×3Γ—sin(62Ο€/21))", "-1/\u00123π×tan(Ο€/21)\u0013"); - assert_parsed_expression_simplify_to("sin(62Ο€/21)×π×3/cos(62Ο€/21)", "-3π×tan(Ο€/21)"); - assert_parsed_expression_simplify_to("sin(62Ο€/21)/(π×3cos(62Ο€/21))", "-tan(Ο€/21)/3Ο€"); + assert_parsed_expression_simplify_to("cos(26Ο€/21)/sin(25Ο€/17)", "cos(\u00125Γ—Ο€\u0013/21)/sin(\u00128Γ—Ο€\u0013/17)"); + assert_parsed_expression_simplify_to("cos(62Ο€/21)×π×3/sin(62Ο€/21)", "-\u00123Γ—Ο€\u0013/tan(Ο€/21)"); + assert_parsed_expression_simplify_to("cos(62Ο€/21)/(π×3Γ—sin(62Ο€/21))", "-1/\u00123×π×tan(Ο€/21)\u0013"); + assert_parsed_expression_simplify_to("sin(62Ο€/21)×π×3/cos(62Ο€/21)", "-3×π×tan(Ο€/21)"); + assert_parsed_expression_simplify_to("sin(62Ο€/21)/(π×3cos(62Ο€/21))", "-tan(Ο€/21)/\u00123Γ—Ο€\u0013"); assert_parsed_expression_simplify_to("-cos(Ο€/62)ln(3)/(sin(Ο€/62)Ο€)", "-ln(3)/\u0012π×tan(Ο€/62)\u0013"); assert_parsed_expression_simplify_to("-2cos(Ο€/62)ln(3)/(sin(Ο€/62)Ο€)", "-\u00122Γ—ln(3)\u0013/\u0012π×tan(Ο€/62)\u0013"); // -- cos assert_parsed_expression_simplify_to("cos(0)", "1"); assert_parsed_expression_simplify_to("cos(Ο€)", "-1"); - assert_parsed_expression_simplify_to("cos(π×4/7)", "-cos(3Ο€/7)"); - assert_parsed_expression_simplify_to("cos(π×35/29)", "-cos(6Ο€/29)"); - assert_parsed_expression_simplify_to("cos(-π×35/29)", "-cos(6Ο€/29)"); + assert_parsed_expression_simplify_to("cos(π×4/7)", "-cos(\u00123Γ—Ο€\u0013/7)"); + assert_parsed_expression_simplify_to("cos(π×35/29)", "-cos(\u00126Γ—Ο€\u0013/29)"); + assert_parsed_expression_simplify_to("cos(-π×35/29)", "-cos(\u00126Γ—Ο€\u0013/29)"); assert_parsed_expression_simplify_to("cos(π×340000)", "1"); assert_parsed_expression_simplify_to("cos(-π×340001)", "-1"); - assert_parsed_expression_simplify_to("cos(-Ο€Γ—βˆš(2))", "cos(√(2)Ο€)"); + assert_parsed_expression_simplify_to("cos(-Ο€Γ—βˆš(2))", "cos(√(2)Γ—Ο€)"); assert_parsed_expression_simplify_to("cos(1311Ο€/6)", "0"); assert_parsed_expression_simplify_to("cos(Ο€/12)", "\u0012√(6)+√(2)\u0013/4"); assert_parsed_expression_simplify_to("cos(-Ο€/12)", "\u0012√(6)+√(2)\u0013/4"); @@ -425,7 +425,7 @@ QUIZ_CASE(poincare_simplication_trigonometry_functions) { assert_parsed_expression_simplify_to("cos(Ο€/4+1000Ο€)", "√(2)/2"); assert_parsed_expression_simplify_to("cos(-Ο€/3)", "1/2"); assert_parsed_expression_simplify_to("cos(41Ο€/5)", "\u0012√(5)+1\u0013/4"); - assert_parsed_expression_simplify_to("cos(7Ο€/10)", "-√(2)√(-√(5)+5)/4"); + assert_parsed_expression_simplify_to("cos(7Ο€/10)", "-\u0012√(2)Γ—βˆš(-√(5)+5)\u0013/4"); assert_parsed_expression_simplify_to("cos(0)", "1", User, Degree); assert_parsed_expression_simplify_to("cos(180)", "-1", User, Degree); assert_parsed_expression_simplify_to("cos(720/7)", "-cos(540/7)", User, Degree); @@ -433,7 +433,7 @@ QUIZ_CASE(poincare_simplication_trigonometry_functions) { assert_parsed_expression_simplify_to("cos(-6300/29)", "-cos(1080/29)", User, Degree); assert_parsed_expression_simplify_to("cos(61200000)", "1", User, Degree); assert_parsed_expression_simplify_to("cos(-61200180)", "-1", User, Degree); - assert_parsed_expression_simplify_to("cos(-180Γ—βˆš(2))", "cos(180√(2))", User, Degree); + assert_parsed_expression_simplify_to("cos(-180Γ—βˆš(2))", "cos(180Γ—βˆš(2))", User, Degree); assert_parsed_expression_simplify_to("cos(39330)", "0", User, Degree); assert_parsed_expression_simplify_to("cos(15)", "\u0012√(6)+√(2)\u0013/4", User, Degree); assert_parsed_expression_simplify_to("cos(-15)", "\u0012√(6)+√(2)\u0013/4", User, Degree); @@ -446,22 +446,22 @@ QUIZ_CASE(poincare_simplication_trigonometry_functions) { // -- sin assert_parsed_expression_simplify_to("sin(0)", "0"); assert_parsed_expression_simplify_to("sin(Ο€)", "0"); - assert_parsed_expression_simplify_to("sin(π×35/29)", "-sin(6Ο€/29)"); - assert_parsed_expression_simplify_to("sin(-π×35/29)", "sin(6Ο€/29)"); + assert_parsed_expression_simplify_to("sin(π×35/29)", "-sin(\u00126Γ—Ο€\u0013/29)"); + assert_parsed_expression_simplify_to("sin(-π×35/29)", "sin(\u00126Γ—Ο€\u0013/29)"); assert_parsed_expression_simplify_to("sin(π×340000)", "0"); assert_parsed_expression_simplify_to("sin(π×340001)", "0"); assert_parsed_expression_simplify_to("sin(-π×340001)", "0"); assert_parsed_expression_simplify_to("sin(Ο€/12)", "\u0012√(6)-√(2)\u0013/4"); assert_parsed_expression_simplify_to("sin(-Ο€/12)", "\u0012-√(6)+√(2)\u0013/4"); - assert_parsed_expression_simplify_to("sin(-Ο€Γ—βˆš(2))", "-sin(√(2)Ο€)"); + assert_parsed_expression_simplify_to("sin(-Ο€Γ—βˆš(2))", "-sin(√(2)Γ—Ο€)"); assert_parsed_expression_simplify_to("sin(1311Ο€/6)", "1"); assert_parsed_expression_simplify_to("sin(-Ο€17/8)", "-√(-√(2)+2)/2"); assert_parsed_expression_simplify_to("sin(41Ο€/6)", "1/2"); assert_parsed_expression_simplify_to("sin(-3Ο€/10)", "\u0012-√(5)-1\u0013/4"); assert_parsed_expression_simplify_to("sin(Ο€/4+1000Ο€)", "√(2)/2"); assert_parsed_expression_simplify_to("sin(-Ο€/3)", "-√(3)/2"); - assert_parsed_expression_simplify_to("sin(17Ο€/5)", "-√(2)√(√(5)+5)/4"); - assert_parsed_expression_simplify_to("sin(Ο€/5)", "√(2)√(-√(5)+5)/4"); + assert_parsed_expression_simplify_to("sin(17Ο€/5)", "-\u0012√(2)Γ—βˆš(√(5)+5)\u0013/4"); + assert_parsed_expression_simplify_to("sin(Ο€/5)", "\u0012√(2)Γ—βˆš(-√(5)+5)\u0013/4"); assert_parsed_expression_simplify_to("sin(0)", "0", User, Degree); assert_parsed_expression_simplify_to("sin(180)", "0", User, Degree); assert_parsed_expression_simplify_to("sin(6300/29)", "-sin(1080/29)", User, Degree); @@ -471,31 +471,31 @@ QUIZ_CASE(poincare_simplication_trigonometry_functions) { assert_parsed_expression_simplify_to("sin(-61200180)", "0", User, Degree); assert_parsed_expression_simplify_to("sin(15)", "\u0012√(6)-√(2)\u0013/4", User, Degree); assert_parsed_expression_simplify_to("sin(-15)", "\u0012-√(6)+√(2)\u0013/4", User, Degree); - assert_parsed_expression_simplify_to("sin(-180Γ—βˆš(2))", "-sin(180√(2))", User, Degree); + assert_parsed_expression_simplify_to("sin(-180Γ—βˆš(2))", "-sin(180Γ—βˆš(2))", User, Degree); assert_parsed_expression_simplify_to("sin(39330)", "1", User, Degree); assert_parsed_expression_simplify_to("sin(-765/2)", "-√(-√(2)+2)/2", User, Degree); assert_parsed_expression_simplify_to("sin(1230)", "1/2", User, Degree); assert_parsed_expression_simplify_to("sin(180045)", "√(2)/2", User, Degree); assert_parsed_expression_simplify_to("sin(-60)", "-√(3)/2", User, Degree); - assert_parsed_expression_simplify_to("sin(612)", "-√(2)√(√(5)+5)/4", User, Degree); - assert_parsed_expression_simplify_to("sin(36)", "√(2)√(-√(5)+5)/4", User, Degree); + assert_parsed_expression_simplify_to("sin(612)", "-\u0012√(2)Γ—βˆš(√(5)+5)\u0013/4", User, Degree); + assert_parsed_expression_simplify_to("sin(36)", "\u0012√(2)Γ—βˆš(-√(5)+5)\u0013/4", User, Degree); // -- tan assert_parsed_expression_simplify_to("tan(0)", "0"); assert_parsed_expression_simplify_to("tan(Ο€)", "0"); - assert_parsed_expression_simplify_to("tan(π×35/29)", "tan(6Ο€/29)"); - assert_parsed_expression_simplify_to("tan(-π×35/29)", "-tan(6Ο€/29)"); + assert_parsed_expression_simplify_to("tan(π×35/29)", "tan(\u00126Γ—Ο€\u0013/29)"); + assert_parsed_expression_simplify_to("tan(-π×35/29)", "-tan(\u00126Γ—Ο€\u0013/29)"); assert_parsed_expression_simplify_to("tan(π×340000)", "0"); assert_parsed_expression_simplify_to("tan(π×340001)", "0"); assert_parsed_expression_simplify_to("tan(-π×340001)", "0"); assert_parsed_expression_simplify_to("tan(Ο€/12)", "-√(3)+2"); assert_parsed_expression_simplify_to("tan(-Ο€/12)", "√(3)-2"); - assert_parsed_expression_simplify_to("tan(-Ο€Γ—βˆš(2))", "-tan(√(2)Ο€)"); + assert_parsed_expression_simplify_to("tan(-Ο€Γ—βˆš(2))", "-tan(√(2)Γ—Ο€)"); assert_parsed_expression_simplify_to("tan(1311Ο€/6)", Undefined::Name()); assert_parsed_expression_simplify_to("tan(-Ο€17/8)", "-√(2)+1"); assert_parsed_expression_simplify_to("tan(41Ο€/6)", "-√(3)/3"); assert_parsed_expression_simplify_to("tan(Ο€/4+1000Ο€)", "1"); assert_parsed_expression_simplify_to("tan(-Ο€/3)", "-√(3)"); - assert_parsed_expression_simplify_to("tan(-Ο€/10)", "-√(5)√(-2√(5)+5)/5"); + assert_parsed_expression_simplify_to("tan(-Ο€/10)", "-\u0012√(5)Γ—βˆš(-2Γ—βˆš(5)+5)\u0013/5"); assert_parsed_expression_simplify_to("tan(0)", "0", User, Degree); assert_parsed_expression_simplify_to("tan(180)", "0", User, Degree); assert_parsed_expression_simplify_to("tan(6300/29)", "tan(1080/29)", User, Degree); @@ -505,7 +505,7 @@ QUIZ_CASE(poincare_simplication_trigonometry_functions) { assert_parsed_expression_simplify_to("tan(-61200180)", "0", User, Degree); assert_parsed_expression_simplify_to("tan(15)", "-√(3)+2", User, Degree); assert_parsed_expression_simplify_to("tan(-15)", "√(3)-2", User, Degree); - assert_parsed_expression_simplify_to("tan(-180Γ—βˆš(2))", "-tan(180√(2))", User, Degree); + assert_parsed_expression_simplify_to("tan(-180Γ—βˆš(2))", "-tan(180Γ—βˆš(2))", User, Degree); assert_parsed_expression_simplify_to("tan(39330)", Undefined::Name(), User, Degree); assert_parsed_expression_simplify_to("tan(-382.5)", "-√(2)+1", User, Degree); assert_parsed_expression_simplify_to("tan(1230)", "-√(3)/3", User, Degree); @@ -513,14 +513,14 @@ QUIZ_CASE(poincare_simplication_trigonometry_functions) { assert_parsed_expression_simplify_to("tan(-60)", "-√(3)", User, Degree); assert_parsed_expression_simplify_to("tan(tan(tan(tan(9))))", "tan(tan(tan(tan(9))))"); // -- acos - assert_parsed_expression_simplify_to("acos(-1/2)", "2Ο€/3"); + assert_parsed_expression_simplify_to("acos(-1/2)", "\u00122Γ—Ο€\u0013/3"); assert_parsed_expression_simplify_to("acos(-1.2)", "-acos(6/5)+Ο€"); assert_parsed_expression_simplify_to("acos(cos(2/3))", "2/3"); assert_parsed_expression_simplify_to("acos(cos(3/2))", "3/2"); assert_parsed_expression_simplify_to("cos(acos(3/2))", "3/2"); assert_parsed_expression_simplify_to("cos(acos(2/3))", "2/3"); assert_parsed_expression_simplify_to("acos(cos(12))", "acos(cos(12))"); - assert_parsed_expression_simplify_to("acos(cos(4Ο€/7))", "4Ο€/7"); + assert_parsed_expression_simplify_to("acos(cos(4Ο€/7))", "\u00124Γ—Ο€\u0013/7"); assert_parsed_expression_simplify_to("acos(-cos(2))", "Ο€-2"); assert_parsed_expression_simplify_to("acos(-1/2)", "120", User, Degree); assert_parsed_expression_simplify_to("acos(-1.2)", "-acos(6/5)+180", User, Degree); @@ -602,7 +602,7 @@ QUIZ_CASE(poincare_simplication_matrix) { // Multiplication Matrix assert_parsed_expression_simplify_to("2*[[1,2,3][4,5,6]]", "[[2,4,6][8,10,12]]"); - assert_parsed_expression_simplify_to("[[1,2,3][4,5,6]]Γ—βˆš(2)", "[[√(2),2√(2),3√(2)][4√(2),5√(2),6√(2)]]"); + assert_parsed_expression_simplify_to("[[1,2,3][4,5,6]]Γ—βˆš(2)", "[[√(2),2Γ—βˆš(2),3Γ—βˆš(2)][4Γ—βˆš(2),5Γ—βˆš(2),6Γ—βˆš(2)]]"); assert_parsed_expression_simplify_to("[[1,2][3,4]]*[[1,2,3][4,5,6]]", "[[9,12,15][19,26,33]]"); assert_parsed_expression_simplify_to("[[1,2,3][4,5,6]]*[[1,2][2,3][5,6]]", "[[20,26][44,59]]"); assert_parsed_expression_simplify_to("[[1,2,3,4][4,5,6,5]]*[[1,2][2,3][5,6]]", Undefined::Name()); @@ -615,15 +615,15 @@ QUIZ_CASE(poincare_simplication_matrix) { assert_parsed_expression_simplify_to("[[1,2][3,4]]^(-1)", "[[-2,1][3/2,-1/2]]"); // Determinant - assert_parsed_expression_simplify_to("det(Ο€+Ο€)", "2Ο€"); - assert_parsed_expression_simplify_to("det([[Ο€+Ο€]])", "2Ο€"); + assert_parsed_expression_simplify_to("det(Ο€+Ο€)", "2Γ—Ο€"); + assert_parsed_expression_simplify_to("det([[Ο€+Ο€]])", "2Γ—Ο€"); assert_parsed_expression_simplify_to("det([[1,2][3,4]])", "-2"); assert_parsed_expression_simplify_to("det([[2,2][3,4]])", "2"); assert_parsed_expression_simplify_to("det([[2,2][3,4][3,4]])", Undefined::Name()); assert_parsed_expression_simplify_to("det([[2,2][3,3]])", "0"); assert_parsed_expression_simplify_to("det([[1,2,3][4,5,6][7,8,9]])", "0"); assert_parsed_expression_simplify_to("det([[1,2,3][4,5,6][7,8,9]])", "0"); - assert_parsed_expression_simplify_to("det([[1,2,3][4Ο€,5,6][7,8,9]])", "24Ο€-24"); + assert_parsed_expression_simplify_to("det([[1,2,3][4Ο€,5,6][7,8,9]])", "24Γ—Ο€-24"); // Dimension assert_parsed_expression_simplify_to("dim(3)", "[[1,1]]"); @@ -632,7 +632,7 @@ QUIZ_CASE(poincare_simplication_matrix) { // Inverse assert_parsed_expression_simplify_to("inverse([[1/√(2),1/2,3][2,1,-3]])", Undefined::Name()); assert_parsed_expression_simplify_to("inverse([[1,2][3,4]])", "[[-2,1][3/2,-1/2]]"); - assert_parsed_expression_simplify_to("inverse([[Ο€,2Ο€][3,2]])", "[[-1/2Ο€,1/2][3/4Ο€,-1/4]]"); + assert_parsed_expression_simplify_to("inverse([[Ο€,2Γ—Ο€][3,2]])", "[[-1/\u00122Γ—Ο€\u0013,1/2][3/\u00124Γ—Ο€\u0013,-1/4]]"); // Trace assert_parsed_expression_simplify_to("trace([[1/√(2),1/2,3][2,1,-3]])", Undefined::Name()); @@ -712,7 +712,7 @@ QUIZ_CASE(poincare_simplification_functions_of_matrices) { assert_parsed_expression_simplify_to("prediction(5,[[2,3]])", Undefined::Name()); assert_parsed_expression_simplify_to("prediction95([[2,3]],5)", Undefined::Name()); assert_parsed_expression_simplify_to("prediction95(5,[[2,3]])", Undefined::Name()); - assert_parsed_expression_simplify_to("prediction95(1/3, 25)", "[[\u0012-49√(2)+125\u0013/375,\u001249√(2)+125\u0013/375]]"); + assert_parsed_expression_simplify_to("prediction95(1/3, 25)", "[[\u0012-49Γ—βˆš(2)+125\u0013/375,\u001249Γ—βˆš(2)+125\u0013/375]]"); assert_parsed_expression_simplify_to("prediction95(45, 25)", Undefined::Name()); assert_parsed_expression_simplify_to("prediction95(1/3, -34)", Undefined::Name()); assert_parsed_expression_simplify_to("product(1,x,[[0,180]],1)", Undefined::Name()); @@ -787,20 +787,20 @@ QUIZ_CASE(poincare_simplification_complex_format) { assert_parsed_expression_simplify_to("3", "3", User, Radian, Cartesian); assert_parsed_expression_simplify_to("inf", "inf", User, Radian, Cartesian); assert_parsed_expression_simplify_to("1+2+𝐒", "3+𝐒", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("-(5+2×𝐒)", "-5-2𝐒", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("(5+2×𝐒)", "5+2𝐒", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("𝐒+𝐒", "2𝐒", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("-2+2×𝐒", "-2+2𝐒", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("(3+𝐒)-(2+4×𝐒)", "1-3𝐒", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("(2+3×𝐒)Γ—(4-2×𝐒)", "14+8𝐒", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("(3+𝐒)/2", "3/2+\u00121/2\u0013𝐒", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("(3+𝐒)/(2+𝐒)", "7/5-\u00121/5\u0013𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("-(5+2×𝐒)", "-5-2×𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("(5+2×𝐒)", "5+2×𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("𝐒+𝐒", "2×𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("-2+2×𝐒", "-2+2×𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("(3+𝐒)-(2+4×𝐒)", "1-3×𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("(2+3×𝐒)Γ—(4-2×𝐒)", "14+8×𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("(3+𝐒)/2", "3/2+1/2×𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("(3+𝐒)/(2+𝐒)", "7/5-1/5×𝐒", User, Radian, Cartesian); // The simplification of (3+𝐒)^(2+𝐒) in a Cartesian complex form generates to many nodes //assert_parsed_expression_simplify_to("(3+𝐒)^(2+𝐒)", "10Γ—cos((-4Γ—atan(3)+ln(2)+ln(5)+2Γ—Ο€)/2)Γ—β„―^((2Γ—atan(3)-Ο€)/2)+10Γ—sin((-4Γ—atan(3)+ln(2)+ln(5)+2Γ—Ο€)/2)Γ—β„―^((2Γ—atan(3)-Ο€)/2)𝐒", User, Radian, Cartesian); assert_parsed_expression_simplify_to("(3+𝐒)^(2+𝐒)", "(𝐒+3)^\u0012𝐒+2\u0013", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("√(1+6𝐒)", "√(2√(37)+2)/2+\u0012√(2√(37)-2)/2\u0013𝐒", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("(1+𝐒)^2", "2𝐒", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("2×𝐒", "2𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("√(1+6𝐒)", "√(2Γ—βˆš(37)+2)/2+√(2Γ—βˆš(37)-2)/2×𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("(1+𝐒)^2", "2×𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("2×𝐒", "2×𝐒", User, Radian, Cartesian); assert_parsed_expression_simplify_to("𝐒!", "𝐒!", User, Radian, Cartesian); assert_parsed_expression_simplify_to("3!", "6", User, Radian, Cartesian); assert_parsed_expression_simplify_to("x!", "x!", User, Radian, Cartesian); @@ -818,7 +818,7 @@ QUIZ_CASE(poincare_simplification_complex_format) { // TODO: confidence is not simplified yet //assert_parsed_expression_simplify_to("confidence(-2,-3)", "confidence(-2)", User, Radian, Cartesian); assert_parsed_expression_simplify_to("conj(-2)", "-2", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("conj(-2+2×𝐒+𝐒)", "-2-3𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("conj(-2+2×𝐒+𝐒)", "-2-3×𝐒", User, Radian, Cartesian); assert_parsed_expression_simplify_to("cos(12)", "cos(12)", User, Radian, Cartesian); assert_parsed_expression_simplify_to("cos(12+𝐒)", "cos(12+𝐒)", User, Radian, Cartesian); assert_parsed_expression_simplify_to("diff(3Γ—x, x, 3)", "diff(3Γ—x,x,3)", User, Radian, Cartesian); @@ -833,9 +833,9 @@ QUIZ_CASE(poincare_simplification_complex_format) { // TODO: dim is not simplified yet //assert_parsed_expression_simplify_to("dim(x)", "dim(x)", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("root(2,𝐒)", "cos(ln(2))-sin(ln(2))𝐒", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("root(2,𝐒+1)", "√(2)Γ—cos(\u001290Γ—ln(2)\u0013/Ο€)-√(2)Γ—sin(\u001290Γ—ln(2)\u0013/Ο€)𝐒", User, Degree, Cartesian); - assert_parsed_expression_simplify_to("root(2,𝐒+1)", "√(2)Γ—cos(ln(2)/2)-√(2)Γ—sin(ln(2)/2)𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("root(2,𝐒)", "cos(ln(2))-sin(ln(2))×𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("root(2,𝐒+1)", "√(2)Γ—cos(\u001290Γ—ln(2)\u0013/Ο€)-√(2)Γ—sin(\u001290Γ—ln(2)\u0013/Ο€)×𝐒", User, Degree, Cartesian); + assert_parsed_expression_simplify_to("root(2,𝐒+1)", "√(2)Γ—cos(ln(2)/2)-√(2)Γ—sin(ln(2)/2)×𝐒", User, Radian, Cartesian); assert_parsed_expression_simplify_to("permute(10, 4)", "5040", User, Radian, Cartesian); // TODO: prediction is not simplified yet //assert_parsed_expression_simplify_to("prediction(-2,-3)", "prediction(-2)", User, Radian, Cartesian); @@ -846,7 +846,7 @@ QUIZ_CASE(poincare_simplification_complex_format) { assert_parsed_expression_simplify_to("sign(x)", "sign(x)", User, Radian, Cartesian); assert_parsed_expression_simplify_to("sin(23)", "sin(23)", User, Radian, Cartesian); assert_parsed_expression_simplify_to("sin(23+𝐒)", "sin(23+𝐒)", User, Radian, Cartesian); - assert_parsed_expression_simplify_to("√(1-𝐒)", "√(2√(2)+2)/2-\u0012√(2√(2)-2)/2\u0013𝐒", User, Radian, Cartesian); + assert_parsed_expression_simplify_to("√(1-𝐒)", "√(2Γ—βˆš(2)+2)/2-√(2Γ—βˆš(2)-2)/2×𝐒", User, Radian, Cartesian); assert_parsed_expression_simplify_to("tan(23)", "tan(23)", User, Radian, Cartesian); assert_parsed_expression_simplify_to("tan(23+𝐒)", "tan(23+𝐒)", User, Radian, Cartesian); @@ -866,49 +866,49 @@ QUIZ_CASE(poincare_simplification_complex_format) { Ion::Storage::sharedStorage()->recordNamed("f.func").destroy(); // Polar - assert_parsed_expression_simplify_to("-2.3ᴇ3", "2300β„―^\u0012π𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("-2.3ᴇ3", "2300Γ—β„―^\u0012π×𝐒\u0013", User, Radian, Polar); assert_parsed_expression_simplify_to("3", "3", User, Radian, Polar); assert_parsed_expression_simplify_to("inf", "inf", User, Radian, Polar); - assert_parsed_expression_simplify_to("1+2+𝐒", "√(10)β„―^\u0012\u0012\u0012-2Γ—atan(3)+Ο€\u0013/2\u0013𝐒\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("1+2+𝐒", "√(10)β„―^\u0012\u0012\u0012-π×atan(3)+90Ο€\u0013/180\u0013𝐒\u0013", User, Degree, Polar); - assert_parsed_expression_simplify_to("-(5+2×𝐒)", "√(29)β„―^\u0012\u0012\u0012-2Γ—atan(5/2)-Ο€\u0013/2\u0013𝐒\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("(5+2×𝐒)", "√(29)β„―^\u0012\u0012\u0012-2Γ—atan(5/2)+Ο€\u0013/2\u0013𝐒\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("𝐒+𝐒", "2β„―^\u0012\u0012Ο€/2\u0013𝐒\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("𝐒+𝐒", "2β„―^\u0012\u0012Ο€/2\u0013𝐒\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("-2+2×𝐒", "2√(2)β„―^\u0012\u00123Ο€/4\u0013𝐒\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("(3+𝐒)-(2+4×𝐒)", "√(10)β„―^\u0012\u0012\u00122Γ—atan(1/3)-Ο€\u0013/2\u0013𝐒\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("(2+3×𝐒)Γ—(4-2×𝐒)", "2√(65)β„―^\u0012\u0012\u0012-2Γ—atan(7/4)+Ο€\u0013/2\u0013𝐒\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("(3+𝐒)/2", "\u0012√(10)/2\u0013β„―^\u0012\u0012\u0012-2Γ—atan(3)+Ο€\u0013/2\u0013𝐒\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("(3+𝐒)/(2+𝐒)", "√(2)β„―^\u0012\u0012\u00122Γ—atan(7)-Ο€\u0013/2\u0013𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("1+2+𝐒", "√(10)Γ—β„―^\u0012\u0012-2Γ—atan(3)+Ο€\u0013/2×𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("1+2+𝐒", "√(10)Γ—β„―^\u0012\u0012-π×atan(3)+90Γ—Ο€\u0013/180×𝐒\u0013", User, Degree, Polar); + assert_parsed_expression_simplify_to("-(5+2×𝐒)", "√(29)Γ—β„―^\u0012\u0012-2Γ—atan(5/2)-Ο€\u0013/2×𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("(5+2×𝐒)", "√(29)Γ—β„―^\u0012\u0012-2Γ—atan(5/2)+Ο€\u0013/2×𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("𝐒+𝐒", "2Γ—β„―^\u0012Ο€/2×𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("𝐒+𝐒", "2Γ—β„―^\u0012Ο€/2×𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("-2+2×𝐒", "2Γ—βˆš(2)Γ—β„―^\u0012\u00123Γ—Ο€\u0013/4×𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("(3+𝐒)-(2+4×𝐒)", "√(10)Γ—β„―^\u0012\u00122Γ—atan(1/3)-Ο€\u0013/2×𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("(2+3×𝐒)Γ—(4-2×𝐒)", "2Γ—βˆš(65)Γ—β„―^\u0012\u0012-2Γ—atan(7/4)+Ο€\u0013/2×𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("(3+𝐒)/2", "√(10)/2Γ—β„―^\u0012\u0012-2Γ—atan(3)+Ο€\u0013/2×𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("(3+𝐒)/(2+𝐒)", "√(2)Γ—β„―^\u0012\u00122Γ—atan(7)-Ο€\u0013/2×𝐒\u0013", User, Radian, Polar); // TODO: simplify atan(tan(x)) = xΒ±kΓ—pi? //assert_parsed_expression_simplify_to("(3+𝐒)^(2+𝐒)", "10β„―^\u0012\u00122Γ—atan(3)-Ο€\u0013/2\u0013Γ—β„―^\u0012\u0012\u0012-4Γ—atan(3)+ln(2)+ln(5)+2Ο€\u0013/2\u0013𝐒\u0013", User, Radian, Polar); // The simplification of (3+𝐒)^(2+𝐒) in a Polar complex form generates to many nodes //assert_parsed_expression_simplify_to("(3+𝐒)^(2+𝐒)", "10β„―^\u0012\u00122Γ—atan(3)-Ο€\u0013/2\u0013Γ—β„―^\u0012\u0012atan(tan((-4Γ—atan(3)+ln(2)+ln(5)+2Γ—Ο€)/2))+Ο€\u0013𝐒\u0013", User, Radian, Polar); assert_parsed_expression_simplify_to("(3+𝐒)^(2+𝐒)", "(𝐒+3)^\u0012𝐒+2\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("(1+𝐒)^2", "2β„―^\u0012\u0012Ο€/2\u0013𝐒\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("2×𝐒", "2β„―^\u0012\u0012Ο€/2\u0013𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("(1+𝐒)^2", "2Γ—β„―^\u0012Ο€/2×𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("2×𝐒", "2Γ—β„―^\u0012Ο€/2×𝐒\u0013", User, Radian, Polar); assert_parsed_expression_simplify_to("3!", "6", User, Radian, Polar); assert_parsed_expression_simplify_to("x!", "x!", User, Radian, Polar); assert_parsed_expression_simplify_to("β„―", "β„―", User, Radian, Polar); assert_parsed_expression_simplify_to("Ο€", "Ο€", User, Radian, Polar); - assert_parsed_expression_simplify_to("𝐒", "β„―^\u0012\u0012Ο€/2\u0013𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("𝐒", "β„―^\u0012Ο€/2×𝐒\u0013", User, Radian, Polar); assert_parsed_expression_simplify_to("abs(-3)", "3", User, Radian, Polar); assert_parsed_expression_simplify_to("abs(-3+𝐒)", "√(10)", User, Radian, Polar); - assert_parsed_expression_simplify_to("conj(2Γ—β„―^(𝐒×π/2))", "2β„―^\u0012-\u0012Ο€/2\u0013𝐒\u0013", User, Radian, Polar); - assert_parsed_expression_simplify_to("-2Γ—β„―^(𝐒×π/2)", "2β„―^\u0012-\u0012Ο€/2\u0013𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("conj(2Γ—β„―^(𝐒×π/2))", "2Γ—β„―^\u0012-Ο€/2×𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("-2Γ—β„―^(𝐒×π/2)", "2Γ—β„―^\u0012-Ο€/2×𝐒\u0013", User, Radian, Polar); // User defined variable assert_parsed_expression_simplify_to("a", "a", User, Radian, Polar); // a = 2 + 𝐒 assert_simplify("2+𝐒→a", Radian, Polar); - assert_parsed_expression_simplify_to("a", "√(5)β„―^\u0012\u0012\u0012-2Γ—atan(2)+Ο€\u0013/2\u0013𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("a", "√(5)Γ—β„―^\u0012\u0012-2Γ—atan(2)+Ο€\u0013/2×𝐒\u0013", User, Radian, Polar); // Clean the storage for other tests Ion::Storage::sharedStorage()->recordNamed("a.exp").destroy(); // User defined function assert_parsed_expression_simplify_to("f(3)", "f(3)", User, Radian, Polar); // f: x β†’ x+1 assert_simplify("x+1+𝐒→f(x)", Radian, Polar); - assert_parsed_expression_simplify_to("f(3)", "√(17)β„―^\u0012\u0012\u0012-2Γ—atan(4)+Ο€\u0013/2\u0013𝐒\u0013", User, Radian, Polar); + assert_parsed_expression_simplify_to("f(3)", "√(17)Γ—β„―^\u0012\u0012-2Γ—atan(4)+Ο€\u0013/2×𝐒\u0013", User, Radian, Polar); // Clean the storage for other tests Ion::Storage::sharedStorage()->recordNamed("f.func").destroy(); } @@ -918,7 +918,7 @@ QUIZ_CASE(poincare_simplification_reduction_target) { assert_parsed_expression_simplify_to("1/Ο€+1/x", "\u0012x+Ο€\u0013/\u0012π×x\u0013", User); assert_parsed_expression_simplify_to("1/(1+𝐒)", "1/\u0012𝐒+1\u0013", System); - assert_parsed_expression_simplify_to("1/(1+𝐒)", "1/2-\u00121/2\u0013𝐒", User); + assert_parsed_expression_simplify_to("1/(1+𝐒)", "1/2-1/2×𝐒", User); assert_parsed_expression_simplify_to("sin(x)/(cos(x)Γ—cos(x))", "sin(x)/cos(x)^2", System); assert_parsed_expression_simplify_to("sin(x)/(cos(x)Γ—cos(x))", "tan(x)/cos(x)", User); @@ -959,7 +959,7 @@ QUIZ_CASE(poincare_simplification_mix) { // Common operation mix assert_parsed_expression_simplify_to("(√(2)Γ—Ο€ + √(2)Γ—β„―)/√(2)", "β„―+Ο€"); - assert_parsed_expression_simplify_to("Ο€+(3√(2)-2√(3))/25", "\u001225Ο€-2√(3)+3√(2)\u0013/25"); + assert_parsed_expression_simplify_to("Ο€+(3√(2)-2√(3))/25", "\u001225Γ—Ο€-2Γ—βˆš(3)+3Γ—βˆš(2)\u0013/25"); assert_parsed_expression_simplify_to("ln(2+3)", "ln(5)"); assert_parsed_expression_simplify_to("3Γ—AΓ—BΓ—C+4Γ—cos(2)-2Γ—AΓ—BΓ—C+AΓ—BΓ—C+ln(3)+4Γ—AΓ—B-5Γ—AΓ—BΓ—C+cos(3)Γ—ln(5)+cos(2)-45Γ—cos(2)", "cos(3)Γ—ln(5)+ln(3)-40Γ—cos(2)+4Γ—AΓ—B-3Γ—AΓ—BΓ—C"); assert_parsed_expression_simplify_to("2Γ—A+3Γ—cos(2)+3+4Γ—ln(5)+5Γ—A+2Γ—ln(5)+1+0", "6Γ—ln(5)+3Γ—cos(2)+7Γ—A+4"); @@ -970,24 +970,24 @@ QUIZ_CASE(poincare_simplification_mix) { assert_parsed_expression_simplify_to("A^2^2Γ—A+4Γ—A^3", "A^5+4Γ—A^3"); assert_parsed_expression_simplify_to("0.5+4Γ—AΓ—B-2.3+2Γ—AΓ—B-2Γ—BΓ—A^C-cos(4)+2Γ—A^CΓ—B+AΓ—BΓ—CΓ—D", "\u0012-5Γ—cos(4)+30Γ—AΓ—B+5Γ—AΓ—BΓ—CΓ—D-9\u0013/5"); assert_parsed_expression_simplify_to("(1+√(2))/5", "\u0012√(2)+1\u0013/5"); - assert_parsed_expression_simplify_to("(2+√(6))^2", "4√(6)+10"); + assert_parsed_expression_simplify_to("(2+√(6))^2", "4Γ—βˆš(6)+10"); assert_parsed_expression_simplify_to("tan(3)ln(2)+Ο€", "tan(3)Γ—ln(2)+Ο€"); // Complex assert_parsed_expression_simplify_to("𝐒", "𝐒"); - assert_parsed_expression_simplify_to("√(-33)", "√(33)𝐒"); - assert_parsed_expression_simplify_to("𝐒^(3/5)", "√(2)√(-√(5)+5)/4+\u0012\u0012√(5)+1\u0013/4\u0013𝐒"); + assert_parsed_expression_simplify_to("√(-33)", "√(33)×𝐒"); + assert_parsed_expression_simplify_to("𝐒^(3/5)", "\u0012√(2)Γ—βˆš(-√(5)+5)\u0013/4+\u0012√(5)+1\u0013/4×𝐒"); assert_parsed_expression_simplify_to("𝐒𝐒𝐒𝐒", "1"); - assert_parsed_expression_simplify_to("√(-𝐒)", "√(2)/2-\u0012√(2)/2\u0013𝐒"); + assert_parsed_expression_simplify_to("√(-𝐒)", "√(2)/2-√(2)/2×𝐒"); assert_parsed_expression_simplify_to("AΓ—cos(9)𝐒𝐒ln(2)", "-AΓ—cos(9)Γ—ln(2)"); - assert_parsed_expression_simplify_to("(√(2)+√(2)×𝐒)/2(√(2)+√(2)×𝐒)/2(√(2)+√(2)×𝐒)/2", "√(2)/32-\u0012√(2)/32\u0013𝐒"); + assert_parsed_expression_simplify_to("(√(2)+√(2)×𝐒)/2(√(2)+√(2)×𝐒)/2(√(2)+√(2)×𝐒)/2", "√(2)/32-√(2)/32×𝐒"); assert_parsed_expression_simplify_to("root(5^((-𝐒)3^9),𝐒)", "1/β„―^atan(tan(19683Γ—ln(5)))"); assert_parsed_expression_simplify_to("𝐒^𝐒", "1/β„―^\u0012Ο€/2\u0013"); - assert_parsed_expression_simplify_to("𝐒/(1+π’Γ—βˆš(x))", "𝐒/\u0012√(x)𝐒+1\u0013"); - assert_parsed_expression_simplify_to("x+𝐒/(1+π’Γ—βˆš(x))", "\u0012\u0012x^\u00123/2\u0013\u0013𝐒+𝐒+x\u0013/\u0012√(x)𝐒+1\u0013"); + assert_parsed_expression_simplify_to("𝐒/(1+π’Γ—βˆš(x))", "𝐒/\u0012√(x)×𝐒+1\u0013"); + assert_parsed_expression_simplify_to("x+𝐒/(1+π’Γ—βˆš(x))", "\u0012x^\u00123/2\u0013×𝐒+𝐒+x\u0013/\u0012√(x)×𝐒+1\u0013"); //assert_parsed_expression_simplify_to("log(cos(9)^ln(6), cos(9))", "ln(2)+ln(3)"); // TODO: for this to work, we must know the sign of cos(9) //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? + assert_parsed_expression_simplify_to("1/√(𝐒) Γ— (√(2)-π’Γ—βˆš(2))", "-2×𝐒"); // TODO: get rid of complex at denominator? }