def _rkck(y, dydt, t, f, dt, args=()):
    """
    Take one 5th-order Cash-Karp Runge-Kutta step.

    Returns
    -------
    array_like
        The change in `y` during this step.
    array_like
        An error estimate for `y`.
    """
    a2 = 0.2
    a3 = 0.3
    a4 = 0.6
    a5 = 1.0
    a6 = 0.875
    b21 = 0.2
    b31 = 3.0 / 40.0
    b32 = 9.0 / 40.0
    b41 = 0.3
    b42 = -0.9
    b43 = 1.2
    b51 = -11.0 / 54.0
    b52 = 2.5
    b53 = -70.0 / 27.0
    b54 = 35.0 / 27.0
    b61 = 1631.0 / 55296.0
    b62 = 175.0 / 512.0
    b63 = 575.0 / 13824.0
    b64 = 44275.0 / 110592.0
    b65 = 253.0 / 4096.0
    c1 = 37.0 / 378.0
    c3 = 250.0 / 621.0
    c4 = 125.0 / 594.0
    c6 = 512.0 / 1771.0
    dc5 = -277.0 / 14336.0
    dc1 = c1 - 2825.0 / 27648.0
    dc3 = c3 - 18575.0 / 48384.0
    dc4 = c4 - 13525.0 / 55296.0
    dc6 = c6 - 0.25
    ytemp = y + b21 * dt * dydt
    ak2 = f(ytemp, t + a2 * dt, *args)
    ytemp = y + dt * (b31 * dydt + b32 * ak2)
    ak3 = f(ytemp, t + a3 * dt, *args)
    ytemp = y + dt * (b41 * dydt + b42 * ak2 + b43 * ak3)
    ak4 = f(ytemp, t + a4 * dt, *args)
    ytemp = y + dt * (b51 * dydt + b52 * ak2 + b53 * ak3 + b54 * ak4)
    ak5 = f(ytemp, t + a5 * dt, *args)
    ytemp = y + dt * (b61 * dydt + b62 * ak2 + b63 * ak3 + b64 * ak4 + b65 *
        ak5)
    ak6 = f(ytemp, t + a6 * dt, *args)
    dyout = dt * (c1 * dydt + c3 * ak3 + c4 * ak4 + c6 * ak6)
    yerr = dt * (dc1 * dydt + dc3 * ak3 + dc4 * ak4 + dc5 * ak5 + dc6 * ak6)
    return dyout, yerr
