#include "acb.h"
#include "fmpz_mpoly_q.h"
#include "gr.h"
#include "gr_generic.h"
void
fmpz_mpoly_q_evaluate_acb(acb_t res, const fmpz_mpoly_q_t f, acb_srcptr x, slong prec, const fmpz_mpoly_ctx_t ctx)
{
if (fmpz_mpoly_is_one(fmpz_mpoly_q_denref(f), ctx))
{
fmpz_mpoly_evaluate_acb(res, fmpz_mpoly_q_numref(f), x, prec, ctx);
}
else
{
acb_t t;
acb_init(t);
fmpz_mpoly_evaluate_acb(t, fmpz_mpoly_q_denref(f), x, prec, ctx);
if (acb_contains_zero(t))
{
acb_indeterminate(res);
}
else
{
fmpz_mpoly_evaluate_acb(res, fmpz_mpoly_q_numref(f), x, prec, ctx);
acb_div(res, res, t, prec);
}
acb_clear(t);
}
}