Ferguson-Forcade algorithm