Convex Optimization by Stephen Boyd