Binary Quadratic Forms:An Algorithmic Approach