phase retrieval algorithm