docs: def msh_to_cielab (msh):
      """Convert Moreland's Msh colorspace to CIE L*a*b*.
  
      *msh* should be of shape (*, 3).
  
      Return value will have same shape.
  
      """
      cielab = np.empty_like (msh)
      cielab[...,L] = msh[...,M] * np.cos (msh[...,S])
      cielab[...,A] = msh[...,M] * np.sin (msh[...,S]) * np.cos (msh[...,H])
      cielab[...,B] = msh[...,M] * np.sin (msh[...,S]) * np.sin (msh[...,H])
      return cielab