Numworks Epsilon  1.4.1
Graphing Calculator Operating System
rational.cpp
Go to the documentation of this file.
1 #include <quiz.h>
2 #include <poincare.h>
3 #include <assert.h>
4 #include "helper.h"
5 
6 using namespace Poincare;
7 
8 QUIZ_CASE(poincare_rational_sign) {
10  assert(Rational(-2, 3).sign() == Expression::Sign::Negative);
12 }
13 
14 QUIZ_CASE(poincare_rational_compare) {
15  assert(Rational::NaturalOrder(Rational(123, 234),Rational(456, 567)) < 0);
16  assert(Rational::NaturalOrder(Rational(-123, 234),Rational(456, 567)) < 0);
17  assert(Rational::NaturalOrder(Rational(123, 234),Rational(-456, 567)) > 0);
18  assert(Rational::NaturalOrder(Rational(123, 234),Rational("123456789123456789", "12345678912345678910")) > 0);
19 }
20 
21 QUIZ_CASE(poincare_rational_evaluate) {
22  Complex<float> a[1] = {Complex<float>::Float(0.333333333f)};
24  Complex<float> b[1] = {Complex<float>::Float(0.099999)};
25  assert_parsed_expression_evaluates_to("123456/1234567", b);
26 }
27 
28 QUIZ_CASE(poincare_rational_simplify) {
30  assert_parsed_expression_simplify_to("22355/45325", "4471/9065");
31  assert_parsed_expression_simplify_to("0000.000000", "0");
34  assert_parsed_expression_simplify_to("0.1234567", "1234567/10000000");
35  assert_parsed_expression_simplify_to("123.4567", "1234567/10000");
36  assert_parsed_expression_simplify_to("0.1234", "617/5000");
37  assert_parsed_expression_simplify_to("0.1234000", "617/5000");
38  assert_parsed_expression_simplify_to("001234000", "1234000");
39  assert_parsed_expression_simplify_to("001.234000E3", "1234");
40  assert_parsed_expression_simplify_to("001234000E-4", "617/5");
41  assert_parsed_expression_simplify_to("3/4+5/4-12+1/567", "-5669/567");
42  assert_parsed_expression_simplify_to("34/78+67^(-1)", "1178/2613");
43  assert_parsed_expression_simplify_to("12348/34564", "3087/8641");
44  assert_parsed_expression_simplify_to("1-0.3-0.7", "0");
45  assert_parsed_expression_simplify_to("123456789123456789+112233445566778899", "235690234690235688");
46  assert_parsed_expression_simplify_to("56^56", "79164324866862966607842406018063254671922245312646690223362402918484170424104310169552592050323456");
47  assert_parsed_expression_simplify_to("999^999", "999^999");
48  assert_parsed_expression_simplify_to("999^-999", "1/999^999");
54 }
#define assert(e)
Definition: assert.h:9
QUIZ_CASE(poincare_rational_sign)
Definition: rational.cpp:8
void assert_parsed_expression_simplify_to(const char *expression, const char *simplifiedExpression, Expression::AngleUnit angleUnit)
Definition: helper.cpp:90
static int NaturalOrder(const Rational &i, const Rational &j)
Definition: rational.cpp:127
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