00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "metislib.h"
00015
00016
00017
00020
00021 void InitRandom(idx_t seed)
00022 {
00023 isrand((seed == -1 ? 4321 : seed));
00024 }
00025
00026
00027
00030
00031 idx_t iargmax_nrm(size_t n, idx_t *x, real_t *y)
00032 {
00033 idx_t i, max=0;
00034
00035 for (i=1; i<n; i++)
00036 max = (x[i]*y[i] > x[max]*y[max] ? i : max);
00037
00038 return max;
00039 }
00040
00041
00042
00045
00046 idx_t iargmax_strd(size_t n, idx_t *x, idx_t incx)
00047 {
00048 size_t i, max=0;
00049
00050 n *= incx;
00051 for (i=incx; i<n; i+=incx)
00052 max = (x[i] > x[max] ? i : max);
00053
00054 return max/incx;
00055 }
00056
00057
00058
00062
00063 idx_t rargmax2(size_t n, real_t *x)
00064 {
00065 size_t i, max1, max2;
00066
00067 if (x[0] > x[1]) {
00068 max1 = 0;
00069 max2 = 1;
00070 }
00071 else {
00072 max1 = 1;
00073 max2 = 0;
00074 }
00075
00076 for (i=2; i<n; i++) {
00077 if (x[i] > x[max1]) {
00078 max2 = max1;
00079 max1 = i;
00080 }
00081 else if (x[i] > x[max2])
00082 max2 = i;
00083 }
00084
00085 return max2;
00086 }
00087
00088
00089
00092
00093 idx_t iargmax2_nrm(size_t n, idx_t *x, real_t *y)
00094 {
00095 size_t i, max1, max2;
00096
00097 if (x[0]*y[0] > x[1]*y[1]) {
00098 max1 = 0;
00099 max2 = 1;
00100 }
00101 else {
00102 max1 = 1;
00103 max2 = 0;
00104 }
00105
00106 for (i=2; i<n; i++) {
00107 if (x[i]*y[i] > x[max1]*y[max1]) {
00108 max2 = max1;
00109 max1 = i;
00110 }
00111 else if (x[i]*y[i] > x[max2]*y[max2])
00112 max2 = i;
00113 }
00114
00115 return max2;
00116 }
00117
00118
00119
00122
00123 int metis_rcode(int sigrval)
00124 {
00125 switch (sigrval) {
00126 case 0:
00127 return METIS_OK;
00128 break;
00129 case SIGMEM:
00130 return METIS_ERROR_MEMORY;
00131 break;
00132 default:
00133 return METIS_ERROR;
00134 break;
00135 }
00136 }
00137
00138