I have run into the limit of double precision floating point when making high order (20+) IIR filters in MATLAB. My solution in the past has been FIR filters and waiting a long time. I recently experimented with alternative forms of IIR representation. I found that converting from transfer function (B,A) to zero-pole-gain (z,p,k) form, then to second order sections (sos,g) form, then using the MATLAB filter function, the issues with double floating point precision go away in my use cases.
Is this a well known trick that I just stumbled upon?