#include "fmpz_mpoly_q.h"
void
fmpz_mpoly_q_inv(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx)
{
if (fmpz_mpoly_is_zero(fmpz_mpoly_q_numref(x), ctx))
{
flint_throw(FLINT_DIVZERO, "fmpz_mpoly_q_inv: division by zero\n");
}
if (res != x)
fmpz_mpoly_q_set(res, x, ctx);
fmpz_mpoly_swap(fmpz_mpoly_q_numref(res), fmpz_mpoly_q_denref(res), ctx);
if (fmpz_sgn(fmpz_mpoly_q_denref(res)->coeffs) < 0)
{
fmpz_mpoly_neg(fmpz_mpoly_q_numref(res), fmpz_mpoly_q_numref(res), ctx);
fmpz_mpoly_neg(fmpz_mpoly_q_denref(res), fmpz_mpoly_q_denref(res), ctx);
}
}