22 static void make_data(
int *data,
int range,
int dim,
int m,
int n);
25 main(
int argc,
char **argv)
27 struct INPARA para_, *para = ¶_;
29 int datadash = (argc != 1);
32 para->dim = atoi(argv[1]);
33 para->dmin = atoi(argv[4]);
34 para->dfac = atoi(argv[5]);
35 para->nlayers = atoi(argv[6]);
36 para->hashsize = atoi(argv[7]);
37 para->infile = argv[2];
38 para->outdir = argv[3];
39 para->plot_cut_off = 10;
47 para->infile =
"indata";
48 para->outdir =
"outdir";
49 para->plot_cut_off = 0;
53 init_flexdice(argc, argv, para);
54 print_parameters(para);
55 struct CELL *input = create_cell(0, 0);
57 read_input(input, para);
63 int *data = malloc(
sizeof(
int) * (dim * m * n));
65 make_data(data, range, dim, m, n);
66 set_input(input, para, data, (m * n));
70 flexdice(input, para);
74 printf(
"CPU TIME: Phase1=%.3f Phase2=%.3f Total=%.3f (sec)\n",
75 (fxd.t[1] - fxd.t[0]), (fxd.t[2] - fxd.t[1]),
76 (fxd.t[2] - fxd.t[0]));
78 printf(
"#clusters=%ld #dense-cells=%ld #noise-objects=%ld\n",
79 fxd.n_clusters, fxd.n_dense_cells, fxd.n_noise_objects);
89 u = 2.0 * drand48() - 1.0;
90 v = 2.0 * drand48() - 1.0;
92 }
while (s >= 1.0 || s == 0.0);
93 double m = sqrt(-2.0 * log(s) / s);
97 #define BND(X,R) ((X < -R) ? -R : ((X > R) ? R : X)) 102 make_data(
int *data,
int range,
int dim,
int m,
int n)
105 double sdev = (0.01 * range);
106 assert(sdev * 10.0 < 1.0 * INT_MAX);
107 for (
int j = 0; j < m; j++) {
108 for (
int attr = 0; attr < dim; attr++) {
109 int v = (int)(range * (2.0 * drand48() - 1.0));
110 p[attr] = BND(v, range);
112 for (
int i = 0; i < n; i++) {
113 for (
int attr = 0; attr < dim; attr++) {
114 int v = (int)((RND() * sdev) + p[attr]);
115 data[dim * (n * j + i) + attr] = BND(v, range);