Re: How can I link the kernel with libgcc ?

Bart Hartgers
2006-03-10T11:05:36Z

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 majordomo@vger.kernel.org
> 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/