I believe that radial_order must be even in the way you have implemented your ordering and M matrix, no? You should say so and add a check when the constructor is called.