docs: def completion_acd(edm, X0, W=None, tol=1e-6, sweeps=3):
      """ Complete an denoise EDM using alternating decent. 
  
      The idea here is to simply run reconstruct_acd for a few iterations, 
      yieding a position estimate, which can in turn be used 
      to get a completed and denoised edm. 
  
      :param edm: noisy matrix (NxN) 
      :param X0: starting points (Nxd) 
      :param W: optional weight matrix. 
      :param tol: Stopping criterion of iterative algorithm.
      :param sweeps: Maximum number of sweeps. 
      """ 
      from .algorithms import reconstruct_acd
      Xhat, costs = reconstruct_acd(edm, X0, W, tol=tol, sweeps=sweeps)
      return get_edm(Xhat)