projects
/
unix-history
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
blame
|
history
|
raw
|
HEAD
This commit was manufactured by cvs2svn to create tag 'FreeBSD-release/1.0'.
[unix-history]
/
usr.bin
/
yacc
/
warshall.c
#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
;
}
}
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
;
}
}