'Gives the (sub/super)gradient of the atom w.r.t. each argument.
Matrix expressions are vectorized, so the gradient is a matrix.
Args:
values: A list of numeric values for the arguments.
Returns:
A list of SciPy CSC sparse matrices or None.'

def _grad(self, values):

    (w, v) = LA.eigh(values[0])
    d = np.zeros(w.size)
    d[(-1)] = 1
    d = np.diag(d)
    D = v.dot(d).dot(v.T)
    return [sp.csc_matrix(D.ravel(order='F')).T]
