summaryrefslogtreecommitdiffstats
path: root/src/misc/espresso/cubehack.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2007-10-01 08:01:00 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2007-10-01 08:01:00 -0700
commit4812c90424dfc40d26725244723887a2d16ddfd9 (patch)
treeb32ace96e7e2d84d586e09ba605463b6f49c3271 /src/misc/espresso/cubehack.c
parente54d9691616b9a0326e2fdb3156bb4eeb8abfcd7 (diff)
downloadabc-4812c90424dfc40d26725244723887a2d16ddfd9.tar.gz
abc-4812c90424dfc40d26725244723887a2d16ddfd9.tar.bz2
abc-4812c90424dfc40d26725244723887a2d16ddfd9.zip
Version abc71001
Diffstat (limited to 'src/misc/espresso/cubehack.c')
-rw-r--r--src/misc/espresso/cubehack.c138
1 files changed, 138 insertions, 0 deletions
diff --git a/src/misc/espresso/cubehack.c b/src/misc/espresso/cubehack.c
new file mode 100644
index 00000000..8e1724fc
--- /dev/null
+++ b/src/misc/espresso/cubehack.c
@@ -0,0 +1,138 @@
+/*
+ * Revision Control Information
+ *
+ * $Source: /vol/opua/opua2/sis/sis-1.1/common/src/sis/node/RCS/cubehack.c,v $
+ * $Author: sis $
+ * $Revision: 1.2 $
+ * $Date: 1992/05/06 18:57:41 $
+ *
+ */
+/*
+#include "sis.h"
+#include "node_int.h"
+
+#ifdef lint
+struct cube_struct cube;
+bool summary;
+bool trace;
+bool remove_essential;
+bool force_irredundant;
+bool unwrap_onset;
+bool single_expand;
+bool pos;
+bool recompute_onset;
+bool use_super_gasp;
+bool use_random_order;
+#endif
+*/
+#include "espresso.h"
+
+
+void
+cautious_define_cube_size(n)
+int n;
+{
+ if (cube.fullset != 0 && cube.num_binary_vars == n)
+ return;
+ if (cube.fullset != 0) {
+ setdown_cube();
+ FREE(cube.part_size);
+ }
+ cube.num_binary_vars = cube.num_vars = n;
+ cube.part_size = ALLOC(int, n);
+ cube_setup();
+}
+
+
+void
+define_cube_size(n)
+int n;
+{
+ register int q, i;
+ static int called_before = 0;
+
+ /* check if the cube is already just the right size */
+ if (cube.fullset != 0 && cube.num_binary_vars == n && cube.num_vars == n)
+ return;
+
+ /* We can't handle more than 100 inputs */
+ if (n > 100) {
+ cautious_define_cube_size(n);
+ called_before = 0;
+ return;
+ }
+
+ if (cube.fullset == 0 || ! called_before) {
+ cautious_define_cube_size(100);
+ called_before = 1;
+ }
+
+ cube.num_vars = n;
+ cube.num_binary_vars = n;
+ cube.num_mv_vars = 0;
+ cube.output = -1;
+ cube.size = n * 2;
+
+ /* first_part, last_part, first_word, last_word, part_size OKAY */
+ /* cube.sparse is OKAY */
+
+ /* need to completely re-make cube.fullset and cube.binary_mask */
+ (void) set_fill(cube.fullset, n*2);
+ (void) set_fill(cube.binary_mask, n*2);
+
+ /* need to resize each set in cube.var_mask and cube.temp */
+ q = cube.fullset[0];
+ for(i = 0; i < cube.num_vars; i++)
+ cube.var_mask[i][0] = q;
+ for(i = 0; i < CUBE_TEMP; i++)
+ cube.temp[i][0] = q;
+
+ /* need to resize cube.emptyset and cube.mv_mask */
+ cube.emptyset[0] = q;
+ cube.mv_mask[0] = q;
+
+ /* need to reset the inword and inmask */
+ if (cube.num_binary_vars != 0) {
+ cube.inword = cube.last_word[cube.num_binary_vars - 1];
+ cube.inmask = cube.binary_mask[cube.inword] & DISJOINT;
+ } else {
+ cube.inword = -1;
+ cube.inmask = 0;
+ }
+
+ /* cdata (entire structure) is OKAY */
+}
+
+
+void
+undefine_cube_size()
+{
+ if (cube.num_binary_vars > 100) {
+ if (cube.fullset != 0) {
+ setdown_cube();
+ FREE(cube.part_size);
+ }
+ } else {
+ cube.num_vars = cube.num_binary_vars = 100;
+ if (cube.fullset != 0) {
+ setdown_cube();
+ FREE(cube.part_size);
+ }
+ }
+}
+
+
+void
+set_espresso_flags()
+{
+ summary = FALSE;
+ trace = FALSE;
+ remove_essential = TRUE;
+ force_irredundant = TRUE;
+ unwrap_onset = TRUE;
+ single_expand = FALSE;
+ pos = FALSE;
+ recompute_onset = FALSE;
+ use_super_gasp = FALSE;
+ use_random_order = FALSE;
+}