SCM

SCM Repository

[matrix] Annotation of /pkg/src/Metis/mutil.c
ViewVC logotype

Annotation of /pkg/src/Metis/mutil.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10 - (view) (download) (as text)

1 : bates 10 /*
2 :     * mutil.c
3 :     *
4 :     * This file contains various utility functions for the MOC portion of the
5 :     * code
6 :     *
7 :     * Started 2/15/98
8 :     * George
9 :     *
10 :     * $Id: mutil.c,v 1.1 2003/12/31 21:32:30 bates Exp $
11 :     *
12 :     */
13 :    
14 :     #include <metis.h>
15 :    
16 :    
17 :     /*************************************************************************
18 :     * This function checks if the vertex weights of two vertices are below
19 :     * a given set of values
20 :     **************************************************************************/
21 :     int AreAllVwgtsBelow(int ncon, float alpha, float *vwgt1, float beta, float *vwgt2, float limit)
22 :     {
23 :     int i;
24 :    
25 :     for (i=0; i<ncon; i++)
26 :     if (alpha*vwgt1[i] + beta*vwgt2[i] > limit)
27 :     return 0;
28 :    
29 :     return 1;
30 :     }
31 :    
32 :    
33 :     /*************************************************************************
34 :     * This function checks if the vertex weights of two vertices are below
35 :     * a given set of values
36 :     **************************************************************************/
37 :     int AreAnyVwgtsBelow(int ncon, float alpha, float *vwgt1, float beta, float *vwgt2, float limit)
38 :     {
39 :     int i;
40 :    
41 :     for (i=0; i<ncon; i++)
42 :     if (alpha*vwgt1[i] + beta*vwgt2[i] < limit)
43 :     return 1;
44 :    
45 :     return 0;
46 :     }
47 :    
48 :    
49 :    
50 :     /*************************************************************************
51 :     * This function checks if the vertex weights of two vertices are above
52 :     * a given set of values
53 :     **************************************************************************/
54 :     int AreAllVwgtsAbove(int ncon, float alpha, float *vwgt1, float beta, float *vwgt2, float limit)
55 :     {
56 :     int i;
57 :    
58 :     for (i=0; i<ncon; i++)
59 :     if (alpha*vwgt1[i] + beta*vwgt2[i] < limit)
60 :     return 0;
61 :    
62 :     return 1;
63 :     }
64 :    
65 :    
66 :     /*************************************************************************
67 :     * This function computes the load imbalance over all the constrains
68 :     * For now assume that we just want balanced partitionings
69 :     **************************************************************************/
70 :     float ComputeLoadImbalance(int ncon, int nparts, float *npwgts, float *tpwgts)
71 :     {
72 :     int i, j;
73 :     float max, lb=0.0;
74 :    
75 :     for (i=0; i<ncon; i++) {
76 :     max = 0.0;
77 :     for (j=0; j<nparts; j++) {
78 :     if (npwgts[j*ncon+i] > max)
79 :     max = npwgts[j*ncon+i];
80 :     }
81 :     if (max*nparts > lb)
82 :     lb = max*nparts;
83 :     }
84 :    
85 :     return lb;
86 :     }
87 :    
88 :     /*************************************************************************
89 :     * This function checks if the vertex weights of two vertices are below
90 :     * a given set of values
91 :     **************************************************************************/
92 :     int AreAllBelow(int ncon, float *v1, float *v2)
93 :     {
94 :     int i;
95 :    
96 :     for (i=0; i<ncon; i++)
97 :     if (v1[i] > v2[i])
98 :     return 0;
99 :    
100 :     return 1;
101 :     }

root@r-forge.r-project.org
ViewVC Help
Powered by ViewVC 1.0.0  
Thanks to:
Vienna University of Economics and Business Powered By FusionForge