using SymEngine::integer; using SymEngine::Rational; using SymEngine::rational; using SymEngine::Number; using SymEngine::is_a; TEST_CASE("Rational", "[rational]") { RCP<const Integer> i2 = integer(2); RCP<const Integer> i5 = integer(5); RCP<const Integer> i10 = integer(10); RCP<const Integer> i25 = integer(25); RCP<const Number> q10_25 = Rational::from_two_ints(*i10, *i25); RCP<const Number> q2_5 = Rational::from_two_ints(*i2, *i5); RCP<const Number> q = rational(2, 5); REQUIRE(q10_25->__eq__(*q2_5)); REQUIRE(q10_25->__eq__(*q)); RCP<const Number> r1 = rational(2, 1); CHECK(is_a<Integer>(*r1)); CHECK(r1->__eq__(*integer(2))); r1 = rational(9, 3); CHECK(is_a<Integer>(*r1)); CHECK(r1->__eq__(*integer(3))); } TEST_CASE("Rational compare", "[rational compare]") {
using SymEngine::NotImplementedError; using SymEngine::SymEngineException; using SymEngine::DomainError; using SymEngine::pi; using SymEngine::gamma; using SymEngine::I; using SymEngine::Nan; using SymEngine::erf; using SymEngine::erfc; using SymEngine::I; using SymEngine::make_rcp; using SymEngine::complex_double; TEST_CASE("Constructors for Infinity", "[Infinity]") { RCP<const Number> r1 = rational(1, 1); RCP<const Number> rm1 = rational(-1, 1); RCP<const Number> r0 = rational(0, 1); RCP<const Integer> im1 = integer(-1); RCP<const Integer> i0 = integer(0); RCP<const Infty> a = Infty::from_direction(r1); RCP<const Infty> b = Infty::from_direction(rm1); RCP<const Infty> c = Infty::from_direction(r0); REQUIRE(eq(*a, *Inf)); REQUIRE(eq(*b, *NegInf)); REQUIRE(eq(*c, *ComplexInf)); CHECK_THROWS_AS(a->is_canonical(complex_double(std::complex<double>(2, 3))),