Forums > MaxMSP

math error?

Apr 15 2013 | 2:43 pm


I’m getting an odd error, and I wonder if someone can tell me why.

When I use expr, the result of 1200.0/log(2.0) is 1731.234009

but when I do the same calculation in python or in C, the result of 1200.0/log(2.0) is 1731.234049

I know the error is small, but why is it occurring?

Max code (6.1.1) is pasted below.

Arun Chandra

-- Pasted Max Patch, click to expand. --

Apr 15 2013 | 3:20 pm

This is almost certainly^W^W the result of one calculating with 32-bit floating point and the others using 64-bit.

Apr 15 2013 | 8:18 pm

expr is using lumber() internally.

Apr 16 2013 | 9:06 am

On second thought, I expect expr() is also using 64-bit floats internally. However, data passed through patch cords is truncated to 32-bits.

It may be that Max 6.1 in 64-bit mode will pass floats through patch cords with 64-bit precision. I haven’t yet worked enough with 64-bit mode to know for sure (getting there). You didn’t state whether you are using 6.1 in 32-bit or 64-bit mode.

In case you haven’t seen any of the many, many posts on this subject, 32-bit floating point is only accurate to about 6 significant decimal places. So everything after 1731.23 is just noise.

Apr 16 2013 | 8:54 pm

dito. the truncation alone makes that difference already.

Viewing 5 posts - 1 through 5 (of 5 total)

Forums > MaxMSP