# Log Determinant base

Hi Dear Friends,

I am using the " log_det " built-in function of CVX, but I have noticed it uses “e” as the base of the logarithm, is there anyway to change this base?

Thank you a lot.
Ashkan

\log_b\text{det}(X)=\frac{\text{logdet}(X)}{\log(b)}. That is, if you divide log_det(X) by the positive constant log(b), you’re done.

Bien is absolutely right. However, let me interject something else: if you can reformulate your problem to avoid the use of log_det, you should. The reason is that anything involving logarithms requires CVX’s successive approximation heuristic, which is slower and less reliable.

So, for example, if your objective function is

maximize(log_det(X))


then it is exactly equivalent to change the objective to this:

maximize(det_rootn(X))


and then, when the optimization is over, simply compute log_det(X) by hand to get the objective value for the original problem (or compute n*log(cvx_optval)).

Of course, there are times when you simply cannot make the substitution. For instance,

maximize(trace(C*X)+log_det(X))


cannot be rewritten in a way that avoids the logarithm.

Good to know.