code: def _backprop_gradient_pure(dL, L):
      
      dL_dK = np.tril(dL).copy()
      N = L.shape[0]
      for k in range(N - 1, -1, -1):
          for j in range(k + 1, N):
              for i in range(j, N):
                  dL_dK[i, k] -= dL_dK[i, j] * L[j, k]
                  dL_dK[j, k] -= dL_dK[i, j] * L[i, k]
          for j in range(k + 1, N):
              dL_dK[j, k] /= L[k, k]
              dL_dK[k, k] -= L[j, k] * dL_dK[j, k]
          dL_dK[k, k] /= (2 * L[k, k])
      return dL_dK
docs: Given the derivative of an objective fn with respect to the cholesky L,
      compute the derivate with respect to the original matrix K, defined as
  
          K = LL^T
  
      where L was obtained by Cholesky decomposition