Berkeley YACC  1993-03-03
Berkeley's version of Yet Another Compiler Compiler
 All Data Structures Files Functions Variables Typedefs Macros Groups
warshall.c
Go to the documentation of this file.
1 #include "defs.h"
2 
14 unsigned *R;
15 int n;
16 {
17  register int rowsize;
18  register unsigned i;
19  register unsigned *rowj;
20  register unsigned *rp;
21  register unsigned *rend;
22  register unsigned *ccol;
23  register unsigned *relend;
24  register unsigned *cword;
25  register unsigned *rowi;
26 
27  rowsize = WORDSIZE(n);
28  relend = R + n*rowsize;
29 
30  cword = R;
31  i = 0;
32  rowi = R;
33  while (rowi < relend)
34  {
35  ccol = cword;
36  rowj = R;
37 
38  while (rowj < relend)
39  {
40  if (*ccol & (1 << i))
41  {
42  rp = rowi;
43  rend = rowj + rowsize;
44  while (rowj < rend)
45  *rowj++ |= *rp++;
46  }
47  else
48  {
49  rowj += rowsize;
50  }
51 
52  ccol += rowsize;
53  }
54 
55  if (++i >= BITS_PER_WORD)
56  {
57  i = 0;
58  cword++;
59  }
60 
61  rowi += rowsize;
62  }
63 }
64 
80 unsigned *R;
81 int n;
82 {
83  register int rowsize;
84  register unsigned i;
85  register unsigned *rp;
86  register unsigned *relend;
87 
88  transitive_closure(R, n);
89 
90  rowsize = WORDSIZE(n);
91  relend = R + n*rowsize;
92 
93  i = 0;
94  rp = R;
95  while (rp < relend)
96  {
97  *rp |= (1 << i);
98  if (++i >= BITS_PER_WORD)
99  {
100  i = 0;
101  rp++;
102  }
103 
104  rp += rowsize;
105  }
106 }
transitive_closure(unsigned *R, int n)
Definition: warshall.c:13
#define BITS_PER_WORD
Definition: defs.h:25
#define WORDSIZE(n)
Definition: defs.h:26
reflexive_transitive_closure(unsigned *R, int n)
Definition: warshall.c:79
static short ** R
Definition: lalr.c:31