An interior point algorithm for convex quadratic programming that requires O(n3.5) arithmetic operations