Question about gp mode

Hello,

I have a quick question about cvx’s gp mode. When I run the regular cvx mode for the following program

cvx_begin
   variables y(4,1) x
   y + x*(1:4)' <= (5:8)';
   x <= 8;
   y >= 0;
   minimize( norm(y))
cvx_end

everything works and no errors are detected. Now, let’s say I run the same program in gp mode

cvx_begin gp
   variables y(4,1) x
   y + x*(1:4)' <= (5:8)';
   x <= 8;
   y >= 0;
   minimize( norm(y))
cvx_end

This gives the following error

Error using + (line 45)
Matrix dimensions must agree.

Error in - (line 21)
z = plus( x, y, true, cheat );

Error in cvxprob/newcnstr (line 219)
z = minus( x, y );

Error in >= (line 21)
b = newcnstr( evalin( ‘caller’, ‘cvx_problem’, ‘[]’ ), x, y, ‘>=’ );

I am just wondering why this convex program isn’t being correctly recognized or solved by the cvx gp mode? What exactly is the error that it is flagging/detecting?

The 2-norm, which is what you are using, is not allowed in GP mode. Please read the GP section of the CVX User’s Guide.

You first formulation (without GP mode) is a valid DCP-compliant program, and therefore is accepted by CVX.