#include "amd_internal.h"
void amd_preprocess
(
amd_int n,
const amd_int Ap [ ],
const amd_int Ai [ ],
amd_int Rp [ ],
amd_int Ri [ ],
amd_int W [ ],
amd_int Flag [ ]
)
{
amd_int i, j, p, p2 ;
for (i = 0 ; i < n ; i++)
{
W [i] = 0 ;
Flag [i] = EMPTY ;
}
for (j = 0 ; j < n ; j++)
{
p2 = Ap [j+1] ;
for (p = Ap [j] ; p < p2 ; p++)
{
i = Ai [p] ;
if (Flag [i] != j)
{
W [i]++ ;
Flag [i] = j ;
}
}
}
Rp [0] = 0 ;
for (i = 0 ; i < n ; i++)
{
Rp [i+1] = Rp [i] + W [i] ;
}
for (i = 0 ; i < n ; i++)
{
W [i] = Rp [i] ;
Flag [i] = EMPTY ;
}
for (j = 0 ; j < n ; j++)
{
p2 = Ap [j+1] ;
for (p = Ap [j] ; p < p2 ; p++)
{
i = Ai [p] ;
if (Flag [i] != j)
{
Ri [W [i]++] = j ;
Flag [i] = j ;
}
}
}
}