1. A method for generating a codebook of a plurality of codebooks, the method comprising: applying, by a designing device, a unitary rotation to a baseline multidimensional constellation to produce a multidimensional mother constellation, wherein the unitary rotation is selected to optimize a distance function of the multidimensional mother constellation; applying, by the designing device, a set of operations to the multidimensional mother constellation to produce a set of constellation points; and storing, by the designing device, the set of constellation points as the codebook of the plurality of codebooks.