Dear all,

I just want to know the difference between `p(loop)+sqrt(p(loop))-1`

and `p(loop)-sqrt(p(loop))-1`

. Both of them have the quadratic form. Why `p(loop)-sqrt(p(loop))-1`

return an error?

Thanks!

The code is listed as follows.

```
clear;
close all;
clc;
P_max = 1;
cvx_begin
cvx_quiet(true);
variable p(3,1)
variable fes_p
minimize fes_p
subject to
for loop = 1:1:3
p(loop) >= 0
p(loop) <= 1
pow_p(p(loop)+sqrt(p(loop))-1,-1) + p(loop) <= 4
% pow_p(p(loop)-sqrt(p(loop))-1,-1) + p(loop) <= 4 % Why return an error?
end
sum(p) <= fes_p*P_max
fes_p >= 0
fes_p <= 1
cvx_end
```

help pow_p

pow_p Positive branch of the power function.

pow_p(X,P) computes a convex or concave branch of the power function:

P < 0: pow_p(X,P) = X.^P if X > 0, +Inf otherwise

0 <= P < 1: pow_p(X,P) = X.^P if X >= 0, -Inf otherwise

1 <= P : pow_p(X,P) = X.^P if X >= 0, +Inf otherwise

Both P and X must be real.

```
Disciplined convex programming information:
The geometry of pow_p(X,P) depends on the precise value of P,
which must be a real constant:
P < 0: convex and nonincreasing; X must be concave.
0 <= P < 1: concave and nondecreasing; X must be concave.
1 <= P : convex and nonmonotonic; X must be affine.
In all cases, X must be real.
```

Your p = -1, therefore the argument of `pow_p`

must be concave, which `p(loop)+sqrt(p(loop))-1`

is. However, `p(loop)-sqrt(p(loop))-1`

is not concave (it is convex), and therefore is not allowed.