{
sn_network_t *n;
- n = sn_network_create (inputs_num);
-
assert (inputs_num > 0);
if (inputs_num == 1)
{
- return (n);
+ return (sn_network_create (inputs_num));
}
if (inputs_num == 2)
{
- sn_stage_t *s;
sn_comparator_t c;
+ n = sn_network_create (inputs_num);
+
+ memset (&c, 0, sizeof (c));
c.min = 0;
c.max = 1;
- s = sn_stage_create (/* depth = */ 0);
- sn_stage_comparator_add (s, &c);
- sn_network_stage_add (n, s);
+ sn_network_comparator_add (n, &c);
return (n);
}
return (0);
} /* }}} int sn_network_normalize */
+int sn_network_unify (sn_network_t *n) /* {{{ */
+{
+ int i;
+
+ if (n == NULL)
+ return (EINVAL);
+
+ sn_network_normalize (n);
+ sn_network_compress (n);
+
+ for (i = 0; i < n->stages_num; i++)
+ sn_stage_unify (n->stages[i]);
+
+ return (0);
+} /* }}} int sn_network_unify */
+
int sn_network_remove_input (sn_network_t *n, int input) /* {{{ */
{
int i;
return (n);
} /* }}} sn_network_t *sn_network_unserialize */
+uint64_t sn_network_get_hashval (const sn_network_t *n) /* {{{ */
+{
+ uint64_t hash;
+ int i;
+
+ if (n == NULL)
+ return (0);
+
+ hash = (uint64_t) n->inputs_num;
+
+ for (i = 0; i < n->stages_num; i++)
+ hash = (hash * 104207) + sn_stage_get_hashval (n->stages[i]);
+
+ return (hash);
+} /* }}} uint64_t sn_network_get_hashval */
+
/* vim: set sw=2 sts=2 et fdm=marker : */