  In this paper, we give an algorithm that finds an epsilon-approximate
solution to a mixed integer quadratic programming (MIQP) problem. The algorithm
runs in polynomial time if the rank of the quadratic function and the number of
integer variables are fixed. The running time of the algorithm is expected
unless P=NP. In order to design this algorithm we introduce the novel concepts
of spherical form MIQP and of aligned vectors, and we provide a number of
results of independent interest. In particular, we give a strongly polynomial
algorithm to find a symmetric decomposition of a matrix, and show a related
result on simultaneous diagonalization of matrices.
