On Friday 12 December 2008 21:19:20 ext Brad Midgley wrote: > Guys > > One mistake we made was not keeping track of what functions we were > applying to the published tables as we worked things to look less and > less like the pseudocode in the spec. So if you start again from one > of the tables in the spec, keep a comment like > > /* ourtable(x) = (int32)(table1(x) << 16) */ This part can be probably done just by having a macro, something like #define F_TO_Q15(x) (int16_t)((x>0) ? ((x)*(1<<15)+0.5) : ((x)*(1<<15)-0.5)) And then using plain floating point numbers from the SBC specification in the table, wrapped into this macro. Though I wonder if it is possible to use such conditional expression in the static table initializer list with all versions of gcc/other compilers. > Which in this case would mean that in ourtable we've shifted the > original table1 float value left 16 bits and truncated it to an int32. > > I also combined tables or split tables to simplify our loop logic or > eliminate operations; an explanation in a comment would have been > appropriate. Yes, any transformations or simplifications should be extensively commented. So that it will be always possible to reproduce them or verify their correctness. Can anybody try to remember/explain what transformations were applied to the existing fixed point implementation? -- Best regards, Siarhei Siamashka -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html