# SCM Repository

[matrix] View of /pkg/src/Metis/mutil.c
 [matrix] / pkg / src / Metis / mutil.c

# View of /pkg/src/Metis/mutil.c

Revision 10 - (download) (as text) (annotate)
Mon Mar 22 20:20:05 2004 UTC (15 years, 11 months ago) by bates
File size: 2599 byte(s)
`Initial import`
```/*
* mutil.c
*
* This file contains various utility functions for the MOC portion of the
* code
*
* Started 2/15/98
* George
*
* \$Id: mutil.c,v 1.1 2003/12/31 21:32:30 bates Exp \$
*
*/

#include <metis.h>

/*************************************************************************
* This function checks if the vertex weights of two vertices are below
* a given set of values
**************************************************************************/
int AreAllVwgtsBelow(int ncon, float alpha, float *vwgt1, float beta, float *vwgt2, float limit)
{
int i;

for (i=0; i<ncon; i++)
if (alpha*vwgt1[i] + beta*vwgt2[i] > limit)
return 0;

return 1;
}

/*************************************************************************
* This function checks if the vertex weights of two vertices are below
* a given set of values
**************************************************************************/
int AreAnyVwgtsBelow(int ncon, float alpha, float *vwgt1, float beta, float *vwgt2, float limit)
{
int i;

for (i=0; i<ncon; i++)
if (alpha*vwgt1[i] + beta*vwgt2[i] < limit)
return 1;

return 0;
}

/*************************************************************************
* This function checks if the vertex weights of two vertices are above
* a given set of values
**************************************************************************/
int AreAllVwgtsAbove(int ncon, float alpha, float *vwgt1, float beta, float *vwgt2, float limit)
{
int i;

for (i=0; i<ncon; i++)
if (alpha*vwgt1[i] + beta*vwgt2[i] < limit)
return 0;

return 1;
}

/*************************************************************************
* This function computes the load imbalance over all the constrains
* For now assume that we just want balanced partitionings
**************************************************************************/
float ComputeLoadImbalance(int ncon, int nparts, float *npwgts, float *tpwgts)
{
int i, j;
float max, lb=0.0;

for (i=0; i<ncon; i++) {
max = 0.0;
for (j=0; j<nparts; j++) {
if (npwgts[j*ncon+i] > max)
max = npwgts[j*ncon+i];
}
if (max*nparts > lb)
lb = max*nparts;
}

return lb;
}

/*************************************************************************
* This function checks if the vertex weights of two vertices are below
* a given set of values
**************************************************************************/
int AreAllBelow(int ncon, float *v1, float *v2)
{
int i;

for (i=0; i<ncon; i++)
if (v1[i] > v2[i])
return 0;

return 1;
}
```

 root@r-forge.r-project.org ViewVC Help Powered by ViewVC 1.0.0
Thanks to: