#include "test_helpers.h"
#include "fmpq.h"
#include "arb.h"
TEST_FUNCTION_START(arb_contains_interior, state)
{
slong iter;
for (iter = 0; iter < 100000 * 0.1 * flint_test_multiplier(); iter++)
{
arb_t a, b;
fmpq_t am, ar, bm, br, t, u;
int c1, c2;
arb_init(a);
arb_init(b);
fmpq_init(am);
fmpq_init(ar);
fmpq_init(bm);
fmpq_init(br);
fmpq_init(t);
fmpq_init(u);
arb_randtest(a, state, 1 + n_randint(state, 500), 14);
arb_randtest(b, state, 1 + n_randint(state, 500), 14);
arf_get_fmpq(am, arb_midref(a));
mag_get_fmpq(ar, arb_radref(a));
arf_get_fmpq(bm, arb_midref(b));
mag_get_fmpq(br, arb_radref(b));
c1 = arb_contains_interior(a, b);
fmpq_sub(t, am, ar);
fmpq_sub(u, bm, br);
c2 = fmpq_cmp(t, u) < 0;
fmpq_add(t, am, ar);
fmpq_add(u, bm, br);
c2 = c2 && (fmpq_cmp(t, u) > 0);
if (c1 != c2)
{
flint_printf("FAIL:\n\n");
flint_printf("a = "); arb_print(a); flint_printf("\n\n");
flint_printf("b = "); arb_print(b); flint_printf("\n\n");
flint_printf("am = "); fmpq_print(am); flint_printf("\n\n");
flint_printf("ar = "); fmpq_print(ar); flint_printf("\n\n");
flint_printf("bm = "); fmpq_print(bm); flint_printf("\n\n");
flint_printf("br = "); fmpq_print(br); flint_printf("\n\n");
flint_printf("t = "); fmpq_print(t); flint_printf("\n\n");
flint_printf("u = "); fmpq_print(u); flint_printf("\n\n");
flint_printf("c1 = %d, c2 = %d\n\n", c1, c2);
flint_abort();
}
arb_clear(a);
arb_clear(b);
fmpq_clear(am);
fmpq_clear(ar);
fmpq_clear(bm);
fmpq_clear(br);
fmpq_clear(t);
fmpq_clear(u);
}
TEST_FUNCTION_END(state);
}