On Fri, Apr 30, 2010 at 11:22 AM, Scott Wood <scottw...@freescale.com> wrote:

>> That's what I meant.  Actually, I think it's ULL.  Regardless, I think
>> the compiler will see the  "1000000000 ... * 1000" and just combine
>> them together.  You're not actually outsmarting the compiler.
>
> The compiler will do no such thing.  That's a valid transformation when
> doing pure math, but not when working with integers.

I ran some tests, and it appears you're right.  I doesn't make a lot
of sense to me, but whatever.

However, "(1000000000 / pixclock) * 1000" produces a result that's
less accurate than "1000000000000ULL / pixclock".  Unfortunately, that
math caused a linker problem with __udivdi3 when I tried it, so maybe
you can use do_div() instead?

>>     err = -1;
>>
>> because he wanted it to be the largest possible integer.
>
> -1 is not the largest possible integer.  LONG_MAX, perhaps?

What, you don't like implicit casting of -1 to an unsigned? :-)

Since err is a long integer, LONG_MAX is the better choice.

-- 
Timur Tabi
Linux kernel developer at Freescale
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to