[Cs-dev] what's this?
Date | 2009-01-03 18:03 |
From | victor |
Subject | [Cs-dev] what's this? |
Attachments | None None |
I see this comment (in ugens2.c)
/* Macro form of Istvan's speedup ; constant should
be 3fefffffffffffff */
/* #define FLOOR(x) (x >= FL(0.0) ? (long)x : (long)((double)x - 0.999999999999999)) */ /* 1.0-1e-8 is safe for a maximum table length of 16777216 */ /* 1.0-1e-15 could incorrectly round down large negative integers, */ /* because doubles do not have sufficient resolution for numbers like */ /* -1000.999999999999999 (FLOOR(-1000) might possibly be -1001 which is wrong)*/ /* it should be noted, though, that the above incorrect result would not be */ /* a problem in the case of interpolating table opcodes, as the fractional */ /* part would then be exactly 1.0, still giving a correct output value */ and then
#define MYFLOOR(x) (x >= FL(0.0) ? (int32)x :
(int32)((double)x - 0.99999999))
which one is right? |