<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def floor(x, context=None):
 """ Return the next lower or equal integer to x. If the result is not exactly representable, it will be rounded according to the current context. Note that it's possible for the result to be larger than ``x``. See the documentation of the :func:`ceil` function for more information. .. note:: This function corresponds to the MPFR function ``mpfr_rint_floor``, not to ``mpfr_floor``. """

    return _apply_function_in_current_context(
        BigFloat,
        mpfr.mpfr_rint_floor,
        (BigFloat._implicit_convert(x),),
        context,
    )