22 ar =
lambda M: (1.0 / M) * ((2.0 / (g + 1.0)) * (1.0 + 0.5 * (g - 1.0) * M * M)) ** ((g + 1.0) / (2.0 * (g - 1.0)))
23 M = brentq(
lambda M: ar(M) - cr, 1e-8, 1.0)
24 return (1.0 + g * M * M) / (1.0 + 0.5 * (g - 1.0) * M * M) ** (g / (g - 1.0))
27@pytest.mark.parametrize("cr,hand", [(8.26, 1.0030), (4.84, 1.0087), (3.0, 1.0227), (2.0, 1.0518)])