Rahmans algorithm