docs: def cholesky(L, b, P=None):
      '''
      P A P' = L L'
      '''
  
      logger.debug('Solving system of dim {} with cholesky factors'.format(len(b)))
  
      ## convert L and U to csr format
      is_csr = scipy.sparse.isspmatrix_csr(L)
      is_csc = scipy.sparse.isspmatrix_csc(L)
  
      if not is_csr and not is_csc:
          warnings.warn('cholesky requires L be in CSR or CSC matrix format. Converting matrix.', scipy.sparse.SparseEfficiencyWarning)
  
      if is_csc:
          U = L.transpose()
      if not is_csr:
          L = L.tocsr()
      if not is_csc:
          U = L.transpose().tocsr()
  
      assert scipy.sparse.isspmatrix_csr(L)
      assert scipy.sparse.isspmatrix_csr(U)
  
      ## compute
      return LU(L, U, b, P=P)