[PD] [expr] - fmod weirdness
Christof Ressi
info at christofressi.com
Tue Jun 23 01:50:28 CEST 2020
> is this a single / double precision case ?
yes. you get a similar result with [/ 4] -> [wrap] -> [* 4].
A number like 1/10 can't be accurately represented in binary (just like
1/3 can't be represented in decimal). In short: you shouldn't expect
fmod(4.1, 4) to yield exactly 0.1. If you happen to see "0.1", that's
the result of rounding.
Your "handmade" version is flawed, e.g. with "4.0002" I get 0.00019.
Just round the output of [expr fmod] to as many fractional digits as you
need, e.g. [* 10000] -> [+ 0.5] -> [int] -> [/ 10000] for 4 digits.
BTW, instead of [expr fmod] you can also do [/] -> [wrap] -> [*].
Also note that the behavior of fmod regarding negative numbers is
implementation specific, e.g. on my system fmod(-0.1, 1) yields -0.1
(note the negative sign!). On the other hand, [wrap] will *always* yield
0.9 (which I think is also what you would expect).
Christof
On 23.06.2020 01:07, oliver wrote:
> hi,
>
> i just stumbled upon a problem when i tried to use [expr fmod] to
> produce a modified [wrap] object that should be able to produce a
> float wrapped around an arbitrary limit (not just 1 as in vanilla's
> [wrap])
>
> i know that there are many ways to do this but i tried the [expr] way
> and noticed something weird (not sure if that's a bug, though):
>
>
> i am getting "inconsistent" results from the [expr] object.
> whereas if i'm cranking out a "handmade" version, the results are what
> they are supposed to be.
>
> i attached the patch that shows the problem
>
> is this a single / double precision case ?
>
>
>
> best
>
> oliver
>
>
> _______________________________________________
> Pd-list at lists.iem.at mailing list
> UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20200623/e2cfb6c1/attachment.html>
More information about the Pd-list
mailing list