#include "BSprivate.h"

/*+ BSoff_gnum - Find the global row number of the first row in each clique

    Input Parameters:
.   offset - the global row number of the first row in each color
.   numbering - the coloring of the cliques
.   distr - the number of rows in each clique

    Returns:
    the global row number of the first row in each clique

 +*/
BSnumbering	*BSoff_gnum(BSnumbering *offset, BSnumbering *numbering,
	BSdistribution *distr)
{
	BSnumbering	*gnum;
	int	*count;
	int	 i;
	int	ind;

	gnum = BSalloc_numbering(numbering->length); CHKERRN(0);
	MY_MALLOCN(count,(int *),sizeof(int)*offset->length,1);
	for (i=0;i<offset->length;i++) count[i] = 0;
	if (distr != NULL) {
		for (i=0;i<numbering->length;i++) {
			ind = numbering->numbers[i];
			gnum->numbers[i] = offset->numbers[ind] + count[ind];
			count[ind] += distr->distribution[i];
		}
	} else {
		for (i=0;i<numbering->length;i++) {
			ind = numbering->numbers[i];
			gnum->numbers[i] = offset->numbers[ind] + count[ind];
			count[ind]++;
		}
	}
	MY_FREEN(count);
	return(gnum);
}


syntax highlighted by Code2HTML, v. 0.9.1