41#include "EST_system.h"
42#include "EST_FMatrix.h"
43#include "EST_cluster.h"
45#include "EST_string_aux.h"
59 for (i = 0; i < n; ++i)
71 while (
cbk.length() > 1)
84 for (p = l.head(); p != 0; p = p->next())
122 if (contains(
cbk(
pi), row))
126 if (contains(
cbk(
pj), col))
130 remove_distances(d,
cbk(
pi));
134float min(
float a,
float b)
136 return (a < b) ? a: b;
139float max(
float a,
float b)
141 return (a > b) ? a: b;
153 cout <<
"Removing row/column " << col <<
endl;
156 cbk.nth(row) +=
cbk.nth(col);
161 if ((i != row) && (i != col))
165 cout <<
"row " << row <<
" col " << col <<
" left out " << v;
167 for (
pi = v.head();
pi != 0;
pi =
pi->next())
170 fm = min(d(row,v(
pi)),d(col,v(
pi)));
171 else if (
method ==
"furthest")
172 fm = max(d(row,v(
pi)),d(col,v(
pi)));
174 fm = min(d(row,v(
pi)),d(col,v(
pi)));
176 cout <<
"writing values to " << v(
pi) <<
", " << row <<
" min "
182 d = sub(d, col, col);
197 cout <<
"row = " << row <<
" col " << col <<
endl;
198 collapse(
m,
cbk, row, col);
202 cout <<
"New matrix\n" <<
m;
216 cout <<
"analysing matrix\n" <<
m;
219 cout <<
"row = " << row <<
" col " << col <<
endl;
238 for (
pi =
cbk.head();
pi != 0;
pi =
pi->next(), ++i)
240 for (
pj =
pi->next();
pj != 0;
pj =
pj->next())
255 cout <<
"Empty entry\n";
273 for (
pi =
cbk.head();
pi != 0;
pi =
pi->next(), ++i)
275 for (
pj =
pi->next();
pj != 0;
pj =
pj->next())
290 cout <<
"Empty entry\n";
301static int sorttest(
const void *a,
const void *b)
303 float *c = (
float *)a;
304 float *d = (
float *)b;
305 float res = (*c - *d);
308 return (res < 0.0) ? -1 : 1;
318 int size =
m.num_rows() - 1;
321 for (i = 0; i < size; ++i)
324 cout<<
"number of values in EST_FMatrix:" <<
n_vals <<
" size " << size <<
endl;
328 for (i = k = 0; i <
m.num_rows(); ++i)
329 for (
j = i + 1;
j <
m.num_columns(); ++
j, ++k)
331 cout << i <<
" " <<
j <<
" " << k <<
" " << (i * size) + k <<
endl;
335 for (i = 0; i <
n_vals; ++i)
336 cout <<
"v[" << i <<
"] = " << v[i] <<
endl;
338 qsort(v,
n_vals,
sizeof(
float), sorttest);
341 for (i = 0; i <
n_vals; ++i)
353 s = ftoString(d) +
" ";
360 s += itoString(
cbk.item(
pi).item(
pj));
362 s += names.nth(
cbk.item(
pi).item(
pj));
373 int n =
m.num_rows();
379 for (i = 0; i < n; ++i)
382 for (i = 0; i < n; ++i)
386 for (i = 0; i < n; ++i)
387 for (
j = i + 1;
j < n; ++
j)
399 for (i = 0; i < n; ++i)
441 cout <<
"list a:" << a <<
"list b:" << b;
443 for (
pa = a.head();
pa != 0;
pa =
pa->next())
444 for (
pb = b.head();
pb != 0;
pb =
pb->next())
477 cout <<
"list a:" << a <<
"list b:" << b;
479 for (
pa = a.head();
pa != 0;
pa =
pa->next())
480 for (
pb = b.head();
pb != 0;
pb =
pb->next())
482 if (
m(a(
pa), b(
pb)) > h)
509 for (p =
cbk[
j].head(); p != 0; p = p->next())
523 while(
inf.getline(inbuf, 1000))
int num_rows() const
return number of rows