OK, subtracting out the DC is more stable, but still deteriorates after a bit, since the exact value likely changes with frequency due to interpolation. So the solution is going to have to be in writing the table. We can do it in Pd but we're hampered by the six-digit limit on specifying 2pi directly as a float. The most accurate pi I can think of for feeding through [cos] is [0 -1( -- [atan2]. [cos] uses the cosf() function from C, which expects floats instead of doubles, so hopefully the symmetry is better. I'm going to try it for a while and write back.
Matt