class_docstr: Implementation of the SoftImpute algorithm from:
  "Spectral Regularization Algorithms for Learning Large Incomplete Matrices"
  by Mazumder, Hastie, and Tibshirani.
class_docstr_tok: ["Implementation","of","the","SoftImpute","algorithm","from",":","''","Spectral","Regularization","Algorithms","for","Learning","Large","Incomplete","Matrices","''","by","Mazumder",",","Hastie",",","and","Tibshirani","."]
code: def _converged(self, X_old, X_new, missing_mask):
      # check for convergence
      old_missing_values = X_old[missing_mask]
      new_missing_values = X_new[missing_mask]
      difference = old_missing_values - new_missing_values
      ssd = np.sum(difference**2)
      old_norm = np.sqrt((old_missing_values**2).sum())
      # edge cases
      if old_norm == 0 or (
          old_norm < F32PREC and np.sqrt(ssd) > F32PREC
      ):
          return False
      else:
          return (np.sqrt(ssd) / old_norm) < self.convergence_threshold
  
file_path: fancyimpute/fancyimpute/soft_impute.py
imports: import numpy
  from sklearn.utils.extmath import randomized_svd
  from sklearn.utils import check_array
  from .common import masked_mae
  from .solver import Solver
label_desc: Use image node_id 2 for calling the SoftImpute obj's underlying member method code with example usage: obj._converged(X_old, X_new, missing_mask) and returns: False, unknown