mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-24 16:20:49 +01:00
[poincare] Add Integer tests
This commit is contained in:
@@ -59,6 +59,25 @@ QUIZ_CASE(poincare_integer_compare) {
|
||||
//FIXME: assert(Integer("0b1011") == Integer(11));
|
||||
}
|
||||
|
||||
QUIZ_CASE(poincare_integer_properties) {
|
||||
assert(Integer(0).isZero());
|
||||
assert(!Integer(-1).isZero());
|
||||
assert(!Integer(1).isZero());
|
||||
assert(Integer(1).isOne());
|
||||
assert(!Integer(-1).isOne());
|
||||
assert(!Integer(0).isOne());
|
||||
assert(Integer("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216").isInfinity()); // 2^32^k_maxNumberOfDigits
|
||||
assert(!Integer("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215").isInfinity()); // 2^32^k_maxNumberOfDigits-1
|
||||
assert(!Integer(0).isInfinity());
|
||||
assert(Integer(8).isEven());
|
||||
assert(!Integer(7).isEven());
|
||||
assert(Integer(-8).isEven());
|
||||
assert(!Integer(-7).isEven());
|
||||
assert(!Integer(2).isNegative());
|
||||
assert(Integer(-2).isNegative());
|
||||
//assert(Integer::NumberOfBase10Digits(Integer("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215")) == 308);
|
||||
}
|
||||
|
||||
static inline void assert_add_to(const Integer i, const Integer j, const Integer k) {
|
||||
assert(Integer::NaturalOrder(Integer::Addition(i, j), k) == 0);
|
||||
}
|
||||
@@ -164,50 +183,66 @@ QUIZ_CASE(poincare_integer_divide) {
|
||||
assert_div_to(Integer("0"), Integer("-10"), Integer("0"), Integer("0"));
|
||||
assert_div_to(Integer("0"), Integer("-123456789098760"), Integer("0"), Integer("0"));
|
||||
assert_div_to(Integer("2305843009213693952"), Integer("2305843009213693921"), Integer("1"), Integer("31"));
|
||||
//assert_div_to(Integer("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216"), Integer("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216"), Integer(1), Integer(0));
|
||||
}
|
||||
|
||||
#if 0
|
||||
template<typename T>
|
||||
void assert_integer_evals_to(const char * i, bool negative, T result) {
|
||||
assert(Integer(i, negative).approximate<T>() == result);
|
||||
static inline void assert_pow_to(const Integer i, const Integer j, const Integer k) {
|
||||
assert(Integer::NaturalOrder(Integer::Power(i, j), k) == 0);
|
||||
}
|
||||
|
||||
QUIZ_CASE(poincare_integer_pow) {
|
||||
assert_pow_to(Integer(2), Integer(2), Integer(4));
|
||||
assert_pow_to(Integer("12345678910111213141516171819202122232425"), Integer(2), Integer("152415787751564791571474464067365843004067618915106260955633159458990465721380625"));
|
||||
}
|
||||
|
||||
|
||||
// Simplify
|
||||
template<typename T>
|
||||
void assert_integer_evals_to(const char * i, T result) {
|
||||
GlobalContext c;
|
||||
assert(Integer(i).approximateToScalar<T>(c, Preferences::AngleUnit::Radian) == result);
|
||||
}
|
||||
#endif
|
||||
|
||||
QUIZ_CASE(poincare_integer_evaluate) {
|
||||
#if 0
|
||||
assert_integer_evals_to("1", false, 1.0f);
|
||||
assert_integer_evals_to("1", false, 1.0);
|
||||
assert_integer_evals_to("12345678", false, 12345678.0f);
|
||||
assert_integer_evals_to("12345678", false, 12345678.0);
|
||||
assert_integer_evals_to("0", false, 0.0f);
|
||||
assert_integer_evals_to("0", false, 0.0);
|
||||
assert_integer_evals_to("0", true, 0.0f);
|
||||
assert_integer_evals_to("0", true, 0.0);
|
||||
assert_integer_evals_to("1", true, -1.0f);
|
||||
assert_integer_evals_to("1", true, -1.0);
|
||||
assert_integer_evals_to("12345678", false, 12345678.0f);
|
||||
assert_integer_evals_to("12345678", false, 12345678.0);
|
||||
assert_integer_evals_to("4294967295", false, 4294967295.0f);
|
||||
assert_integer_evals_to("4294967295", false, 4294967295.0);
|
||||
assert_integer_evals_to("4294967296", true, -4294967296.0f);
|
||||
assert_integer_evals_to("4294967296", true, -4294967296.0);
|
||||
assert_integer_evals_to("2147483648", false, 2147483648.0f);
|
||||
assert_integer_evals_to("2147483648", false, 2147483648.0);
|
||||
assert_integer_evals_to("18446744073709551615", true, -18446744073709551615.0f);
|
||||
assert_integer_evals_to("18446744073709551615", true, -18446744073709551615.0);
|
||||
assert_integer_evals_to("18446744073709551616", true, -18446744073709551616.0f);
|
||||
assert_integer_evals_to("18446744073709551616", true, -18446744073709551616.0);
|
||||
assert_integer_evals_to("92233720372036854775808", false, 92233720372036854775808.0f);
|
||||
assert_integer_evals_to("92233720372036854775808", false, 92233720372036854775808.0);
|
||||
assert_integer_evals_to("134217720", false, 134217720.0f);
|
||||
assert_integer_evals_to("134217720", false, 134217720.0);
|
||||
assert_integer_evals_to("67108864", false, 67108864.0f);
|
||||
assert_integer_evals_to("67108864", false, 67108864.0);
|
||||
assert_integer_evals_to("33554432", false, 33554432.0f);
|
||||
assert_integer_evals_to("33554432", false, 33554432.0);
|
||||
assert_integer_evals_to("2", false, 2.0f);
|
||||
assert_integer_evals_to("2", false, 2.0);
|
||||
assert_integer_evals_to("4", false, 4.0f);
|
||||
assert_integer_evals_to("4", false, 4.0);
|
||||
#endif
|
||||
assert_integer_evals_to("1", 1.0f);
|
||||
assert_integer_evals_to("1", 1.0);
|
||||
assert_integer_evals_to("12345678", 12345678.0f);
|
||||
assert_integer_evals_to("12345678", 12345678.0);
|
||||
assert_integer_evals_to("0", 0.0f);
|
||||
assert_integer_evals_to("0", 0.0);
|
||||
assert_integer_evals_to("-0", 0.0f);
|
||||
assert_integer_evals_to("-0", 0.0);
|
||||
assert_integer_evals_to("-1", -1.0f);
|
||||
assert_integer_evals_to("-1", -1.0);
|
||||
assert_integer_evals_to("12345678", 12345678.0f);
|
||||
assert_integer_evals_to("12345678", 12345678.0);
|
||||
assert_integer_evals_to("4294967295", 4294967295.0f);
|
||||
assert_integer_evals_to("4294967295", 4294967295.0);
|
||||
assert_integer_evals_to("-4294967296", -4294967296.0f);
|
||||
assert_integer_evals_to("-4294967296", -4294967296.0);
|
||||
assert_integer_evals_to("2147483648", 2147483648.0f);
|
||||
assert_integer_evals_to("2147483648", 2147483648.0);
|
||||
assert_integer_evals_to("-18446744073709551615", -18446744073709551615.0f);
|
||||
assert_integer_evals_to("-18446744073709551615", -18446744073709551615.0);
|
||||
assert_integer_evals_to("-18446744073709551616", -18446744073709551616.0f);
|
||||
assert_integer_evals_to("-18446744073709551616", -18446744073709551616.0);
|
||||
assert_integer_evals_to("92233720372036854775808", 92233720372036854775808.0f);
|
||||
assert_integer_evals_to("92233720372036854775808", 92233720372036854775808.0);
|
||||
assert_integer_evals_to("134217720", 134217720.0f);
|
||||
assert_integer_evals_to("134217720", 134217720.0);
|
||||
assert_integer_evals_to("67108864", 67108864.0f);
|
||||
assert_integer_evals_to("67108864", 67108864.0);
|
||||
assert_integer_evals_to("33554432", 33554432.0f);
|
||||
assert_integer_evals_to("33554432", 33554432.0);
|
||||
assert_integer_evals_to("2", 2.0f);
|
||||
assert_integer_evals_to("2", 2.0);
|
||||
assert_integer_evals_to("4", 4.0f);
|
||||
assert_integer_evals_to("4", 4.0);
|
||||
assert_integer_evals_to("179769313486230000002930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215", 1.7976931348622999E+308);
|
||||
assert_integer_evals_to("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216", 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216.0);
|
||||
assert_integer_evals_to("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215", 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215.0);
|
||||
}
|
||||
|
||||
//Layout
|
||||
//
|
||||
//SErialize
|
||||
|
||||
Reference in New Issue
Block a user