Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include "defs.h"
transitive_closure(R, n) unsigned *R; int n; { register int rowsize; register unsigned i; register unsigned *rowj; register unsigned *rp; register unsigned *rend; register unsigned *ccol; register unsigned *relend; register unsigned *cword; register unsigned *rowi;
rowsize = WORDSIZE(n); relend = R + n*rowsize;
cword = R; i = 0; rowi = R; while (rowi < relend) { ccol = cword; rowj = R;
while (rowj < relend) { if (*ccol & (1 << i)) { rp = rowi; rend = rowj + rowsize; while (rowj < rend) *rowj++ |= *rp++; } else { rowj += rowsize; }
ccol += rowsize; }
if (++i >= BITS_PER_WORD) { i = 0; cword++; }
rowi += rowsize; } }
#if defined(KYLEP_CHANGE)
void #endif
reflexive_transitive_closure(R, n) unsigned *R; int n; { register int rowsize; register unsigned i; register unsigned *rp; register unsigned *relend;
transitive_closure(R, n);
rowsize = WORDSIZE(n); relend = R + n*rowsize;
i = 0; rp = R; while (rp < relend) { *rp |= (1 << i); if (++i >= BITS_PER_WORD) { i = 0; rp++; }
rp += rowsize; } }
|