Noncausal filters: possible implementations and their complexity