Exemplo n.º 1
0
    REQUIRE((integer_class(100) % integer_class(17)) == 15);

    // compound modulus operator
    j = -9;
    i = 7;
    j %= i;
    REQUIRE(j == -2);

    // move constructor and move assignment
    integer_class n = 5;
    integer_class m(std::move(n));
    i = std::move(m);

    // construction of rational_class
    // r = rational_class(integer_class(2),3);  fails!
    r = rational_class(integer_class(2), integer_class(3));

    // truncated division
    j = integer_class(12) / integer_class(5);
    REQUIRE(j == 2);
    j = integer_class(-12) / integer_class(5);
    REQUIRE(j == -2);
}

TEST_CASE("powers and roots: integer_class", "[integer_class]")
{
    integer_class res, i;

    // mp_pow_ui
    mp_pow_ui(res, -1, 0);
    REQUIRE(res == 1);
Exemplo n.º 2
0
CWRAPPER_OUTPUT_TYPE complex_set_mpq(basic s, const mpq_t re, const mpq_t im)
{
    CWRAPPER_BEGIN
    s->m = SymEngine::Complex::from_mpq(rational_class(re), rational_class(im));
    CWRAPPER_END
}
Exemplo n.º 3
0
CWRAPPER_OUTPUT_TYPE rational_set_ui(basic s, unsigned long a, unsigned long b)
{
    CWRAPPER_BEGIN
    s->m = SymEngine::Rational::from_mpq(rational_class(a, b));
    CWRAPPER_END
}
Exemplo n.º 4
0
CWRAPPER_OUTPUT_TYPE rational_set_mpq(basic s, const mpq_t i)
{
    CWRAPPER_BEGIN
    s->m = SymEngine::Rational::from_mpq(rational_class(i));
    CWRAPPER_END
}
Exemplo n.º 5
0
    REQUIRE(eq(*r1, *r2));

    r1 = add(x, I);
    r2 = add(I, x);
    REQUIRE(eq(*r1, *r2));
    r2 = add({I, x});
    REQUIRE(eq(*r1, *r2));

    r1 = mul(x, I);
    r2 = mul(mul(I, i2), x);
    r3 = mul(mul(I, i3), x);
    r2 = add(r1, r2);
    REQUIRE(eq(*r3, *r2));

    r1 = real_double(0.1);
    r2 = Rational::from_mpq(rational_class(1, 2));
    r3 = add(add(add(r1, r2), integer(1)), real_double(0.2));
    REQUIRE(is_a<RealDouble>(*r3));
    REQUIRE(std::abs(rcp_static_cast<const RealDouble>(r3)->i - 1.8) < 1e-12);
    r3 = add({r1, r2, integer(1), real_double(0.2)});
    REQUIRE(std::abs(rcp_static_cast<const RealDouble>(r3)->i - 1.8) < 1e-12);

    r1 = complex_double(std::complex<double>(0.1, 0.2));
    r2 = Complex::from_two_nums(*Rational::from_mpq(rational_class(1, 2)),
                                *Rational::from_mpq(rational_class(7, 5)));
    r3 = add(add(add(r1, r2), integer(1)), real_double(0.4));
    REQUIRE(is_a<ComplexDouble>(*r3));
    REQUIRE(std::abs(rcp_static_cast<const ComplexDouble>(r3)->i.real() - 2.0)
            < 1e-12);
    REQUIRE(std::abs(rcp_static_cast<const ComplexDouble>(r3)->i.imag() - 1.6)
            < 1e-12);