parameters: (self, values)
docstring: 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.
docstring_summary: Gives the (sub/super)gradient of the atom w.r.t. each argument.
docstring_tokens: Gives the ( sub / super ) gradient of the atom w . r . t . each argument .
function: def _grad(self, values):
          """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.
          """
          X = values[0]
          eigen_val = LA.eigvalsh(X)
          if np.min(eigen_val) > 0:
              # Grad: X^{-1}.T
              D = np.linalg.inv(X).T
              return [sp.csc_matrix(D.ravel(order='F')).T]
          # Outside domain.
          else:
              return [None]
function_tokens: def _grad ( self , values ) : X = values [ 0 ] eigen_val = LA . eigvalsh ( X ) if np . min ( eigen_val ) > 0 : # Grad: X^{-1}.T D = np . linalg . inv ( X ) . T return [ sp . csc_matrix ( D . ravel ( order = 'F' ) ) . T ] # Outside domain. else : return [ None ]