Public Access
phase() overwrote the underlying channel arrays (y[i] *= -1) and returned self, so rotated copies aliased the original object and negative phase angles garbled shared data. It now returns a copy with new arrays and uses numpy.deg2rad for arbitrary angles. Add unittests for phase() including negative angles and non-mutation.