Exemple #1
0
/**
 * allocate
**/
static VALUE t_allocate(VALUE klass)
{
    VALUE obj;
    root_node root;

    obj = Data_Make_Struct(klass, struct _root_node, NULL, destroy_all, root);
    init_root_node(root);

    return obj;
}
Exemple #2
0
/**
 * intersection
**/
static VALUE t_intersection(VALUE self, VALUE other)
{
    root_node set0, set1, ret_set;
    VALUE ret;

    ret = Data_Make_Struct(rb_cRejuicerSet, struct _root_node, NULL, destroy_all, ret_set);
    init_root_node(ret_set);

    Data_Get_Struct(self, struct _root_node, set0);
    Data_Get_Struct(other, struct _root_node, set1);

    intersection(ret_set, set0, set1);

    return ret;
}
Exemple #3
0
/**
 * union
**/
static VALUE t_union(VALUE self, VALUE other)
{
    VALUE obj;
    root_node result_set, set0, set1;

    obj = Data_Make_Struct(rb_cFigureSet, struct _root_node, NULL, destroy_all, result_set);
    init_root_node(result_set);

    Data_Get_Struct(self, struct _root_node, set0);
    Data_Get_Struct(other, struct _root_node, set1);

    join(result_set, set0, set1);

    return obj;
}
void generator::initialize(action *A_base, action *A_use, 
	strong_generators *gens, 
	INT depth, 
	BYTE *prefix, INT verbose_level)
{
	INT f_v = (verbose_level >= 1);
	INT f_vv = (verbose_level >= 2);

	if (f_v) {
		cout << "generator::initialize" << endl;
		cout << "generator::initialize depth = " << depth << endl;
		}

	generator::f_prefix = TRUE;
	strcpy(generator::fname_base, prefix);

	generator::depth = depth;
	downstep_orbits_print_max_orbits = 50;
	downstep_orbits_print_max_points_per_orbit = INT_MAX;
	

	// !!!
	//f_allowed_to_show_group_elements = TRUE;

	if (f_vv) {
		cout << "generator::initialize calling gen->init" << endl;
		}
	init(A_base, A_use, 
		gens, 
		depth, verbose_level - 2);
	
	INT nb_oracle_nodes = 1000;
	
	if (f_vv) {
		cout << "generator::initialize calling gen->init_oracle" << endl;
		}
	init_oracle(nb_oracle_nodes, verbose_level - 1);
	if (f_vv) {
		cout << "generator::initialize calling gen->init_root_node" << endl;
		}
	init_root_node(verbose_level - 1);

	if (f_v) {
		cout << "generator::initialize done" << endl;
		}
}
void generator::initialize_with_starter(action *A_base, action *A_use, 
	strong_generators *gens, 
	INT depth, 
	BYTE *prefix, 
	INT starter_size, 
	INT *starter, 
	strong_generators *Starter_Strong_gens, 
	INT *starter_live_points, 
	INT starter_nb_live_points, 
	void *starter_canonize_data, 
	INT (*starter_canonize)(INT *Set, INT len, INT *Elt, void *data, INT verbose_level), 
	INT verbose_level)
{
	INT f_v = (verbose_level >= 1);
	INT f_vv = (verbose_level >= 2);

	if (f_v) {
		cout << "generator::initialize_with_starter" << endl;
		}

	generator::f_prefix = TRUE;
	strcpy(generator::fname_base, prefix);

	generator::depth = depth;
	downstep_orbits_print_max_orbits = 50;
	downstep_orbits_print_max_points_per_orbit = INT_MAX;
	

	// !!!
	//f_allowed_to_show_group_elements = TRUE;

	if (f_vv) {
		cout << "generator::initialize_with_starter calling gen->init" << endl;
		}
	init(A_base, A_use, 
		gens, 
		//*gens, tl, 
		depth, verbose_level - 2);
	

	if (f_vv) {
		cout << "generator::initialize_with_starter calling init_starter" << endl;
		}
	init_starter(starter_size, 
		starter, 
		Starter_Strong_gens, 
		starter_live_points, 
		starter_nb_live_points, 
		starter_canonize_data, 
		starter_canonize, 
		verbose_level - 2);

	INT nb_oracle_nodes = 1000;
	
	if (f_vv) {
		cout << "generator::initialize_with_starter calling gen->init_oracle" << endl;
		}
	init_oracle(nb_oracle_nodes, verbose_level - 1);
	if (f_vv) {
		cout << "generator::initialize_with_starter calling gen->init_root_node" << endl;
		}
	init_root_node(verbose_level);

	if (f_v) {
		cout << "generator::initialize_with_starter done" << endl;
		}
}