[Mesa-dev] [PATCH] Improve ONE_DIV_LN2 and M_PI constants

Matt Turner mattst88 at gmail.com
Thu Dec 2 17:20:31 PST 2010


On Wed, Dec 1, 2010 at 11:24 PM, Ian Romanick <idr at freedesktop.org> wrote:
> On 12/01/2010 01:40 PM, Matt Turner wrote:
>> 1/ln(2) is equivalent to log2(e), so define it as such.
>>
>> log2(e) = ln(e)/ln(2) = 1/ln(2)
>>
>> M_PI is updated to add some precision (value found in my math.h header).
>
> I wish I had noticed this when I added M_LOG2E.  It seems better to
> replace the single use of ONE_DIV_LN2 (in prog_statevars.c) with M_LOG2E.

I think replacing ONE_DIV_LN2 with M_LOG2E in its single use makes the
code harder to understand, especially since the next line is

value[2] = (GLfloat)(ctx->Fog.Density * ONE_DIV_LN2);
value[3] = (GLfloat)(ctx->Fog.Density * ONE_DIV_SQRT_LN2);

It's not intuitively obvious that M_LOG2E == 1/ln(2), so I actually
think the patch is good as is.

Matt


More information about the mesa-dev mailing list