faster + less mem than polynomial in all ops