docs: def least_squares(Cui, X, Y, regularization, num_threads=0):
      """ For each user in Cui, calculate factors Xu for them
      using least squares on Y.
  
      Note: this is at least 10 times slower than the cython version included
      here.
      """
      users, n_factors = X.shape
      YtY = Y.T.dot(Y)
  
      for u in range(users):
          X[u] = user_factor(Y, YtY, Cui, u, regularization, n_factors)