[PD] [OT] "processing" application
martin.peach at sympatico.ca
Sun Oct 15 23:05:37 CEST 2006
Mathieu Bouchard wrote:
> On Sat, 14 Oct 2006, Martin Peach wrote:
>>> It's an integer multiplied by a power of two. That's about as layman
>>> as it can reasonably get. In Pd the integer is between 2^23 and 2^24
>>> and the power of two is between 2^-149 and 2^106.
>> It's not exactly an integer since it's supposed to be a fixed point
>> number between 1 and just less than 2, multiplied by a power of two.
> did you realize that your definition and my definition are equivalent ?
Yes. What I meant was that the number is not an integer in the
mathematical sense. A float in memory is three integers packed together
into 32 bits, and of those integers is missing its most significant bit.
> why do you think that i say that the multiplicator is between 2^-149
> and 2^106, instead of 2^-127 to 2^129 ? (note: that is an off-by-one
> error, so I really meant 2^-150 to 2^105)
>> In the float the binary point starts out at the left and the power
>> effectively moves it.
> It can "start" anywhere you want, provided that the relation between
> "characteristic" and "exponent" is appropriately chosen...
But once you have chosen the relation you can't move the binary point.
It's a fixed point number. If the point has to move the number is called
denormal. Normalizing usually means fitting something into a range of
0-1, so it makes sense that a normalized float is using a number close
to 1 rather than 2^23, but otherwise it makes no difference.
>> The thing about the laity is that they are free to learn on their own
>> and can thereby acquire even more knowledge than those who have gone
>> through the system which only tells them what it wants them to know.
> Exactly. This allows me to teach floats in an alternative way that
> doesn't involve putting the binary point to the left.
>> For example this is the representation of the number 1.5 X 2^20 =
>> 1572864 (aka UNITBIT32) in
>> IEEE Standard 754 Double Precision Storage Format (double):
> I was only talking about single precision floats, because that's the
> only thing that PureData supports today.
Internally pd uses doubles, for example in osc~.c. A double works just
like a float but uses twice as much space so it can represent more numbers.
More information about the Pd-list