Denis Vlasenko wrote:
> On Friday 10 March 2006 05:47, Carlos Munoz wrote:
>> Lee Revell wrote:
>
> What? You are using log10 only twice!
>
> if (!(siu_obj_status & ST_OPEN)) {
> ...
> /* = log2(over) */
> ydef[22] = (u_int32_t)(log10((double)(over & 0x0000003f)) /
> log10(2));
> ...
> }
> else {
> ...
> if (coef) {
> ydef[16] = 0x03045000 | (over << 26) | (tap - 4);
> ydef[17] = (tap * 2 + 1);
> /* = log2(over) */
> ydef[22] = (u_int32_t)
> (log10((double)(over & 0x0000003f)) / log10(2));
> }
>
> Don't you think that log10((double)(over & 0x0000003f)) / log10(2)
> can have only 64 different values depending on the result of (over & 0x3f)?
>
> Obtain them from precomputed uint32_t log10table[64].
And since you're actually trying to do log2 [log10(x)/log10(2) =
log2(x)] and casting the result to an integer, aren't you really looking
for the position of the highest 1 bit or something like that? That
doesn't need FP at all.
Groeten,
Bart
> --
> vda
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
Bart Hartgers - TUE Eindhoven - http://plasimo.phys.tue.nl/bart/contact/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]