Unix/Linux Go Back    


NetBSD 6.1.5 - man page for fast_remainder32 (netbsd section 3)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


FAST_DIVIDE32(3)		   BSD Library Functions Manual 		 FAST_DIVIDE32(3)

NAME
     fast_divide32, fast_divide32_prepare, fast_remainder32 -- fast 32bit division and remainder

SYNOPSIS
     #include <sys/bitops.h>

     uint32_t
     fast_divide32(uint32_t v, uint32_t div, uint32_t m, uint8_t s1, uint8_t s2);

     uint32_t
     fast_remainder32(uint32_t v, uint32_t div, uint32_t m, uint8_t s1, uint8_t s2);

     void
     fast_divide32_prepare(uint32_t div, uint32_t *m, uint8_t *s1, uint8_t *s2);

DESCRIPTION
     The fast_divide32 and fast_remainder32 functions compute the equivalent of v / div and v %
     div using optimised CPU instructions.  The constants m, s1, and s2 must first be preset for
     a given value of div with the fast_divide32_prepare function.

RATIONALE
     These functions are useful for inner loops and other performance-sensitive tasks.	The func-
     tions expand to code that is typically slightly larger than a plain division instruction,
     but requires less time to execute.  The code for constant div arguments should be equivalent
     to the assembly created by GCC.

EXAMPLES
     The following example computes q = a / b and r = a % b:

	   uint32_t a, b, q, r, m;
	   uint8_t s1, s2;

	   fast_divide32_prepare(b, &m, &s1, &s2);

	   q = fast_divide32(a, b, m, s1, s2);
	   r = fast_remainder32(a, b, m, s1, s2);

SEE ALSO
     bitops(3), div(3), remainder(3)

     Torbjorn Granlund and Peter L. Montgomery, "Division by Invariant Integers Using
     Multiplication", ACM SIGPLAN Notices, Issue 6, Volume 29, http://gmplib.org/~tege/divcnst-
     pldi94.pdf, 61-72, June 1994.

HISTORY
     The fast_divide32 function appeared in NetBSD 6.0.

BSD					   May 10, 2011 				      BSD
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 10:24 PM.