Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

fast_divide32_prepare(3) [netbsd man page]

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 con- stants 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 functions 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

Check Out this Related Man Page

DIV(3)							   BSD Library Functions Manual 						    DIV(3)

NAME
div, ldiv, lldiv, imaxdiv -- quotient and remainder from division LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <stdlib.h> div_t div(int num, int denom); ldiv_t ldiv(long int num, long int denom); lldiv_t lldiv(long long int num, long long int denom); #include <inttypes.h> imaxdiv_t imaxdiv(intmax_t num, intmax_t denom); DESCRIPTION
These functions compute the value of num / denom and return the quotient and remainder in a specific divison structure. The functions differ only with respect to the type of the return value and the parameters. The returned structure always contains two members named quot and rem, denoting the quotient and the remainder. The type of these correspond with the underlying type of the function. EXAMPLES
The following example demonstrate the basic usage of the functions. div_t d; int a = 4321; int b = 1234; d = div(a, b); (void)printf("%d %d ", d.quot, d.rem); SEE ALSO
fast_divide32(3), math(3), qdiv(3) STANDARDS
All described functions conform to ISO/IEC 9899:1999 (``ISO C99''). BSD
April 13, 2011 BSD
Man Page