Return (x * y) + z, with a single rounding according to the current
    context.

def fma(x, y, z, context=None):
    """
    Return (x * y) + z, with a single rounding according to the current
    context.

    """
    return _apply_function_in_current_context(
        BigFloat,
        mpfr.mpfr_fma,
        (
            BigFloat._implicit_convert(x),
            BigFloat._implicit_convert(y),
            BigFloat._implicit_convert(z),
        ),
        context,
    )