Partial-Products Algorithm