mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[poincare/test] Add tests for LCM and GCD
Change-Id: If91c1ef863c9810e1ab87525a5ed2b4c7ed45656
This commit is contained in:
committed by
Émilie Feral
parent
cafb1c1c05
commit
cce1fa0c90
@@ -282,6 +282,12 @@ QUIZ_CASE(poincare_approximation_function) {
|
|||||||
assert_expression_approximates_to<float>("gcd(-234,394)", "2");
|
assert_expression_approximates_to<float>("gcd(-234,394)", "2");
|
||||||
assert_expression_approximates_to<double>("gcd(234,-394)", "2");
|
assert_expression_approximates_to<double>("gcd(234,-394)", "2");
|
||||||
assert_expression_approximates_to<float>("gcd(-234,-394)", "2");
|
assert_expression_approximates_to<float>("gcd(-234,-394)", "2");
|
||||||
|
assert_expression_approximates_to<float>("gcd(-234,-394, -16)", "2");
|
||||||
|
assert_expression_approximates_to<double>("gcd(-234,-394, -16)", "2");
|
||||||
|
assert_expression_approximates_to<float>("gcd(6,15,10)", "1");
|
||||||
|
assert_expression_approximates_to<double>("gcd(6,15,10)", "1");
|
||||||
|
assert_expression_approximates_to<float>("gcd(30,105,70,42)", "1");
|
||||||
|
assert_expression_approximates_to<double>("gcd(30,105,70,42)", "1");
|
||||||
|
|
||||||
assert_expression_approximates_to<float>("im(2+3𝐢)", "3");
|
assert_expression_approximates_to<float>("im(2+3𝐢)", "3");
|
||||||
assert_expression_approximates_to<double>("im(2+3𝐢)", "3");
|
assert_expression_approximates_to<double>("im(2+3𝐢)", "3");
|
||||||
@@ -291,6 +297,12 @@ QUIZ_CASE(poincare_approximation_function) {
|
|||||||
assert_expression_approximates_to<float>("lcm(-234,394)", "46098");
|
assert_expression_approximates_to<float>("lcm(-234,394)", "46098");
|
||||||
assert_expression_approximates_to<double>("lcm(234,-394)", "46098");
|
assert_expression_approximates_to<double>("lcm(234,-394)", "46098");
|
||||||
assert_expression_approximates_to<float>("lcm(-234,-394)", "46098");
|
assert_expression_approximates_to<float>("lcm(-234,-394)", "46098");
|
||||||
|
assert_expression_approximates_to<float>("lcm(-234,-394, -16)", "368784");
|
||||||
|
assert_expression_approximates_to<double>("lcm(-234,-394, -16)", "368784");
|
||||||
|
assert_expression_approximates_to<float>("lcm(6,15,10)", "30");
|
||||||
|
assert_expression_approximates_to<double>("lcm(6,15,10)", "30");
|
||||||
|
assert_expression_approximates_to<float>("lcm(30,105,70,42)", "210");
|
||||||
|
assert_expression_approximates_to<double>("lcm(30,105,70,42)", "210");
|
||||||
|
|
||||||
assert_expression_approximates_to<float>("int(x,x, 1, 2)", "1.5");
|
assert_expression_approximates_to<float>("int(x,x, 1, 2)", "1.5");
|
||||||
assert_expression_approximates_to<double>("int(x,x, 1, 2)", "1.5");
|
assert_expression_approximates_to<double>("int(x,x, 1, 2)", "1.5");
|
||||||
|
|||||||
@@ -22,6 +22,13 @@ void assert_gcd_equals_to(Integer a, Integer b, Integer c) {
|
|||||||
fill_buffer_with(failInformationBuffer, bufferSize, "gcd(", args, 2);
|
fill_buffer_with(failInformationBuffer, bufferSize, "gcd(", args, 2);
|
||||||
Integer gcd = Arithmetic::GCD(a, b);
|
Integer gcd = Arithmetic::GCD(a, b);
|
||||||
quiz_assert_print_if_failure(gcd.isEqualTo(c), failInformationBuffer);
|
quiz_assert_print_if_failure(gcd.isEqualTo(c), failInformationBuffer);
|
||||||
|
if (a.isExtractable() && b.isExtractable()) {
|
||||||
|
// Test Arithmetic::GCD(int, int) if possible
|
||||||
|
a.setNegative(false);
|
||||||
|
b.setNegative(false);
|
||||||
|
int extractedGcd = Arithmetic::GCD(a.extractedInt(), b.extractedInt());
|
||||||
|
quiz_assert_print_if_failure(extractedGcd == c.extractedInt(), failInformationBuffer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void assert_lcm_equals_to(Integer a, Integer b, Integer c) {
|
void assert_lcm_equals_to(Integer a, Integer b, Integer c) {
|
||||||
@@ -31,6 +38,13 @@ void assert_lcm_equals_to(Integer a, Integer b, Integer c) {
|
|||||||
fill_buffer_with(failInformationBuffer, bufferSize, "lcm(", args, 2);
|
fill_buffer_with(failInformationBuffer, bufferSize, "lcm(", args, 2);
|
||||||
Integer lcm = Arithmetic::LCM(a, b);
|
Integer lcm = Arithmetic::LCM(a, b);
|
||||||
quiz_assert_print_if_failure(lcm.isEqualTo(c), failInformationBuffer);
|
quiz_assert_print_if_failure(lcm.isEqualTo(c), failInformationBuffer);
|
||||||
|
if (a.isExtractable() && b.isExtractable()) {
|
||||||
|
// Test Arithmetic::LCM(int, int) if possible
|
||||||
|
a.setNegative(false);
|
||||||
|
b.setNegative(false);
|
||||||
|
int extractedLcm = Arithmetic::LCM(a.extractedInt(), b.extractedInt());
|
||||||
|
quiz_assert_print_if_failure(extractedLcm == c.extractedInt(), failInformationBuffer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void assert_prime_factorization_equals_to(Integer a, int * factors, int * coefficients, int length) {
|
void assert_prime_factorization_equals_to(Integer a, int * factors, int * coefficients, int length) {
|
||||||
|
|||||||
@@ -391,6 +391,7 @@ QUIZ_CASE(poincare_simplification_units) {
|
|||||||
assert_parsed_expression_simplify_to("frac(_s)", "undef");
|
assert_parsed_expression_simplify_to("frac(_s)", "undef");
|
||||||
assert_parsed_expression_simplify_to("gcd(1,_s)", "undef");
|
assert_parsed_expression_simplify_to("gcd(1,_s)", "undef");
|
||||||
assert_parsed_expression_simplify_to("gcd(_s,1)", "undef");
|
assert_parsed_expression_simplify_to("gcd(_s,1)", "undef");
|
||||||
|
assert_parsed_expression_simplify_to("gcd(1,2,3,_s)", "undef");
|
||||||
assert_parsed_expression_simplify_to("identity(_s)", "undef");
|
assert_parsed_expression_simplify_to("identity(_s)", "undef");
|
||||||
assert_parsed_expression_simplify_to("im(_s)", "undef");
|
assert_parsed_expression_simplify_to("im(_s)", "undef");
|
||||||
assert_parsed_expression_simplify_to("int(_s,x,0,1)", "undef");
|
assert_parsed_expression_simplify_to("int(_s,x,0,1)", "undef");
|
||||||
@@ -405,6 +406,7 @@ QUIZ_CASE(poincare_simplification_units) {
|
|||||||
assert_parsed_expression_simplify_to("inverse(_s)", "undef");
|
assert_parsed_expression_simplify_to("inverse(_s)", "undef");
|
||||||
assert_parsed_expression_simplify_to("lcm(1,_s)", "undef");
|
assert_parsed_expression_simplify_to("lcm(1,_s)", "undef");
|
||||||
assert_parsed_expression_simplify_to("lcm(_s,1)", "undef");
|
assert_parsed_expression_simplify_to("lcm(_s,1)", "undef");
|
||||||
|
assert_parsed_expression_simplify_to("lcm(1,2,3,_s)", "undef");
|
||||||
assert_parsed_expression_simplify_to("ln(_s)", "undef");
|
assert_parsed_expression_simplify_to("ln(_s)", "undef");
|
||||||
assert_parsed_expression_simplify_to("log(_s)", "undef");
|
assert_parsed_expression_simplify_to("log(_s)", "undef");
|
||||||
assert_parsed_expression_simplify_to("log(_s,2)", "undef");
|
assert_parsed_expression_simplify_to("log(_s,2)", "undef");
|
||||||
@@ -638,9 +640,11 @@ QUIZ_CASE(poincare_simplification_function) {
|
|||||||
assert_parsed_expression_simplify_to("frac(-1.3)", "7/10");
|
assert_parsed_expression_simplify_to("frac(-1.3)", "7/10");
|
||||||
assert_parsed_expression_simplify_to("gcd(123,278)", "1");
|
assert_parsed_expression_simplify_to("gcd(123,278)", "1");
|
||||||
assert_parsed_expression_simplify_to("gcd(11,121)", "11");
|
assert_parsed_expression_simplify_to("gcd(11,121)", "11");
|
||||||
|
assert_parsed_expression_simplify_to("gcd(56,112,28,91)", "7");
|
||||||
assert_parsed_expression_simplify_to("im(1+5×𝐢)", "5");
|
assert_parsed_expression_simplify_to("im(1+5×𝐢)", "5");
|
||||||
assert_parsed_expression_simplify_to("lcm(123,278)", "34194");
|
assert_parsed_expression_simplify_to("lcm(123,278)", "34194");
|
||||||
assert_parsed_expression_simplify_to("lcm(11,121)", "121");
|
assert_parsed_expression_simplify_to("lcm(11,121)", "121");
|
||||||
|
assert_parsed_expression_simplify_to("lcm(11,121, 3)", "363");
|
||||||
assert_parsed_expression_simplify_to("√(4)", "2");
|
assert_parsed_expression_simplify_to("√(4)", "2");
|
||||||
assert_parsed_expression_simplify_to("re(1+5×𝐢)", "1");
|
assert_parsed_expression_simplify_to("re(1+5×𝐢)", "1");
|
||||||
assert_parsed_expression_simplify_to("root(4,3)", "root(4,3)");
|
assert_parsed_expression_simplify_to("root(4,3)", "root(4,3)");
|
||||||
@@ -1008,6 +1012,7 @@ QUIZ_CASE(poincare_simplification_functions_of_matrices) {
|
|||||||
assert_parsed_expression_simplify_to("gcd([[0,180]],1)", Undefined::Name());
|
assert_parsed_expression_simplify_to("gcd([[0,180]],1)", Undefined::Name());
|
||||||
assert_parsed_expression_simplify_to("gcd(1,[[0,180]])", Undefined::Name());
|
assert_parsed_expression_simplify_to("gcd(1,[[0,180]])", Undefined::Name());
|
||||||
assert_parsed_expression_simplify_to("gcd([[0,180]],[[1]])", Undefined::Name());
|
assert_parsed_expression_simplify_to("gcd([[0,180]],[[1]])", Undefined::Name());
|
||||||
|
assert_parsed_expression_simplify_to("gcd(1,2,[[1]])", Undefined::Name());
|
||||||
assert_parsed_expression_simplify_to("acosh([[0,π]])", "[[acosh(0),acosh(π)]]");
|
assert_parsed_expression_simplify_to("acosh([[0,π]])", "[[acosh(0),acosh(π)]]");
|
||||||
assert_parsed_expression_simplify_to("asinh([[0,π]])", "[[0,asinh(π)]]");
|
assert_parsed_expression_simplify_to("asinh([[0,π]])", "[[0,asinh(π)]]");
|
||||||
assert_parsed_expression_simplify_to("atanh([[0,π]])", "[[0,atanh(π)]]");
|
assert_parsed_expression_simplify_to("atanh([[0,π]])", "[[0,atanh(π)]]");
|
||||||
@@ -1206,9 +1211,13 @@ QUIZ_CASE(poincare_simplification_complex_format) {
|
|||||||
assert_parsed_expression_simplify_to("floor(x)", "floor(x)", User, Radian, Cartesian);
|
assert_parsed_expression_simplify_to("floor(x)", "floor(x)", User, Radian, Cartesian);
|
||||||
assert_parsed_expression_simplify_to("frac(x)", "frac(x)", User, Radian, Cartesian);
|
assert_parsed_expression_simplify_to("frac(x)", "frac(x)", User, Radian, Cartesian);
|
||||||
assert_parsed_expression_simplify_to("gcd(x,y)", "gcd(x,y)", User, Radian, Cartesian);
|
assert_parsed_expression_simplify_to("gcd(x,y)", "gcd(x,y)", User, Radian, Cartesian);
|
||||||
|
assert_parsed_expression_simplify_to("gcd(x,gcd(y,z))", "gcd(x,y,z)", User, Radian, Cartesian);
|
||||||
|
assert_parsed_expression_simplify_to("gcd(3, 1, 2, x, x^2)", "gcd(x^2,x,3,2,1)", User, Radian, Cartesian);
|
||||||
assert_parsed_expression_simplify_to("im(1+𝐢)", "1", User, Radian, Cartesian);
|
assert_parsed_expression_simplify_to("im(1+𝐢)", "1", User, Radian, Cartesian);
|
||||||
assert_parsed_expression_simplify_to("int(x^2, x, 1, 2)", "int(x^2,x,1,2)", User, Radian, Cartesian);
|
assert_parsed_expression_simplify_to("int(x^2, x, 1, 2)", "int(x^2,x,1,2)", User, Radian, Cartesian);
|
||||||
assert_parsed_expression_simplify_to("lcm(x,y)", "lcm(x,y)", User, Radian, Cartesian);
|
assert_parsed_expression_simplify_to("lcm(x,y)", "lcm(x,y)", User, Radian, Cartesian);
|
||||||
|
assert_parsed_expression_simplify_to("lcm(x,lcm(y,z))", "lcm(x,y,z)", User, Radian, Cartesian);
|
||||||
|
assert_parsed_expression_simplify_to("lcm(3, 1, 2, x, x^2)", "lcm(x^2,x,3,2,1)", User, Radian, Cartesian);
|
||||||
// TODO: dim is not simplified yet
|
// TODO: dim is not simplified yet
|
||||||
//assert_parsed_expression_simplify_to("dim(x)", "dim(x)", User, Radian, Cartesian);
|
//assert_parsed_expression_simplify_to("dim(x)", "dim(x)", User, Radian, Cartesian);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user