Thread (55 messages) 55 messages, 12 authors, 2007-03-22

Re: [RFC] div64_64 support

From: Jan Engelhardt <hidden>
Date: 2007-02-26 23:03:45
Also in: lkml

On Feb 26 2007 13:28, Stephen Hemminger wrote:
quoted
./arch/arm26/lib/udivdi3.c
./arch/sh/lib/udivdi3.c
./arch/sparc/lib/udivdi3.S

should not this be consolidated too?
Hmm. Those are the GCC internal versions, that are picked up but
doing divide in place. Do we want to allow general 64 bit in kernel to
be easily used? It could cause sloppy slow code, but it would look
cleaner.
Then our reviewers should catch it, and if not, the janitors will
(/me winks at R.P.J.Day and trivial@).
quoted hunk ↗ jump to hunk
@@ -134,7 +112,7 @@
	 */
	do {
		x1 = x;
-		x = (2 * x + (uint32_t) div64_64(a, x*x)) / 3;
+		x = (2 * x + (u32) (a / x*x)) / 3;
Eye see a bug.

Previously there was div64_64(a, x*x) which is equivalent to
(a)/(x*x), or just: a/(x^2). But now you do a/x*x, which is
equivalent to a*x/x (in the domain of real numbers). Furthermore,
a/x*x is a-(a%x), which does not even remotely match a/(x^2).

Please keep the math intact, thank you ;-)



Jan
-- 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help