Numworks Epsilon  1.4.1
Graphing Calculator Operating System
multiplication.cpp
Go to the documentation of this file.
1 #include <quiz.h>
2 #include <poincare.h>
3 #include <ion.h>
4 #include <assert.h>
5 #include "helper.h"
6 
7 using namespace Poincare;
8 
9 QUIZ_CASE(poincare_multiplication_evaluate) {
12 
13  Complex<double> b[1] = {Complex<double>::Cartesian(11.0, 7.0)};
14  assert_parsed_expression_evaluates_to("(3+I)*(4+I)", b);
15 
16 #if MATRICES_ARE_DEFINED
18  assert_parsed_expression_evaluates_to("[[1,2][3,4][5,6]]*2", c, 3, 2);
19 
21  assert_parsed_expression_evaluates_to("[[1,2+I][3,4][5,6]]*(3+I)", d, 3, 2);
22 
23  assert_parsed_expression_evaluates_to("2*[[1,2][3,4][5,6]]", c, 3, 2);
24 
25  assert_parsed_expression_evaluates_to("(3+I)*[[1,2+I][3,4][5,6]]", d, 3, 2);
26 
28  assert_parsed_expression_evaluates_to("[[1,2][3,4][5,6]]*[[1,2,3,4][5,6,7,8]]", e, 3, 4);
29 
31  assert_parsed_expression_evaluates_to("[[1,2+I][3,4][5,6]]*[[1,2+I,3,4][5,6+I,7,8]]", f, 3, 4);
32 #endif
33 }
34 
35 QUIZ_CASE(poincare_multiplication_simplify) {
37  assert_parsed_expression_simplify_to("0*x*0*32*cos(3)", "0");
38  assert_parsed_expression_simplify_to("3*A^4*B^x*B^2*(A^2+2)*2*1.2", "(72*A^4*B^(2+x)+36*A^6*B^(2+x))/5");
39  assert_parsed_expression_simplify_to("A*(B+C)*(D+3)", "3*A*B+3*A*C+A*B*D+A*C*D");
41  assert_parsed_expression_simplify_to("(A*B)^2", "A^2*B^2");
42  assert_parsed_expression_simplify_to("(1/2)*A/B", "A/(2*B)");
43  assert_parsed_expression_simplify_to("1+2+3+4+5+6", "21");
44  assert_parsed_expression_simplify_to("1-2+3-4+5-6", "-3");
45  assert_parsed_expression_simplify_to("987654321123456789*998877665544332211", "986545842648570754445552922919330479");
47  assert_parsed_expression_simplify_to("9/17+5/4", "121/68");
48  assert_parsed_expression_simplify_to("1/2*3/4", "3/8");
50  assert_parsed_expression_simplify_to("1+(1/(1+1/(1+1/(1+1))))", "8/5");
51  assert_parsed_expression_simplify_to("1+2/(3+4/(5+6/(7+8)))", "155/101");
52  assert_parsed_expression_simplify_to("3/4*16/12", "1");
53  assert_parsed_expression_simplify_to("3/4*(8+8)/12", "1");
54  assert_parsed_expression_simplify_to("916791/794976477", "305597/264992159");
55  assert_parsed_expression_simplify_to("321654987123456789/112233445566778899", "3249040273974311/1133671167341201");
56  assert_parsed_expression_simplify_to("0.1+0.2", "3/10");
58  assert_parsed_expression_simplify_to("(-1)*(-1)", "1");
60  assert_parsed_expression_simplify_to("(-3)^3", "-27");
61  assert_parsed_expression_simplify_to("(1/2)^-1", "2");
62  assert_parsed_expression_simplify_to("R(2)*R(3)", "R(6)");
63  assert_parsed_expression_simplify_to("2*2^P", "2*2^P");
64  assert_parsed_expression_simplify_to("A^3*B*A^(-3)", "B");
65  assert_parsed_expression_simplify_to("A^3*A^(-3)", "1");
66  assert_parsed_expression_simplify_to("2^P*(1/2)^P", "1");
67  assert_parsed_expression_simplify_to("A^3*A^(-3)", "1");
68  assert_parsed_expression_simplify_to("(x+1)*(x+2)", "2+3*x+x^2");
69  assert_parsed_expression_simplify_to("(x+1)*(x-1)", "(-1)+x^2");
70  assert_parsed_expression_simplify_to("11P/(22P+11P)", "1/3");
71  assert_parsed_expression_simplify_to("11/(22P+11P)", "1/(3*P)");
72  assert_parsed_expression_simplify_to("-11/(22P+11P)", "-1/(3*P)");
73  assert_parsed_expression_simplify_to("A^2*BA^(-2)*B^(-2)", "1/B");
74  assert_parsed_expression_simplify_to("A^(-1)*B^(-1)", "1/(A*B)");
78  assert_parsed_expression_simplify_to("2*x+2*x", "4*x");
79  assert_parsed_expression_simplify_to("x*2+2*n", "2*n+2*x");
80  assert_parsed_expression_simplify_to("x+x+n+n", "2*n+2*x");
84  assert_parsed_expression_simplify_to("P*3^(1/2)*(5P)^(1/2)*(4/5)^(1/2)", "2*R(3)*P^(3/2)");
85  assert_parsed_expression_simplify_to("12^(1/4)*(P/6)*(12*P)^(1/4)", "(R(3)*P^(5/4))/3");
86 }
static Complex< T > Cartesian(T a, T b)
Definition: complex.cpp:28
c(generic_all_nodes)
void assert_parsed_expression_simplify_to(const char *expression, const char *simplifiedExpression, Expression::AngleUnit angleUnit)
Definition: helper.cpp:90
void assert_parsed_expression_evaluates_to(const char *expression, Complex< T > *results, int numberOfRows, int numberOfColumns, Expression::AngleUnit angleUnit)
Definition: helper.cpp:69
static Complex< T > Float(T x)
Definition: complex.cpp:23
QUIZ_CASE(poincare_multiplication_evaluate)