Interesting study about fixed point vs. floating point in filter design

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

Not sure if people have already read this interesting study about integer vs floating point values in filter design.

http://www.jamminpower.com/PDF/48-bit%20Audio.pdf

If nothing else, it's "good to know" for DSP developers :)

Post

I think it's generally agreed than once in a while (esp. at low filter cutoffs and osc frequencies) one needs to use 64-bit float rather than 32-bit float. Also direct forms are known to particularly suffer from quantization issues, so the need for a better precision tends to occur pretty soon there. Anyway, how often one would use a direct form filter in today's music DSP? ;)

Post

For me the more interesting point was that you can do IIR filters with fairly small bit depth. I've no idea though if it's possible to do good quality fast filters with (for example) 64bit fixed points... Especially if there's some non-linearities involved.

Then again, if I remember correctly, someone made a good sounding SID filter emulation for one of the most famous C64 emulators. I think it used fixed points for the filter math. I could be wrong though.

Post

... to do good quality fast filters with (for example) 64bit fixed points ...

Btw., was 64-bit integer add/mul ever faster than 64-bit floating-point add/mul in GP CPUs in modern times? (w/o even counting the extra shift one would need for fixed point mul via integer mul).
The paper was cool for its time (1999) and its area though: 32-bit floating-point DSPs vs. 32-48-64 fixed point DSPs, especially counting the latter were times cheaper. But for modern day "CPU-only-developers" it is of little interest I'm afraid.

Post

Max M. wrote: Wed May 15, 2019 11:09 pm Btw., was 64-bit integer add/mul ever faster than 64-bit floating-point add/mul in GP CPUs in modern times? (w/o even counting the extra shift one would need for fixed point mul via integer mul).
ALU is potentially still faster on modern x86 (unless you do SIMD processing), but not by a huge margin.

The real question is whether it's worth the trouble and in most cases it definitely is not.

edit: also emphasis on "potentially" because it really depends... and it's far easier to get performance out of the floating point unit

Post

Full disclosure: I'm not (usually) working on Intel platforms, but different embedded processors/microcontrollers. :wink:

That's why I'm interested in this topic to see which parts still apply to various alternative CPU architectures. You'd be surprised how many hardware synth developers are working with fixed points every day, since the CPU/DSP they're using doesn't have floating points in it. I'm talking about major players in the hardware electronic instrument industry.

I haven't personally tried doing DSP stuff using fixed points so it would be an interesting experiment to see what kind of problems arise. For me it's always been floating points for the audio stuff. One question that's been on my table lately is: when is 32 bits enough and when 64 bits is really needed for the IIR/ZDF filter algorithms? This question pops up regularly when I try to figure out if I want to use SIMD to do couple of 32 bit floats in parallel or opt to using 64 bit floats and get the thing done with higher precision but slower speed.

Post Reply

Return to “DSP and Plugin Development”